# Source Map Semantics

Source Maps are a specification for helping users how their original maps onto a single file.
While the mapping specifies to point-to-point relationships,
it is up to source map generators to decides the appropriate relationships in the code.

This document attempts to outline some of the existing mappings we have observed
as well as articulate some opinions on the appropriate mappings.

### Calls

The call maps the identifier and includes the opening original paren.

![](https://shipusercontent.com/554e9a9d7b74a52465156d80391625f8/Screen%20Shot%202018-03-28%20at%2010.13.15%20PM.png)

The object property of a member expression call maps the identifier, period, and generated parens.

![](https://shipusercontent.com/17b1f5147336473f9d5070d5d7b82094/Screen%20Shot%202018-03-28%20at%2010.13.11%20PM.png)

The arguments of a call attempt to map one to one. The last argument of a call will include the closing original paren.

![](https://shipusercontent.com/33ff9ea55c3cd35d55b70e64cf9326e9/Screen%20Shot%202018-03-28%20at%2010.13.01%20PM.png)

Complex arguments are also mapped one to one. In this case, the argument itself has a call that is included in the mapping.

![](https://shipusercontent.com/20f575759f31c01d13243e83a253c9ba/Screen%20Shot%202018-03-28%20at%2010.16.20%20PM.png)


### Dependencies

When Babel is involved, most dependencies are mapped line by line, but namespaces are broken up.

example: ![imported-bindings]

![](https://shipusercontent.com/c0939aecadad12902646bd687b05840f/Screen%20Shot%202018-03-28%20at%2010.00.30%20PM.png)

![](https://shipusercontent.com/fadbe965f836d304e84989f89529276e/Screen%20Shot%202018-03-28%20at%2010.07.57%20PM.png)
![](https://shipusercontent.com/cc5ff07e169e2583e9e4e8859b912810/Screen%20Shot%202018-03-28%20at%2010.07.52%20PM.png)

When Webpack is left to its own devices then dependencies are not mapped at all. In these cases, the original dependencies all map to the generated location `0,0`, which is equivalent to null.

- example 1: ![webpack-es-modules]  
- example 2: ![webpack-modules]

![](https://shipusercontent.com/cf65771d652824679cfe0ed8dab13f8b/Screen%20Shot%202018-03-28%20at%2010.09.36%20PM.png)

[webpack-es-modules]: https://sokra.github.io/source-map-visualization/#base64,[encoded data, 11440 characters],[encoded data, 10496 characters],IAkvLyBUaGUgbW9kdWxlIGNhY2hlCiAJdmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTsKCiAJLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb24KIAlmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7CgogCQkvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGUKIAkJaWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHsKIAkJCXJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzOwogCQl9CiAJCS8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpCiAJCXZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKIAkJCWk6IG1vZHVsZUlkLAogCQkJbDogZmFsc2UsCiAJCQlleHBvcnRzOiB7fQogCQl9OwoKIAkJLy8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uCiAJCW1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pOwoKIAkJLy8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZAogCQltb2R1bGUubCA9IHRydWU7CgogCQkvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZQogCQlyZXR1cm4gbW9kdWxlLmV4cG9ydHM7CiAJfQoKCiAJLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXykKIAlfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzOwoKIAkvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZQogCV9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7CgogCS8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0cwogCV9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikgewogCQlpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7CiAJCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgewogCQkJCWNvbmZpZ3VyYWJsZTogZmFsc2UsCiAJCQkJZW51bWVyYWJsZTogdHJ1ZSwKIAkJCQlnZXQ6IGdldHRlcgogCQkJfSk7CiAJCX0KIAl9OwoKIAkvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlcwogCV9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkgewogCQl2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID8KIAkJCWZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6CiAJCQlmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9OwogCQlfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7CiAJCXJldHVybiBnZXR0ZXI7CiAJfTsKCiAJLy8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsCiAJX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9OwoKIAkvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfXwogCV9fd2VicGFja19yZXF1aXJlX18ucCA9ICIiOwoKIAkvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHMKIAlyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAwKTsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gd2VicGFjay9ib290c3RyYXAgNDBlMzQyODJhMTAwZjgxMTc2M2U=,aW1wb3J0IGFEZWZhdWx0IGZyb20gIi4vc3JjL21vZDEiOwppbXBvcnQgeyBhTmFtZWQgfSBmcm9tICIuL3NyYy9tb2QyIjsKaW1wb3J0IHsgb3JpZ2luYWwgYXMgYW5BbGlhc2VkIH0gZnJvbSAiLi9zcmMvbW9kMyI7CmltcG9ydCAqIGFzIGFOYW1lc3BhY2UgZnJvbSAiLi9zcmMvbW9kNCI7CgppbXBvcnQgYURlZmF1bHQyIGZyb20gIi4vc3JjL21vZDUiOwppbXBvcnQgeyBhTmFtZWQyIH0gZnJvbSAiLi9zcmMvbW9kNiI7CmltcG9ydCB7IG9yaWdpbmFsIGFzIGFuQWxpYXNlZDIgfSBmcm9tICIuL3NyYy9tb2Q3IjsKaW1wb3J0ICogYXMgYU5hbWVzcGFjZTIgZnJvbSAiLi9zcmMvbW9kOCI7CgppbXBvcnQgYURlZmF1bHQzIGZyb20gIi4vc3JjL21vZDkiOwppbXBvcnQgeyBhTmFtZWQzIH0gZnJvbSAiLi9zcmMvbW9kMTAiOwppbXBvcnQgeyBvcmlnaW5hbCBhcyBhbkFsaWFzZWQzIH0gZnJvbSAiLi9zcmMvbW9kMTEiOwppbXBvcnQgKiBhcyBhTmFtZXNwYWNlMyBmcm9tICIuL3NyYy9tb2QxMiI7CgppbXBvcnQgb3B0aW1pemVkT3V0IGZyb20gIi4vc3JjL29wdGltaXplZC1vdXQiOwpvcHRpbWl6ZWRPdXQoKTsKCmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJvb3QoKSB7CiAgY29uc29sZS5sb2coInBhdXNlIGhlcmUiLCByb290KTsKCiAgY29uc29sZS5sb2coYURlZmF1bHQpOwogIGNvbnNvbGUubG9nKGFuQWxpYXNlZCk7CiAgY29uc29sZS5sb2coYU5hbWVkKTsKICBjb25zb2xlLmxvZyhhbkFsaWFzZWQpOwogIGNvbnNvbGUubG9nKGFOYW1lc3BhY2UpOwoKICB0cnkgewogICAgLy8gTm9uZSBvZiB0aGVzZSBhcmUgY2FsbGFibGUgaW4gdGhpcyBjb2RlLCBidXQgd2Ugc3RpbGwgd2FudCB0byBtYWtlIHN1cmUKICAgIC8vIHRoZXkgbWFwIHByb3Blcmx5IGV2ZW4gaWYgdGhlIG9ubHkgcmVmZXJlbmNlIGlzIGluIGEgY2FsbCBleHByZXNzaW9ucy4KICAgIGNvbnNvbGUubG9nKGFEZWZhdWx0MigpKTsKICAgIGNvbnNvbGUubG9nKGFuQWxpYXNlZDIoKSk7CiAgICBjb25zb2xlLmxvZyhhTmFtZWQyKCkpOwogICAgY29uc29sZS5sb2coYW5BbGlhc2VkMigpKTsKICAgIGNvbnNvbGUubG9nKGFOYW1lc3BhY2UyKCkpOwoKICAgIGNvbnNvbGUubG9nKG5ldyBhRGVmYXVsdDMoKSk7CiAgICBjb25zb2xlLmxvZyhuZXcgYW5BbGlhc2VkMygpKTsKICAgIGNvbnNvbGUubG9nKG5ldyBhTmFtZWQzKCkpOwogICAgY29uc29sZS5sb2cobmV3IGFuQWxpYXNlZDMoKSk7CiAgICBjb25zb2xlLmxvZyhuZXcgYU5hbWVzcGFjZTMoKSk7CiAgfSBjYXRjaCAoZSkge30KfQoKLy8gVGhlIGJ1aWxkIGhhcm5lc3Mgc2V0cyB0aGUgd3JvbmcgZ2xvYmFsLCBzbyBqdXN0IG92ZXJyaWRlIGl0LgpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKICB3aW5kb3cud2VicGFja01vZHVsZXNFczYgPSByb290Owp9KTsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy93ZWJwYWNrLW1vZHVsZXMtZXM2L2lucHV0Lmpz,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdCI7CgoKCi8vIFdFQlBBQ0sgRk9PVEVSIC8vCi8vIC4vZml4dHVyZXMvd2VicGFjay1tb2R1bGVzLWVzNi9zcmMvbW9kMS5qcw==,ZXhwb3J0IGNvbnN0IGFOYW1lZCA9ICJhLW5hbWVkIjsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy93ZWJwYWNrLW1vZHVsZXMtZXM2L3NyYy9tb2QyLmpz,ZXhwb3J0IGNvbnN0IG9yaWdpbmFsID0gImFuLW9yaWdpbmFsIjsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy93ZWJwYWNrLW1vZHVsZXMtZXM2L3NyYy9tb2QzLmpz,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdCI7CmV4cG9ydCBjb25zdCBhTmFtZWQgPSAiYS1uYW1lZCI7CgoKCi8vIFdFQlBBQ0sgRk9PVEVSIC8vCi8vIC4vZml4dHVyZXMvd2VicGFjay1tb2R1bGVzLWVzNi9zcmMvbW9kNC5qcw==,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdDIiOwoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL3dlYnBhY2stbW9kdWxlcy1lczYvc3JjL21vZDUuanM=,ZXhwb3J0IGNvbnN0IGFOYW1lZDIgPSAiYS1uYW1lZDIiOwoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL3dlYnBhY2stbW9kdWxlcy1lczYvc3JjL21vZDYuanM=,ZXhwb3J0IGNvbnN0IG9yaWdpbmFsID0gImFuLW9yaWdpbmFsMiI7CgoKCi8vIFdFQlBBQ0sgRk9PVEVSIC8vCi8vIC4vZml4dHVyZXMvd2VicGFjay1tb2R1bGVzLWVzNi9zcmMvbW9kNy5qcw==,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdDIiOwpleHBvcnQgY29uc3QgYU5hbWVkID0gImEtbmFtZWQyIjsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy93ZWJwYWNrLW1vZHVsZXMtZXM2L3NyYy9tb2Q4Lmpz,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdDMiOwoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL3dlYnBhY2stbW9kdWxlcy1lczYvc3JjL21vZDkuanM=,ZXhwb3J0IGNvbnN0IGFOYW1lZDMgPSAiYS1uYW1lZDMiOwoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL3dlYnBhY2stbW9kdWxlcy1lczYvc3JjL21vZDEwLmpz,ZXhwb3J0IGNvbnN0IG9yaWdpbmFsID0gImFuLW9yaWdpbmFsMyI7CgoKCi8vIFdFQlBBQ0sgRk9PVEVSIC8vCi8vIC4vZml4dHVyZXMvd2VicGFjay1tb2R1bGVzLWVzNi9zcmMvbW9kMTEuanM=,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdDMiOwpleHBvcnQgY29uc3QgYU5hbWVkID0gImEtbmFtZWQzIjsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy93ZWJwYWNrLW1vZHVsZXMtZXM2L3NyYy9tb2QxMi5qcw==,ZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3B0aW1pemVkT3V0KCkge30KCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy93ZWJwYWNrLW1vZHVsZXMtZXM2L3NyYy9vcHRpbWl6ZWQtb3V0Lmpz
[imported-bindings]: https://sokra.github.io/source-map-visualization/#base64,[encoded data, 10076 characters],[encoded data, 9960 characters],IAkvLyBUaGUgbW9kdWxlIGNhY2hlCiAJdmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTsKCiAJLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb24KIAlmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7CgogCQkvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGUKIAkJaWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHsKIAkJCXJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzOwogCQl9CiAJCS8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpCiAJCXZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKIAkJCWk6IG1vZHVsZUlkLAogCQkJbDogZmFsc2UsCiAJCQlleHBvcnRzOiB7fQogCQl9OwoKIAkJLy8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uCiAJCW1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pOwoKIAkJLy8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZAogCQltb2R1bGUubCA9IHRydWU7CgogCQkvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZQogCQlyZXR1cm4gbW9kdWxlLmV4cG9ydHM7CiAJfQoKCiAJLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXykKIAlfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzOwoKIAkvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZQogCV9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7CgogCS8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0cwogCV9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikgewogCQlpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7CiAJCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgewogCQkJCWNvbmZpZ3VyYWJsZTogZmFsc2UsCiAJCQkJZW51bWVyYWJsZTogdHJ1ZSwKIAkJCQlnZXQ6IGdldHRlcgogCQkJfSk7CiAJCX0KIAl9OwoKIAkvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlcwogCV9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkgewogCQl2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID8KIAkJCWZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6CiAJCQlmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9OwogCQlfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7CiAJCXJldHVybiBnZXR0ZXI7CiAJfTsKCiAJLy8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsCiAJX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9OwoKIAkvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfXwogCV9fd2VicGFja19yZXF1aXJlX18ucCA9ICIiOwoKIAkvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHMKIAlyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAwKTsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gd2VicGFjay9ib290c3RyYXAgZTAxODBjNzZhNDFiZGQ3YThlYWU=,aW1wb3J0IGFEZWZhdWx0IGZyb20gIi4vc3JjL21vZDEiOwppbXBvcnQgeyBhTmFtZWQgfSBmcm9tICIuL3NyYy9tb2QyIjsKaW1wb3J0IHsgb3JpZ2luYWwgYXMgYW5BbGlhc2VkIH0gZnJvbSAiLi9zcmMvbW9kMyI7CmltcG9ydCAqIGFzIGFOYW1lc3BhY2UgZnJvbSAiLi9zcmMvbW9kNCI7CgppbXBvcnQgYURlZmF1bHQyIGZyb20gIi4vc3JjL21vZDUiOwppbXBvcnQgeyBhTmFtZWQyIH0gZnJvbSAiLi9zcmMvbW9kNiI7CmltcG9ydCB7IG9yaWdpbmFsIGFzIGFuQWxpYXNlZDIgfSBmcm9tICIuL3NyYy9tb2Q3IjsKaW1wb3J0ICogYXMgYU5hbWVzcGFjZTIgZnJvbSAiLi9zcmMvbW9kOCI7CgppbXBvcnQgYURlZmF1bHQzIGZyb20gIi4vc3JjL21vZDkiOwppbXBvcnQgeyBhTmFtZWQzIH0gZnJvbSAiLi9zcmMvbW9kMTAiOwppbXBvcnQgeyBvcmlnaW5hbCBhcyBhbkFsaWFzZWQzIH0gZnJvbSAiLi9zcmMvbW9kMTEiOwppbXBvcnQgKiBhcyBhTmFtZXNwYWNlMyBmcm9tICIuL3NyYy9tb2QxMiI7CgppbXBvcnQgb3B0aW1pemVkT3V0IGZyb20gIi4vc3JjL29wdGltaXplZC1vdXQiOwpvcHRpbWl6ZWRPdXQoKTsKCmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJvb3QoKSB7CiAgY29uc29sZS5sb2coInBhdXNlIGhlcmUiLCByb290KTsKCiAgY29uc29sZS5sb2coYURlZmF1bHQpOwogIGNvbnNvbGUubG9nKGFuQWxpYXNlZCk7CiAgY29uc29sZS5sb2coYU5hbWVkKTsKICBjb25zb2xlLmxvZyhhbkFsaWFzZWQpOwogIGNvbnNvbGUubG9nKGFOYW1lc3BhY2UpOwoKICB0cnkgewogICAgLy8gTm9uZSBvZiB0aGVzZSBhcmUgY2FsbGFibGUgaW4gdGhpcyBjb2RlLCBidXQgd2Ugc3RpbGwgd2FudCB0byBtYWtlIHN1cmUKICAgIC8vIHRoZXkgbWFwIHByb3Blcmx5IGV2ZW4gaWYgdGhlIG9ubHkgcmVmZXJlbmNlIGlzIGluIGEgY2FsbCBleHByZXNzaW9ucy4KICAgIGNvbnNvbGUubG9nKGFEZWZhdWx0MigpKTsKICAgIGNvbnNvbGUubG9nKGFuQWxpYXNlZDIoKSk7CiAgICBjb25zb2xlLmxvZyhhTmFtZWQyKCkpOwogICAgY29uc29sZS5sb2coYW5BbGlhc2VkMigpKTsKICAgIGNvbnNvbGUubG9nKGFOYW1lc3BhY2UyKCkpOwoKICAgIGNvbnNvbGUubG9nKG5ldyBhRGVmYXVsdDMoKSk7CiAgICBjb25zb2xlLmxvZyhuZXcgYW5BbGlhc2VkMygpKTsKICAgIGNvbnNvbGUubG9nKG5ldyBhTmFtZWQzKCkpOwogICAgY29uc29sZS5sb2cobmV3IGFuQWxpYXNlZDMoKSk7CiAgICBjb25zb2xlLmxvZyhuZXcgYU5hbWVzcGFjZTMoKSk7CiAgfSBjYXRjaCAoZSkge30KfQoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL2ltcG9ydGVkLWJpbmRpbmdzL2lucHV0Lmpz,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdCI7CgoKCi8vIFdFQlBBQ0sgRk9PVEVSIC8vCi8vIC4vZml4dHVyZXMvaW1wb3J0ZWQtYmluZGluZ3Mvc3JjL21vZDEuanM=,ZXhwb3J0IGNvbnN0IGFOYW1lZCA9ICJhLW5hbWVkIjsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy9pbXBvcnRlZC1iaW5kaW5ncy9zcmMvbW9kMi5qcw==,ZXhwb3J0IGNvbnN0IG9yaWdpbmFsID0gImFuLW9yaWdpbmFsIjsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy9pbXBvcnRlZC1iaW5kaW5ncy9zcmMvbW9kMy5qcw==,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdCI7CmV4cG9ydCBjb25zdCBhTmFtZWQgPSAiYS1uYW1lZCI7CgoKCi8vIFdFQlBBQ0sgRk9PVEVSIC8vCi8vIC4vZml4dHVyZXMvaW1wb3J0ZWQtYmluZGluZ3Mvc3JjL21vZDQuanM=,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdDIiOwoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL2ltcG9ydGVkLWJpbmRpbmdzL3NyYy9tb2Q1Lmpz,ZXhwb3J0IGNvbnN0IGFOYW1lZDIgPSAiYS1uYW1lZDIiOwoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL2ltcG9ydGVkLWJpbmRpbmdzL3NyYy9tb2Q2Lmpz,ZXhwb3J0IGNvbnN0IG9yaWdpbmFsID0gImFuLW9yaWdpbmFsMiI7CgoKCi8vIFdFQlBBQ0sgRk9PVEVSIC8vCi8vIC4vZml4dHVyZXMvaW1wb3J0ZWQtYmluZGluZ3Mvc3JjL21vZDcuanM=,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdDIiOwpleHBvcnQgY29uc3QgYU5hbWVkID0gImEtbmFtZWQyIjsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy9pbXBvcnRlZC1iaW5kaW5ncy9zcmMvbW9kOC5qcw==,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdDMiOwoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL2ltcG9ydGVkLWJpbmRpbmdzL3NyYy9tb2Q5Lmpz,ZXhwb3J0IGNvbnN0IGFOYW1lZDMgPSAiYS1uYW1lZDMiOwoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL2ltcG9ydGVkLWJpbmRpbmdzL3NyYy9tb2QxMC5qcw==,ZXhwb3J0IGNvbnN0IG9yaWdpbmFsID0gImFuLW9yaWdpbmFsMyI7CgoKCi8vIFdFQlBBQ0sgRk9PVEVSIC8vCi8vIC4vZml4dHVyZXMvaW1wb3J0ZWQtYmluZGluZ3Mvc3JjL21vZDExLmpz,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdDMiOwpleHBvcnQgY29uc3QgYU5hbWVkID0gImEtbmFtZWQzIjsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy9pbXBvcnRlZC1iaW5kaW5ncy9zcmMvbW9kMTIuanM=,ZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3B0aW1pemVkT3V0KCkge30KCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy9pbXBvcnRlZC1iaW5kaW5ncy9zcmMvb3B0aW1pemVkLW91dC5qcw==
[webpack-modules]: https://sokra.github.io/source-map-visualization/#base64,[encoded data, 11920 characters],[encoded data, 10320 characters],IAkvLyBUaGUgbW9kdWxlIGNhY2hlCiAJdmFyIGluc3RhbGxlZE1vZHVsZXMgPSB7fTsKCiAJLy8gVGhlIHJlcXVpcmUgZnVuY3Rpb24KIAlmdW5jdGlvbiBfX3dlYnBhY2tfcmVxdWlyZV9fKG1vZHVsZUlkKSB7CgogCQkvLyBDaGVjayBpZiBtb2R1bGUgaXMgaW4gY2FjaGUKIAkJaWYoaW5zdGFsbGVkTW9kdWxlc1ttb2R1bGVJZF0pIHsKIAkJCXJldHVybiBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXS5leHBvcnRzOwogCQl9CiAJCS8vIENyZWF0ZSBhIG5ldyBtb2R1bGUgKGFuZCBwdXQgaXQgaW50byB0aGUgY2FjaGUpCiAJCXZhciBtb2R1bGUgPSBpbnN0YWxsZWRNb2R1bGVzW21vZHVsZUlkXSA9IHsKIAkJCWk6IG1vZHVsZUlkLAogCQkJbDogZmFsc2UsCiAJCQlleHBvcnRzOiB7fQogCQl9OwoKIAkJLy8gRXhlY3V0ZSB0aGUgbW9kdWxlIGZ1bmN0aW9uCiAJCW1vZHVsZXNbbW9kdWxlSWRdLmNhbGwobW9kdWxlLmV4cG9ydHMsIG1vZHVsZSwgbW9kdWxlLmV4cG9ydHMsIF9fd2VicGFja19yZXF1aXJlX18pOwoKIAkJLy8gRmxhZyB0aGUgbW9kdWxlIGFzIGxvYWRlZAogCQltb2R1bGUubCA9IHRydWU7CgogCQkvLyBSZXR1cm4gdGhlIGV4cG9ydHMgb2YgdGhlIG1vZHVsZQogCQlyZXR1cm4gbW9kdWxlLmV4cG9ydHM7CiAJfQoKCiAJLy8gZXhwb3NlIHRoZSBtb2R1bGVzIG9iamVjdCAoX193ZWJwYWNrX21vZHVsZXNfXykKIAlfX3dlYnBhY2tfcmVxdWlyZV9fLm0gPSBtb2R1bGVzOwoKIAkvLyBleHBvc2UgdGhlIG1vZHVsZSBjYWNoZQogCV9fd2VicGFja19yZXF1aXJlX18uYyA9IGluc3RhbGxlZE1vZHVsZXM7CgogCS8vIGRlZmluZSBnZXR0ZXIgZnVuY3Rpb24gZm9yIGhhcm1vbnkgZXhwb3J0cwogCV9fd2VicGFja19yZXF1aXJlX18uZCA9IGZ1bmN0aW9uKGV4cG9ydHMsIG5hbWUsIGdldHRlcikgewogCQlpZighX193ZWJwYWNrX3JlcXVpcmVfXy5vKGV4cG9ydHMsIG5hbWUpKSB7CiAJCQlPYmplY3QuZGVmaW5lUHJvcGVydHkoZXhwb3J0cywgbmFtZSwgewogCQkJCWNvbmZpZ3VyYWJsZTogZmFsc2UsCiAJCQkJZW51bWVyYWJsZTogdHJ1ZSwKIAkJCQlnZXQ6IGdldHRlcgogCQkJfSk7CiAJCX0KIAl9OwoKIAkvLyBnZXREZWZhdWx0RXhwb3J0IGZ1bmN0aW9uIGZvciBjb21wYXRpYmlsaXR5IHdpdGggbm9uLWhhcm1vbnkgbW9kdWxlcwogCV9fd2VicGFja19yZXF1aXJlX18ubiA9IGZ1bmN0aW9uKG1vZHVsZSkgewogCQl2YXIgZ2V0dGVyID0gbW9kdWxlICYmIG1vZHVsZS5fX2VzTW9kdWxlID8KIAkJCWZ1bmN0aW9uIGdldERlZmF1bHQoKSB7IHJldHVybiBtb2R1bGVbJ2RlZmF1bHQnXTsgfSA6CiAJCQlmdW5jdGlvbiBnZXRNb2R1bGVFeHBvcnRzKCkgeyByZXR1cm4gbW9kdWxlOyB9OwogCQlfX3dlYnBhY2tfcmVxdWlyZV9fLmQoZ2V0dGVyLCAnYScsIGdldHRlcik7CiAJCXJldHVybiBnZXR0ZXI7CiAJfTsKCiAJLy8gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsCiAJX193ZWJwYWNrX3JlcXVpcmVfXy5vID0gZnVuY3Rpb24ob2JqZWN0LCBwcm9wZXJ0eSkgeyByZXR1cm4gT2JqZWN0LnByb3RvdHlwZS5oYXNPd25Qcm9wZXJ0eS5jYWxsKG9iamVjdCwgcHJvcGVydHkpOyB9OwoKIAkvLyBfX3dlYnBhY2tfcHVibGljX3BhdGhfXwogCV9fd2VicGFja19yZXF1aXJlX18ucCA9ICIiOwoKIAkvLyBMb2FkIGVudHJ5IG1vZHVsZSBhbmQgcmV0dXJuIGV4cG9ydHMKIAlyZXR1cm4gX193ZWJwYWNrX3JlcXVpcmVfXyhfX3dlYnBhY2tfcmVxdWlyZV9fLnMgPSAwKTsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gd2VicGFjay9ib290c3RyYXAgNTk3YzJlZmU3ZTg1Njk2NzQ3NTA=,aW1wb3J0IGFEZWZhdWx0IGZyb20gIi4vc3JjL21vZDEiOwppbXBvcnQgeyBhTmFtZWQgfSBmcm9tICIuL3NyYy9tb2QyIjsKaW1wb3J0IHsgb3JpZ2luYWwgYXMgYW5BbGlhc2VkIH0gZnJvbSAiLi9zcmMvbW9kMyI7CmltcG9ydCAqIGFzIGFOYW1lc3BhY2UgZnJvbSAiLi9zcmMvbW9kNCI7CgppbXBvcnQgYURlZmF1bHQyIGZyb20gIi4vc3JjL21vZDUiOwppbXBvcnQgeyBhTmFtZWQyIH0gZnJvbSAiLi9zcmMvbW9kNiI7CmltcG9ydCB7IG9yaWdpbmFsIGFzIGFuQWxpYXNlZDIgfSBmcm9tICIuL3NyYy9tb2Q3IjsKaW1wb3J0ICogYXMgYU5hbWVzcGFjZTIgZnJvbSAiLi9zcmMvbW9kOCI7CgppbXBvcnQgYURlZmF1bHQzIGZyb20gIi4vc3JjL21vZDkiOwppbXBvcnQgeyBhTmFtZWQzIH0gZnJvbSAiLi9zcmMvbW9kMTAiOwppbXBvcnQgeyBvcmlnaW5hbCBhcyBhbkFsaWFzZWQzIH0gZnJvbSAiLi9zcmMvbW9kMTEiOwppbXBvcnQgKiBhcyBhTmFtZXNwYWNlMyBmcm9tICIuL3NyYy9tb2QxMiI7CgppbXBvcnQgb3B0aW1pemVkT3V0IGZyb20gIi4vc3JjL29wdGltaXplZC1vdXQiOwpvcHRpbWl6ZWRPdXQoKTsKCmV4cG9ydCBkZWZhdWx0IGZ1bmN0aW9uIHJvb3QoKSB7CiAgY29uc29sZS5sb2coInBhdXNlIGhlcmUiLCByb290KTsKCiAgY29uc29sZS5sb2coYURlZmF1bHQpOwogIGNvbnNvbGUubG9nKGFuQWxpYXNlZCk7CiAgY29uc29sZS5sb2coYU5hbWVkKTsKICBjb25zb2xlLmxvZyhhbkFsaWFzZWQpOwogIGNvbnNvbGUubG9nKGFOYW1lc3BhY2UpOwoKICB0cnkgewogICAgLy8gTm9uZSBvZiB0aGVzZSBhcmUgY2FsbGFibGUgaW4gdGhpcyBjb2RlLCBidXQgd2Ugc3RpbGwgd2FudCB0byBtYWtlIHN1cmUKICAgIC8vIHRoZXkgbWFwIHByb3Blcmx5IGV2ZW4gaWYgdGhlIG9ubHkgcmVmZXJlbmNlIGlzIGluIGEgY2FsbCBleHByZXNzaW9ucy4KICAgIGNvbnNvbGUubG9nKGFEZWZhdWx0MigpKTsKICAgIGNvbnNvbGUubG9nKGFuQWxpYXNlZDIoKSk7CiAgICBjb25zb2xlLmxvZyhhTmFtZWQyKCkpOwogICAgY29uc29sZS5sb2coYW5BbGlhc2VkMigpKTsKICAgIGNvbnNvbGUubG9nKGFOYW1lc3BhY2UyKCkpOwoKICAgIGNvbnNvbGUubG9nKG5ldyBhRGVmYXVsdDMoKSk7CiAgICBjb25zb2xlLmxvZyhuZXcgYW5BbGlhc2VkMygpKTsKICAgIGNvbnNvbGUubG9nKG5ldyBhTmFtZWQzKCkpOwogICAgY29uc29sZS5sb2cobmV3IGFuQWxpYXNlZDMoKSk7CiAgICBjb25zb2xlLmxvZyhuZXcgYU5hbWVzcGFjZTMoKSk7CiAgfSBjYXRjaCAoZSkge30KfQoKLy8gVGhlIGJ1aWxkIGhhcm5lc3Mgc2V0cyB0aGUgd3JvbmcgZ2xvYmFsLCBzbyBqdXN0IG92ZXJyaWRlIGl0LgpQcm9taXNlLnJlc29sdmUoKS50aGVuKCgpID0+IHsKICB3aW5kb3cud2VicGFja01vZHVsZXMgPSByb290Owp9KTsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy93ZWJwYWNrLW1vZHVsZXMvaW5wdXQuanM=,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdCI7CgoKCi8vIFdFQlBBQ0sgRk9PVEVSIC8vCi8vIC4vZml4dHVyZXMvd2VicGFjay1tb2R1bGVzL3NyYy9tb2QxLmpz,ZXhwb3J0IGNvbnN0IGFOYW1lZCA9ICJhLW5hbWVkIjsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy93ZWJwYWNrLW1vZHVsZXMvc3JjL21vZDIuanM=,ZXhwb3J0IGNvbnN0IG9yaWdpbmFsID0gImFuLW9yaWdpbmFsIjsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy93ZWJwYWNrLW1vZHVsZXMvc3JjL21vZDMuanM=,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdCI7CmV4cG9ydCBjb25zdCBhTmFtZWQgPSAiYS1uYW1lZCI7CgoKCi8vIFdFQlBBQ0sgRk9PVEVSIC8vCi8vIC4vZml4dHVyZXMvd2VicGFjay1tb2R1bGVzL3NyYy9tb2Q0Lmpz,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdDIiOwoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL3dlYnBhY2stbW9kdWxlcy9zcmMvbW9kNS5qcw==,ZXhwb3J0IGNvbnN0IGFOYW1lZDIgPSAiYS1uYW1lZDIiOwoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL3dlYnBhY2stbW9kdWxlcy9zcmMvbW9kNi5qcw==,ZXhwb3J0IGNvbnN0IG9yaWdpbmFsID0gImFuLW9yaWdpbmFsMiI7CgoKCi8vIFdFQlBBQ0sgRk9PVEVSIC8vCi8vIC4vZml4dHVyZXMvd2VicGFjay1tb2R1bGVzL3NyYy9tb2Q3Lmpz,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdDIiOwpleHBvcnQgY29uc3QgYU5hbWVkID0gImEtbmFtZWQyIjsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy93ZWJwYWNrLW1vZHVsZXMvc3JjL21vZDguanM=,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdDMiOwoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL3dlYnBhY2stbW9kdWxlcy9zcmMvbW9kOS5qcw==,ZXhwb3J0IGNvbnN0IGFOYW1lZDMgPSAiYS1uYW1lZDMiOwoKCgovLyBXRUJQQUNLIEZPT1RFUiAvLwovLyAuL2ZpeHR1cmVzL3dlYnBhY2stbW9kdWxlcy9zcmMvbW9kMTAuanM=,ZXhwb3J0IGNvbnN0IG9yaWdpbmFsID0gImFuLW9yaWdpbmFsMyI7CgoKCi8vIFdFQlBBQ0sgRk9PVEVSIC8vCi8vIC4vZml4dHVyZXMvd2VicGFjay1tb2R1bGVzL3NyYy9tb2QxMS5qcw==,ZXhwb3J0IGRlZmF1bHQgImEtZGVmYXVsdDMiOwpleHBvcnQgY29uc3QgYU5hbWVkID0gImEtbmFtZWQzIjsKCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy93ZWJwYWNrLW1vZHVsZXMvc3JjL21vZDEyLmpz,ZXhwb3J0IGRlZmF1bHQgZnVuY3Rpb24gb3B0aW1pemVkT3V0KCkge30KCgoKLy8gV0VCUEFDSyBGT09URVIgLy8KLy8gLi9maXh0dXJlcy93ZWJwYWNrLW1vZHVsZXMvc3JjL29wdGltaXplZC1vdXQuanM=
