diff --git a/auth/go.mod b/auth/go.mod index 172a0454..ee895742 100644 --- a/auth/go.mod +++ b/auth/go.mod @@ -7,34 +7,20 @@ require ( github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 github.com/dosco/graphjin/core/v3 v3.0.0-20230131095039-2864a2e4a4db github.com/golang-jwt/jwt v3.2.2+incompatible - github.com/gomodule/redigo v1.8.9 + github.com/gomodule/redigo v1.7.2 github.com/gorilla/websocket v1.5.0 - github.com/lestrrat-go/jwx v1.2.25 - github.com/stretchr/testify v1.8.4 - go.uber.org/zap v1.24.0 + github.com/lestrrat-go/jwx v0.9.2 + github.com/stretchr/testify v1.2.2 + go.uber.org/zap v1.11.0 golang.org/x/crypto v0.9.0 ) require ( github.com/davecgh/go-spew v1.1.1 // indirect - github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect - github.com/goccy/go-json v0.10.2 // indirect github.com/hashicorp/golang-lru v0.5.4 // indirect - github.com/kr/pretty v0.3.1 // indirect - github.com/kr/text v0.2.0 // indirect - github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect - github.com/lestrrat-go/blackmagic v1.0.1 // indirect - github.com/lestrrat-go/httpcc v1.0.1 // indirect - github.com/lestrrat-go/iter v1.0.2 // indirect - github.com/lestrrat-go/option v1.0.1 // indirect github.com/pkg/errors v0.9.1 // indirect github.com/pmezard/go-difflib v1.0.0 // indirect - github.com/rogpeppe/go-internal v1.9.0 // indirect - github.com/stretchr/objx v0.5.0 // indirect - go.uber.org/atomic v1.10.0 // indirect - go.uber.org/goleak v1.1.12 // indirect - go.uber.org/multierr v1.9.0 // indirect + go.uber.org/atomic v1.4.0 // indirect + go.uber.org/multierr v1.2.0 // indirect golang.org/x/sync v0.1.0 // indirect - gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c // indirect - gopkg.in/yaml.v3 v3.0.1 // indirect ) diff --git a/auth/go.sum b/auth/go.sum index 7f6b5f34..7d0f0183 100644 --- a/auth/go.sum +++ b/auth/go.sum @@ -1,133 +1,34 @@ github.com/adjust/gorails v0.0.0-20171013043634-2786ed0c03d3 h1:+qz9Ga6l6lKw6fgvk5RMV5HQznSLvI8Zxajwdj4FhFg= github.com/adjust/gorails v0.0.0-20171013043634-2786ed0c03d3/go.mod h1:FlkD11RtgMTYjVuBnb7cxoHmQGqvPpCsr2atC88nl/M= -github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 h1:wAIE/kN63Oig1DdOzN7O+k4AbFh2cCJoKMFXrwRJtzk= github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= -github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= -github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= -github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 h1:8UrgZ3GkP4i/CLijOJx79Yu+etlyjdBU4sfcs2WYQMs= -github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0/go.mod h1:v57UDF4pDQJcEfFUCRop3lJL149eHGSe9Jvczhzjo/0= github.com/dosco/graphjin/core/v3 v3.0.0-20230131095039-2864a2e4a4db h1:Y7oO3VIhvREY8zKlbQBKWWs6WtEpomZihf7+0o6n5vQ= github.com/dosco/graphjin/core/v3 v3.0.0-20230131095039-2864a2e4a4db/go.mod h1:JNJBiJJCh9VzcEr8tx8yN2BddDvxCBrk8S4bO6dcw5U= -github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.10.0 h1:mXKd9Qw4NuzShiRlOXKews24ufknHO7gx30lsDyokKA= -github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= -github.com/goccy/go-json v0.10.2 h1:CrxCmQqYDkv1z7lO7Wbh2HN93uovUHgrECaO5ZrCXAU= -github.com/goccy/go-json v0.10.2/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/golang-jwt/jwt v3.2.2+incompatible h1:IfV12K8xAKAnZqdXVzCZ+TOjboZ2keLg81eXfW3O+oY= github.com/golang-jwt/jwt v3.2.2+incompatible/go.mod h1:8pz2t5EyA70fFQQSrl6XZXzqecmYZeUEB8OUGHkxJ+I= -github.com/gomodule/redigo v1.8.9 h1:Sl3u+2BI/kk+VEatbj0scLdrFhjPmbxOc1myhDP41ws= -github.com/gomodule/redigo v1.8.9/go.mod h1:7ArFNvsTjH8GMMzB4uy1snslv2BwmginuMs06a1uzZE= +github.com/gomodule/redigo v1.7.2 h1:jcyL7zCnNqYSVexEkYdxJyit9lcHmfyeCAFHP8+S85o= +github.com/gomodule/redigo v1.7.2/go.mod h1:B4C85qUVwatsJoIUNIfCRsp7qO0iAmpGFZ4EELWSbC4= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/hashicorp/golang-lru v1.0.1 h1:5KzQ9DWj9u/NZIuatPgGU/H7bIxFbUta+iD5OQ/aLxo= -github.com/hashicorp/golang-lru v1.0.1/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= -github.com/kr/pretty v0.1.0/go.mod h1:dAy3ld7l9f0ibDNOQOHHMYYIIbhfbHSm3C4ZsoJORNo= -github.com/kr/pretty v0.2.1/go.mod h1:ipq/a2n7PKx3OHsz4KJII5eveXtPO4qwEXGdVfWzfnI= -github.com/kr/pretty v0.3.0 h1:WgNl7dwNpEZ6jJ9k1snq4pZsg7DOEN8hP9Xw0Tsjwk0= -github.com/kr/pretty v0.3.0/go.mod h1:640gp4NfQd8pI5XOwp5fnNeVWj67G7CFk/SaSQn7NBk= -github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE= -github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= -github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= -github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= -github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= -github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= -github.com/lestrrat-go/backoff/v2 v2.0.8 h1:oNb5E5isby2kiro9AgdHLv5N5tint1AnDVVf2E2un5A= -github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= -github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ= -github.com/lestrrat-go/blackmagic v1.0.1 h1:lS5Zts+5HIC/8og6cGHb0uCcNCa3OUt1ygh3Qz2Fe80= -github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU= -github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= -github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E= -github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= -github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzltI= -github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4= -github.com/lestrrat-go/jwx v1.2.25 h1:tAx93jN2SdPvFn08fHNAhqFJazn5mBBOB8Zli0g0otA= -github.com/lestrrat-go/jwx v1.2.25/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY= -github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= -github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= -github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= -github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/lestrrat-go/jwx v0.9.2 h1:1neTPQvRiPRtQpU7QHEEG6dM8A1AFCgi1FGN/2VBucA= +github.com/lestrrat-go/jwx v0.9.2/go.mod h1:iEoxlYfZjvoGpuWwxUz+eR5e6KTJGsaRcy/YNA/UnBk= github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4= github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0= github.com/pmezard/go-difflib v1.0.0 h1:4DBwDE0NGyQoBHbLQYPwSUPoCMWR5BEzIk/f1lZbAQM= github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4= -github.com/rogpeppe/go-internal v1.6.1 h1:/FiVV8dS/e+YqF2JvO3yXRFbBLTIuSDkuC7aBOAvL+k= -github.com/rogpeppe/go-internal v1.6.1/go.mod h1:xXDCJY+GAPziupqXw64V24skbSoqbTEfhy4qGm1nDQc= -github.com/rogpeppe/go-internal v1.9.0 h1:73kH8U+JUqXU8lRuOHeVHaa/SZPifC7BkcraZVejAe8= -github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= -github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= -github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= -github.com/stretchr/objx v0.5.0 h1:1zr/of2m5FGMsad5YfcqgdqdWrIhu+EBEJRhR1U7z/c= -github.com/stretchr/objx v0.5.0/go.mod h1:Yh+to48EsGEfYuaHDzXPcE3xhTkx73EhmCGUpEOglKo= -github.com/stretchr/testify v1.5.1/go.mod h1:5W2xD1RspED5o8YsWQXVCued0rvSQ+mT+I5cxcmMvtA= -github.com/stretchr/testify v1.6.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.7.1/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg= -github.com/stretchr/testify v1.8.0/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= -github.com/stretchr/testify v1.8.1 h1:w7B6lhMri9wdJUVmEZPGGhZzrYTPvgJArz7wNPgYKsk= -github.com/stretchr/testify v1.8.1/go.mod h1:w2LPCIKwWwSfY2zedu0+kehJoqGctiVI29o6fzry7u4= -github.com/stretchr/testify v1.8.4 h1:CcVxjf3Q8PM0mHUKJCdn+eZZtm5yQwehR5yeSVQQcUk= -github.com/stretchr/testify v1.8.4/go.mod h1:sz/lmYIOXD/1dqDmKjjqLyZ2RngseejIcXlSw2iwfAo= -github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= -go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= -go.uber.org/atomic v1.10.0/go.mod h1:LUxbIzbOniOlMKjJjyPfpl4v+PKK2cNJn91OQbhoJI0= -go.uber.org/goleak v1.1.12 h1:gZAh5/EyT/HQwlpkCy6wTpqfH9H8Lz8zbm3dZh+OyzA= -go.uber.org/goleak v1.1.12/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= -go.uber.org/multierr v1.9.0 h1:7fIwc/ZtS0q++VgcfqFDxSBZVv/Xo49/SYnDFupUwlI= -go.uber.org/multierr v1.9.0/go.mod h1:X2jQV1h+kxSjClGpnseKVIxpmcjrj7MNnI0bnlfKTVQ= -go.uber.org/zap v1.24.0 h1:FiJd5l1UOLj0wCgbSE0rwwXHzEdAZS6hiiSnxJN/D60= -go.uber.org/zap v1.24.0/go.mod h1:2kMP+WWQ8aoFoedH3T2sq6iJ2yDWpHbP0f6MQbS9Gkg= -golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w= -golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= -golang.org/x/crypto v0.0.0-20220427172511-eb4f295cb31f/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4= -golang.org/x/crypto v0.5.0 h1:U/0M97KRkSFvyD/3FSmdP5W5swImpNgle/EHFhOsQPE= -golang.org/x/crypto v0.5.0/go.mod h1:NK/OQwhpMQP3MwtdjgLlYHnH9ebylxKWv3e0fK+mkQU= +github.com/stretchr/testify v1.2.2 h1:bSDNvY7ZPG5RlJ8otE/7V6gMiyenm9RtJ7IUVIAoJ1w= +github.com/stretchr/testify v1.2.2/go.mod h1:a8OnRcib4nhh0OaRAV+Yts87kKdq0PP7pXfy6kDkUVs= +go.uber.org/atomic v1.4.0 h1:cxzIVoETapQEqDhQu3QfnvXAV4AlzcvUCxkVUFw3+EU= +go.uber.org/atomic v1.4.0/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/multierr v1.2.0 h1:6I+W7f5VwC5SV9dNrZ3qXrDB9mD0dyGOi/ZJmYw03T4= +go.uber.org/multierr v1.2.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/zap v1.11.0 h1:gSmpCfs+R47a4yQPAI4xJ0IPDLTRGXskm6UelqNXpqE= +go.uber.org/zap v1.11.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= -golang.org/x/lint v0.0.0-20190930215403-16217165b5de/go.mod h1:6SW0HCj/g11FgYtHlgUYUwCkIfeOF89ocIRzGO/8vkc= -golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= -golang.org/x/net v0.0.0-20190311183353-d8887717615a/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg= -golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= -golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= -golang.org/x/net v0.0.0-20211112202133-69e39bad7dc2/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= -golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= -golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= -golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20201119102817-f84b799fce68/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210423082822-04245dca01da/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= -golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= -golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= -golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= -golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= -golang.org/x/tools v0.0.0-20190311212946-11955173bddd/go.mod h1:LCzVGOaR6xXOjkQ3onu1FJEFr0SW1gC7cKk1uF8kGRs= -golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= -golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= -golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= -gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20180628173108-788fd7840127/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk= -gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q= -gopkg.in/errgo.v2 v2.1.0/go.mod h1:hNsd1EY+bozCKY1Ytp96fpM3vjJbqLJn88ws8XvfDNI= -gopkg.in/yaml.v2 v2.2.2/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= -gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= -gopkg.in/yaml.v3 v3.0.1 h1:fxVm/GzAzEWqLHuvctI91KS9hhNmmWOoWu0XTYJS7CA= -gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= diff --git a/cmd/go.mod b/cmd/go.mod index b804b9a7..d65f6a4c 100644 --- a/cmd/go.mod +++ b/cmd/go.mod @@ -1,19 +1,21 @@ module github.com/dosco/graphjin/cmd/v3 -go 1.18 +go 1.21 + +toolchain go1.21.0 require ( - github.com/brianvoe/gofakeit/v6 v6.20.1 - github.com/dop251/goja v0.0.0-20230111111035-473251c96b4c + github.com/brianvoe/gofakeit/v6 v6.26.0 + github.com/dop251/goja v0.0.0-20231027120936-b396bb4c349d github.com/dosco/graphjin/core/v3 v3.0.0-20230204233127-c618c2bad99b github.com/dosco/graphjin/serv/v3 v3.0.0-20230204233127-c618c2bad99b github.com/gosimple/slug v1.13.1 github.com/jackc/pgx/v5 v5.2.0 - github.com/jvatic/goja-babel v0.0.0-20230111121754-c57c791c6a80 + github.com/jvatic/goja-babel v0.0.0-20231129111243-c2ec7cdb1eef github.com/pkg/errors v0.9.1 - github.com/spf13/cobra v1.6.1 + github.com/spf13/cobra v1.8.0 go.uber.org/zap v1.24.0 - golang.org/x/text v0.6.0 + golang.org/x/text v0.13.0 ) require ( @@ -41,7 +43,7 @@ require ( github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 // indirect github.com/dimchansky/utfbom v1.1.1 // indirect - github.com/dlclark/regexp2 v1.7.0 // indirect + github.com/dlclark/regexp2 v1.10.0 // indirect github.com/dosco/graphjin/auth/v3 v3.0.0-20230128064639-95e7abc910b9 // indirect github.com/dosco/graphjin/plugin/otel/v3 v3.0.0-20230127082222-13448e4d7160 // indirect github.com/fatih/color v1.13.0 // indirect @@ -62,6 +64,7 @@ require ( github.com/golang/protobuf v1.5.2 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/gomodule/redigo v1.8.9 // indirect + github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b // indirect github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 // indirect github.com/google/uuid v1.3.0 // indirect github.com/googleapis/enterprise-certificate-proxy v0.2.1 // indirect @@ -89,7 +92,7 @@ require ( github.com/hashicorp/vault/sdk v0.4.1 // indirect github.com/hashicorp/yamux v0.0.0-20211028200310-0bc27b27de87 // indirect github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef // indirect - github.com/inconshreveable/mousetrap v1.0.1 // indirect + github.com/inconshreveable/mousetrap v1.1.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect @@ -134,11 +137,11 @@ require ( go.uber.org/atomic v1.10.0 // indirect go.uber.org/multierr v1.9.0 // indirect golang.org/x/crypto v0.5.0 // indirect - golang.org/x/net v0.5.0 // indirect + golang.org/x/net v0.6.0 // indirect golang.org/x/oauth2 v0.0.0-20221014153046-6fdb5e3db783 // indirect golang.org/x/sync v0.1.0 // indirect - golang.org/x/sys v0.4.0 // indirect - golang.org/x/term v0.4.0 // indirect + golang.org/x/sys v0.6.0 // indirect + golang.org/x/term v0.5.0 // indirect golang.org/x/time v0.3.0 // indirect google.golang.org/api v0.107.0 // indirect google.golang.org/appengine v1.6.7 // indirect diff --git a/cmd/go.sum b/cmd/go.sum index 4ea56fa9..e9d29d5d 100644 --- a/cmd/go.sum +++ b/cmd/go.sum @@ -105,15 +105,26 @@ github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 h1:wAIE/kN63Oi github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= github.com/brianvoe/gofakeit/v6 v6.20.1 h1:8ihJ60OvPnPJ2W6wZR7M+TTeaZ9bml0z6oy4gvyJ/ek= github.com/brianvoe/gofakeit/v6 v6.20.1/go.mod h1:Ow6qC71xtwm79anlwKRlWZW6zVq9D2XHE4QSSMP/rU8= +github.com/brianvoe/gofakeit/v6 v6.26.0 h1:DzJHo4K6RrAbglU6cReh+XqoaunuUMZ8OAQGXrYsXt8= +github.com/brianvoe/gofakeit/v6 v6.26.0/go.mod h1:Xj58BMSnFqcn/fAQeSK+/PLtC5kSb7FJIq4JyGa8vEs= github.com/cenkalti/backoff v2.2.1+incompatible h1:tNowT99t7UNflLxfYYSlKYsBpXdEet03Pg2g16Swow4= github.com/cenkalti/backoff/v3 v3.0.0/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/cenkalti/backoff/v3 v3.2.2 h1:cfUAAO3yvKMYKPrvhDuHSwQnhZNk/RMHKdZqKTxfm6M= github.com/cenkalti/backoff/v3 v3.2.2/go.mod h1:cIeZDE3IrqwwJl6VUwCN6trj1oXrTS4rc0ij+ULvLYs= github.com/census-instrumentation/opencensus-proto v0.2.1/go.mod h1:f6KPmirojxKA12rnyqOA5BBL4O983OfeGPqjHWSTneU= github.com/cespare/xxhash/v2 v2.1.1/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/chromedp/cdproto v0.0.0-20230802225258-3cf4e6d46a89/go.mod h1:GKljq0VrfU4D5yc+2qA6OVr8pmO/MBbPEWqWQ/oqGEs= +github.com/chromedp/chromedp v0.9.2/go.mod h1:LkSXJKONWTCHAfQasKFUZI+mxqS4tZqhmtGzzhLsnLs= +github.com/chromedp/sysutil v1.0.0/go.mod h1:kgWmDdq8fTzXYcKIBqIYvRRTnYb9aNS9moAV0xufSww= github.com/chzyer/logex v1.1.10/go.mod h1:+Ywpsq7O8HXn0nuIou7OrIPyXbp3wmkHB+jjWRnGsAI= +github.com/chzyer/logex v1.2.0/go.mod h1:9+9sk7u7pGNWYMkh0hdiL++6OeibzJccyQU4p4MedaY= +github.com/chzyer/logex v1.2.1/go.mod h1:JLbx6lG2kDbNRFnfkgvh4eRJRPX1QCoOIWomwysCBrQ= github.com/chzyer/readline v0.0.0-20180603132655-2972be24d48e/go.mod h1:nSuG5e5PlCu98SY8svDHJxuZscDgtXS6KTTbou5AhLI= +github.com/chzyer/readline v1.5.0/go.mod h1:x22KAscuvRqlLoK9CsoYsmxoXZMMFVyOl86cAH8qUic= +github.com/chzyer/readline v1.5.1/go.mod h1:Eh+b79XXUwfKfcPLepksvw2tcLE/Ct21YObkaSkeBlk= github.com/chzyer/test v0.0.0-20180213035817-a1ea475d72b1/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v0.0.0-20210722231415-061457976a23/go.mod h1:Q3SI9o4m/ZMnBNeIyt5eFwwo7qiLfzFZmjNmxjkiQlU= +github.com/chzyer/test v1.0.0/go.mod h1:2JlltgoNkt4TW/z9V/IzDdFaMTM2JPIi26O1pF38GC8= github.com/circonus-labs/circonus-gometrics v2.3.1+incompatible/go.mod h1:nmEj6Dob7S7YxXgwXpfOuvO54S+tGdZdw9fuRZt25Ag= github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp5jckzBHf4XRpQvBOLI+I= github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= @@ -123,6 +134,7 @@ github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnht github.com/cncf/xds/go v0.0.0-20210805033703-aa0b78936158/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= github.com/containerd/continuity v0.2.2 h1:QSqfxcn8c+12slxwu00AtzXrsami0MJb/MQs9lOLHLA= github.com/cpuguy83/go-md2man/v2 v2.0.2/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= +github.com/cpuguy83/go-md2man/v2 v2.0.3/go.mod h1:tgQtvFlXSQOSOSIRvRPT7W67SCa46tRHOmNcaadrF8o= github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E= github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/davecgh/go-spew v1.1.1 h1:vj9j/u1bqnvCEfJOwUhtlOARqs3+rkHYY13jYWTU97c= @@ -136,11 +148,15 @@ github.com/dimchansky/utfbom v1.1.1/go.mod h1:SxdoEBH5qIqFocHMyGOXVAybYJdr71b1Q/ github.com/dlclark/regexp2 v1.4.1-0.20201116162257-a2a8dda75c91/go.mod h1:2pZnwuY/m+8K6iRw6wQdMtk+rH5tNGR1i55kozfMjCc= github.com/dlclark/regexp2 v1.7.0 h1:7lJfhqlPssTb1WQx4yvTHN0uElPEv52sbaECrAQxjAo= github.com/dlclark/regexp2 v1.7.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= +github.com/dlclark/regexp2 v1.10.0 h1:+/GIL799phkJqYW+3YbOd8LCcbHzT0Pbo8zl70MHsq0= +github.com/dlclark/regexp2 v1.10.0/go.mod h1:DHkYz0B9wPfa6wondMfaivmHpzrQ3v9q8cnmRbL6yW8= github.com/docker/go-connections v0.4.0 h1:El9xVISelRB7BuFusrZozjnkIM5YnzCViNKohAFqRJQ= github.com/docker/go-units v0.4.0 h1:3uh0PgVws3nIA0Q+MwDC8yjEPf9zjRfZZWXZYDct3Tw= github.com/dop251/goja v0.0.0-20211022113120-dc8c55024d06/go.mod h1:R9ET47fwRVRPZnOGvHxxhuZcbrMCuiqOz3Rlrh4KSnk= github.com/dop251/goja v0.0.0-20230111111035-473251c96b4c h1:FdO5s2BNQi5ypAOSPlhQ9wF/XOaAg8A6E7+G1Ojp2j4= github.com/dop251/goja v0.0.0-20230111111035-473251c96b4c/go.mod h1:yRkwfj0CBpOGre+TwBsqPV0IH0Pk73e4PXJOeNDboGs= +github.com/dop251/goja v0.0.0-20231027120936-b396bb4c349d h1:wi6jN5LVt/ljaBG4ue79Ekzb12QfJ52L9Q98tl8SWhw= +github.com/dop251/goja v0.0.0-20231027120936-b396bb4c349d/go.mod h1:QMWlm50DNe14hD7t24KEqZuUdC9sOTy8W6XbCU1mlw4= github.com/dop251/goja_nodejs v0.0.0-20210225215109-d91c329300e7/go.mod h1:hn7BA7c8pLvoGndExHudxTDKZ84Pyvv+90pbBjbTz0Y= github.com/dop251/goja_nodejs v0.0.0-20211022123610-8dd9abb0616d/go.mod h1:DngW8aVqWbuLRMHItjPUyqdj+HWPvnQe8V8y1nDpIbM= github.com/dosco/graphjin/auth/v3 v3.0.0-20230128064639-95e7abc910b9 h1:9Xc2GYlyw7otkB2PQDRdape2fFsdl5/xOEi2LphNX7o= @@ -205,6 +221,9 @@ github.com/go-sql-driver/mysql v1.7.0/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9 github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= github.com/go-test/deep v1.0.2 h1:onZX1rnHT3Wv6cqNgYyFOOlgVKJrksuCMCRvJStbMYw= github.com/go-test/deep v1.0.2/go.mod h1:wGDj63lr65AM2AQyKZd/NYHGb0R+1RLqB8NKt3aSFNA= +github.com/gobwas/httphead v0.1.0/go.mod h1:O/RXo79gxV8G+RqlR/otEwx4Q36zl9rqC5u12GKvMCM= +github.com/gobwas/pool v0.2.1/go.mod h1:q8bcK0KcYlCgd9e7WYLm9LpyS+YeLd8JVDW6WezmKEw= +github.com/gobwas/ws v1.2.1/go.mod h1:hRKAFb8wOxFROYNsT1bqfWnhX+b5MFeJM9r2ZSwg/KY= github.com/goccy/go-json v0.9.7/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= github.com/goccy/go-json v0.10.0 h1:mXKd9Qw4NuzShiRlOXKews24ufknHO7gx30lsDyokKA= github.com/goccy/go-json v0.10.0/go.mod h1:6MelG93GURQebXPDq3khkgXZkazVtN9CRI+MGFi0w8I= @@ -277,6 +296,10 @@ github.com/google/pprof v0.0.0-20200708004538-1a94d8640e99/go.mod h1:ZgVRPoUq/hf github.com/google/pprof v0.0.0-20201023163331-3e6fc7fc9c4c/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201203190320-1bf35d6f28c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= github.com/google/pprof v0.0.0-20201218002935-b9804c9f04c2/go.mod h1:kpwsk12EmLew5upagYY7GY0pfYCcupk39gWOCRROcvE= +github.com/google/pprof v0.0.0-20230207041349-798e818bf904 h1:4/hN5RUoecvl+RmJRE2YxKWtnnQls6rQjjW5oV7qg2U= +github.com/google/pprof v0.0.0-20230207041349-798e818bf904/go.mod h1:uglQLonpP8qtYCYyzA+8c/9qtqgA3qsXGYqCPKARAFg= +github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b h1:RMpPgZTSApbPf7xaVel+QkoGPRLFLrwFO89uDUHEGf0= +github.com/google/pprof v0.0.0-20231023181126-ff6d637d2a7b/go.mod h1:czg5+yv1E0ZGTi6S6vVK1mke0fV+FaUhNGcd6VRS9Ik= github.com/google/renameio v0.1.0/go.mod h1:KWCgfxg9yswjAJkECMjeO8J8rahYeXnNhOm40UhjYkI= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 h1:El6M4kTTCOh6aBiKaUGG7oYTSPP8MxqL4YI3kZKwcP4= github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ= @@ -363,8 +386,12 @@ github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef h1:A9HsByNhogrvm9cWb github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef/go.mod h1:lADxMC39cJJqL93Duh1xhAs4I2Zs8mKS89XWXFGp9cs= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= +github.com/ianlancetaylor/demangle v0.0.0-20220319035150-800ac71e25c2/go.mod h1:aYm2/VgdVmcIU8iMfdMvDMsRAQjcfZSKFby6HOFvi/w= +github.com/ianlancetaylor/demangle v0.0.0-20230524184225-eabc099b10ab/go.mod h1:gx7rwoVhcfuVKG5uya9Hs3Sxj7EIvldVofAWIUtGouw= github.com/inconshreveable/mousetrap v1.0.1 h1:U3uMjPSQEBMNp1lFxmllqCPM6P5u/Xq7Pgzkat/bFNc= github.com/inconshreveable/mousetrap v1.0.1/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= +github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8= +github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw= github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsIM= github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20200714003250-2b9c44734f2b h1:C8S2+VttkHFdOOCXJe+YGfa4vHYwlt4Zx+IVXQ97jYg= @@ -378,6 +405,7 @@ github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9Y github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= github.com/jmespath/go-jmespath/internal/testify v1.5.1/go.mod h1:L3OGu8Wl2/fWfCI6z80xFu9LTZmf1ZRjMHUOPmWr69U= +github.com/josharian/intern v1.0.0/go.mod h1:5DoeVV0s6jJacbCEi61lwdGj/aVlrQvzHFFd8Hwg//Y= github.com/json-iterator/go v1.1.6/go.mod h1:+SdeFBvtyEkXs7REEP0seUULqWtbJapLOCVDaaPEHmU= github.com/json-iterator/go v1.1.9/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/jstemmer/go-junit-report v0.0.0-20190106144839-af01ea7f8024/go.mod h1:6v2b51hI/fHJwM22ozAgKL4VKDeJcHhJFhtBdhmNjmU= @@ -385,6 +413,8 @@ github.com/jstemmer/go-junit-report v0.9.1/go.mod h1:Brl9GWCQeLvo8nXZwPNNblvFj/X github.com/julienschmidt/httprouter v1.2.0/go.mod h1:SYymIcj16QtmaHHD7aYtjjsJG7VTCxuUUipMqKk8s4w= github.com/jvatic/goja-babel v0.0.0-20230111121754-c57c791c6a80 h1:d4mauQPR9vd0Z5tADsrlW2P70IEI7JXcQN76izvUcOA= github.com/jvatic/goja-babel v0.0.0-20230111121754-c57c791c6a80/go.mod h1:fZMbr301Tz2JydRgNKGRpF7Ww8eckSiiAZYqTfB8n20= +github.com/jvatic/goja-babel v0.0.0-20231129111243-c2ec7cdb1eef h1:mZQ9H2bY60yWypyHVAdl/1fWIxpcj4FZWSJQlu/qR4w= +github.com/jvatic/goja-babel v0.0.0-20231129111243-c2ec7cdb1eef/go.mod h1:eNFg2cUOun927qYJlGLKOcBoEyheIdtukGherEJk+EQ= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 h1:iQTw/8FWTuc7uiaSepXwyf3o52HaUYcV+Tu66S3F5GA= github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8= github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck= @@ -402,6 +432,7 @@ github.com/kr/pty v1.1.1/go.mod h1:pFQYn66WHrOpPYNljwOMqo10TkYh1fy3cYio2l3bCsQ= github.com/kr/text v0.1.0/go.mod h1:4Jbv+DJW3UT/LiOwJeYQe1efqtUx/iVham/4vfdArNI= github.com/kr/text v0.2.0 h1:5Nx0Ya0ZqY2ygV366QzturHI13Jq95ApcVaJBhpS+AY= github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= +github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80/go.mod h1:imJHygn/1yfhB7XSJJKlFZKl/J+dCPAknuiaGOshXAs= github.com/lestrrat-go/backoff/v2 v2.0.8 h1:oNb5E5isby2kiro9AgdHLv5N5tint1AnDVVf2E2un5A= github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBBOiM/uP402WwN8Y= github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ= @@ -421,6 +452,7 @@ github.com/lib/pq v1.10.7 h1:p7ZhMD+KsSRozJr34udlUrhboJwWAgCg34+/ZZNvZZw= github.com/lib/pq v1.10.7/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= github.com/magiconair/properties v1.8.7 h1:IeQXZAiQcpL9mgcAe1Nu6cX9LLw6ExEHKjN0VQdvPDY= github.com/magiconair/properties v1.8.7/go.mod h1:Dhd985XPs7jluiymwWYZ0G4Z61jb3vdS329zhj2hYo0= +github.com/mailru/easyjson v0.7.7/go.mod h1:xzfreul335JAWq5oZzymOObrkdz5UnU4kGfJJLY9Nlc= github.com/mattn/go-colorable v0.0.9/go.mod h1:9vuHe8Xs5qXnSaW/c/ABM9alt+Vo+STaOChaDxuIBZU= github.com/mattn/go-colorable v0.1.4/go.mod h1:U0ppj6V5qS13XJ6of8GYAs25YV2eR4EVcfRqFIhoBtE= github.com/mattn/go-colorable v0.1.6/go.mod h1:u6P/XSegPjTcexA+o6vUJrdnUu04hMope9wVRipJSqc= @@ -465,6 +497,7 @@ github.com/oklog/run v1.1.0/go.mod h1:sVPdnTZT1zYwAJeCMu2Th4T21pA3FPOQRfWjQlk7DV github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U= github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= github.com/opencontainers/runc v1.1.0 h1:O9+X96OcDjkmmZyfaG996kV7yq8HsoU2h1XRRQcefG8= +github.com/orisano/pixelmatch v0.0.0-20220722002657-fb0b55479cde/go.mod h1:nZgzbfBr3hhjoZnS66nKrHmduYNpc34ny7RK4z5/HM0= github.com/ory/dockertest v3.3.5+incompatible h1:iLLK6SQwIhcbrG783Dghaaa3WPzGc+4Emza6EbVUUGA= github.com/pascaldekloe/goe v0.1.0 h1:cBOtyMzM9HTpWjXfbbunk26uA6nG3a8n06Wieeh0MwY= github.com/pascaldekloe/goe v0.1.0/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= @@ -513,6 +546,8 @@ github.com/spf13/cast v1.5.0 h1:rj3WzYc11XZaIZMPKmwP96zkFEnnAmV8s6XbB2aY32w= github.com/spf13/cast v1.5.0/go.mod h1:SpXXQ5YoyJw6s3/6cMTQuxvgRl3PCJiyaX9p6b155UU= github.com/spf13/cobra v1.6.1 h1:o94oiPyS4KD1mPy2fmcYYHHfCxLqYjJOhGsCHFZtEzA= github.com/spf13/cobra v1.6.1/go.mod h1:IOw/AERYS7UzyrGinqmz6HLUo219MORXGxhbaJUqzrY= +github.com/spf13/cobra v1.8.0 h1:7aJaZx1B85qltLMc546zn58BxxfZdR/W22ej9CFoEf0= +github.com/spf13/cobra v1.8.0/go.mod h1:WXLWApfZ71AjXPya3WOlMsY9yMs7YeiHhFVlvLyhcho= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -624,6 +659,7 @@ golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.4.1/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= golang.org/x/mod v0.6.0-dev.0.20220419223038-86c51ed26bb4/go.mod h1:jJ57K6gSWd91VN4djpZkiMVwK6gcyfeH4XE8wZrZaV4= +golang.org/x/mod v0.8.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= golang.org/x/net v0.0.0-20180530234432-1e491301e022/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180724234803-3673e40ba225/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= golang.org/x/net v0.0.0-20180826012351-8a410e7b638d/go.mod h1:mL1N/T3taQHkDXs73rZJwtUhF3w3ftmwwsq0BUmARs4= @@ -665,6 +701,7 @@ golang.org/x/net v0.0.0-20220127200216-cd36cc0744dd/go.mod h1:CfG3xpIq0wQ8r1q4Su golang.org/x/net v0.0.0-20220722155237-a158d28d115b/go.mod h1:XRhObCWvk6IyKnWLug+ECip1KBveYUHfp+8e9klMJ9c= golang.org/x/net v0.5.0 h1:GyT4nK/YDHSqa1c4753ouYCDajOYKTja9Xb/OHtgvSw= golang.org/x/net v0.5.0/go.mod h1:DivGGAXEgPSlEBzxGzZI+ZLohi+xUj054jfeKui00ws= +golang.org/x/net v0.6.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -734,16 +771,20 @@ golang.org/x/sys v0.0.0-20210615035016-665e8c7367d1/go.mod h1:oPkhp1MJrh7nUepCBc golang.org/x/sys v0.0.0-20210630005230-0f9fa26af87c/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210927094055-39ccf1dd6fa6/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20211216021012-1d35b9e2eb4e/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.0.0-20220310020820-b874c991c1a5/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220722155257-8c9f86f7a55f/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220908164124-27713097b956/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.4.0 h1:Zr2JFtRQNX3BCZ8YtxRE9hNJYC8J6I1MVbMg6owUp18= golang.org/x/sys v0.4.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.5.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.6.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.4.0 h1:O7UWfv5+A2qiuulQk30kVinPoMtoIPeVaKLEgLpVkvg= golang.org/x/term v0.4.0/go.mod h1:9P2UbLfCdcvo3p/nzKvsmas4TnlujnuoV9hGgYzW1lQ= +golang.org/x/term v0.5.0/go.mod h1:jMB1sMXY+tzblOD4FWmEbocvup2/aLOaQEp7JmGp78k= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -752,8 +793,12 @@ golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.4/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.6/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ= golang.org/x/text v0.3.7/go.mod h1:u+2+/6zg+i71rQMx5EYifcz6MCKuco9NR6JIITiCfzQ= +golang.org/x/text v0.3.8/go.mod h1:E6s5w1FMmriuDzIBO73fBruAKo1PCIq6d2Q6DHfQ8WQ= golang.org/x/text v0.6.0 h1:3XmdazWV+ubf7QgHSTWeykHOci5oeekaGJBLkrkaw4k= golang.org/x/text v0.6.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.7.0/go.mod h1:mrYo+phRRbMaCq/xk9113O4dZlRixOauAjOtrjsXDZ8= +golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= +golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -808,6 +853,7 @@ golang.org/x/tools v0.0.0-20210105154028-b0ab187a4818/go.mod h1:emZCQorbCU4vsT4f golang.org/x/tools v0.0.0-20210108195828-e2f9c7f1fc8e/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA= golang.org/x/tools v0.1.0/go.mod h1:xkSsbof2nBLbhDlRMhhhyNLN/zl3eTqcnHD5viDpcZ0= golang.org/x/tools v0.1.12/go.mod h1:hNGJHUnrk76NpqgfD5Aqm5Crs+Hm0VOH/i9J2+nxYbc= +golang.org/x/tools v0.6.0/go.mod h1:Xwgl3UAJ/d3gWutnCtw505GrjyAbvKui8lOU390QaIU= golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= diff --git a/core/go.mod b/core/go.mod index 92fa8801..c4c9e1e3 100644 --- a/core/go.mod +++ b/core/go.mod @@ -4,5 +4,5 @@ go 1.18 require ( github.com/hashicorp/golang-lru v0.5.4 - golang.org/x/sync v0.1.0 + golang.org/x/sync v0.5.0 ) diff --git a/core/go.sum b/core/go.sum index 0891750a..c20d8135 100644 --- a/core/go.sum +++ b/core/go.sum @@ -1,4 +1,8 @@ github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= golang.org/x/sync v0.1.0 h1:wsuoTGHzEhffawBOhz5CYhcrV4IdKZbEyZjBMuTp12o= golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.5.0 h1:60k92dhOjHxJkrqnwsfl8KuaHbn/5dl0lUPUklKo3qE= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= diff --git a/core/internal/migrate/migrate.go b/core/internal/migrate/migrate.go new file mode 100644 index 00000000..26c42edc --- /dev/null +++ b/core/internal/migrate/migrate.go @@ -0,0 +1,122 @@ +package migrate + +import ( + "fmt" + "hash/fnv" + "strings" + + "github.com/dosco/graphjin/core/v3/internal/sdata" +) + +func MigrateSchema(current, expected sdata.DBInfo) []string { + if current.Type != expected.Type { + fmt.Println("Database type mismatch.") + return nil + } + + operations := []string{} + lockName := "__gj_migration_lock" + + // Start Transaction and Acquire Lock + switch expected.Type { + case "mysql": + operations = append(operations, "START TRANSACTION;") + operations = append(operations, fmt.Sprintf("SELECT GET_LOCK('%s', 10);", lockName)) // Wait up to 10 seconds to acquire lock + case "postgresql": + operations = append(operations, "BEGIN;") + operations = append(operations, fmt.Sprintf("SELECT pg_advisory_xact_lock(%d);", hashStringToInt(lockName))) + } + + // Locking mechanism (assuming schema_migrations table for the sake of simplicity) + switch expected.Type { + case "mysql": + operations = append(operations, "LOCK TABLES schema_migrations WRITE;") + case "postgresql": + operations = append(operations, "LOCK TABLE schema_migrations IN ACCESS EXCLUSIVE MODE;") + } + + for _, expTable := range expected.Tables { + var currTable *sdata.DBTable + for _, ct := range current.Tables { + if ct.Name == expTable.Name { + currTable = &ct + break + } + } + + if currTable == nil { + // Create table + operations = append(operations, CreateTableQuery(expTable, expected.Type)) + continue + } + + // If table is found, compare columns + for _, expCol := range expTable.Columns { + var currCol *sdata.DBColumn + for _, cc := range currTable.Columns { + if cc.Name == expCol.Name { + currCol = &cc + break + } + } + + if currCol == nil { + // Add column + operations = append(operations, AddColumnQuery(expTable, expCol, expected.Type)) + } else { + // Rename column if needed + if currCol.Name != expCol.Name { + operations = append(operations, RenameColumnQuery(expTable, *currCol, expCol, expected.Type)) + } + } + } + } + + // Commit Transaction + switch expected.Type { + case "mysql": + operations = append(operations, "COMMIT;") + operations = append(operations, fmt.Sprintf("SELECT RELEASE_LOCK('%s');", lockName)) + default: + operations = append(operations, "COMMIT;") // Advisory locks in PostgreSQL are automatically released at the end of the transaction + } + + return operations +} + +func CreateTableQuery(table sdata.DBTable, dbType string) string { + var columns []string + for _, col := range table.Columns { + columns = append(columns, fmt.Sprintf("%s %s", col.Name, col.Type)) + } + return fmt.Sprintf("CREATE TABLE %s (%s);", table.Name, strings.Join(columns, ", ")) +} + +func AddColumnQuery(table sdata.DBTable, column sdata.DBColumn, dbType string) string { + return fmt.Sprintf("ALTER TABLE %s ADD COLUMN %s %s;", table.Name, column.Name, column.Type) +} + +func RenameColumnQuery(table sdata.DBTable, currentCol sdata.DBColumn, expectedCol sdata.DBColumn, dbType string) string { + switch dbType { + case "mysql": + return fmt.Sprintf("ALTER TABLE %s CHANGE COLUMN %s %s %s;", table.Name, currentCol.Name, expectedCol.Name, expectedCol.Type) + case "postgresql": + return fmt.Sprintf("ALTER TABLE %s RENAME COLUMN %s TO %s;", table.Name, currentCol.Name, expectedCol.Name) + default: + return "" + } +} + +// Hash a string to an integer, suitable for use with PostgreSQL's pg_advisory_xact_lock. +// Using FNV-1a hashing as an example, but you could use another approach if you prefer. +func hashStringToInt(s string) int { + h := fnv.New32a() + h.Write([]byte(s)) + return int(h.Sum32()) +} + +// Usage: +// current := DBInfo{...} +// expected := DBInfo{...} +// ops := MigrateSchema(current, expected) +// fmt.Println(strings.Join(ops, "\n")) diff --git a/go.work b/go.work index d6ae2097..f6354d37 100644 --- a/go.work +++ b/go.work @@ -1,4 +1,4 @@ -go 1.18 +go 1.21 use ( ./core diff --git a/go.work.sum b/go.work.sum index c8605d1d..99e9c167 100644 --- a/go.work.sum +++ b/go.work.sum @@ -1,148 +1,330 @@ cloud.google.com/go v0.110.0/go.mod h1:SJnCLqQ0FCFGSZMUNUf84MV3Aia54kn7pi8st7tMzaY= cloud.google.com/go v0.110.2/go.mod h1:k04UEeEtb6ZBRTv3dZz4CeJC3jKGxyhl0sAiVVquxiw= cloud.google.com/go v0.110.7/go.mod h1:+EYjdK8e5RME/VY/qLCAtuyALQ9q67dvuum8i+H5xsI= +cloud.google.com/go v0.110.8/go.mod h1:Iz8AkXJf1qmxC3Oxoep8R1T36w8B92yU29PcBhHO5fk= +cloud.google.com/go v0.110.10/go.mod h1:v1OoFqYxiBkUrruItNM3eT4lLByNjxmJSV/xDKJNnic= cloud.google.com/go/accessapproval v1.7.1/go.mod h1:JYczztsHRMK7NTXb6Xw+dwbs/WnOJxbo/2mTI+Kgg68= +cloud.google.com/go/accessapproval v1.7.4/go.mod h1:/aTEh45LzplQgFYdQdwPMR9YdX0UlhBmvB84uAmQKUc= cloud.google.com/go/accesscontextmanager v1.8.1/go.mod h1:JFJHfvuaTC+++1iL1coPiG1eu5D24db2wXCDWDjIrxo= +cloud.google.com/go/accesscontextmanager v1.8.4/go.mod h1:ParU+WbMpD34s5JFEnGAnPBYAgUHozaTmDJU7aCU9+M= cloud.google.com/go/aiplatform v1.48.0/go.mod h1:Iu2Q7sC7QGhXUeOhAj/oCK9a+ULz1O4AotZiqjQ8MYA= +cloud.google.com/go/aiplatform v1.52.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= +cloud.google.com/go/aiplatform v1.54.0/go.mod h1:pwZMGvqe0JRkI1GWSZCtnAfrR4K1bv65IHILGA//VEU= cloud.google.com/go/analytics v0.21.3/go.mod h1:U8dcUtmDmjrmUTnnnRnI4m6zKn/yaA5N9RlEkYFHpQo= +cloud.google.com/go/analytics v0.21.6/go.mod h1:eiROFQKosh4hMaNhF85Oc9WO97Cpa7RggD40e/RBy8w= cloud.google.com/go/apigateway v1.6.1/go.mod h1:ufAS3wpbRjqfZrzpvLC2oh0MFlpRJm2E/ts25yyqmXA= +cloud.google.com/go/apigateway v1.6.4/go.mod h1:0EpJlVGH5HwAN4VF4Iec8TAzGN1aQgbxAWGJsnPCGGY= cloud.google.com/go/apigeeconnect v1.6.1/go.mod h1:C4awq7x0JpLtrlQCr8AzVIzAaYgngRqWf9S5Uhg+wWs= +cloud.google.com/go/apigeeconnect v1.6.4/go.mod h1:CapQCWZ8TCjnU0d7PobxhpOdVz/OVJ2Hr/Zcuu1xFx0= cloud.google.com/go/apigeeregistry v0.7.1/go.mod h1:1XgyjZye4Mqtw7T9TsY4NW10U7BojBvG4RMD+vRDrIw= +cloud.google.com/go/apigeeregistry v0.8.2/go.mod h1:h4v11TDGdeXJDJvImtgK2AFVvMIgGWjSb0HRnBSjcX8= cloud.google.com/go/appengine v1.8.1/go.mod h1:6NJXGLVhZCN9aQ/AEDvmfzKEfoYBlfB80/BHiKVputY= +cloud.google.com/go/appengine v1.8.4/go.mod h1:TZ24v+wXBujtkK77CXCpjZbnuTvsFNT41MUaZ28D6vg= cloud.google.com/go/area120 v0.8.1/go.mod h1:BVfZpGpB7KFVNxPiQBuHkX6Ed0rS51xIgmGyjrAfzsg= +cloud.google.com/go/area120 v0.8.4/go.mod h1:jfawXjxf29wyBXr48+W+GyX/f8fflxp642D/bb9v68M= cloud.google.com/go/artifactregistry v1.14.1/go.mod h1:nxVdG19jTaSTu7yA7+VbWL346r3rIdkZ142BSQqhn5E= +cloud.google.com/go/artifactregistry v1.14.6/go.mod h1:np9LSFotNWHcjnOgh8UVK0RFPCTUGbO0ve3384xyHfE= cloud.google.com/go/asset v1.14.1/go.mod h1:4bEJ3dnHCqWCDbWJ/6Vn7GVI9LerSi7Rfdi03hd+WTQ= +cloud.google.com/go/asset v1.15.3/go.mod h1:yYLfUD4wL4X589A9tYrv4rFrba0QlDeag0CMcM5ggXU= cloud.google.com/go/assuredworkloads v1.11.1/go.mod h1:+F04I52Pgn5nmPG36CWFtxmav6+7Q+c5QyJoL18Lry0= +cloud.google.com/go/assuredworkloads v1.11.4/go.mod h1:4pwwGNwy1RP0m+y12ef3Q/8PaiWrIDQ6nD2E8kvWI9U= cloud.google.com/go/automl v1.13.1/go.mod h1:1aowgAHWYZU27MybSCFiukPO7xnyawv7pt3zK4bheQE= +cloud.google.com/go/automl v1.13.4/go.mod h1:ULqwX/OLZ4hBVfKQaMtxMSTlPx0GqGbWN8uA/1EqCP8= cloud.google.com/go/baremetalsolution v1.1.1/go.mod h1:D1AV6xwOksJMV4OSlWHtWuFNZZYujJknMAP4Qa27QIA= +cloud.google.com/go/baremetalsolution v1.2.3/go.mod h1:/UAQ5xG3faDdy180rCUv47e0jvpp3BFxT+Cl0PFjw5g= cloud.google.com/go/batch v1.3.1/go.mod h1:VguXeQKXIYaeeIYbuozUmBR13AfL4SJP7IltNPS+A4A= +cloud.google.com/go/batch v1.6.3/go.mod h1:J64gD4vsNSA2O5TtDB5AAux3nJ9iV8U3ilg3JDBYejU= cloud.google.com/go/beyondcorp v1.0.0/go.mod h1:YhxDWw946SCbmcWo3fAhw3V4XZMSpQ/VYfcKGAEU8/4= +cloud.google.com/go/beyondcorp v1.0.3/go.mod h1:HcBvnEd7eYr+HGDd5ZbuVmBYX019C6CEXBonXbCVwJo= cloud.google.com/go/bigquery v1.53.0/go.mod h1:3b/iXjRQGU4nKa87cXeg6/gogLjO8C6PmuM8i5Bi/u4= +cloud.google.com/go/bigquery v1.57.1/go.mod h1:iYzC0tGVWt1jqSzBHqCr3lrRn0u13E8e+AqowBsDgug= cloud.google.com/go/billing v1.16.0/go.mod h1:y8vx09JSSJG02k5QxbycNRrN7FGZB6F3CAcgum7jvGA= +cloud.google.com/go/billing v1.17.4/go.mod h1:5DOYQStCxquGprqfuid/7haD7th74kyMBHkjO/OvDtk= cloud.google.com/go/binaryauthorization v1.6.1/go.mod h1:TKt4pa8xhowwffiBmbrbcxijJRZED4zrqnwZ1lKH51U= +cloud.google.com/go/binaryauthorization v1.7.3/go.mod h1:VQ/nUGRKhrStlGr+8GMS8f6/vznYLkdK5vaKfdCIpvU= cloud.google.com/go/certificatemanager v1.7.1/go.mod h1:iW8J3nG6SaRYImIa+wXQ0g8IgoofDFRp5UMzaNk1UqI= +cloud.google.com/go/certificatemanager v1.7.4/go.mod h1:FHAylPe/6IIKuaRmHbjbdLhGhVQ+CWHSD5Jq0k4+cCE= cloud.google.com/go/channel v1.16.0/go.mod h1:eN/q1PFSl5gyu0dYdmxNXscY/4Fi7ABmeHCJNf/oHmc= +cloud.google.com/go/channel v1.17.3/go.mod h1:QcEBuZLGGrUMm7kNj9IbU1ZfmJq2apotsV83hbxX7eE= cloud.google.com/go/cloudbuild v1.13.0/go.mod h1:lyJg7v97SUIPq4RC2sGsz/9tNczhyv2AjML/ci4ulzU= +cloud.google.com/go/cloudbuild v1.14.3/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM= +cloud.google.com/go/cloudbuild v1.15.0/go.mod h1:eIXYWmRt3UtggLnFGx4JvXcMj4kShhVzGndL1LwleEM= cloud.google.com/go/clouddms v1.6.1/go.mod h1:Ygo1vL52Ov4TBZQquhz5fiw2CQ58gvu+PlS6PVXCpZI= +cloud.google.com/go/clouddms v1.7.3/go.mod h1:fkN2HQQNUYInAU3NQ3vRLkV2iWs8lIdmBKOx4nrL6Hc= +cloud.google.com/go/cloudsqlconn v1.4.3/go.mod h1:QL3tuStVOO70txb3rs4G8j5uMfo5ztZii8K3oGD3VYA= cloud.google.com/go/cloudtasks v1.12.1/go.mod h1:a9udmnou9KO2iulGscKR0qBYjreuX8oHwpmFsKspEvM= +cloud.google.com/go/cloudtasks v1.12.4/go.mod h1:BEPu0Gtt2dU6FxZHNqqNdGqIG86qyWKBPGnsb7udGY0= cloud.google.com/go/compute v1.18.0/go.mod h1:1X7yHxec2Ga+Ss6jPyjxRxpu2uu7PLgsOVXvgU0yacs= cloud.google.com/go/compute v1.19.3/go.mod h1:qxvISKp/gYnXkSAD1ppcSOveRAmzxicEv/JlizULFrI= cloud.google.com/go/compute v1.20.1/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= cloud.google.com/go/compute v1.21.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.1/go.mod h1:CqB3xpmPKKt3OJpW2ndFIXnA9A4xAy/F3Xp1ixncW78= cloud.google.com/go/contactcenterinsights v1.10.0/go.mod h1:bsg/R7zGLYMVxFFzfh9ooLTruLRCG9fnzhH9KznHhbM= +cloud.google.com/go/contactcenterinsights v1.11.3/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= +cloud.google.com/go/contactcenterinsights v1.12.0/go.mod h1:HHX5wrz5LHVAwfI2smIotQG9x8Qd6gYilaHcLLLmNis= cloud.google.com/go/container v1.24.0/go.mod h1:lTNExE2R7f+DLbAN+rJiKTisauFCaoDq6NURZ83eVH4= +cloud.google.com/go/container v1.27.1/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= +cloud.google.com/go/container v1.28.0/go.mod h1:b1A1gJeTBXVLQ6GGw9/9M4FG94BEGsqJ5+t4d/3N7O4= cloud.google.com/go/containeranalysis v0.10.1/go.mod h1:Ya2jiILITMY68ZLPaogjmOMNkwsDrWBSTyBubGXO7j0= +cloud.google.com/go/containeranalysis v0.11.3/go.mod h1:kMeST7yWFQMGjiG9K7Eov+fPNQcGhb8mXj/UcTiWw9U= cloud.google.com/go/datacatalog v1.16.0/go.mod h1:d2CevwTG4yedZilwe+v3E3ZBDRMobQfSG/a6cCCN5R4= +cloud.google.com/go/datacatalog v1.18.3/go.mod h1:5FR6ZIF8RZrtml0VUao22FxhdjkoG+a0866rEnObryM= +cloud.google.com/go/datacatalog v1.19.0/go.mod h1:5FR6ZIF8RZrtml0VUao22FxhdjkoG+a0866rEnObryM= cloud.google.com/go/dataflow v0.9.1/go.mod h1:Wp7s32QjYuQDWqJPFFlnBKhkAtiFpMTdg00qGbnIHVw= +cloud.google.com/go/dataflow v0.9.4/go.mod h1:4G8vAkHYCSzU8b/kmsoR2lWyHJD85oMJPHMtan40K8w= cloud.google.com/go/dataform v0.8.1/go.mod h1:3BhPSiw8xmppbgzeBbmDvmSWlwouuJkXsXsb8UBih9M= +cloud.google.com/go/dataform v0.9.1/go.mod h1:pWTg+zGQ7i16pyn0bS1ruqIE91SdL2FDMvEYu/8oQxs= cloud.google.com/go/datafusion v1.7.1/go.mod h1:KpoTBbFmoToDExJUso/fcCiguGDk7MEzOWXUsJo0wsI= +cloud.google.com/go/datafusion v1.7.4/go.mod h1:BBs78WTOLYkT4GVZIXQCZT3GFpkpDN4aBY4NDX/jVlM= cloud.google.com/go/datalabeling v0.8.1/go.mod h1:XS62LBSVPbYR54GfYQsPXZjTW8UxCK2fkDciSrpRFdY= +cloud.google.com/go/datalabeling v0.8.4/go.mod h1:Z1z3E6LHtffBGrNUkKwbwbDxTiXEApLzIgmymj8A3S8= cloud.google.com/go/dataplex v1.9.0/go.mod h1:7TyrDT6BCdI8/38Uvp0/ZxBslOslP2X2MPDucliyvSE= +cloud.google.com/go/dataplex v1.11.1/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= +cloud.google.com/go/dataplex v1.11.2/go.mod h1:mHJYQQ2VEJHsyoC0OdNyy988DvEbPhqFs5OOLffLX0c= +cloud.google.com/go/dataproc v1.12.0/go.mod h1:zrF3aX0uV3ikkMz6z4uBbIKyhRITnxvr4i3IjKsKrw4= cloud.google.com/go/dataproc/v2 v2.0.1/go.mod h1:7Ez3KRHdFGcfY7GcevBbvozX+zyWGcwLJvvAMwCaoZ4= +cloud.google.com/go/dataproc/v2 v2.2.3/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY= +cloud.google.com/go/dataproc/v2 v2.3.0/go.mod h1:G5R6GBc9r36SXv/RtZIVfB8SipI+xVn0bX5SxUzVYbY= cloud.google.com/go/dataqna v0.8.1/go.mod h1:zxZM0Bl6liMePWsHA8RMGAfmTG34vJMapbHAxQ5+WA8= +cloud.google.com/go/dataqna v0.8.4/go.mod h1:mySRKjKg5Lz784P6sCov3p1QD+RZQONRMRjzGNcFd0c= cloud.google.com/go/datastore v1.13.0/go.mod h1:KjdB88W897MRITkvWWJrg2OUtrR5XVj1EoLgSp6/N70= +cloud.google.com/go/datastore v1.15.0/go.mod h1:GAeStMBIt9bPS7jMJA85kgkpsMkvseWWXiaHya9Jes8= cloud.google.com/go/datastream v1.10.0/go.mod h1:hqnmr8kdUBmrnk65k5wNRoHSCYksvpdZIcZIEl8h43Q= +cloud.google.com/go/datastream v1.10.3/go.mod h1:YR0USzgjhqA/Id0Ycu1VvZe8hEWwrkjuXrGbzeDOSEA= cloud.google.com/go/deploy v1.13.0/go.mod h1:tKuSUV5pXbn67KiubiUNUejqLs4f5cxxiCNCeyl0F2g= +cloud.google.com/go/deploy v1.14.2/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g= +cloud.google.com/go/deploy v1.15.0/go.mod h1:e5XOUI5D+YGldyLNZ21wbp9S8otJbBE4i88PtO9x/2g= cloud.google.com/go/dialogflow v1.40.0/go.mod h1:L7jnH+JL2mtmdChzAIcXQHXMvQkE3U4hTaNltEuxXn4= +cloud.google.com/go/dialogflow v1.44.3/go.mod h1:mHly4vU7cPXVweuB5R0zsYKPMzy240aQdAu06SqBbAQ= cloud.google.com/go/dlp v1.10.1/go.mod h1:IM8BWz1iJd8njcNcG0+Kyd9OPnqnRNkDV8j42VT5KOI= +cloud.google.com/go/dlp v1.11.1/go.mod h1:/PA2EnioBeXTL/0hInwgj0rfsQb3lpE3R8XUJxqUNKI= cloud.google.com/go/documentai v1.22.0/go.mod h1:yJkInoMcK0qNAEdRnqY/D5asy73tnPe88I1YTZT+a8E= +cloud.google.com/go/documentai v1.23.5/go.mod h1:ghzBsyVTiVdkfKaUCum/9bGBEyBjDO4GfooEcYKhN+g= cloud.google.com/go/domains v0.9.1/go.mod h1:aOp1c0MbejQQ2Pjf1iJvnVyT+z6R6s8pX66KaCSDYfE= +cloud.google.com/go/domains v0.9.4/go.mod h1:27jmJGShuXYdUNjyDG0SodTfT5RwLi7xmH334Gvi3fY= cloud.google.com/go/edgecontainer v1.1.1/go.mod h1:O5bYcS//7MELQZs3+7mabRqoWQhXCzenBu0R8bz2rwk= +cloud.google.com/go/edgecontainer v1.1.4/go.mod h1:AvFdVuZuVGdgaE5YvlL1faAoa1ndRR/5XhXZvPBHbsE= cloud.google.com/go/errorreporting v0.3.0/go.mod h1:xsP2yaAp+OAW4OIm60An2bbLpqIhKXdWR/tawvl7QzU= cloud.google.com/go/essentialcontacts v1.6.2/go.mod h1:T2tB6tX+TRak7i88Fb2N9Ok3PvY3UNbUsMag9/BARh4= +cloud.google.com/go/essentialcontacts v1.6.5/go.mod h1:jjYbPzw0x+yglXC890l6ECJWdYeZ5dlYACTFL0U/VuM= cloud.google.com/go/eventarc v1.13.0/go.mod h1:mAFCW6lukH5+IZjkvrEss+jmt2kOdYlN8aMx3sRJiAI= +cloud.google.com/go/eventarc v1.13.3/go.mod h1:RWH10IAZIRcj1s/vClXkBgMHwh59ts7hSWcqD3kaclg= cloud.google.com/go/filestore v1.7.1/go.mod h1:y10jsorq40JJnjR/lQ8AfFbbcGlw3g+Dp8oN7i7FjV4= +cloud.google.com/go/filestore v1.7.4/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI= +cloud.google.com/go/filestore v1.8.0/go.mod h1:S5JCxIbFjeBhWMTfIYH2Jx24J6BqjwpkkPl+nBA5DlI= cloud.google.com/go/firestore v1.12.0/go.mod h1:b38dKhgzlmNNGTNZZwe7ZRFEuRab1Hay3/DBsIGKKy4= cloud.google.com/go/firestore v1.13.0/go.mod h1:QojqqOh8IntInDUSTAh0c8ZsPYAr68Ma8c5DWOy8xb8= +cloud.google.com/go/firestore v1.14.0/go.mod h1:96MVaHLsEhbvkBEdZgfN+AS/GIkco1LRpH9Xp9YZfzQ= cloud.google.com/go/functions v1.15.1/go.mod h1:P5yNWUTkyU+LvW/S9O6V+V423VZooALQlqoXdoPz5AE= +cloud.google.com/go/functions v1.15.4/go.mod h1:CAsTc3VlRMVvx+XqXxKqVevguqJpnVip4DdonFsX28I= +cloud.google.com/go/gaming v1.9.0/go.mod h1:Fc7kEmCObylSWLO334NcO+O9QMDyz+TKC4v1D7X+Bc0= cloud.google.com/go/gkebackup v1.3.0/go.mod h1:vUDOu++N0U5qs4IhG1pcOnD1Mac79xWy6GoBFlWCWBU= +cloud.google.com/go/gkebackup v1.3.4/go.mod h1:gLVlbM8h/nHIs09ns1qx3q3eaXcGSELgNu1DWXYz1HI= cloud.google.com/go/gkeconnect v0.8.1/go.mod h1:KWiK1g9sDLZqhxB2xEuPV8V9NYzrqTUmQR9shJHpOZw= +cloud.google.com/go/gkeconnect v0.8.4/go.mod h1:84hZz4UMlDCKl8ifVW8layK4WHlMAFeq8vbzjU0yJkw= cloud.google.com/go/gkehub v0.14.1/go.mod h1:VEXKIJZ2avzrbd7u+zeMtW00Y8ddk/4V9511C9CQGTY= +cloud.google.com/go/gkehub v0.14.4/go.mod h1:Xispfu2MqnnFt8rV/2/3o73SK1snL8s9dYJ9G2oQMfc= cloud.google.com/go/gkemulticloud v1.0.0/go.mod h1:kbZ3HKyTsiwqKX7Yw56+wUGwwNZViRnxWK2DVknXWfw= +cloud.google.com/go/gkemulticloud v1.0.3/go.mod h1:7NpJBN94U6DY1xHIbsDqB2+TFZUfjLUKLjUX8NGLor0= +cloud.google.com/go/grafeas v0.3.0/go.mod h1:P7hgN24EyONOTMyeJH6DxG4zD7fwiYa5Q6GUgyFSOU8= cloud.google.com/go/gsuiteaddons v1.6.1/go.mod h1:CodrdOqRZcLp5WOwejHWYBjZvfY0kOphkAKpF/3qdZY= +cloud.google.com/go/gsuiteaddons v1.6.4/go.mod h1:rxtstw7Fx22uLOXBpsvb9DUbC+fiXs7rF4U29KHM/pE= cloud.google.com/go/iam v0.12.0/go.mod h1:knyHGviacl11zrtZUoDuYpDgLjvr28sLQaG0YB2GYAY= cloud.google.com/go/iam v0.13.0/go.mod h1:ljOg+rcNfzZ5d6f1nAUJ8ZIxOaZUVoS14bKCtaLZ/D0= cloud.google.com/go/iam v1.1.1/go.mod h1:A5avdyVL2tCppe4unb0951eI9jreack+RJ0/d+KUZOU= +cloud.google.com/go/iam v1.1.3/go.mod h1:3khUlaBXfPKKe7huYgEpDn6FtgRyMEqbkvBxrQyY5SE= +cloud.google.com/go/iam v1.1.5/go.mod h1:rB6P/Ic3mykPbFio+vo7403drjlgvoWfYpJhMXEbzv8= cloud.google.com/go/iap v1.8.1/go.mod h1:sJCbeqg3mvWLqjZNsI6dfAtbbV1DL2Rl7e1mTyXYREQ= +cloud.google.com/go/iap v1.9.3/go.mod h1:DTdutSZBqkkOm2HEOTBzhZxh2mwwxshfD/h3yofAiCw= cloud.google.com/go/ids v1.4.1/go.mod h1:np41ed8YMU8zOgv53MMMoCntLTn2lF+SUzlM+O3u/jw= +cloud.google.com/go/ids v1.4.4/go.mod h1:z+WUc2eEl6S/1aZWzwtVNWoSZslgzPxAboS0lZX0HjI= cloud.google.com/go/iot v1.7.1/go.mod h1:46Mgw7ev1k9KqK1ao0ayW9h0lI+3hxeanz+L1zmbbbk= +cloud.google.com/go/iot v1.7.4/go.mod h1:3TWqDVvsddYBG++nHSZmluoCAVGr1hAcabbWZNKEZLk= cloud.google.com/go/kms v1.15.0/go.mod h1:c9J991h5DTl+kg7gi3MYomh12YEENGrf48ee/N/2CDM= +cloud.google.com/go/kms v1.15.5/go.mod h1:cU2H5jnp6G2TDpUGZyqTCoy1n16fbubHZjmVXSMtwDI= cloud.google.com/go/language v1.10.1/go.mod h1:CPp94nsdVNiQEt1CNjF5WkTcisLiHPyIbMhvR8H2AW0= +cloud.google.com/go/language v1.12.2/go.mod h1:9idWapzr/JKXBBQ4lWqVX/hcadxB194ry20m/bTrhWc= cloud.google.com/go/lifesciences v0.9.1/go.mod h1:hACAOd1fFbCGLr/+weUKRAJas82Y4vrL3O5326N//Wc= +cloud.google.com/go/lifesciences v0.9.4/go.mod h1:bhm64duKhMi7s9jR9WYJYvjAFJwRqNj+Nia7hF0Z7JA= cloud.google.com/go/logging v1.7.0/go.mod h1:3xjP2CjkM3ZkO73aj4ASA5wRPGGCRrPIAeNqVNkzY8M= +cloud.google.com/go/logging v1.8.1/go.mod h1:TJjR+SimHwuC8MZ9cjByQulAMgni+RkXeI3wwctHJEI= cloud.google.com/go/longrunning v0.5.0/go.mod h1:0JNuqRShmscVAhIACGtskSAWtqtOoPkwP0YF1oVEchc= cloud.google.com/go/longrunning v0.5.1/go.mod h1:spvimkwdz6SPWKEt/XBij79E9fiTkHSQl/fRUUQJYJc= +cloud.google.com/go/longrunning v0.5.2/go.mod h1:nqo6DQbNV2pXhGDbDMoN2bWz68MjZUzqv2YttZiveCs= +cloud.google.com/go/longrunning v0.5.4/go.mod h1:zqNVncI0BOP8ST6XQD1+VcvuShMmq7+xFSzOL++V0dI= cloud.google.com/go/managedidentities v1.6.1/go.mod h1:h/irGhTN2SkZ64F43tfGPMbHnypMbu4RB3yl8YcuEak= +cloud.google.com/go/managedidentities v1.6.4/go.mod h1:WgyaECfHmF00t/1Uk8Oun3CQ2PGUtjc3e9Alh79wyiM= cloud.google.com/go/maps v1.4.0/go.mod h1:6mWTUv+WhnOwAgjVsSW2QPPECmW+s3PcRyOa9vgG/5s= +cloud.google.com/go/maps v1.6.1/go.mod h1:4+buOHhYXFBp58Zj/K+Lc1rCmJssxxF4pJ5CJnhdz18= cloud.google.com/go/mediatranslation v0.8.1/go.mod h1:L/7hBdEYbYHQJhX2sldtTO5SZZ1C1vkapubj0T2aGig= +cloud.google.com/go/mediatranslation v0.8.4/go.mod h1:9WstgtNVAdN53m6TQa5GjIjLqKQPXe74hwSCxUP6nj4= cloud.google.com/go/memcache v1.10.1/go.mod h1:47YRQIarv4I3QS5+hoETgKO40InqzLP6kpNLvyXuyaA= +cloud.google.com/go/memcache v1.10.4/go.mod h1:v/d8PuC8d1gD6Yn5+I3INzLR01IDn0N4Ym56RgikSI0= cloud.google.com/go/metastore v1.12.0/go.mod h1:uZuSo80U3Wd4zi6C22ZZliOUJ3XeM/MlYi/z5OAOWRA= +cloud.google.com/go/metastore v1.13.3/go.mod h1:K+wdjXdtkdk7AQg4+sXS8bRrQa9gcOr+foOMF2tqINE= cloud.google.com/go/monitoring v1.15.1/go.mod h1:lADlSAlFdbqQuwwpaImhsJXu1QSdd3ojypXrFSMr2rM= +cloud.google.com/go/monitoring v1.16.3/go.mod h1:KwSsX5+8PnXv5NJnICZzW2R8pWTis8ypC4zmdRD63Tw= cloud.google.com/go/networkconnectivity v1.12.1/go.mod h1:PelxSWYM7Sh9/guf8CFhi6vIqf19Ir/sbfZRUwXh92E= +cloud.google.com/go/networkconnectivity v1.14.3/go.mod h1:4aoeFdrJpYEXNvrnfyD5kIzs8YtHg945Og4koAjHQek= cloud.google.com/go/networkmanagement v1.8.0/go.mod h1:Ho/BUGmtyEqrttTgWEe7m+8vDdK74ibQc+Be0q7Fof0= +cloud.google.com/go/networkmanagement v1.9.3/go.mod h1:y7WMO1bRLaP5h3Obm4tey+NquUvB93Co1oh4wpL+XcU= cloud.google.com/go/networksecurity v0.9.1/go.mod h1:MCMdxOKQ30wsBI1eI659f9kEp4wuuAueoC9AJKSPWZQ= +cloud.google.com/go/networksecurity v0.9.4/go.mod h1:E9CeMZ2zDsNBkr8axKSYm8XyTqNhiCHf1JO/Vb8mD1w= cloud.google.com/go/notebooks v1.9.1/go.mod h1:zqG9/gk05JrzgBt4ghLzEepPHNwE5jgPcHZRKhlC1A8= +cloud.google.com/go/notebooks v1.11.2/go.mod h1:z0tlHI/lREXC8BS2mIsUeR3agM1AkgLiS+Isov3SS70= cloud.google.com/go/optimization v1.4.1/go.mod h1:j64vZQP7h9bO49m2rVaTVoNM0vEBEN5eKPUPbZyXOrk= +cloud.google.com/go/optimization v1.6.2/go.mod h1:mWNZ7B9/EyMCcwNl1frUGEuY6CPijSkz88Fz2vwKPOY= cloud.google.com/go/orchestration v1.8.1/go.mod h1:4sluRF3wgbYVRqz7zJ1/EUNc90TTprliq9477fGobD8= +cloud.google.com/go/orchestration v1.8.4/go.mod h1:d0lywZSVYtIoSZXb0iFjv9SaL13PGyVOKDxqGxEf/qI= cloud.google.com/go/orgpolicy v1.11.1/go.mod h1:8+E3jQcpZJQliP+zaFfayC2Pg5bmhuLK755wKhIIUCE= +cloud.google.com/go/orgpolicy v1.11.4/go.mod h1:0+aNV/nrfoTQ4Mytv+Aw+stBDBjNf4d8fYRA9herfJI= cloud.google.com/go/osconfig v1.12.1/go.mod h1:4CjBxND0gswz2gfYRCUoUzCm9zCABp91EeTtWXyz0tE= +cloud.google.com/go/osconfig v1.12.4/go.mod h1:B1qEwJ/jzqSRslvdOCI8Kdnp0gSng0xW4LOnIebQomA= cloud.google.com/go/oslogin v1.10.1/go.mod h1:x692z7yAue5nE7CsSnoG0aaMbNoRJRXO4sn73R+ZqAs= +cloud.google.com/go/oslogin v1.12.2/go.mod h1:CQ3V8Jvw4Qo4WRhNPF0o+HAM4DiLuE27Ul9CX9g2QdY= cloud.google.com/go/phishingprotection v0.8.1/go.mod h1:AxonW7GovcA8qdEk13NfHq9hNx5KPtfxXNeUxTDxB6I= +cloud.google.com/go/phishingprotection v0.8.4/go.mod h1:6b3kNPAc2AQ6jZfFHioZKg9MQNybDg4ixFd4RPZZ2nE= cloud.google.com/go/policytroubleshooter v1.8.0/go.mod h1:tmn5Ir5EToWe384EuboTcVQT7nTag2+DuH3uHmKd1HU= +cloud.google.com/go/policytroubleshooter v1.10.2/go.mod h1:m4uF3f6LseVEnMV6nknlN2vYGRb+75ylQwJdnOXfnv0= cloud.google.com/go/privatecatalog v0.9.1/go.mod h1:0XlDXW2unJXdf9zFz968Hp35gl/bhF4twwpXZAW50JA= +cloud.google.com/go/privatecatalog v0.9.4/go.mod h1:SOjm93f+5hp/U3PqMZAHTtBtluqLygrDrVO8X8tYtG0= cloud.google.com/go/pubsub v1.33.0/go.mod h1:f+w71I33OMyxf9VpMVcZbnG5KSUkCOUHYpFd5U1GdRc= cloud.google.com/go/pubsublite v1.8.1/go.mod h1:fOLdU4f5xldK4RGJrBMm+J7zMWNj/k4PxwEZXy39QS0= cloud.google.com/go/recaptchaenterprise/v2 v2.7.2/go.mod h1:kR0KjsJS7Jt1YSyWFkseQ756D45kaYNTlDPPaRAvDBU= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.3/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= +cloud.google.com/go/recaptchaenterprise/v2 v2.8.4/go.mod h1:Dak54rw6lC2gBY8FBznpOCAR58wKf+R+ZSJRoeJok4w= cloud.google.com/go/recommendationengine v0.8.1/go.mod h1:MrZihWwtFYWDzE6Hz5nKcNz3gLizXVIDI/o3G1DLcrE= +cloud.google.com/go/recommendationengine v0.8.4/go.mod h1:GEteCf1PATl5v5ZsQ60sTClUE0phbWmo3rQ1Js8louU= cloud.google.com/go/recommender v1.10.1/go.mod h1:XFvrE4Suqn5Cq0Lf+mCP6oBHD/yRMA8XxP5sb7Q7gpA= +cloud.google.com/go/recommender v1.11.3/go.mod h1:+FJosKKJSId1MBFeJ/TTyoGQZiEelQQIZMKYYD8ruK4= cloud.google.com/go/redis v1.13.1/go.mod h1:VP7DGLpE91M6bcsDdMuyCm2hIpB6Vp2hI090Mfd1tcg= +cloud.google.com/go/redis v1.14.1/go.mod h1:MbmBxN8bEnQI4doZPC1BzADU4HGocHBk2de3SbgOkqs= cloud.google.com/go/resourcemanager v1.9.1/go.mod h1:dVCuosgrh1tINZ/RwBufr8lULmWGOkPS8gL5gqyjdT8= +cloud.google.com/go/resourcemanager v1.9.4/go.mod h1:N1dhP9RFvo3lUfwtfLWVxfUWq8+KUQ+XLlHLH3BoFJ0= cloud.google.com/go/resourcesettings v1.6.1/go.mod h1:M7mk9PIZrC5Fgsu1kZJci6mpgN8o0IUzVx3eJU3y4Jw= +cloud.google.com/go/resourcesettings v1.6.4/go.mod h1:pYTTkWdv2lmQcjsthbZLNBP4QW140cs7wqA3DuqErVI= cloud.google.com/go/retail v1.14.1/go.mod h1:y3Wv3Vr2k54dLNIrCzenyKG8g8dhvhncT2NcNjb/6gE= +cloud.google.com/go/retail v1.14.4/go.mod h1:l/N7cMtY78yRnJqp5JW8emy7MB1nz8E4t2yfOmklYfg= cloud.google.com/go/run v1.2.0/go.mod h1:36V1IlDzQ0XxbQjUx6IYbw8H3TJnWvhii963WW3B/bo= +cloud.google.com/go/run v1.3.3/go.mod h1:WSM5pGyJ7cfYyYbONVQBN4buz42zFqwG67Q3ch07iK4= cloud.google.com/go/scheduler v1.10.1/go.mod h1:R63Ldltd47Bs4gnhQkmNDse5w8gBRrhObZ54PxgR2Oo= +cloud.google.com/go/scheduler v1.10.4/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI= +cloud.google.com/go/scheduler v1.10.5/go.mod h1:MTuXcrJC9tqOHhixdbHDFSIuh7xZF2IysiINDuiq6NI= cloud.google.com/go/secretmanager v1.11.1/go.mod h1:znq9JlXgTNdBeQk9TBW/FnR/W4uChEKGeqQWAJ8SXFw= +cloud.google.com/go/secretmanager v1.11.4/go.mod h1:wreJlbS9Zdq21lMzWmJ0XhWW2ZxgPeahsqeV/vZoJ3w= cloud.google.com/go/security v1.15.1/go.mod h1:MvTnnbsWnehoizHi09zoiZob0iCHVcL4AUBj76h9fXA= +cloud.google.com/go/security v1.15.4/go.mod h1:oN7C2uIZKhxCLiAAijKUCuHLZbIt/ghYEo8MqwD/Ty4= cloud.google.com/go/securitycenter v1.23.0/go.mod h1:8pwQ4n+Y9WCWM278R8W3nF65QtY172h4S8aXyI9/hsQ= +cloud.google.com/go/securitycenter v1.24.2/go.mod h1:l1XejOngggzqwr4Fa2Cn+iWZGf+aBLTXtB/vXjy5vXM= +cloud.google.com/go/servicecontrol v1.5.0/go.mod h1:qM0CnXHhyqKVuiZnGKrIurvVImCs8gmqWsDoqe9sU1s= cloud.google.com/go/servicedirectory v1.11.0/go.mod h1:Xv0YVH8s4pVOwfM/1eMTl0XJ6bzIOSLDt8f8eLaGOxQ= +cloud.google.com/go/servicedirectory v1.11.3/go.mod h1:LV+cHkomRLr67YoQy3Xq2tUXBGOs5z5bPofdq7qtiAw= +cloud.google.com/go/servicemanagement v1.5.0/go.mod h1:XGaCRe57kfqu4+lRxaFEAuqmjzF0r+gWHjWqKqBvKFo= +cloud.google.com/go/serviceusage v1.4.0/go.mod h1:SB4yxXSaYVuUBYUml6qklyONXNLt83U0Rb+CXyhjEeU= cloud.google.com/go/shell v1.7.1/go.mod h1:u1RaM+huXFaTojTbW4g9P5emOrrmLE69KrxqQahKn4g= +cloud.google.com/go/shell v1.7.4/go.mod h1:yLeXB8eKLxw0dpEmXQ/FjriYrBijNsONpwnWsdPqlKM= cloud.google.com/go/spanner v1.47.0/go.mod h1:IXsJwVW2j4UKs0eYDqodab6HgGuA1bViSqW4uH9lfUI= +cloud.google.com/go/spanner v1.51.0/go.mod h1:c5KNo5LQ1X5tJwma9rSQZsXNBDNvj4/n8BVc3LNahq0= +cloud.google.com/go/spanner v1.53.0/go.mod h1:liG4iCeLqm5L3fFLU5whFITqP0e0orsAW1uUSrd4rws= cloud.google.com/go/speech v1.19.0/go.mod h1:8rVNzU43tQvxDaGvqOhpDqgkJTFowBpDvCJ14kGlJYo= +cloud.google.com/go/speech v1.20.1/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY= +cloud.google.com/go/speech v1.21.0/go.mod h1:wwolycgONvfz2EDU8rKuHRW3+wc9ILPsAWoikBEWavY= cloud.google.com/go/storage v1.30.1/go.mod h1:NfxhC0UJE1aXSx7CIIbCf7y9HKT7BiccwkR7+P7gN8E= +cloud.google.com/go/storage v1.35.1/go.mod h1:M6M/3V/D3KpzMTJyPOR/HU6n2Si5QdaXYEsng2xgOs8= cloud.google.com/go/storagetransfer v1.10.0/go.mod h1:DM4sTlSmGiNczmV6iZyceIh2dbs+7z2Ayg6YAiQlYfA= +cloud.google.com/go/storagetransfer v1.10.3/go.mod h1:Up8LY2p6X68SZ+WToswpQbQHnJpOty/ACcMafuey8gc= cloud.google.com/go/talent v1.6.2/go.mod h1:CbGvmKCG61mkdjcqTcLOkb2ZN1SrQI8MDyma2l7VD24= +cloud.google.com/go/talent v1.6.5/go.mod h1:Mf5cma696HmE+P2BWJ/ZwYqeJXEeU0UqjHFXVLadEDI= cloud.google.com/go/texttospeech v1.7.1/go.mod h1:m7QfG5IXxeneGqTapXNxv2ItxP/FS0hCZBwXYqucgSk= +cloud.google.com/go/texttospeech v1.7.4/go.mod h1:vgv0002WvR4liGuSd5BJbWy4nDn5Ozco0uJymY5+U74= cloud.google.com/go/tpu v1.6.1/go.mod h1:sOdcHVIgDEEOKuqUoi6Fq53MKHJAtOwtz0GuKsWSH3E= +cloud.google.com/go/tpu v1.6.4/go.mod h1:NAm9q3Rq2wIlGnOhpYICNI7+bpBebMJbh0yyp3aNw1Y= cloud.google.com/go/trace v1.10.1/go.mod h1:gbtL94KE5AJLH3y+WVpfWILmqgc6dXcqgNXdOPAQTYk= +cloud.google.com/go/trace v1.10.4/go.mod h1:Nso99EDIK8Mj5/zmB+iGr9dosS/bzWCJ8wGmE6TXNWY= cloud.google.com/go/translate v1.8.2/go.mod h1:d1ZH5aaOA0CNhWeXeC8ujd4tdCFw8XoNWRljklu5RHs= +cloud.google.com/go/translate v1.9.3/go.mod h1:Kbq9RggWsbqZ9W5YpM94Q1Xv4dshw/gr/SHfsl5yCZ0= cloud.google.com/go/video v1.19.0/go.mod h1:9qmqPqw/Ib2tLqaeHgtakU+l5TcJxCJbhFXM7UJjVzU= +cloud.google.com/go/video v1.20.3/go.mod h1:TnH/mNZKVHeNtpamsSPygSR0iHtvrR/cW1/GDjN5+GU= cloud.google.com/go/videointelligence v1.11.1/go.mod h1:76xn/8InyQHarjTWsBR058SmlPCwQjgcvoW0aZykOvo= +cloud.google.com/go/videointelligence v1.11.4/go.mod h1:kPBMAYsTPFiQxMLmmjpcZUMklJp3nC9+ipJJtprccD8= cloud.google.com/go/vision/v2 v2.7.2/go.mod h1:jKa8oSYBWhYiXarHPvP4USxYANYUEdEsQrloLjrSwJU= +cloud.google.com/go/vision/v2 v2.7.5/go.mod h1:GcviprJLFfK9OLf0z8Gm6lQb6ZFUulvpZws+mm6yPLM= cloud.google.com/go/vmmigration v1.7.1/go.mod h1:WD+5z7a/IpZ5bKK//YmT9E047AD+rjycCAvyMxGJbro= +cloud.google.com/go/vmmigration v1.7.4/go.mod h1:yBXCmiLaB99hEl/G9ZooNx2GyzgsjKnw5fWcINRgD70= cloud.google.com/go/vmwareengine v1.0.0/go.mod h1:Px64x+BvjPZwWuc4HdmVhoygcXqEkGHXoa7uyfTgSI0= +cloud.google.com/go/vmwareengine v1.0.3/go.mod h1:QSpdZ1stlbfKtyt6Iu19M6XRxjmXO+vb5a/R6Fvy2y4= cloud.google.com/go/vpcaccess v1.7.1/go.mod h1:FogoD46/ZU+JUBX9D606X21EnxiszYi2tArQwLY4SXs= +cloud.google.com/go/vpcaccess v1.7.4/go.mod h1:lA0KTvhtEOb/VOdnH/gwPuOzGgM+CWsmGu6bb4IoMKk= cloud.google.com/go/webrisk v1.9.1/go.mod h1:4GCmXKcOa2BZcZPn6DCEvE7HypmEJcJkr4mtM+sqYPc= +cloud.google.com/go/webrisk v1.9.4/go.mod h1:w7m4Ib4C+OseSr2GL66m0zMBywdrVNTDKsdEsfMl7X0= cloud.google.com/go/websecurityscanner v1.6.1/go.mod h1:Njgaw3rttgRHXzwCB8kgCYqv5/rGpFCsBOvPbYgszpg= +cloud.google.com/go/websecurityscanner v1.6.4/go.mod h1:mUiyMQ+dGpPPRkHgknIZeCzSHJ45+fY4F52nZFDHm2o= cloud.google.com/go/workflows v1.11.1/go.mod h1:Z+t10G1wF7h8LgdY/EmRcQY8ptBD/nvofaL6FqlET6g= +cloud.google.com/go/workflows v1.12.3/go.mod h1:fmOUeeqEwPzIU81foMjTRQIdwQHADi/vEr1cx9R1m5g= filippo.io/edwards25519 v1.0.0/go.mod h1:N1IkdkCkiLB6tki+MYJoSx2JTY9NUlxZE7eHn5EwJns= +github.com/AdaLogics/go-fuzz-headers v0.0.0-20230106234847-43070de90fa1/go.mod h1:VzwV+t+dZ9j/H867F1M2ziD+yLHtB46oM35FxxMJ4d0= +github.com/AdamKorcz/go-118-fuzz-build v0.0.0-20221215162035-5330a85ea652/go.mod h1:OahwfttHWG6eJ0clwcfBAHoDI6X/LV/15hx/wlMZSrU= github.com/Azure/go-ntlmssp v0.0.0-20200615164410-66371956d46c/go.mod h1:chxPXzSsl7ZWRAuOIE23GDNzjWuZquvFlgA8xmpunjU= +github.com/Masterminds/goutils v1.1.1/go.mod h1:8cTjp+g8YejhMuvIA5y2vz3BpJxksy863GQaJW2MFNU= +github.com/Masterminds/semver/v3 v3.1.1/go.mod h1:VPu/7SZ7ePZ3QOrcuXROw5FAcLl4a0cBrbBpGY/8hQs= +github.com/Masterminds/sprig/v3 v3.2.1/go.mod h1:UoaO7Yp8KlPnJIYWTFkMaqPUYKTfGFPhxNuwnnxkKlk= +github.com/Microsoft/hcsshim v0.10.0-rc.7/go.mod h1:ILuwjA+kNW+MrN/w5un7n3mTqkwsFu4Bp05/okFUZlE= +github.com/Nvveen/Gotty v0.0.0-20120604004816-cd527374f1e5/go.mod h1:lmUJ/7eu/Q8D7ML55dXQrVaamCz2vxCfdQBasLZfHKk= github.com/alecthomas/units v0.0.0-20190924025748-f65c72e2690d/go.mod h1:rBZYJk541a8SKzHPHnH3zbiI+7dagKZ0cgpgrD7Fyho= +github.com/andybalholm/brotli v1.0.4/go.mod h1:fO7iG3H7G2nSZ7m0zPUDn85XEX2GTukHGRSepvi9Eig= +github.com/apache/arrow/go/v12 v12.0.0/go.mod h1:d+tV/eHZZ7Dz7RPrFKtPK02tpr+c9/PEd/zm8mDS9Vg= +github.com/apache/thrift v0.16.0/go.mod h1:PHK3hniurgQaNMZYaCLEqXKsYK8upmhPbmdP2FXSqgU= github.com/armon/circbuf v0.0.0-20150827004946-bbbad097214e/go.mod h1:3U/XgcO3hCbHZ8TKRvWD2dDTCfh9M9ya+I9JpbB7O8o= github.com/armon/go-metrics v0.0.0-20180917152333-f0300d1749da/go.mod h1:Q73ZrmVTwzkszR9V5SSuryQ31EELlFMUz1kKyl939pY= github.com/benbjohnson/clock v1.1.0/go.mod h1:J11/hYXuz8f4ySSvYwY0FKfm+ezbsZBKZxNJlLklBHA= +github.com/blang/semver/v4 v4.0.0/go.mod h1:IbckMUScFkM3pff0VJDNKRiT6TG/YpiHIM2yvyW5YoQ= +github.com/bufbuild/protocompile v0.4.0/go.mod h1:3v93+mbWn/v3xzN+31nwkJfrEpAUwp+BagBSZWx+TP8= +github.com/cenkalti/backoff v2.2.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM= +github.com/cenkalti/backoff/v4 v4.2.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE= github.com/census-instrumentation/opencensus-proto v0.4.1/go.mod h1:4T9NM4+4Vw91VeyqjLS6ao50K5bOcLKN6Q42XnYaRYw= github.com/cespare/xxhash/v2 v2.1.2/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= github.com/cespare/xxhash/v2 v2.2.0/go.mod h1:VGX0DQ3Q6kWi7AoAeZDth3/j3BFtOZR5XLFGgcrjCOs= +github.com/checkpoint-restore/go-criu/v5 v5.3.0/go.mod h1:E/eQpaFtUKGOOSEBZgmKAcn+zUUwWxqcaKZlF54wK8E= +github.com/cilium/ebpf v0.9.1/go.mod h1:+OhNOIXx/Fnu1IE8bJz2dzOA+VSfyTfdNUVdlQnxUFY= github.com/cncf/udpa/go v0.0.0-20220112060539-c52dc94e7fbe/go.mod h1:6pvJx4me5XPnfI9Z40ddWsdw2W/uZgQLFXToKeRcDiI= github.com/cncf/xds/go v0.0.0-20230607035331-e9ce68804cb4/go.mod h1:eXthEFrGJvWHgFFCl3hGmgk+/aYT6PnTQLykKQRLhEs= +github.com/cockroachdb/apd v1.1.0/go.mod h1:8Sl8LxpKi29FqWXR16WEFZRNSz3SoPzUzeMeY4+DwBQ= +github.com/container-orchestrated-devices/container-device-interface v0.5.4/go.mod h1:DjE95rfPiiSmG7uVXtg0z6MnPm/Lx4wxKCIts0ZE0vg= +github.com/containerd/aufs v1.0.0/go.mod h1:kL5kd6KM5TzQjR79jljyi4olc1Vrx6XBlcyj3gNv2PU= +github.com/containerd/btrfs/v2 v2.0.0/go.mod h1:swkD/7j9HApWpzl8OHfrHNxppPd9l44DFZdF94BUj9k= +github.com/containerd/cgroups v1.1.0/go.mod h1:6ppBcbh/NOOUU+dMKrykgaBnK9lCIBxHqJDGwsa1mIw= +github.com/containerd/cgroups/v3 v3.0.1/go.mod h1:/vtwk1VXrtoa5AaZLkypuOJgA/6DyPMZHJPGQNtlHnw= +github.com/containerd/console v1.0.3/go.mod h1:7LqA/THxQ86k76b8c/EMSiaJ3h1eZkMkXar0TQ1gf3U= github.com/containerd/containerd v1.7.0/go.mod h1:QfR7Efgb/6X2BDpTPJRvPTYDE9rsF0FsXX9J8sIs/sc= +github.com/containerd/continuity v0.3.0/go.mod h1:wJEAIwKOm/pBZuBd0JmeTvnLquTB1Ag8espWhkykbPM= +github.com/containerd/fifo v1.1.0/go.mod h1:bmC4NWMbXlt2EZ0Hc7Fx7QzTFxgPID13eH0Qu+MAb2o= +github.com/containerd/go-cni v1.1.9/go.mod h1:XYrZJ1d5W6E2VOvjffL3IZq0Dz6bsVlERHbekNK90PM= +github.com/containerd/go-runc v1.0.0/go.mod h1:cNU0ZbCgCQVZK4lgG3P+9tn9/PaJNmoDXPpoJhDR+Ok= +github.com/containerd/imgcrypt v1.1.7/go.mod h1:FD8gqIcX5aTotCtOmjeCsi3A1dHmTZpnMISGKSczt4k= +github.com/containerd/nri v0.3.0/go.mod h1:Zw9q2lP16sdg0zYybemZ9yTDy8g7fPCIB3KXOGlggXI= +github.com/containerd/ttrpc v1.2.1/go.mod h1:sIT6l32Ph/H9cvnJsfXM5drIVzTr5A2flTf1G5tYZak= +github.com/containerd/typeurl v1.0.2/go.mod h1:9trJWW2sRlGub4wZJRTW83VtbOLS6hwcDZXTn6oPz9s= +github.com/containerd/typeurl/v2 v2.1.0/go.mod h1:IDp2JFvbwZ31H8dQbEIY7sDl2L3o3HZj1hsSQlywkQ0= +github.com/containerd/zfs v1.0.0/go.mod h1:m+m51S1DvAP6r3FcmYCp54bQ34pyOwTieQDNRIRHsFY= +github.com/containernetworking/cni v1.1.2/go.mod h1:sDpYKmGVENF3s6uvMvGgldDWeG8dMxakj/u+i9ht9vw= +github.com/containernetworking/plugins v1.2.0/go.mod h1:/VjX4uHecW5vVimFa1wkG4s+r/s9qIfPdqlLF4TW8c4= +github.com/containers/ocicrypt v1.1.6/go.mod h1:WgjxPWdTJMqYMjf3M6cuIFFA1/MpyyhIM99YInA+Rvc= github.com/coreos/go-semver v0.3.0/go.mod h1:nnelYz7RCh+5ahJtPPxZlU+153eP4D4r3EedlOD2RNk= +github.com/coreos/go-systemd v0.0.0-20190321100706-95778dfbb74e/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= +github.com/coreos/go-systemd v0.0.0-20190719114852-fd7a80b32e1f/go.mod h1:F5haX7vjVVG0kc13fIWeqUViNPyEJxv/OmvnBo0Yme4= github.com/coreos/go-systemd/v22 v22.3.2/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= github.com/coreos/go-systemd/v22 v22.5.0/go.mod h1:Y58oyj3AT4RCenI/lSvhwexgC+NSVTIJ3seZv2GcEnc= -github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= +github.com/creack/pty v1.1.7/go.mod h1:lj5s0c3V2DBrqTV7llrYr5NG6My20zk30Fl46Y7DoTY= +github.com/cyphar/filepath-securejoin v0.2.3/go.mod h1:aPGpWjXOXUn2NCNjFvBE6aRxGGx79pTxQpKOJNYHHl4= +github.com/deepmap/oapi-codegen v1.10.1/go.mod h1:TvVmDQlUkFli9gFij/gtW1o+tFBr4qCHyv2zG+R0YZY= github.com/docker/distribution v2.8.1+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w= github.com/docker/docker v23.0.4+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk= +github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA= +github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw= github.com/dosco/graphjin/plugin/osfs/v3 v3.0.0-20230127082222-13448e4d7160/go.mod h1:lg2ZkWi2PmA8d8t0vL7fgyFc1bKAkSIb6sWnOWmaseQ= +github.com/dustin/go-humanize v1.0.0/go.mod h1:HtrtbFcZ19U5GC7JDqmcUSB87Iq5E25KnS6fMYU6eOk= +github.com/elastic/elastic-transport-go/v8 v8.2.0/go.mod h1:87Tcz8IVNe6rVSLdBux1o/PEItLtyabHU3naC7IoqKI= +github.com/emicklei/go-restful/v3 v3.10.1/go.mod h1:6n3XBCmQQb25CM2LCACGz8ukIrRry+4bhvbpWn3mrbc= github.com/envoyproxy/go-control-plane v0.9.9-0.20210217033140-668b12f5399d/go.mod h1:cXg6YxExXjJnVBQHBLXeUAgxn2UodCpnH306RInaBQk= github.com/envoyproxy/go-control-plane v0.11.1/go.mod h1:uhMcXKCQMEJHiAb0w+YGefQLaTEw+YhGluxZkrTmD0g= github.com/envoyproxy/protoc-gen-validate v1.0.2/go.mod h1:GpiZQP3dDbg4JouG/NNS7QWXpgx6x8QiMKdmN72jogE= @@ -151,34 +333,61 @@ github.com/fatih/color v1.9.0/go.mod h1:eQcE1qtQxscV5RaZvpXrrb8Drkc3/DdQ+uUYCNjL github.com/fatih/color v1.14.1/go.mod h1:2oHN61fhTpgcxD3TSWCgKDiH1+x4OiDVVGH8WlgGZGg= github.com/frankban/quicktest v1.11.3/go.mod h1:wRf/ReqHper53s+kmmSZizM8NamnL3IM0I9ntUbOk+k= github.com/frankban/quicktest v1.14.4/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= +github.com/frankban/quicktest v1.14.6/go.mod h1:4ptaffx2x8+WTWXmUCuVU6aPUX1/Mz7zb5vbUoiM6w0= github.com/go-asn1-ber/asn1-ber v1.5.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-kit/log v0.1.0/go.mod h1:zbhenjAZHb184qTLMA9ZjW7ThYL0H2mk7Q6pNt4vbaY= github.com/go-kit/log v0.2.0/go.mod h1:NwTd00d/i8cPZ3xOwwiv2PO5MOcx78fFErGNcVmBjv0= github.com/go-ldap/ldap/v3 v3.4.1/go.mod h1:iYS1MdmrmceOJ1QOTnRXrIs7i3kloqtmGQjRvjKpyMg= github.com/go-logfmt/logfmt v0.5.0/go.mod h1:wCYkCAKZfumFQihp8CzCvQ3paCTfi41vtzG1KdI/P7A= github.com/go-logfmt/logfmt v0.5.1/go.mod h1:WYhtIu8zTZfxdn5+rREduYbwxfcBr/Vr6KEVveWlfTs= +github.com/go-openapi/jsonpointer v0.19.6/go.mod h1:osyAmYz/mB/C3I+WsTTSgw1ONzaLJoLCyoi6/zppojs= +github.com/go-openapi/swag v0.22.3/go.mod h1:UzaqsxGiab7freDnrUUra0MwWfN/q7tE4j+VcZ0yl14= +github.com/go-redis/redis v6.15.9+incompatible/go.mod h1:NAIEuMOZ/fxfXJIrKDQDz8wamY7mA7PouImQ2Jvg6kA= +github.com/go-redis/redis/v7 v7.4.1/go.mod h1:JDNMw23GTyLNC4GZu9njt15ctBQVn7xjRfnwdHj/Dcg= github.com/go-test/deep v1.1.0/go.mod h1:5C2ZWiW0ErCdrYzpqxLbTX7MG14M9iiw8DgHncVwcsE= github.com/godbus/dbus/v5 v5.0.4/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= github.com/godbus/dbus/v5 v5.1.0/go.mod h1:xhWf0FNVPg57R7Z0UbKHbJfkEywrmjJnf7w5xrFpKfA= +github.com/gofrs/uuid v4.0.0+incompatible/go.mod h1:b2aQJv3Z4Fp6yNu3cdSllBxTCLRxnplIgP/c0N/04lM= github.com/golang/glog v1.1.0/go.mod h1:pfYeQZ3JWZoXTV5sFc986z3HTpwQs9At6P4ImfuP3NQ= +github.com/golang/glog v1.1.2/go.mod h1:zR+okUeTbrL6EL3xHUDxZuEtGv04p5shwip1+mL/rLQ= github.com/golang/snappy v0.0.3/go.mod h1:/XxbfmMg8lxefKM7IXC3fBNl/7bRcc72aCRzEWrmP2Q= +github.com/google/btree v1.0.1/go.mod h1:xXMiIv4Fb/0kKde4SpL7qlzvu5cMJDRkFDxJfI9uaxA= +github.com/google/flatbuffers v2.0.8+incompatible/go.mod h1:1AeVuKshWv4vARoZatz6mlQ0JxURH0Kv5+zNeJKJCa8= github.com/google/go-cmp v0.5.7/go.mod h1:n+brtR0CgQNWTVd5ZUFpTBC8YFBDLK/h/bpaJ8/DtOE= +github.com/google/go-cmp v0.5.8/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-cmp v0.5.9/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= +github.com/google/go-cmp v0.6.0/go.mod h1:17dUlkBOakJ0+DkrSSNjCkIjxS6bF9zb3elmeNGIjoY= github.com/google/go-pkcs11 v0.2.1-0.20230907215043-c6f79328ddf9/go.mod h1:6eQoGcuNJpa7jnd5pMGdkSaQpNDYvPlXWMcjXXThLlY= +github.com/google/gofuzz v1.2.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg= github.com/google/martian/v3 v3.3.2/go.mod h1:oBOf6HBosgwRXnUGWUB05QECsc6uvmMiJ3+6W4l/CUk= +github.com/google/tink/go v1.7.0/go.mod h1:GAUOd+QE3pgj9q8VKIGTCP33c/B7eb4NhxLcgTJZStM= +github.com/google/uuid v1.1.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.2.4/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= +github.com/googleapis/enterprise-certificate-proxy v0.2.5/go.mod h1:RxW0N9901Cko1VOCW3SXCpWP+mlIEkk2tP7jnHy9a3w= github.com/googleapis/gax-go/v2 v2.7.1/go.mod h1:4orTrqY6hXxxaUL4LHIPl6lGo8vAE38/qKbhSAKP6QI= github.com/googleapis/gax-go/v2 v2.11.0/go.mod h1:DxmR61SGKkGLa2xigwuZIQpkCI2S5iydzRfb3peWZJI= +github.com/googleapis/go-type-adapters v1.0.0/go.mod h1:zHW75FOG2aur7gAO2B+MLby+cLsWGBF62rFAi7WjWO4= +github.com/googleapis/google-cloud-go-testing v0.0.0-20210719221736-1c9a4c676720/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= +github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So= +github.com/gotestyourself/gotestyourself v2.2.0+incompatible/go.mod h1:zZKM6oeNM8k+FRljX1mnzVYeS8wiGgQyvST1/GafPbY= +github.com/grpc-ecosystem/go-grpc-middleware v1.3.0/go.mod h1:z0ButlSOZa5vEBq9m2m2hlwIgKw+rp3sdCBRoJY+30Y= +github.com/grpc-ecosystem/go-grpc-prometheus v1.2.0/go.mod h1:8NvIoxWQoOIhqOTXgfV/d3M/q6VIi02HzZEHgUlZvzk= +github.com/grpc-ecosystem/grpc-gateway/v2 v2.11.3/go.mod h1:o//XUCC/F+yRGJoPO/VU0GSB0f8Nhgmxx0VIRUvaC0w= +github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4= github.com/hashicorp/consul/api v1.25.1/go.mod h1:iiLVwR/htV7mas/sy0O+XSuEnrdBUUydemjxcUrAt4g= +github.com/hashicorp/consul/sdk v0.14.1/go.mod h1:vFt03juSzocLRFo59NkeQHHmQa6+g7oU0pfzdI1mUhg= github.com/hashicorp/go-hclog v1.4.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-kms-wrapping/entropy/v2 v2.0.0/go.mod h1:xvb32K2keAc+R8DSFG2IwDcydK9DBQE+fGA5fsw6hSk= github.com/hashicorp/go-kms-wrapping/v2 v2.0.8/go.mod h1:qTCjxGig/kjuj3hk1z8pOUrzbse/GxB1tGfbrq8tGJg= github.com/hashicorp/go-msgpack v0.5.3/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= +github.com/hashicorp/go-msgpack v0.5.5/go.mod h1:ahLV/dePpqEmjfWmKiqvPkv/twdG7iPBM1vqhUKIvfM= github.com/hashicorp/go-multierror v1.1.0/go.mod h1:spPvp8C1qA32ftKqdAHm4hHTbPw+vmowP0z+KUhOZdA= github.com/hashicorp/go-plugin v1.4.8/go.mod h1:viDMjcLJuDui6pXb8U4HVfb8AamCWhHGUjr2IrTF67s= +github.com/hashicorp/go-plugin v1.5.2/go.mod h1:w1sAEES3g3PuV/RzUrgow20W2uErMly84hhD3um1WL4= github.com/hashicorp/go-retryablehttp v0.7.1/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-secure-stdlib/base62 v0.1.2/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= github.com/hashicorp/go-secure-stdlib/parseutil v0.1.6/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8= +github.com/hashicorp/go-secure-stdlib/plugincontainer v0.2.2/go.mod h1:7xQt0+IfRmzYBLpFx+4MYfLpBdd1PT1VatGKRswf7xE= github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.2/go.mod h1:l8slYwnJA26yBz+ErHpp2IRCLr0vuOMGBORIz4rRiAs= github.com/hashicorp/go-sockaddr v1.0.0/go.mod h1:7Xibr9yA9JjQq1JpNB2Vw7kxv8xerXegt+ozgdvDeDU= github.com/hashicorp/go-syslog v1.0.0/go.mod h1:qPfqrKkXGihmCqbJM2mZgkZGvKG1dFdvsLplgctolz4= @@ -188,36 +397,124 @@ github.com/hashicorp/mdns v1.0.4/go.mod h1:mtBihi+LeNXGtG8L9dX59gAEa12BDtBQSp4v/ github.com/hashicorp/memberlist v0.5.0/go.mod h1:yvyXLpo0QaGE59Y7hDTsTzDD25JYBZ4mHgHUZ8lrOI0= github.com/hashicorp/serf v0.10.1/go.mod h1:yL2t6BqATOLGc5HF7qbFkTfXoPIY0WZdWHfEvMqbG+4= github.com/hashicorp/vault/api v1.9.1/go.mod h1:78kktNcQYbBGSrOjQfHjXN32OhhxXnbYl3zxpd2uPUs= +github.com/huandu/xstrings v1.3.1/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/huandu/xstrings v1.3.2/go.mod h1:y5/lhBue+AyNmUVz9RLU9xbLR0o4KIIExikq4ovT0aE= +github.com/iancoleman/strcase v0.2.0/go.mod h1:iwCmte+B7n89clKwxIoIXy/HfoL7AsD47ZCWhYzw7ho= +github.com/imdario/mergo v0.3.11/go.mod h1:jmQim1M+e3UYxmgPu/WyfjB3N3VflVyUjjjwH0dnCYA= +github.com/imdario/mergo v0.3.13/go.mod h1:4lJ1jqUDcsbIECGy0RUJAXNIhg+6ocWgb1ALK2O4oXg= +github.com/influxdata/influxdb-client-go/v2 v2.12.3/go.mod h1:IrrLUbCjjfkmRuaCiGQg4m2GbkaeJDcuWoxiWdQEbA0= +github.com/influxdata/line-protocol v0.0.0-20210922203350-b1ad95c89adf/go.mod h1:xaLFMmpvUxqXtVkUJfg9QmT88cDaCJ3ZKgdZ78oO8Qo= +github.com/intel/goresctrl v0.3.0/go.mod h1:fdz3mD85cmP9sHD8JUlrNWAxvwM86CrbmVXltEKd7zk= +github.com/jackc/chunkreader v1.0.0/go.mod h1:RT6O25fNZIuasFJRyZ4R/Y2BbhasbmZXF9QQ7T3kePo= +github.com/jackc/chunkreader/v2 v2.0.0/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/chunkreader/v2 v2.0.1/go.mod h1:odVSm741yZoC3dpHEUXIqA9tQRhFrgOHwnPIn9lDKlk= +github.com/jackc/pgconn v0.0.0-20190420214824-7e0022ef6ba3/go.mod h1:jkELnwuX+w9qN5YIfX0fl88Ehu4XC3keFuOJJk9pcnA= +github.com/jackc/pgconn v0.0.0-20190824142844-760dd75542eb/go.mod h1:lLjNuW/+OfW9/pnVKPazfWOgNfH2aPem8YQ7ilXGvJE= +github.com/jackc/pgconn v0.0.0-20190831204454-2fabfa3c18b7/go.mod h1:ZJKsE/KZfsUgOEh9hBm+xYTstcNHg7UPMVJqRfQxq4s= +github.com/jackc/pgconn v1.8.0/go.mod h1:1C2Pb36bGIP9QHGBYCjnyhqu7Rv3sGshaQUvmfGIB/o= +github.com/jackc/pgconn v1.9.0/go.mod h1:YctiPyvzfU11JFxoXokUOOKQXQmDMoJL9vJzHH8/2JY= +github.com/jackc/pgconn v1.9.1-0.20210724152538-d89c8390a530/go.mod h1:4z2w8XhRbP1hYxkpTuBjTS3ne3J48K83+u0zoyvg2pI= +github.com/jackc/pgconn v1.14.0/go.mod h1:9mBNlny0UvkgJdCDvdVHYSjI+8tD2rnKK69Wz8ti++E= +github.com/jackc/pgio v1.0.0/go.mod h1:oP+2QK2wFfUWgr+gxjoBH9KGBb31Eio69xUb0w5bYf8= +github.com/jackc/pgmock v0.0.0-20190831213851-13a1b77aafa2/go.mod h1:fGZlG77KXmcq05nJLRkk0+p82V8B8Dw8KN2/V9c/OAE= +github.com/jackc/pgmock v0.0.0-20201204152224-4fe30f7445fd/go.mod h1:hrBW0Enj2AZTNpt/7Y5rr2xe/9Mn757Wtb2xeBzPv2c= +github.com/jackc/pgmock v0.0.0-20210724152146-4ad1a8207f65/go.mod h1:5R2h2EEX+qri8jOWMbJCtaPWkrrNc7OHwsp2TCqp7ak= +github.com/jackc/pgproto3 v1.1.0/go.mod h1:eR5FA3leWg7p9aeAqi37XOTgTIbkABlvcPB3E5rlc78= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190420180111-c116219b62db/go.mod h1:bhq50y+xrl9n5mRYyCBFKkpRVTLYJVWeCc+mEAI3yXA= +github.com/jackc/pgproto3/v2 v2.0.0-alpha1.0.20190609003834-432c2951c711/go.mod h1:uH0AWtUmuShn0bcesswc4aBTWGvw0cAxIJp+6OB//Wg= +github.com/jackc/pgproto3/v2 v2.0.0-rc3/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.0-rc3.0.20190831210041-4c03ce451f29/go.mod h1:ryONWYqW6dqSg1Lw6vXNMXoBJhpzvWKnT95C46ckYeM= +github.com/jackc/pgproto3/v2 v2.0.6/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.1.1/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgproto3/v2 v2.3.2/go.mod h1:WfJCnwN3HIg9Ish/j3sgWXnAfK8A9Y0bwXYU5xKaEdA= +github.com/jackc/pgtype v0.0.0-20190421001408-4ed0de4755e0/go.mod h1:hdSHsc1V01CGwFsrv11mJRHWJ6aifDLfdV3aVjFF0zg= +github.com/jackc/pgtype v0.0.0-20190824184912-ab885b375b90/go.mod h1:KcahbBH1nCMSo2DXpzsoWOAfFkdEtEJpPbVLq8eE+mc= +github.com/jackc/pgtype v0.0.0-20190828014616-a8802b16cc59/go.mod h1:MWlu30kVJrUS8lot6TQqcg7mtthZ9T0EoIBFiJcmcyw= +github.com/jackc/pgtype v1.8.1-0.20210724151600-32e20a603178/go.mod h1:C516IlIV9NKqfsMCXTdChteoXmwgUceqaLfjg2e3NlM= +github.com/jackc/pgtype v1.14.0/go.mod h1:LUMuVrfsFfdKGLw+AFFVv6KtHOFMwRgDDzBt76IqCA4= +github.com/jackc/pgx/v4 v4.0.0-20190420224344-cc3461e65d96/go.mod h1:mdxmSJJuR08CZQyj1PVQBHy9XOp5p8/SHH6a0psbY9Y= +github.com/jackc/pgx/v4 v4.0.0-20190421002000-1b8f0016e912/go.mod h1:no/Y67Jkk/9WuGR0JG/JseM9irFbnEPbuWV2EELPNuM= +github.com/jackc/pgx/v4 v4.0.0-pre1.0.20190824185557-6972a5742186/go.mod h1:X+GQnOEnf1dqHGpw7JmHqHc1NxDoalibchSk9/RWuDc= +github.com/jackc/pgx/v4 v4.12.1-0.20210724153913-640aa07df17c/go.mod h1:1QD0+tgSXP7iUjYm9C1NxKhny7lq6ee99u/z+IHFcgs= +github.com/jackc/pgx/v4 v4.18.1/go.mod h1:FydWkUyadDmdNH/mHnGob881GawxeEm7TcMCzkb+qQE= +github.com/jackc/puddle v0.0.0-20190413234325-e4ced69a3a2b/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v0.0.0-20190608224051-11cab39313c9/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.1.3/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle v1.3.0 h1:eHK/5clGOatcjX3oWGBO/MpxpbHzSwud5EWTSCI+MX0= +github.com/jackc/puddle v1.3.0/go.mod h1:m4B5Dj62Y0fbyuIc15OsIqK0+JU8nkqQjsgx7dvjSWk= +github.com/jackc/puddle/v2 v2.2.1 h1:RhxXJtFG022u4ibrCSMSiu5aOq1i77R3OHKNJj77OAk= github.com/jackc/puddle/v2 v2.2.1/go.mod h1:vriiEXHvEE654aYKXXjOvZM39qJ0q+azkZFrfEOc3H4= +github.com/jhump/gopoet v0.1.0/go.mod h1:me9yfT6IJSlOL3FCfrg+L6yzUEZ+5jW6WHt4Sk+UPUI= +github.com/jhump/goprotoc v0.5.0/go.mod h1:VrbvcYrQOrTi3i0Vf+m+oqQWk9l72mjkJCYo7UvLHRQ= +github.com/jhump/protoreflect v1.15.1/go.mod h1:jD/2GMKKE6OqX8qTjhADU1e6DShO+gavG9e0Q693nKo= github.com/jpillora/backoff v1.0.0/go.mod h1:J/6gKK9jxlEcS3zixgDgUAsiuZ7yrSoa/FX5e0EB2j4= github.com/json-iterator/go v1.1.10/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.11/go.mod h1:KdQUCv79m/52Kvf8AW2vK1V8akMuk1QjK/uOdHXbAo4= github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo= github.com/julienschmidt/httprouter v1.3.0/go.mod h1:JR6WtHb+2LUe8TCKY3cZOxFyyO8IZAc4RVcycCCAKdM= +github.com/klauspost/asmfmt v1.3.2/go.mod h1:AG8TuvYojzulgDAMCnYn50l/5QV3Bs/tp6j0HLHbNSE= +github.com/klauspost/cpuid/v2 v2.0.9/go.mod h1:FInQzS24/EEf25PyTYn52gqo7WaD8xa0213Md/qVLRg= +github.com/konsorten/go-windows-terminal-sequences v1.0.2/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/konsorten/go-windows-terminal-sequences v1.0.3/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= +github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk= +github.com/kr/pty v1.1.8/go.mod h1:O1sed60cT9XZ5uDucP5qwvh+TE3NnUj51EiZO/lmSfw= +github.com/lib/pq v1.0.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.1.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.2.0/go.mod h1:5WUZQaWbwv1U+lTReE5YruASi9Al49XbQIvNi/34Woo= +github.com/lib/pq v1.10.2/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o= +github.com/lyft/protoc-gen-star/v2 v2.0.3/go.mod h1:amey7yeodaJhXSbf/TlLvWiqQfLOSpEk//mLlc+axEk= +github.com/mattn/go-colorable v0.1.1/go.mod h1:FuOcm+DKB9mbwrcAfNl7/TZVBZ6rcnceauSikq3lYCQ= +github.com/mattn/go-isatty v0.0.5/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= +github.com/mattn/go-isatty v0.0.7/go.mod h1:Iq45c/XA43vh69/j3iqttzPXn0bhXyGjM0Hdxcsrc5s= github.com/mattn/go-isatty v0.0.11/go.mod h1:PhnuNfih5lzO57/f3n+odYbM4JtupLOxQOAqxQCu2WE= github.com/mattn/go-isatty v0.0.17/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/matttproud/golang_protobuf_extensions v1.0.4/go.mod h1:BSXmuO+STAnVfrANrmjBb36TMTDstsz7MSK+HVaYKv4= github.com/miekg/dns v1.1.26/go.mod h1:bPDLeHnStXmXAq1m/Ch/hvfNHr14JKNPMBo3VZKjuso= github.com/miekg/dns v1.1.41/go.mod h1:p6aan82bvRIyn+zDIv9xYNUpwa73JcSh9BKwknJysuI= +github.com/miekg/pkcs11 v1.1.1/go.mod h1:XsNlhZGX73bx86s2hdc/FuaLm2CPZJemRLMA+WTFxgs= +github.com/minio/asm2plan9s v0.0.0-20200509001527-cdd76441f9d8/go.mod h1:mC1jAcsrzbxHt8iiaC+zU4b1ylILSosueou12R++wfY= +github.com/minio/c2goasm v0.0.0-20190812172519-36a3d3bbc4f3/go.mod h1:RagcQ7I8IeTMnF8JTXieKnO4Z6JCsikNEzj0DwauVzE= github.com/minio/highwayhash v1.0.2/go.mod h1:BQskDq+xkJ12lmlUUi7U0M5Swg3EWR+dLTk+kldvVxY= +github.com/minio/sha256-simd v1.0.0/go.mod h1:OuYzVNI5vcoYIAmbIvHPl3N3jUzVedXbKy5RFepssQM= +github.com/mistifyio/go-zfs v2.1.2-0.20190413222219-f784269be439+incompatible/go.mod h1:8AuVvqP/mXw1px98n46wfvcGfQ4ci2FwoAjKYxuo3Z4= github.com/mitchellh/cli v1.1.0/go.mod h1:xcISNoH86gajksDmfB23e/pu+B+GeFRMYmoHXxx3xhI= +github.com/mitchellh/cli v1.1.5/go.mod h1:v8+iFts2sPIKUV1ltktPXMCC8fumSKFItNcD2cLtRR4= github.com/mitchellh/mapstructure v0.0.0-20160808181253-ca63d7c062ee/go.mod h1:FVVH3fgwuzCH5S8UJGiWEs2h04kUh9fWfEaFds41c1Y= +github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc= github.com/moby/patternmatcher v0.5.0/go.mod h1:hDPoyOpDY7OrrMDLaYoY3hf52gNCR/YOUYxkhApJIxc= +github.com/moby/spdystream v0.2.0/go.mod h1:f7i0iNDQJ059oMTcWxx8MA/zKFIuD/lY+0GqbN2Wy8c= +github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= github.com/moby/sys/sequential v0.5.0/go.mod h1:tH2cOOs5V9MlPiXcQzRC+eEyab644PWKGRYaaV5ZZlo= +github.com/moby/sys/signal v0.7.0/go.mod h1:GQ6ObYZfqacOwTtlXvcmh9A26dVRul/hbOZn88Kg8Tg= +github.com/moby/sys/symlink v0.2.0/go.mod h1:7uZVF2dqJjG/NsClqul95CqKOBRQyYSNnJ6BMgR/gFs= github.com/moby/term v0.0.0-20221205130635-1aeaba878587/go.mod h1:8FzsFHVUBGZdbDsJw/ot+X+d5HLUbvklYLJ9uGfcI3Y= github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk= +github.com/montanaflynn/stats v0.0.0-20171201202039-1bf9dbcd8cbe/go.mod h1:wL8QJuTMNUDYhXwkmfOly8iTdp5TEcJFWZD2D7SIkUc= github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc= +github.com/mr-tron/base58 v1.2.0/go.mod h1:BinMc/sQntlIE1frQmRFPUoPA1Zkr8VRgBdjWI2mNwc= +github.com/mrunalp/fileutils v0.5.0/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= +github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ= github.com/mwitkow/go-conntrack v0.0.0-20190716064945-2f068394615f/go.mod h1:qRWi+5nqEBWmkhHvq77mSJWrCKwh8bxhgT7d/eI7P4U= github.com/nats-io/jwt/v2 v2.4.1/go.mod h1:24BeQtRwxRV8ruvC4CojXlx/WQ/VjuwlYiH+vu/+ibI= github.com/nats-io/nats.go v1.30.2/go.mod h1:dcfhUgmQNN4GJEfIb2f9R7Fow+gzBF4emzDHrVBd5qM= +github.com/nats-io/nats.go v1.31.0/go.mod h1:di3Bm5MLsoB4Bx61CBTsxuarI36WbhAwOm8QrW39+i8= github.com/nats-io/nkeys v0.4.5/go.mod h1:XUkxdLPTufzlihbamfzQ7mw/VGx6ObUs+0bN5sNvt64= +github.com/nats-io/nkeys v0.4.6/go.mod h1:4DxZNzenSVd1cYQoAa8948QY3QDjrHfcfVADymtkpts= github.com/nats-io/nuid v1.0.1/go.mod h1:19wcPz3Ph3q0Jbyiqsd0kePYG7A95tJPxeL+1OSON2c= github.com/niemeyer/pretty v0.0.0-20200227124842-a10e7caefd8e/go.mod h1:zD1mROLANZcx1PVRCS0qkT7pwLkGfwJo4zjcN/Tysno= +github.com/onsi/ginkgo v1.16.4/go.mod h1:dX+/inL/fNMqNlz0e9LfyB9TswhZpCVdJM/Z6Vvnwo0= github.com/opencontainers/image-spec v1.1.0-rc2.0.20221005185240-3a7f492d3f1b/go.mod h1:3OVijpioIKYWTqjiG0zfF6wvoJ4fAXGbjdZuI2NgsRQ= github.com/opencontainers/runc v1.1.6/go.mod h1:CbUumNnWCuTGFukNXahoo/RFBZvDAgRh/smNYNOhA50= +github.com/opencontainers/runtime-spec v1.1.0-rc.1/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= +github.com/opencontainers/runtime-tools v0.9.1-0.20221107090550-2e043c6bd626/go.mod h1:BRHJJd0E+cx42OybVYSgUvZmU0B8P9gZuRXlZUP7TKI= +github.com/opencontainers/selinux v1.11.0/go.mod h1:E5dMC3VPuVvVHDYmi78qvhJp8+M586T4DlDRYpFkyec= +github.com/ory/dockertest v3.3.5+incompatible/go.mod h1:1vX4m9wsvi00u5bseYwXaSnhNrne+V0E6LAcBILJdPs= github.com/pascaldekloe/goe v0.0.0-20180627143212-57f6aae5913c/go.mod h1:lzWF7FIEvWOWxwDKqyGYQf6ZUaNfKdP144TG7ZOy1lc= github.com/pelletier/go-toml v1.9.5 h1:4yBQzkHv+7BHq2PQUZF3Mx0IYxG7LsP222s7Agd3ve8= +github.com/pelletier/go-toml v1.9.5/go.mod h1:u1nR/EPcESfeI/szUZKdtJ0xRNbUoANCkoOuaOx1Y+c= +github.com/pierrec/lz4/v4 v4.1.15/go.mod h1:gZWDp/Ze/IJXGXf23ltt2EXimqmTUXEy0GFuRQyBid4= +github.com/pkg/diff v0.0.0-20210226163009-20ebb0f2a09e/go.mod h1:pJLUxLENpZxwdsKMEsNbx1VGcRFpLqf3715MtcvvzbA= +github.com/pkg/sftp v1.13.6/go.mod h1:tz1ryNURKu77RL+GuCzmoJYxQczL3wLNNpPWagdg4Qk= github.com/posener/complete v1.2.3/go.mod h1:WZIdtGGp+qx0sLrYKtIRAruyNpv6hFCicSgv7Sy7s/s= github.com/prometheus/client_golang v1.7.1/go.mod h1:PY5Wy2awLA44sXw4AOSfFBetzPP4j5+D6mVACh+pe2M= github.com/prometheus/client_golang v1.11.0/go.mod h1:Z6t4BnS23TR94PD6BsDNk8yVqroYurpAkEiz0P2BEV0= @@ -234,83 +531,191 @@ github.com/prometheus/procfs v0.6.0/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1 github.com/prometheus/procfs v0.7.3/go.mod h1:cz+aTbrPOrUb4q7XlbU9ygM+/jj0fzG6c1xBZuNvfVA= github.com/prometheus/procfs v0.8.0/go.mod h1:z7EfXMXOkbkqb9IINtpCn86r/to3BnA0uaxHdg830/4= github.com/rogpeppe/go-internal v1.8.1/go.mod h1:JeRgkft04UBgHMgCIwADu4Pn6Mtm5d4nPKWu0nJ5d+o= +github.com/rogpeppe/go-internal v1.9.0/go.mod h1:WtVeX8xhTBvf0smdhujwtBcq4Qrzq/fJaraNFVN+nFs= +github.com/rs/xid v1.2.1/go.mod h1:+uKXf+4Djp6Md1KODXJxgGQPKngRmWyn10oCKFzNHOQ= +github.com/rs/zerolog v1.13.0/go.mod h1:YbFCdg8HfsridGWAh22vktObvhZbQsZXe4/zB0OKkWU= +github.com/rs/zerolog v1.15.0/go.mod h1:xYTKnLHcpfU2225ny5qZjxnj9NvkumZYjJHlAThCjNc= github.com/russross/blackfriday v1.6.0/go.mod h1:ti0ldHuxg49ri4ksnFxlkCfN+hvslNlmVHqNRXXJNAY= github.com/ryanuber/columnize v0.0.0-20160712163229-9b3edd62028f/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= +github.com/ryanuber/columnize v2.1.2+incompatible/go.mod h1:sm1tb6uqfes/u+d4ooFouqFdy9/2g9QGwK3SQygK0Ts= github.com/sagikazarmark/crypt v0.15.0/go.mod h1:5rwNNax6Mlk9sZ40AcyVtiEw24Z4J04cfSioF2COKmc= +github.com/sagikazarmark/crypt v0.17.0/go.mod h1:SMtHTvdmsZMuY/bpZoqokSoChIrcJ/epOxZN58PbZDg= +github.com/satori/go.uuid v1.2.0/go.mod h1:dA0hQrYB0VpLJoorglMZABFdXlWrHn1NEOzdhQKdks0= github.com/sean-/seed v0.0.0-20170313163322-e2103e2c3529/go.mod h1:DxrIzT+xaE7yg65j358z/aeFdxmN0P9QXhEzd20vsDc= +github.com/seccomp/libseccomp-golang v0.9.2-0.20220502022130-f33da4d89646/go.mod h1:JA8cRccbGaA1s33RQf7Y1+q9gHmZX1yB/z9WDN1C6fg= +github.com/shopspring/decimal v0.0.0-20180709203117-cd690d0c9e24/go.mod h1:M+9NzErvs504Cn4c5DxATwIqPbtswREoFCre64PpcG4= +github.com/shopspring/decimal v1.2.0/go.mod h1:DKyhrW/HYNuLGql+MJL6WCR6knT2jwCFRcu2hWCYk4o= +github.com/shurcooL/sanitized_anchor_name v1.0.0/go.mod h1:1NzhyTcUVG4SuEtjjoZeVRXNmyL/1OwPU0+IJeTBvfc= +github.com/sirupsen/logrus v1.4.1/go.mod h1:ni0Sbl8bgC9z8RoU9G6nDWqqs/fq4eDPysMBDgk/93Q= github.com/sirupsen/logrus v1.6.0/go.mod h1:7uNnSEd1DgxDLC74fIahvMZmmYsHGZGEOFrfsX/uA88= +github.com/spf13/cast v1.3.1/go.mod h1:Qx5cxh0v+4UWYiBimWS+eyWzqEqokIECu5etghLkUJE= +github.com/stefanberger/go-pkcs11uri v0.0.0-20201008174630-78d3cae3a980/go.mod h1:AO3tvPzVZ/ayst6UlUKUv6rcPQInYe3IknH3jYhAKu8= +github.com/stretchr/objx v0.2.0/go.mod h1:qt09Ya8vawLte6SNmTgCsAVtYtaKzEcn8ATUoHMkEqE= github.com/stretchr/testify v1.7.5/go.mod h1:yNjHg4UonilssWZ8iaSj1OCr/vHnekPRkoO+kdMU+MU= +github.com/syndtr/gocapability v0.0.0-20200815063812-42c35b437635/go.mod h1:hkRG7XYTFWNJGYcbNJQlaLq0fg1yr4J4t/NcTQtrfww= +github.com/tchap/go-patricia/v2 v2.3.1/go.mod h1:VZRHKAb53DLaG+nA9EaYYiaEx6YztwDlLElMsnSHD4k= +github.com/urfave/cli v1.22.12/go.mod h1:sSBEIC79qR6OvcmsD4U3KABeOTxDqQtdDnaFuUN30b8= +github.com/vishvananda/netlink v1.2.1-beta.2/go.mod h1:twkDnbuQxJYemMlGd4JFIcuhgX83tXhKS2B/PRMpOho= +github.com/vishvananda/netns v0.0.0-20210104183010-2eb08e3e575f/go.mod h1:DD4vA1DwXk04H54A1oHXtwZmA0grkVMdPxx/VGLCah0= +github.com/xdg-go/pbkdf2 v1.0.0/go.mod h1:jrpuAogTd400dnrH08LKmI/xc1MbPOebTwRqcT5RDeI= github.com/xeipuuv/gojsonpointer v0.0.0-20180127040702-4e3ac2762d5f/go.mod h1:N2zxlSyiKSe5eX1tZViRH5QA0qijqEDrYZiPEAiq3wU= github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ= github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y= +github.com/youmark/pkcs8 v0.0.0-20181117223130-1be2e3e5546d/go.mod h1:rHwXgn7JulP+udvsHwJoVG1YGAP6VLg4y9I5dyZdqmA= +github.com/yuin/goldmark v1.3.5/go.mod h1:mwnBkeHKe2W/ZEtQ+71ViKU8L12m81fl3OWwC1Zlc8k= +github.com/zeebo/xxh3 v1.0.2/go.mod h1:5NWz9Sef7zIDm2JHfFlcQvNekmcEl9ekUZQQKCYaDcA= +github.com/zenazn/goji v0.9.0/go.mod h1:7S9M489iMyHBNxwZnk9/EHS098H4/F6TATF2mIxtB1Q= +go.etcd.io/bbolt v1.3.7/go.mod h1:N9Mkw9X8x5fupy0IKsmuqVtoGDyxsaDlbk4Rd05IAQw= go.etcd.io/etcd/api/v3 v3.5.9/go.mod h1:uyAal843mC8uUVSLWz6eHa/d971iDGnCRpmKd2Z+X8k= +go.etcd.io/etcd/api/v3 v3.5.10/go.mod h1:TidfmT4Uycad3NM/o25fG3J07odo4GBB9hoxaodFCtI= go.etcd.io/etcd/client/pkg/v3 v3.5.9/go.mod h1:y+CzeSmkMpWN2Jyu1npecjB9BBnABxGM4pN8cGuJeL4= +go.etcd.io/etcd/client/pkg/v3 v3.5.10/go.mod h1:DYivfIviIuQ8+/lCq4vcxuseg2P2XbHygkKwFo9fc8U= go.etcd.io/etcd/client/v2 v2.305.9/go.mod h1:0NBdNx9wbxtEQLwAQtrDHwx58m02vXpDcgSYI2seohQ= +go.etcd.io/etcd/client/v2 v2.305.10/go.mod h1:m3CKZi69HzilhVqtPDcjhSGp+kA1OmbNn0qamH80xjA= go.etcd.io/etcd/client/v3 v3.5.9/go.mod h1:i/Eo5LrZ5IKqpbtpPDuaUnDOUv471oDg8cjQaUr2MbA= +go.etcd.io/etcd/client/v3 v3.5.10/go.mod h1:RVeBnDz2PUEZqTpgqwAtUd8nAPf5kjyFyND7P1VkOKc= +go.mozilla.org/pkcs7 v0.0.0-20200128120323-432b2356ecb1/go.mod h1:SNgMg+EgDFwmvSmLRTNKC5fegJjB7v23qTQ0XLGUNHk= +go.opentelemetry.io/contrib/instrumentation/google.golang.org/grpc/otelgrpc v0.40.0/go.mod h1:UMklln0+MRhZC4e3PwmN3pCtq4DyIadWw4yikh6bNrw= +go.opentelemetry.io/otel/exporters/otlp/internal/retry v1.14.0/go.mod h1:UFG7EBMRdXyFstOwH028U0sVf+AvukSGhF0g8+dmNG8= +go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.14.0/go.mod h1:HrbCVv40OOLTABmOn1ZWty6CHXkU8DK/Urc43tHug70= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.14.0/go.mod h1:5w41DY6S9gZrbjuq6Y+753e96WfPha5IcsOSZTtullM= +go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracehttp v1.14.0/go.mod h1:+N7zNjIJv4K+DeX67XXET0P+eIciESgaFDBqh+ZJFS4= +go.opentelemetry.io/proto/otlp v0.19.0/go.mod h1:H7XAot3MsfNsj7EXtrA2q5xSNQ10UqI405h3+duxN4U= +go.uber.org/atomic v1.3.2/go.mod h1:gD2HeocX3+yG+ygLZcrzQJaqmWj9AIm7n08wl/qW/PE= +go.uber.org/atomic v1.5.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= +go.uber.org/atomic v1.6.0/go.mod h1:sABNBOSYdrvTF6hTgEIbc7YasKWGhgEQZyfxyTvoXHQ= go.uber.org/atomic v1.7.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/goleak v1.1.11/go.mod h1:cwTWslyiVhfpKIDGSZEM2HlOvcqm+tG4zioyIeLoqMQ= go.uber.org/goleak v1.2.0/go.mod h1:XJYK+MuIchqpmGmUSAzotztawfKvYLUIgg7guXrwVUo= +go.uber.org/multierr v1.1.0/go.mod h1:wR5kodmAFQ0UK8QlbwjlSNy0Z68gJhDJUG5sjR94q/0= +go.uber.org/multierr v1.3.0/go.mod h1:VgVr7evmIr6uPjLBxg28wmKNXyqE9akIJ5XnfpiKl+4= +go.uber.org/multierr v1.5.0/go.mod h1:FeouvMocqHpRaaGuG9EjoKcStLC43Zu/fmqdUMPcKYU= go.uber.org/multierr v1.6.0/go.mod h1:cdWPpRnG4AhwMwsgIHip0KRBQjJy5kYEpYjJxpXp9iU= go.uber.org/multierr v1.10.0/go.mod h1:20+QtiLqy0Nd6FdQB9TLXag12DsQkrbs3htMFfDN80Y= +go.uber.org/tools v0.0.0-20190618225709-2cfd321de3ee/go.mod h1:vJERXedbb3MVM5f9Ejo0C68/HhF8uaILCdgjnY+goOA= +go.uber.org/zap v1.9.1/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.10.0/go.mod h1:vwi/ZaCAaUcBkycHslxD9B2zi4UTXhF60s6SWpuDF0Q= +go.uber.org/zap v1.13.0/go.mod h1:zwrFLgMcdUuIBviXEYEH1YKNaOBnKXsx2IPda5bBwHM= go.uber.org/zap v1.21.0/go.mod h1:wjWOCqI0f2ZZrJF/UufIOkiC8ii6tm1iqIsLo76RfJw= +golang.org/x/crypto v0.0.0-20190411191339-88737f569e3a/go.mod h1:WFFai1msRO1wXaEeE5yQxYXgSfI8pQAWXbQop6sCtWE= +golang.org/x/crypto v0.0.0-20190820162420-60c769a6c586/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI= golang.org/x/crypto v0.0.0-20190923035154-9ee001bba392/go.mod h1:/lpIB1dKB+9EgE3H3cr1v9wB50oz8l4C4h62xy7jSTY= +golang.org/x/crypto v0.0.0-20200414173820-0848c9571904/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= golang.org/x/crypto v0.0.0-20200604202706-70a84ac30bf9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20200820211705-5c72a883971a/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto= +golang.org/x/crypto v0.0.0-20201203163018-be400aefbc4c/go.mod h1:jdWPYTVW3xRLrWPugEBEK3UY2ZEsg3UU495nc5E+M+I= +golang.org/x/crypto v0.0.0-20210616213533-5ff15b29337e/go.mod h1:GvvjBRRGRdwPK5ydBHafDWAxML/pGHZbMvKqRZ5+Abc= +golang.org/x/crypto v0.1.0/go.mod h1:RecgLatLF4+eUMCP1PoPZQb+cVrJcOPbHkTkbkB9sbw= golang.org/x/crypto v0.4.0/go.mod h1:3quD/ATkf6oY+rnes5c3ExXTbLc8mueNue5/DoinL80= golang.org/x/crypto v0.12.0/go.mod h1:NF0Gs7EO5K4qLn+Ylc+fih8BSTeIjAP05siRnAh98yw= +golang.org/x/crypto v0.15.0/go.mod h1:4ChreQoLWfG3xLDer1WdlH5NdlQ3+mwnQq1YTKY+72g= golang.org/x/lint v0.0.0-20210508222113-6edffad5e616/go.mod h1:3xt1FjdF8hUf6vQPIChWIBhFzV8gjjsPE/fR3IyQdNY= -golang.org/x/mod v0.12.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.4.2/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA= +golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= +golang.org/x/mod v0.14.0/go.mod h1:hTbmBsO62+eylJbnUtE2MGJUyE7QWk4xUqPFrRgJ+7c= +golang.org/x/net v0.0.0-20190813141303-74dc4d7220e7/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= golang.org/x/net v0.0.0-20190923162816-aa69164e4478/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s= +golang.org/x/net v0.0.0-20210405180319-a5a99cb37ef4/go.mod h1:p54w0d4576C0XHj96bSt6lcn1PtDYWL6XObtHCRCNQM= golang.org/x/net v0.0.0-20210410081132-afb366fc7cd1/go.mod h1:9tjilg8BloeKEkVJvy7fQ90B1CfIiPueXVOjqfkSzI8= golang.org/x/net v0.0.0-20210525063256-abc453219eb5/go.mod h1:9nx3DQGgdP8bBQD5qxJ1jj9UTztislL4KSBs9R2vV5Y= golang.org/x/net v0.0.0-20220225172249-27dd8689420f/go.mod h1:CfG3xpIq0wQ8r1q4Su4UZFWDARRcnwPjda9FqA0JpMk= golang.org/x/net v0.7.0/go.mod h1:2Tu9+aMcznHK/AK1HMvgo6xiTLG5rD5rZLDS+rp2Bjs= golang.org/x/net v0.12.0/go.mod h1:zEVYFnQC7m/vmpQFELhcD1EWkZlX69l4oqgmer6hfKA= golang.org/x/net v0.14.0/go.mod h1:PpSgVXXLK0OxS0F31C1/tv6XNguvCrnXIDrFMspZIUI= +golang.org/x/net v0.18.0/go.mod h1:/czyP5RqHAH4odGYxBJ1qz0+CE5WZ+2j1YgoEo8F2jQ= golang.org/x/oauth2 v0.0.0-20210514164344-f6687ab2804c/go.mod h1:KelEdhl1UZF7XfJ4dDtk6s++YSgaE7mD/BuKKDLBl4A= golang.org/x/oauth2 v0.0.0-20220223155221-ee480838109b/go.mod h1:DAh4E804XQdzx2j+YRIaUnCqCV2RuMz24cGBJ5QYIrc= golang.org/x/oauth2 v0.6.0/go.mod h1:ycmewcwgD4Rpr3eZJLSB4Kyyljb3qDh40vJ8STE5HKw= golang.org/x/oauth2 v0.10.0/go.mod h1:kTpgurOux7LqtuxjuyZa4Gj2gdezIt/jQtGnNFfypQI= -golang.org/x/sync v0.3.0 h1:ftCYgMx6zT/asHUrPw8BLLscYtGznsLAnjq5RH9P66E= +golang.org/x/oauth2 v0.11.0/go.mod h1:LdF7O/8bLR/qWK9DrpXmbHLTouvRHK0SgJl0GmDBchk= +golang.org/x/oauth2 v0.13.0/go.mod h1:/JMhi4ZRXAf4HG9LiNmxvk+45+96RUlVThiH8FzNBn0= +golang.org/x/oauth2 v0.14.0/go.mod h1:lAtNWgaWfL4cm7j2OV8TxGi9Qb7ECORx8DktCY74OwM= +golang.org/x/sync v0.0.0-20210220032951-036812b2e83c/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= +golang.org/x/sync v0.4.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= golang.org/x/sys v0.0.0-20190130150945-aca44879d564/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= +golang.org/x/sys v0.0.0-20190403152447-81d4e9dc473e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20190813064441-fde4db37ae7a/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190922100055-0a153f010e69/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20190924154521-2837fb4f24fe/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200106162015-b016eb3dc98e/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200615200032-f1bc736245b1/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20200625212154-ddb9806d33ae/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= golang.org/x/sys v0.0.0-20210303074136-134d130e1a04/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210330210617-4fbd30eecc44/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs= +golang.org/x/sys v0.0.0-20210510120138-977fb7262007/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20210603081109-ebe580a85c40/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220114195835-da31bd327af9/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.0.0-20220728004956-3c1f35247d10/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= -golang.org/x/sys v0.10.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.11.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0 h1:Af8nKPmuFypiUBjVoU9V20FiaFXOcuZI21p0ycVYYGE= +golang.org/x/sys v0.14.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= +golang.org/x/term v0.0.0-20201117132131-f5c789dd3221/go.mod h1:Nr5EML6q2oocZ2LXRh80K7BxOlk5/8JxuGnuhpl+muw= golang.org/x/term v0.3.0/go.mod h1:q750SLmJuPmVoN1blW3UFBPREJfb1KmY3vwxfr+nFDA= +golang.org/x/term v0.11.0/go.mod h1:zC9APTIj3jG3FdV/Ons+XE1riIZXG4aZ4GTHiPZJPIU= golang.org/x/text v0.11.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/text v0.12.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= golang.org/x/time v0.0.0-20220411224347-583f2d630306/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/tools v0.0.0-20190425163242-31fd60d6bfdc/go.mod h1:RgjU9mgBXZiqYHBnxXauZ1Gv1EHHAz9KjViQ78xBX0Q= +golang.org/x/tools v0.0.0-20190823170909-c4a336ef6a2f/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= golang.org/x/tools v0.0.0-20190907020128-2ca718005c18/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029041327-9cc4af7d6b2c/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20191029190741-b9c20aec41a5/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo= +golang.org/x/tools v0.0.0-20200103221440-774c71fcf114/go.mod h1:TB2adYChydJhpapKDTa4BR/hXlZSLoq2Wpct/0txZ28= +golang.org/x/tools v0.1.5/go.mod h1:o0xws9oXOQQZyjljx8fwUC0k7L1pTE6eaCbjGeHmOkk= +golang.org/x/tools v0.7.0/go.mod h1:4pg6aUX35JBAogB10C9AtvVL+qowtN4pT3CGSQex14s= golang.org/x/tools v0.13.0/go.mod h1:HvlwmtVNQAhOuCjW7xxvovg8wbNq7LwfXh/k7wXUl58= +golang.org/x/tools v0.16.0/go.mod h1:kYVVN6I1mBNoB1OX+noeBjbRk4IUEPa7JJ+TJMEooJ0= +golang.org/x/xerrors v0.0.0-20190410155217-1f06c39b4373/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= +golang.org/x/xerrors v0.0.0-20190513163551-3ee3066db522/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0= golang.org/x/xerrors v0.0.0-20220907171357-04be3eba64a2/go.mod h1:K8+ghG5WaK9qNqU5K3HdILfMLy1f3aNYFI/wnl100a8= google.golang.org/api v0.114.0/go.mod h1:ifYI2ZsFK6/uGddGfAD5BMxlnkBqCmqHSDUVi45N5Yg= google.golang.org/api v0.126.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= google.golang.org/api v0.128.0/go.mod h1:Y611qgqaE92On/7g65MQgxYul3c0rEB894kniWLY750= +google.golang.org/api v0.134.0/go.mod h1:sjRL3UnjTx5UqNQS9EWr9N8p7xbHpy1k0XGRLCf3Spk= +google.golang.org/api v0.149.0/go.mod h1:Mwn1B7JTXrzXtnvmzQE2BD6bYZQ8DShKZDZbeN9I7qI= +google.golang.org/api v0.150.0/go.mod h1:ccy+MJ6nrYFgE3WgRx/AMXOxOmU8Q4hSa+jjibzhxcg= google.golang.org/genproto v0.0.0-20230306155012-7f2fa6fef1f4/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= google.golang.org/genproto v0.0.0-20230320184635-7606e756e683/go.mod h1:NWraEVixdDnqcqQ30jipen1STv2r/n24Wb7twVTGR4s= google.golang.org/genproto v0.0.0-20230711160842-782d3b101e98/go.mod h1:S7mY02OqCJTD0E1OiQy1F72PWFB4bZJ87cAtLPYgDR0= google.golang.org/genproto v0.0.0-20230803162519-f966b187b2e5/go.mod h1:oH/ZOT02u4kWEp7oYBGYFFkCdKS/uYR9Z7+0/xuuFp8= +google.golang.org/genproto v0.0.0-20230822172742-b8732ec3820d/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:CgAqfJo+Xmu0GwA0411Ht3OU3OntXwsGmrmjI8ioGXI= +google.golang.org/genproto v0.0.0-20231030173426-d783a09b4405/go.mod h1:3WDQMjmJk36UQhjQ89emUzb1mdaHcPeeAh4SCBKznB4= google.golang.org/genproto/googleapis/api v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:vHYtlOoi6TsQ3Uk2yxR7NI5z8uoV+3pZtR4jmHIkRig= google.golang.org/genproto/googleapis/api v0.0.0-20230711160842-782d3b101e98/go.mod h1:rsr7RhLuwsDKL7RmgDDCUc6yaGr1iqceVb5Wv6f6YvQ= google.golang.org/genproto/googleapis/api v0.0.0-20230803162519-f966b187b2e5/go.mod h1:5DZzOUPCLYL3mNkQ0ms0F3EuUNZ7py1Bqeq6sxzI7/Q= +google.golang.org/genproto/googleapis/api v0.0.0-20230822172742-b8732ec3820d/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= google.golang.org/genproto/googleapis/api v0.0.0-20230913181813-007df8e322eb/go.mod h1:KjSP20unUpOx5kyQUFa7k4OJg0qeJ7DEZflGDu2p6Bk= +google.golang.org/genproto/googleapis/api v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:IBQ646DjkDkvUIsVq/cc03FUFQ9wbZu7yE396YcL870= +google.golang.org/genproto/googleapis/api v0.0.0-20231030173426-d783a09b4405/go.mod h1:oT32Z4o8Zv2xPQTg0pbVaPr0MPOH6f14RgXt7zfIpwg= +google.golang.org/genproto/googleapis/api v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:0xJLfVdJqpAPl8tDg1ujOCGzx6LFLttXT5NhllGOXY4= +google.golang.org/genproto/googleapis/api v0.0.0-20231120223509-83a465c0220f/go.mod h1:Uy9bTZJqmfrw2rIBxgGLnamc78euZULUBrLZ9XTITKI= google.golang.org/genproto/googleapis/bytestream v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:qDbnxtViX5J6CvFbxeNUSzKgVlDLJ/6L+caxye9+Flo= +google.golang.org/genproto/googleapis/bytestream v0.0.0-20231120223509-83a465c0220f/go.mod h1:iIgEblxoG4klcXsG0d9cpoxJ4xndv6+1FkDROCHhPRI= google.golang.org/genproto/googleapis/rpc v0.0.0-20230711160842-782d3b101e98/go.mod h1:TUfxEVdsvPg18p6AslUXFoLdpED4oBnGwyqk3dV1XzM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230803162519-f966b187b2e5/go.mod h1:zBEcrKX2ZOcEkHWxBPAIvYUWOKKMIhYcmNiUIu2ji3I= google.golang.org/genproto/googleapis/rpc v0.0.0-20230822172742-b8732ec3820d/go.mod h1:+Bk1OCOj40wS2hwAMA+aCW9ypzm63QTBBHp6lQ3p+9M= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231016165738-49dd2c1f3d0b/go.mod h1:swOH3j0KzcDDgGUWr+SNpyTen5YrXjS3eyPzFYKc6lc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231030173426-d783a09b4405/go.mod h1:67X1fPuzjcrkymZzZV1vvkFeTn2Rvc6lYF9MYFGCcwE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:oQ5rr10WTTMvP4A36n8JpR1OrO1BEiV4f78CneXZxkA= google.golang.org/grpc v1.37.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= +google.golang.org/grpc v1.38.0/go.mod h1:NREThFqKR1f3iQ6oBuvc5LadQuXVGo9rkm5ZGrQdJfM= google.golang.org/grpc v1.53.0/go.mod h1:OnIrk0ipVdj4N5d9IUoFUx72/VlD7+jUsHwZgwSMQpw= google.golang.org/grpc v1.56.1/go.mod h1:I9bI3vqKfayGqPUAwGdOSu7kt6oIJLixfffKrpXqQ9s= google.golang.org/grpc v1.57.0/go.mod h1:Sd+9RMTACXwmub0zcNY2c4arhtrbBYD1AUHI/dt16Mo= google.golang.org/grpc/cmd/protoc-gen-go-grpc v1.1.0/go.mod h1:6Kw0yEErY5E/yWrBtf03jp27GLLJujG4z/JK95pnjjw= +google.golang.org/protobuf v1.28.2-0.20230222093303-bc1253ad3743/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= google.golang.org/protobuf v1.29.1/go.mod h1:HV8QOd/L58Z+nl8r43ehVNZIU/HEI6OcFqwMG9pJV4I= gopkg.in/check.v1 v1.0.0-20200227125254-8fa46927fb4f/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0= +gopkg.in/inconshreveable/log15.v2 v2.0.0-20180818164646-67afb5ed74ec/go.mod h1:aPpfJ7XW+gOuirDoZ8gHhLh3kZ1B08FtV2bbmy7Jv3s= +gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw= gopkg.in/yaml.v2 v2.3.0/go.mod h1:hI93XBmqTisBFMUTm0b8Fm+jr3Dg1NNxqwp+5A1VGuI= +gopkg.in/yaml.v3 v3.0.0/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM= +gotest.tools v2.2.0+incompatible/go.mod h1:DsYFclhRJ6vuDpmuTbkuFWG+y2sxOXAzmJt81HFBacw= gotest.tools/v3 v3.4.0/go.mod h1:CtbdzLSsqVhDgMtKsx03ird5YTGB3ar27v0u/yKBW5g= +k8s.io/apiserver v0.26.2/go.mod h1:GHcozwXgXsPuOJ28EnQ/jXEM9QeG6HT22YxSNmpYNh8= +k8s.io/component-base v0.26.2/go.mod h1:DxbuIe9M3IZPRxPIzhch2m1eT7uFrSBJUBuVCQEBivs= +k8s.io/cri-api v0.26.2/go.mod h1:Oo8O7MKFPNDxfDf2LmrF/3Hf30q1C6iliGuv3la3tIA= +sigs.k8s.io/json v0.0.0-20221116044647-bc3834ca7abd/go.mod h1:B8JuhiUyNFVKdsE8h686QcCxMaH6HrOAZj4vswFpcB0= +sigs.k8s.io/structured-merge-diff/v4 v4.2.3/go.mod h1:qjx8mGObPmV2aSZepjQjbmb2ihdVs8cGKBraizNC69E= +sigs.k8s.io/yaml v1.3.0/go.mod h1:GeOyir5tyXNByN85N/dRIT9es5UQNerPYEKK56eTBm8= diff --git a/serv/config.go b/serv/config.go index 2507c80d..7ac30e19 100644 --- a/serv/config.go +++ b/serv/config.go @@ -296,7 +296,6 @@ func readInConfig(configFile string, fs afero.Fs) (*Config, error) { if fs != nil { vi.SetFs(fs) } - if err := vi.ReadInConfig(); err != nil { return nil, err } @@ -333,7 +332,7 @@ func readInConfig(configFile string, fs afero.Fs) (*Config, error) { c := &Config{vi: vi} c.Serv.ConfigPath = cp - if err := vi.Unmarshal(&c); err != nil { + if err := vi.Unmarshal(c); err != nil { return nil, fmt.Errorf("failed to decode config, %v", err) } @@ -365,7 +364,7 @@ func NewConfig(config, format string) (*Config, error) { c := &Config{vi: vi} - if err := vi.Unmarshal(&c); err != nil { + if err := vi.Unmarshal(c); err != nil { return nil, fmt.Errorf("failed to decode config, %v", err) } diff --git a/serv/go.mod b/serv/go.mod index b263e4e5..1d9b25b4 100644 --- a/serv/go.mod +++ b/serv/go.mod @@ -6,50 +6,50 @@ require ( github.com/dosco/graphjin/auth/v3 v3.0.0-20230512210738-36d89904d6e1 github.com/dosco/graphjin/core/v3 v3.0.0-20230512210738-36d89904d6e1 github.com/dosco/graphjin/plugin/otel/v3 v3.0.0-20230512210738-36d89904d6e1 - github.com/fsnotify/fsnotify v1.6.0 + github.com/fsnotify/fsnotify v1.7.0 github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a github.com/go-pkgz/expirable-cache v1.0.0 - github.com/go-resty/resty/v2 v2.9.1 + github.com/go-resty/resty/v2 v2.10.0 github.com/go-sql-driver/mysql v1.7.1 github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510 - github.com/gorilla/websocket v1.5.0 + github.com/gorilla/websocket v1.5.1 github.com/invopop/jsonschema v0.12.0 - github.com/jackc/pgx/v5 v5.4.3 + github.com/jackc/pgx/v5 v5.5.1 github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0 - github.com/klauspost/compress v1.17.0 + github.com/klauspost/compress v1.17.4 github.com/pkg/errors v0.9.1 github.com/rs/cors v1.10.1 - github.com/spf13/afero v1.10.0 - github.com/spf13/viper v1.17.0 + github.com/spf13/afero v1.11.0 + github.com/spf13/viper v1.18.1 github.com/stretchr/testify v1.8.4 go.mozilla.org/sops/v3 v3.7.3 - go.opentelemetry.io/otel v1.19.0 - go.opentelemetry.io/otel/sdk v1.19.0 - go.opentelemetry.io/otel/trace v1.19.0 + go.opentelemetry.io/otel v1.21.0 + go.opentelemetry.io/otel/sdk v1.21.0 + go.opentelemetry.io/otel/trace v1.21.0 go.uber.org/zap v1.26.0 - golang.org/x/time v0.3.0 + golang.org/x/time v0.5.0 ) require ( github.com/bahlo/generic-list-go v0.2.0 // indirect github.com/buger/jsonparser v1.1.1 // indirect - github.com/cloudflare/circl v1.3.3 // indirect - github.com/felixge/httpsnoop v1.0.3 // indirect - github.com/go-jose/go-jose/v3 v3.0.0 // indirect + github.com/cloudflare/circl v1.3.6 // indirect + github.com/felixge/httpsnoop v1.0.4 // indirect + github.com/go-jose/go-jose/v3 v3.0.1 // indirect github.com/google/s2a-go v0.1.7 // indirect github.com/mailru/easyjson v0.7.7 // indirect - github.com/sagikazarmark/locafero v0.3.0 // indirect + github.com/sagikazarmark/locafero v0.4.0 // indirect github.com/sagikazarmark/slog-shim v0.1.0 // indirect github.com/sourcegraph/conc v0.3.0 // indirect github.com/wk8/go-ordered-map/v2 v2.1.8 // indirect - go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 // indirect - go.opentelemetry.io/otel/metric v1.19.0 // indirect - golang.org/x/exp v0.0.0-20230905200255-921286631fa9 // indirect - google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 // indirect + go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 // indirect + go.opentelemetry.io/otel/metric v1.21.0 // indirect + golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb // indirect + google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 // indirect ) require ( - cloud.google.com/go/compute v1.23.0 // indirect + cloud.google.com/go/compute v1.23.3 // indirect cloud.google.com/go/compute/metadata v0.2.3 // indirect filippo.io/age v1.1.1 // indirect github.com/Azure/azure-sdk-for-go v68.0.0+incompatible // indirect @@ -63,20 +63,20 @@ require ( github.com/Azure/go-autorest/autorest/validation v0.3.1 // indirect github.com/Azure/go-autorest/logger v0.2.1 // indirect github.com/Azure/go-autorest/tracing v0.6.0 // indirect - github.com/ProtonMail/go-crypto v0.0.0-20230528122434-6f98819771a1 // indirect + github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c // indirect github.com/adjust/gorails v0.0.0-20171013043634-2786ed0c03d3 // indirect github.com/armon/go-metrics v0.4.1 // indirect github.com/armon/go-radix v1.0.0 // indirect - github.com/aws/aws-sdk-go v1.44.275 // indirect + github.com/aws/aws-sdk-go v1.48.16 // indirect github.com/blang/semver v3.5.1+incompatible // indirect - github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 // indirect + github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874 // indirect github.com/cenkalti/backoff/v3 v3.2.2 // indirect github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc // indirect github.com/decred/dcrd/dcrec/secp256k1/v4 v4.2.0 // indirect github.com/dimchansky/utfbom v1.1.1 // indirect - github.com/fatih/color v1.15.0 // indirect - github.com/go-chi/chi/v5 v5.0.8 - github.com/go-logr/logr v1.2.4 // indirect + github.com/fatih/color v1.16.0 // indirect + github.com/go-chi/chi/v5 v5.0.10 + github.com/go-logr/logr v1.3.0 // indirect github.com/go-logr/stdr v1.2.2 // indirect github.com/goccy/go-json v0.10.2 // indirect github.com/golang-jwt/jwt v3.2.2+incompatible // indirect @@ -85,44 +85,44 @@ require ( github.com/golang/protobuf v1.5.3 // indirect github.com/golang/snappy v0.0.4 // indirect github.com/gomodule/redigo v1.8.9 // indirect - github.com/google/uuid v1.3.1 // indirect - github.com/googleapis/enterprise-certificate-proxy v0.3.1 // indirect + github.com/google/uuid v1.4.0 // indirect + github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect github.com/googleapis/gax-go/v2 v2.12.0 // indirect github.com/goware/prefixer v0.0.0-20160118172347-395022866408 // indirect github.com/hashicorp/errwrap v1.1.0 // indirect github.com/hashicorp/go-cleanhttp v0.5.2 // indirect - github.com/hashicorp/go-hclog v1.5.0 // indirect + github.com/hashicorp/go-hclog v1.6.1 // indirect github.com/hashicorp/go-immutable-radix v1.3.1 // indirect github.com/hashicorp/go-multierror v1.1.1 // indirect - github.com/hashicorp/go-plugin v1.4.10 // indirect - github.com/hashicorp/go-retryablehttp v0.7.2 // indirect + github.com/hashicorp/go-plugin v1.6.0 // indirect + github.com/hashicorp/go-retryablehttp v0.7.5 // indirect github.com/hashicorp/go-rootcerts v1.0.2 // indirect github.com/hashicorp/go-secure-stdlib/mlock v0.1.3 // indirect - github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7 // indirect + github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 // indirect github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 // indirect - github.com/hashicorp/go-sockaddr v1.0.2 // indirect + github.com/hashicorp/go-sockaddr v1.0.6 // indirect github.com/hashicorp/go-uuid v1.0.3 // indirect github.com/hashicorp/go-version v1.6.0 // indirect - github.com/hashicorp/golang-lru v0.5.4 // indirect + github.com/hashicorp/golang-lru v1.0.2 // indirect github.com/hashicorp/hcl v1.0.1-vault-5 // indirect - github.com/hashicorp/vault/api v1.9.2 // indirect - github.com/hashicorp/vault/sdk v0.9.1 // indirect + github.com/hashicorp/vault/api v1.10.0 // indirect + github.com/hashicorp/vault/sdk v0.10.2 // indirect github.com/hashicorp/yamux v0.1.1 // indirect github.com/howeyc/gopass v0.0.0-20210920133722-c8aef6fb66ef // indirect - github.com/iancoleman/orderedmap v0.2.0 // indirect + github.com/iancoleman/orderedmap v0.3.0 // indirect github.com/jackc/pgpassfile v1.0.0 // indirect - github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a // indirect + github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 // indirect github.com/jmespath/go-jmespath v0.4.0 // indirect github.com/lestrrat-go/backoff/v2 v2.0.8 // indirect - github.com/lestrrat-go/blackmagic v1.0.1 // indirect + github.com/lestrrat-go/blackmagic v1.0.2 // indirect github.com/lestrrat-go/httpcc v1.0.1 // indirect github.com/lestrrat-go/iter v1.0.2 // indirect - github.com/lestrrat-go/jwx v1.2.25 // indirect + github.com/lestrrat-go/jwx v1.2.27 // indirect github.com/lestrrat-go/option v1.0.1 // indirect github.com/lib/pq v1.10.9 // indirect github.com/magiconair/properties v1.8.7 // indirect github.com/mattn/go-colorable v0.1.13 // indirect - github.com/mattn/go-isatty v0.0.19 // indirect + github.com/mattn/go-isatty v0.0.20 // indirect github.com/mitchellh/copystructure v1.2.0 // indirect github.com/mitchellh/go-homedir v1.1.0 // indirect github.com/mitchellh/go-testing-interface v1.14.1 // indirect @@ -134,8 +134,8 @@ require ( github.com/pierrec/lz4 v2.6.1+incompatible // indirect github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 // indirect github.com/ryanuber/go-glob v1.0.0 // indirect - github.com/sirupsen/logrus v1.9.2 // indirect - github.com/spf13/cast v1.5.1 // indirect + github.com/sirupsen/logrus v1.9.3 // indirect + github.com/spf13/cast v1.6.0 // indirect github.com/spf13/jwalterweatherman v1.1.0 // indirect github.com/spf13/pflag v1.0.5 // indirect github.com/subosito/gotenv v1.6.0 // indirect @@ -143,17 +143,17 @@ require ( go.opencensus.io v0.24.0 // indirect go.uber.org/atomic v1.11.0 // indirect go.uber.org/multierr v1.11.0 // indirect - golang.org/x/crypto v0.13.0 // indirect - golang.org/x/net v0.15.0 // indirect - golang.org/x/oauth2 v0.12.0 // indirect - golang.org/x/sync v0.3.0 // indirect - golang.org/x/sys v0.12.0 // indirect - golang.org/x/term v0.12.0 // indirect - golang.org/x/text v0.13.0 // indirect - google.golang.org/api v0.143.0 // indirect - google.golang.org/appengine v1.6.7 // indirect - google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb // indirect - google.golang.org/grpc v1.58.2 // indirect + golang.org/x/crypto v0.16.0 // indirect + golang.org/x/net v0.19.0 // indirect + golang.org/x/oauth2 v0.15.0 // indirect + golang.org/x/sync v0.5.0 // indirect + golang.org/x/sys v0.15.0 // indirect + golang.org/x/term v0.15.0 // indirect + golang.org/x/text v0.14.0 // indirect + google.golang.org/api v0.153.0 // indirect + google.golang.org/appengine v1.6.8 // indirect + google.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4 // indirect + google.golang.org/grpc v1.59.0 // indirect google.golang.org/protobuf v1.31.0 // indirect gopkg.in/ini.v1 v1.67.0 // indirect gopkg.in/square/go-jose.v2 v2.6.0 // indirect diff --git a/serv/go.sum b/serv/go.sum index 19efb899..00bc957c 100644 --- a/serv/go.sum +++ b/serv/go.sum @@ -20,6 +20,7 @@ cloud.google.com/go v0.75.0/go.mod h1:VGuuCn7PG0dwsd5XPVm2Mm3wlh3EL55/79EKB6hlPT cloud.google.com/go v0.110.0 h1:Zc8gqp3+a9/Eyph2KDmcGaPtbKRIoqq4YTlL4NMD0Ys= cloud.google.com/go v0.110.2 h1:sdFPBr6xG9/wkBbfhmUz/JmZC7X6LavQgcrVINrKiVA= cloud.google.com/go v0.110.7 h1:rJyC7nWRg2jWGZ4wSJ5nY65GTdYJkg0cd/uXb+ACI6o= +cloud.google.com/go v0.110.10 h1:LXy9GEO+timppncPIAZoOj3l58LIU9k+kn48AN7IO3Y= cloud.google.com/go/bigquery v1.0.1/go.mod h1:i/xbL2UlR5RvWAURpBYZTtm/cXjCha9lbfbpx4poX+o= cloud.google.com/go/bigquery v1.3.0/go.mod h1:PjpwJnslEMmckchkHFfq+HTD2DmtT67aNFKH1/VBDHE= cloud.google.com/go/bigquery v1.4.0/go.mod h1:S8dzgnTigyfTmLBfrtrhyYhwRxG72rYxvftPBK2Dvzc= @@ -32,12 +33,15 @@ cloud.google.com/go/compute v1.20.0 h1:cUOcywWuowO9It2i1KX1lIb0HH7gLv6nENKuZGnlc cloud.google.com/go/compute v1.20.0/go.mod h1:kn5BhC++qUWR/AM3Dn21myV7QbgqejW04cAOrtppaQI= cloud.google.com/go/compute v1.23.0 h1:tP41Zoavr8ptEqaW6j+LQOnyBBhO7OkOMAGrgLopTwY= cloud.google.com/go/compute v1.23.0/go.mod h1:4tCnrn48xsqlwSAiLf1HXMQk8CONslYbdiEZc9FEIbM= +cloud.google.com/go/compute v1.23.3 h1:6sVlXXBmbd7jNX0Ipq0trII3e4n1/MsADLK6a+aiVlk= +cloud.google.com/go/compute v1.23.3/go.mod h1:VCgBUoMnIVIR0CscqQiPJLAG25E3ZRZMzcFZeQ+h8CI= cloud.google.com/go/compute/metadata v0.2.3 h1:mg4jlk7mCAj6xXp9UJ4fjI9VUI5rubuGBW5aJ7UnBMY= cloud.google.com/go/compute/metadata v0.2.3/go.mod h1:VAV5nSsACxMJvgaAuX6Pk2AawlZn8kiOGuCv6gTkwuA= cloud.google.com/go/datastore v1.0.0/go.mod h1:LXYbyblFSglQ5pkeyhO+Qmw7ukd3C+pD7TKLgZqpHYE= cloud.google.com/go/datastore v1.1.0/go.mod h1:umbIZjpQpHh4hmRpGhH4tLFup+FVzqBi1b3c64qFpCk= cloud.google.com/go/longrunning v0.4.1 h1:v+yFJOfKC3yZdY6ZUI933pIYdhyhV8S3NpWrXWmg7jM= cloud.google.com/go/longrunning v0.5.1 h1:Fr7TXftcqTudoyRJa113hyaqlGdiBQkp0Gq7tErFDWI= +cloud.google.com/go/longrunning v0.5.4 h1:w8xEcbZodnA2BbW6sVirkkoC+1gP8wS57EUUgGS0GVg= cloud.google.com/go/pubsub v1.0.1/go.mod h1:R0Gpsv3s54REJCy4fxDixWD93lHJMoZTyQ2kNxGRt3I= cloud.google.com/go/pubsub v1.1.0/go.mod h1:EwwdRX2sKPjnvnqCa270oGRyludottCI76h+R3AArQw= cloud.google.com/go/pubsub v1.2.0/go.mod h1:jhfEVHT8odbXTkndysNHCcx0awwzvfOlguIAii9o8iA= @@ -101,6 +105,8 @@ github.com/ProtonMail/go-crypto v0.0.0-20220407094043-a94812496cf5 h1:cSHEbLj0GZ github.com/ProtonMail/go-crypto v0.0.0-20220407094043-a94812496cf5/go.mod h1:z4/9nQmJSSwwds7ejkxaJwO37dru3geImFUdJlaLzQo= github.com/ProtonMail/go-crypto v0.0.0-20230528122434-6f98819771a1 h1:JMDGhoQvXNTqH6Y3MC0IUw6tcZvaUdujNqzK2HYWZc8= github.com/ProtonMail/go-crypto v0.0.0-20230528122434-6f98819771a1/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= +github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c h1:kMFnB0vCcX7IL/m9Y5LO+KQYv+t1CQOiFe6+SV2J7bE= +github.com/ProtonMail/go-crypto v0.0.0-20230923063757-afb1ddc0824c/go.mod h1:EjAoLdwvbIOoOQr3ihjnSoLZRtE8azugULFRteWMNc0= github.com/adjust/gorails v0.0.0-20171013043634-2786ed0c03d3 h1:+qz9Ga6l6lKw6fgvk5RMV5HQznSLvI8Zxajwdj4FhFg= github.com/adjust/gorails v0.0.0-20171013043634-2786ed0c03d3/go.mod h1:FlkD11RtgMTYjVuBnb7cxoHmQGqvPpCsr2atC88nl/M= github.com/alecthomas/template v0.0.0-20160405071501-a0175ee3bccc/go.mod h1:LOuyumcjzFXgccqObfd/Ljyb9UuFJ6TxHnclSeseNhc= @@ -120,6 +126,8 @@ github.com/aws/aws-sdk-go v1.44.130 h1:a/qwOxmYJF47xTZvTjECSJXnfRbjegb3YxvCXfETt github.com/aws/aws-sdk-go v1.44.130/go.mod h1:y4AeaBuwd2Lk+GepC1E9v0qOiTws0MIWAX4oIKwKHZo= github.com/aws/aws-sdk-go v1.44.275 h1:VqRULgqrigvQLll4e4hXuc568EQAtZQ6jmBzLlQHzSI= github.com/aws/aws-sdk-go v1.44.275/go.mod h1:aVsgQcEevwlmQ7qHE9I3h+dtQgpqhFB+i8Phjh7fkwI= +github.com/aws/aws-sdk-go v1.48.16 h1:mcj2/9J/MJ55Dov+ocMevhR8Jv6jW/fAxbrn4a1JFc8= +github.com/aws/aws-sdk-go v1.48.16/go.mod h1:LF8svs817+Nz+DmiMQKTO3ubZ/6IaTpq3TjupRn3Eqk= github.com/bahlo/generic-list-go v0.2.0 h1:5sz/EEAK+ls5wF+NeqDpk5+iNdMDXrh3z3nPnH1Wvgk= github.com/bahlo/generic-list-go v0.2.0/go.mod h1:2KvAjgMlE5NNynlg/5iLrrCCZ2+5xWbdbCW3pNTGyYg= github.com/benbjohnson/clock v1.1.0 h1:Q92kusRqC1XV2MjkWETPvjJVqKetz1OzxZB7mHJLju8= @@ -131,6 +139,8 @@ github.com/blang/semver v3.5.1+incompatible h1:cQNTCjp13qL8KC3Nbxr/y2Bqb63oX6wdn github.com/blang/semver v3.5.1+incompatible/go.mod h1:kRBLl5iJ+tD4TcOOxsy/0fnwebNt5EWlYSAyrTnjyyk= github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746 h1:wAIE/kN63Oig1DdOzN7O+k4AbFh2cCJoKMFXrwRJtzk= github.com/bradfitz/gomemcache v0.0.0-20230124162541-5f7a7d875746/go.mod h1:H0wQNHz2YrLsuXOZozoeDmnHXkNCRmMW0gwFWDfEZDA= +github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874 h1:N7oVaKyGp8bttX0bfZGmcGkjz7DLQXhAn3DNd3T0ous= +github.com/bradfitz/gomemcache v0.0.0-20230905024940-24af94b03874/go.mod h1:r5xuitiExdLAJ09PR7vBVENGvp4ZuTBeWTGtxuX3K+c= github.com/buger/jsonparser v1.1.1 h1:2PnMjfWD7wBILjqQbt530v576A/cAbQvEW9gGIpYMUs= github.com/buger/jsonparser v1.1.1/go.mod h1:6RYKKt7H4d4+iWqouImQ9R2FZql3VbhNgx27UK13J/0= github.com/bwesterb/go-ristretto v1.2.3/go.mod h1:fUIoIZaG73pV5biE2Blr2xEzDoMj7NFEuV9ekS419A0= @@ -148,6 +158,8 @@ github.com/circonus-labs/circonusllhist v0.1.3/go.mod h1:kMXHVDlOchFAehlya5ePtbp github.com/client9/misspell v0.3.4/go.mod h1:qj6jICC3Q7zFZvVWo7KLAzC3yx5G7kyvSDkc90ppPyw= github.com/cloudflare/circl v1.3.3 h1:fE/Qz0QdIGqeWfnwq0RE0R7MI51s0M2E4Ga9kq5AEMs= github.com/cloudflare/circl v1.3.3/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= +github.com/cloudflare/circl v1.3.6 h1:/xbKIqSHbZXHwkhbrhrt2YOHIwYJlXH94E3tI/gDlUg= +github.com/cloudflare/circl v1.3.6/go.mod h1:5XYMA4rFBvNIrhs50XuiBJ15vF2pZn4nnUKZrLbUZFA= github.com/cncf/udpa/go v0.0.0-20191209042840-269d4d468f6f/go.mod h1:M8M6+tZqaGXZJjfX53e64911xZQV5JYwmTeXPW+k8Sc= github.com/cncf/udpa/go v0.0.0-20200629203442-efcf912fb354/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= github.com/cncf/udpa/go v0.0.0-20201120205902-5459f2c99403/go.mod h1:WmhPx2Nbnhtbo57+VJT5O0JRkEi1Wbu0z5j0R8u5Hbk= @@ -163,6 +175,7 @@ github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSs github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc h1:U9qPSI2PIWSS1VwoXQT9A3Wy9MM3WgvqSxFWenqJduM= github.com/davecgh/go-spew v1.1.2-0.20180830191138-d8f796af33cc/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38= github.com/decred/dcrd/crypto/blake256 v1.0.0/go.mod h1:sQl2p6Y26YV+ZOcSTP6thNdn47hh8kt6rqSlvmrXFAc= +github.com/decred/dcrd/crypto/blake256 v1.0.1/go.mod h1:2OfgNZ5wDpcsFmHmCK5gZTPcCXqlm2ArzUIkw9czNJo= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.0.0-20210816181553-5444fa50b93d/go.mod h1:tmAIfUFEirG/Y8jhZ9M+h36obRZAk/1fcSpXwAVlfqE= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0 h1:HbphB4TFFXpv7MNrT52FGrrgVXF1owhMVTHFZIlnvd4= github.com/decred/dcrd/dcrec/secp256k1/v4 v4.1.0/go.mod h1:DZGJHZMqrU4JJqFAWUS2UO1+lbSKsdiOoYi9Zzey7Fc= @@ -197,19 +210,28 @@ github.com/fatih/color v1.13.0 h1:8LOYc1KYPPmyKMuN8QV2DNRWNbLo6LZ0iLs8+mlH53w= github.com/fatih/color v1.13.0/go.mod h1:kLAiJbzzSOZDVNGyDpeOxJ47H46qBXwg5ILebYFFOfk= github.com/fatih/color v1.15.0 h1:kOqh6YHBtK8aywxGerMG2Eq3H6Qgoqeo13Bk2Mv/nBs= github.com/fatih/color v1.15.0/go.mod h1:0h5ZqXfHYED7Bhv2ZJamyIOUej9KtShiJESRwBDUSsw= +github.com/fatih/color v1.16.0 h1:zmkK9Ngbjj+K0yRhTVONQh1p/HknKYSlNT+vZCzyokM= +github.com/fatih/color v1.16.0/go.mod h1:fL2Sau1YI5c0pdGEVCbKQbLXB6edEj1ZgiY4NijnWvE= github.com/fatih/structs v1.1.0 h1:Q7juDM0QtcnhCpeyLGQKyg4TOIghuNXrkL32pHAUMxo= github.com/fatih/structs v1.1.0/go.mod h1:9NiDSp5zOcgEDl+j00MP/WkGVPOlPRLejGD8Ga6PJ7M= github.com/felixge/httpsnoop v1.0.3 h1:s/nj+GCswXYzN5v2DpNMuMQYe+0DDwt5WVCU6CWBdXk= github.com/felixge/httpsnoop v1.0.3/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= +github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg= +github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U= github.com/frankban/quicktest v1.10.0/go.mod h1:ui7WezCLWMWxVWr1GETZY3smRy0G4KWq9vcPtJmFl7Y= github.com/frankban/quicktest v1.13.0/go.mod h1:qLE0fzW0VuyUAJgPU19zByoIr0HtCHN/r/VLSOOIySU= github.com/frankban/quicktest v1.14.4 h1:g2rn0vABPOOXmZUj+vbmUp0lPoXEMuhTpIluN0XL9UY= +github.com/frankban/quicktest v1.14.6 h1:7Xjx+VpznH+oBnejlPUj8oUpdxnVs4f8XU8WnHkI4W8= github.com/fsnotify/fsnotify v1.6.0 h1:n+5WquG0fcWoWp6xPWfHdbskMCQaFnG6PfBrh1Ky4HY= github.com/fsnotify/fsnotify v1.6.0/go.mod h1:sl3t1tCWJFWoRz9R8WJCbQihKKwmorjAbSClcnxKAGw= +github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA= +github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM= github.com/ghodss/yaml v1.0.0/go.mod h1:4dBDuWmgqj2HViK6kFavaiC9ZROes6MMH2rRYeMEF04= github.com/go-asn1-ber/asn1-ber v1.3.1/go.mod h1:hEBeB/ic+5LoWskz+yKT7vGhhPYkProFKoKdwZRWMe0= github.com/go-chi/chi/v5 v5.0.8 h1:lD+NLqFcAi1ovnVZpsnObHGW4xb4J8lNmoYVfECH1Y0= github.com/go-chi/chi/v5 v5.0.8/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= +github.com/go-chi/chi/v5 v5.0.10 h1:rLz5avzKpjqxrYwXNfmjkrYYXOyLJd37pz53UFHC6vk= +github.com/go-chi/chi/v5 v5.0.10/go.mod h1:DslCQbL2OYiznFReuXYUmQ2hGd1aDpCnlMNITLSKoi8= github.com/go-gl/glfw v0.0.0-20190409004039-e6da0acd62b1/go.mod h1:vR7hzQXu2zJy9AVAgeJqvqgH9Q5CA+iKCZ2gyEVpxRU= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20191125211704-12ad95a8df72/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= github.com/go-gl/glfw/v3.3/glfw v0.0.0-20200222043503-6f7a984d4dc4/go.mod h1:tQ2UAYgL5IevRw8kRxooKSPJfGvJ9fJQFa0TUsXzTg8= @@ -217,6 +239,8 @@ github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a h1:v6zMvHuY9 github.com/go-http-utils/headers v0.0.0-20181008091004-fed159eddc2a/go.mod h1:I79BieaU4fxrw4LMXby6q5OS9XnoR9UIKLOzDFjUmuw= github.com/go-jose/go-jose/v3 v3.0.0 h1:s6rrhirfEP/CGIoc6p+PZAeogN2SxKav6Wp7+dyMWVo= github.com/go-jose/go-jose/v3 v3.0.0/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= +github.com/go-jose/go-jose/v3 v3.0.1 h1:pWmKFVtt+Jl0vBZTIpz/eAKwsm6LkIxDVVbFHKkchhA= +github.com/go-jose/go-jose/v3 v3.0.1/go.mod h1:RNkWWRld676jZEYoV3+XK8L2ZnNSvIsxFMht0mSX+u8= github.com/go-kit/kit v0.8.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-kit/kit v0.9.0/go.mod h1:xBxKIO96dXMWWy0MnWVtmwkA9/13aqxPnvrjFYMA2as= github.com/go-ldap/ldap/v3 v3.1.10/go.mod h1:5Zun81jBTabRaI8lzN7E1JjyEl1g6zI6u9pd8luAK4Q= @@ -225,6 +249,8 @@ github.com/go-logfmt/logfmt v0.4.0/go.mod h1:3RMwSq7FuexP4Kalkev3ejPJsZTpXXBr9+V github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= github.com/go-logr/logr v1.2.4 h1:g01GSCwiDw2xSZfjJ2/T9M+S6pFdcNtFYsp+Y43HYDQ= github.com/go-logr/logr v1.2.4/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A= +github.com/go-logr/logr v1.3.0 h1:2y3SDp0ZXuc6/cjLSZ+Q3ir+QB9T/iG5yYRXqsagWSY= +github.com/go-logr/logr v1.3.0/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY= github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag= github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE= github.com/go-pkgz/expirable-cache v1.0.0 h1:ns5+1hjY8hntGv8bPaQd9Gr7Jyo+Uw5SLyII40aQdtA= @@ -233,6 +259,8 @@ github.com/go-resty/resty/v2 v2.7.0 h1:me+K9p3uhSmXtrBZ4k9jcEAfJmuC8IivWHwaLZwPr github.com/go-resty/resty/v2 v2.7.0/go.mod h1:9PWDzw47qPphMRFfhsyk0NnSgvluHcljSMVIq3w7q0I= github.com/go-resty/resty/v2 v2.9.1 h1:PIgGx4VrHvag0juCJ4dDv3MiFRlDmP0vicBucwf+gLM= github.com/go-resty/resty/v2 v2.9.1/go.mod h1:4/GYJVjh9nhkhGR6AUNW3XhpDYNUr+Uvy9gV/VGZIy4= +github.com/go-resty/resty/v2 v2.10.0 h1:Qla4W/+TMmv0fOeeRqzEpXPLfTUnR5HZ1+lGs+CkiCo= +github.com/go-resty/resty/v2 v2.10.0/go.mod h1:iiP/OpA0CkcL3IGt1O0+/SIItFUbkkyw5BGXiVdTu+A= github.com/go-sql-driver/mysql v1.7.1 h1:lUIinVbN1DY0xBg0eMOzmmtGoHwWBbvnWubQUrtU8EI= github.com/go-sql-driver/mysql v1.7.1/go.mod h1:OXbVy3sEdcQ2Doequ6Z5BW6fXNQTmx+9S1MCJN5yJMI= github.com/go-stack/stack v1.8.0/go.mod h1:v0f6uXyyMGvRgIKkXu+yp6POWl0qKG85gN/melR3HDY= @@ -329,10 +357,14 @@ github.com/google/uuid v1.3.0 h1:t6JiXgmwXMjEs8VusXIJk2BXHsn+wx8BZdTaoZ5fu7I= github.com/google/uuid v1.3.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/google/uuid v1.3.1 h1:KjJaJ9iWZ3jOFZIf1Lqf4laDRCasjl0BCmnEGxkdLb4= github.com/google/uuid v1.3.1/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= +github.com/google/uuid v1.4.0 h1:MtMxsa51/r9yyhkyLsVeVt0B+BGQZzpQiTQ4eHZ8bc4= +github.com/google/uuid v1.4.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo= github.com/googleapis/enterprise-certificate-proxy v0.2.3 h1:yk9/cqRKtT9wXZSsRH9aurXEpJX+U6FLtpYTdC3R06k= github.com/googleapis/enterprise-certificate-proxy v0.2.3/go.mod h1:AwSRAtLfXpU5Nm3pW+v7rGDHp09LsPtGY9MduiEsR9k= github.com/googleapis/enterprise-certificate-proxy v0.3.1 h1:SBWmZhjUDRorQxrN0nwzf+AHBxnbFjViHQS4P0yVpmQ= github.com/googleapis/enterprise-certificate-proxy v0.3.1/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= +github.com/googleapis/enterprise-certificate-proxy v0.3.2 h1:Vie5ybvEvT75RniqhfFxPRy3Bf7vr3h0cechB90XaQs= +github.com/googleapis/enterprise-certificate-proxy v0.3.2/go.mod h1:VLSiSSBs/ksPL8kq3OBOQ6WRI2QnaFynd1DCjZ62+V0= github.com/googleapis/gax-go/v2 v2.0.4/go.mod h1:0Wqv26UfaUD9n4G6kQubkQ+KchISgw+vpHVxEJEs9eg= github.com/googleapis/gax-go/v2 v2.0.5/go.mod h1:DWXyrwAJ9X0FpwwEdw+IPEYBICEFu5mhpdKc/us6bOk= github.com/googleapis/gax-go/v2 v2.8.0 h1:UBtEZqx1bjXtOQ5BVTkuYghXrr3N4V123VKJK67vJZc= @@ -344,6 +376,8 @@ github.com/googleapis/gax-go/v2 v2.12.0/go.mod h1:y+aIqrI5eb1YGMVJfuV3185Ts/D7qK github.com/googleapis/google-cloud-go-testing v0.0.0-20200911160855-bcd43fbb19e8/go.mod h1:dvDLG8qkwmyD9a/MJJN3XJcT3xFxOKAvTZGvuZmac9g= github.com/gorilla/websocket v1.5.0 h1:PPwGk2jz7EePpoHN/+ClbZu8SPxiqlu12wZP/3sWmnc= github.com/gorilla/websocket v1.5.0/go.mod h1:YR8l580nyteQvAITg2hZ9XVh4b55+EU/adAjf1fMHhE= +github.com/gorilla/websocket v1.5.1 h1:gmztn0JnHVt9JZquRuzLw3g4wouNVzKL15iLr/zn/QY= +github.com/gorilla/websocket v1.5.1/go.mod h1:x3kM2JMyaluk02fnUJpQuwD2dCS5NDG2ZHL0uE0tcaY= github.com/goware/prefixer v0.0.0-20160118172347-395022866408 h1:Y9iQJfEqnN3/Nce9cOegemcy/9Ai5k3huT6E80F3zaw= github.com/goware/prefixer v0.0.0-20160118172347-395022866408/go.mod h1:PE1ycukgRPJ7bJ9a1fdfQ9j8i/cEcRAoLZzbxYpNB/s= github.com/grpc-ecosystem/grpc-gateway v1.16.0/go.mod h1:BDjrQk3hbvj6Nolgz8mAMFbcEtjT1g+wF4CSlocrBnw= @@ -361,6 +395,8 @@ github.com/hashicorp/go-hclog v1.2.0 h1:La19f8d7WIlm4ogzNHB0JGqs5AUDAZ2UfCY4sJXc github.com/hashicorp/go-hclog v1.2.0/go.mod h1:whpDNt7SSdeAju8AWKIWsul05p54N/39EeqMAyrmvFQ= github.com/hashicorp/go-hclog v1.5.0 h1:bI2ocEMgcVlz55Oj1xZNBsVi900c7II+fWDyV9o+13c= github.com/hashicorp/go-hclog v1.5.0/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= +github.com/hashicorp/go-hclog v1.6.1 h1:pa92nu9bPoAqI7p+uPDCIWGAibUdlCi6TYWJEQQkLf8= +github.com/hashicorp/go-hclog v1.6.1/go.mod h1:W4Qnvbt70Wk/zYJryRzDRU/4r0kIg0PVHBcfoyhpF5M= github.com/hashicorp/go-immutable-radix v1.0.0/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= github.com/hashicorp/go-immutable-radix v1.3.1 h1:DKHmCUm2hRBK510BaiZlwvpD40f8bJFeZnpfm2KLowc= github.com/hashicorp/go-immutable-radix v1.3.1/go.mod h1:0y9vanUI8NX6FsYoO3zeMjhV/C5i9g4Q3DwcSNZ4P60= @@ -372,12 +408,16 @@ github.com/hashicorp/go-plugin v1.4.3 h1:DXmvivbWD5qdiBts9TpBC7BYL1Aia5sxbRgQB+v github.com/hashicorp/go-plugin v1.4.3/go.mod h1:5fGEH17QVwTTcR0zV7yhDPLLmFX9YSZ38b18Udy6vYQ= github.com/hashicorp/go-plugin v1.4.10 h1:xUbmA4jC6Dq163/fWcp8P3JuHilrHHMLNRxzGQJ9hNk= github.com/hashicorp/go-plugin v1.4.10/go.mod h1:6/1TEzT0eQznvI/gV2CM29DLSkAK/e58mUWKVsPaph0= +github.com/hashicorp/go-plugin v1.6.0 h1:wgd4KxHJTVGGqWBq4QPB1i5BZNEx9BR8+OFmHDmTk8A= +github.com/hashicorp/go-plugin v1.6.0/go.mod h1:lBS5MtSSBZk0SHc66KACcjjlU6WzEVP/8pwz68aMkCI= github.com/hashicorp/go-retryablehttp v0.5.3/go.mod h1:9B5zBasrRhHXnJnui7y6sL7es7NDiJgTc6Er0maI1Xs= github.com/hashicorp/go-retryablehttp v0.6.6/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-retryablehttp v0.7.0 h1:eu1EI/mbirUgP5C8hVsTNaGZreBDlYiwC1FZWkvQPQ4= github.com/hashicorp/go-retryablehttp v0.7.0/go.mod h1:vAew36LZh98gCBJNLH42IQ1ER/9wtLZZ8meHqQvEYWY= github.com/hashicorp/go-retryablehttp v0.7.2 h1:AcYqCvkpalPnPF2pn0KamgwamS42TqUDDYFRKq/RAd0= github.com/hashicorp/go-retryablehttp v0.7.2/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= +github.com/hashicorp/go-retryablehttp v0.7.5 h1:bJj+Pj19UZMIweq/iie+1u5YCdGrnxCT9yvm0e+Nd5M= +github.com/hashicorp/go-retryablehttp v0.7.5/go.mod h1:Jy/gPYAdjqffZ/yFGCFV2doI5wjtH1ewM9u8iYVjtX8= github.com/hashicorp/go-rootcerts v1.0.2 h1:jzhAVGtqPKbwpyCPELlgNWhE1znq+qwJtW5Oi2viEzc= github.com/hashicorp/go-rootcerts v1.0.2/go.mod h1:pqUvnprVnM5bf7AOirdbb01K4ccR319Vf4pU3K5EGc8= github.com/hashicorp/go-secure-stdlib/base62 v0.1.1/go.mod h1:EdWO6czbmthiwZ3/PUsDV+UD1D5IRU4ActiaWGwt0Yw= @@ -391,6 +431,8 @@ github.com/hashicorp/go-secure-stdlib/parseutil v0.1.3 h1:geBw3SBrxQq+buvbf4K+Ql github.com/hashicorp/go-secure-stdlib/parseutil v0.1.3/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8= github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7 h1:UpiO20jno/eV1eVZcxqWnUohyKRe1g8FPV/xH1s/2qs= github.com/hashicorp/go-secure-stdlib/parseutil v0.1.7/go.mod h1:QmrqtbKuxxSWTN3ETMPuB+VtEiBJ/A9XhoYGv8E1uD8= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8 h1:iBt4Ew4XEGLfh6/bPk4rSYmuZJGizr6/x/AEizP0CQc= +github.com/hashicorp/go-secure-stdlib/parseutil v0.1.8/go.mod h1:aiJI+PIApBRQG7FZTEBx5GiiX+HbOHilUdNxUZi4eV0= github.com/hashicorp/go-secure-stdlib/password v0.1.1/go.mod h1:9hH302QllNwu1o2TGYtSk8I8kTAN0ca1EHpwhm5Mmzo= github.com/hashicorp/go-secure-stdlib/strutil v0.1.1/go.mod h1:gKOamz3EwoIoJq7mlMIRBpVTAUn8qPCrEclOKKWhD3U= github.com/hashicorp/go-secure-stdlib/strutil v0.1.2 h1:kes8mmyCpxJsI7FTwtzRqEy9CdjCtrXrXGuOpxEA7Ts= @@ -398,6 +440,10 @@ github.com/hashicorp/go-secure-stdlib/strutil v0.1.2/go.mod h1:Gou2R9+il93BqX25L github.com/hashicorp/go-secure-stdlib/tlsutil v0.1.1/go.mod h1:l8slYwnJA26yBz+ErHpp2IRCLr0vuOMGBORIz4rRiAs= github.com/hashicorp/go-sockaddr v1.0.2 h1:ztczhD1jLxIRjVejw8gFomI1BQZOe2WoVOu0SyteCQc= github.com/hashicorp/go-sockaddr v1.0.2/go.mod h1:rB4wwRAUzs07qva3c5SdrY/NEtAUjGlgmH/UkBUC97A= +github.com/hashicorp/go-sockaddr v1.0.5 h1:dvk7TIXCZpmfOlM+9mlcrWmWjw/wlKT+VDq2wMvfPJU= +github.com/hashicorp/go-sockaddr v1.0.5/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI= +github.com/hashicorp/go-sockaddr v1.0.6 h1:RSG8rKU28VTUTvEKghe5gIhIQpv8evvNpnDEyqO4u9I= +github.com/hashicorp/go-sockaddr v1.0.6/go.mod h1:uoUUmtwU7n9Dv3O4SNLeFvg0SxQ3lyjsj6+CCykpaxI= github.com/hashicorp/go-uuid v1.0.0/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= github.com/hashicorp/go-uuid v1.0.2 h1:cfejS+Tpcp13yd5nYHWDI6qVCny6wyX2Mt5SGur2IGE= github.com/hashicorp/go-uuid v1.0.2/go.mod h1:6SBZvOh/SIDV7/2o3Jml5SYk/TvGqwFJ/bN7x4byOro= @@ -412,6 +458,8 @@ github.com/hashicorp/golang-lru v0.5.0/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ github.com/hashicorp/golang-lru v0.5.1/go.mod h1:/m3WP610KZHVQ1SGc6re/UDhFvYD7pJ4Ao+sR/qLZy8= github.com/hashicorp/golang-lru v0.5.4 h1:YDjusn29QI/Das2iO9M0BHnIbxPeyuCHsjMW+lJfyTc= github.com/hashicorp/golang-lru v0.5.4/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= +github.com/hashicorp/golang-lru v1.0.2 h1:dV3g9Z/unq5DpblPpw+Oqcv4dU/1omnb4Ok8iPY6p1c= +github.com/hashicorp/golang-lru v1.0.2/go.mod h1:iADmTwqILo4mZ8BN3D2Q6+9jd8WM5uGBxy+E8yxSoD4= github.com/hashicorp/hcl v1.0.0 h1:0Anlzjpi4vEasTeNFn2mLJgTSwt0+6sfsiTG8qcWGx4= github.com/hashicorp/hcl v1.0.0/go.mod h1:E5yfLk+7swimpb2L/Alb/PJmXilQ/rhwaUYs4T20WEQ= github.com/hashicorp/hcl v1.0.1-vault-5 h1:kI3hhbbyzr4dldA8UdTb7ZlVVlI2DACdCfz31RPDgJM= @@ -420,10 +468,14 @@ github.com/hashicorp/vault/api v1.5.0 h1:Bp6yc2bn7CWkOrVIzFT/Qurzx528bdavF3nz590 github.com/hashicorp/vault/api v1.5.0/go.mod h1:LkMdrZnWNrFaQyYYazWVn7KshilfDidgVBq6YiTq/bM= github.com/hashicorp/vault/api v1.9.2 h1:YjkZLJ7K3inKgMZ0wzCU9OHqc+UqMQyXsPXnf3Cl2as= github.com/hashicorp/vault/api v1.9.2/go.mod h1:jo5Y/ET+hNyz+JnKDt8XLAdKs+AM0G5W0Vp1IrFI8N8= +github.com/hashicorp/vault/api v1.10.0 h1:/US7sIjWN6Imp4o/Rj1Ce2Nr5bki/AXi9vAW3p2tOJQ= +github.com/hashicorp/vault/api v1.10.0/go.mod h1:jo5Y/ET+hNyz+JnKDt8XLAdKs+AM0G5W0Vp1IrFI8N8= github.com/hashicorp/vault/sdk v0.4.1 h1:3SaHOJY687jY1fnB61PtL0cOkKItphrbLmux7T92HBo= github.com/hashicorp/vault/sdk v0.4.1/go.mod h1:aZ3fNuL5VNydQk8GcLJ2TV8YCRVvyaakYkhZRoVuhj0= github.com/hashicorp/vault/sdk v0.9.1 h1:fMkjCfqC5ohA2b7p1kv5poe488pFhBl9oaz2FkDkDAQ= github.com/hashicorp/vault/sdk v0.9.1/go.mod h1:YmQ899tcCpwEgH6fOfU7AY0OURy8EqYj8sEdRac25TM= +github.com/hashicorp/vault/sdk v0.10.2 h1:0UEOLhFyoEMpb/r8H5qyOu58A/j35pncqiS/d+ORKYk= +github.com/hashicorp/vault/sdk v0.10.2/go.mod h1:VxJIQgftEX7FCDM3i6TTLjrZszAeLhqPicNbCVNRg4I= github.com/hashicorp/yamux v0.0.0-20180604194846-3520598351bb/go.mod h1:+NfK9FKeTrX5uv1uIXGdwYDTeHna2qgaIlx54MXqjAM= github.com/hashicorp/yamux v0.0.0-20211028200310-0bc27b27de87 h1:xixZ2bWeofWV68J+x6AzmKuVM/JWCQwkWm6GW/MUR6I= github.com/hashicorp/yamux v0.0.0-20211028200310-0bc27b27de87/go.mod h1:CtWFDAQgb7dxtzFs4tWbplKIe2jSi3+5vKbgIO0SLnQ= @@ -435,6 +487,8 @@ github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0 h1:i462o439Z github.com/iancoleman/orderedmap v0.0.0-20190318233801-ac98e3ecb4b0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= github.com/iancoleman/orderedmap v0.2.0 h1:sq1N/TFpYH++aViPcaKjys3bDClUEU7s5B+z6jq8pNA= github.com/iancoleman/orderedmap v0.2.0/go.mod h1:N0Wam8K1arqPXNWjMo21EXnBPOPp36vB07FNRdD2geA= +github.com/iancoleman/orderedmap v0.3.0 h1:5cbR2grmZR/DiVt+VJopEhtVs9YGInGIxAoMJn+Ichc= +github.com/iancoleman/orderedmap v0.3.0/go.mod h1:XuLcCUkdL5owUCQeF2Ue9uuw1EptkJDkXXS7VoV7XGE= github.com/ianlancetaylor/demangle v0.0.0-20181102032728-5e5cf60278f6/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/ianlancetaylor/demangle v0.0.0-20200824232613-28f6c0f3b639/go.mod h1:aSSvb/t6k1mPoxDqO4vJh6VOCGPwU4O0C2/Eqndh1Sc= github.com/invopop/jsonschema v0.7.0 h1:2vgQcBz1n256N+FpX3Jq7Y17AjYt46Ig3zIWyy770So= @@ -445,13 +499,18 @@ github.com/jackc/pgpassfile v1.0.0 h1:/6Hmqy13Ss2zCq62VdNG8tM1wchn8zjSGOBJ6icpsI github.com/jackc/pgpassfile v1.0.0/go.mod h1:CEx0iS5ambNFdcRtxPj5JhEz+xB6uRky5eyVu/W2HEg= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a h1:bbPeKD0xmW/Y25WS6cokEszi5g+S0QxI/d45PkRi7Nk= github.com/jackc/pgservicefile v0.0.0-20221227161230-091c0ba34f0a/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= +github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9 h1:L0QtFUgDarD7Fpv9jeVMgy/+Ec0mtnmYuImjTz6dtDA= +github.com/jackc/pgservicefile v0.0.0-20231201235250-de7065d80cb9/go.mod h1:5TJZWKEWniPve33vlWYSoGYefn3gLQRzjfDlhSJ9ZKM= github.com/jackc/pgx/v5 v5.3.1 h1:Fcr8QJ1ZeLi5zsPZqQeUZhNhxfkkKBOgJuYkJHoBOtU= github.com/jackc/pgx/v5 v5.3.1/go.mod h1:t3JDKnCBlYIc0ewLF0Q7B8MXmoIaBOZj/ic7iHozM/8= github.com/jackc/pgx/v5 v5.4.3 h1:cxFyXhxlvAifxnkKKdlxv8XqUf59tDlYjnV5YYfsJJY= github.com/jackc/pgx/v5 v5.4.3/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= +github.com/jackc/pgx/v5 v5.5.1 h1:5I9etrGkLrN+2XPCsi6XLlV5DITbSL/xBZdmAxFcXPI= +github.com/jackc/pgx/v5 v5.5.1/go.mod h1:Ig06C2Vu0t5qXC60W8sqIthScaEnFvojjj9dSljmHRA= github.com/jessevdk/go-flags v1.4.0/go.mod h1:4FA24M0QyGHXBuZZK/XkWh8h0e1EYbRYJSGM75WSRxI= github.com/jhump/protoreflect v1.6.0 h1:h5jfMVslIg6l29nsMs0D8Wj17RDVdNYti0vDN/PZZoE= github.com/jhump/protoreflect v1.6.0/go.mod h1:eaTn3RZAmMBcV0fifFvlm6VHNz3wSkYyXYWUh7ymB74= +github.com/jhump/protoreflect v1.15.1 h1:HUMERORf3I3ZdX05WaQ6MIpd/NJ434hTp5YiKgfCL6c= github.com/jmespath/go-jmespath v0.4.0 h1:BEgLn5cpjn8UN1mAw4NjwDrS35OdebyEtFe+9YPoQUg= github.com/jmespath/go-jmespath v0.4.0/go.mod h1:T8mJZnbsbmF+m6zOOFylbeCJqk5+pHWvzYPziyZiYoo= github.com/jmespath/go-jmespath/internal/testify v1.5.1 h1:shLQSRRSCCPj3f2gpwzGwWFoC7ycTf1rcQZHOlsJ6N8= @@ -469,6 +528,8 @@ github.com/klauspost/compress v1.16.5 h1:IFV2oUNUzZaz+XyusxpLzpzS8Pt5rh0Z16For/d github.com/klauspost/compress v1.16.5/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= github.com/klauspost/compress v1.17.0 h1:Rnbp4K9EjcDuVuHtd0dgA4qNuv9yKDYKK1ulpJwgrqM= github.com/klauspost/compress v1.17.0/go.mod h1:ntbaceVETuRiXiv4DpjP66DpAtAGkEQskQzEyD//IeE= +github.com/klauspost/compress v1.17.4 h1:Ej5ixsIri7BrIjBkRZLTo6ghwrEtHFk7ijlczPW4fZ4= +github.com/klauspost/compress v1.17.4/go.mod h1:/dCuZOvVtNoHsyb+cuJD3itjs3NbnF6KH9zAO4BDxPM= github.com/konsorten/go-windows-terminal-sequences v1.0.1/go.mod h1:T0+1ngSBFLxvqU3pZ+m/2kptfBszLMUkC4ZK/EgS/cQ= github.com/kr/fs v0.1.0/go.mod h1:FFnZGqtBN9Gxj7eW1uZ42v5BccTP0vu6NEaFoC2HwRg= github.com/kr/logfmt v0.0.0-20140226030751-b84e30acd515/go.mod h1:+0opPa2QZZtGFBFZlji/RkVcI2GknAs/DXo4wKdlNEc= @@ -485,6 +546,8 @@ github.com/lestrrat-go/backoff/v2 v2.0.8/go.mod h1:rHP/q/r9aT27n24JQLa7JhSQZCKBB github.com/lestrrat-go/blackmagic v1.0.0/go.mod h1:TNgH//0vYSs8VXDCfkZLgIrVTTXQELZffUV0tz3MtdQ= github.com/lestrrat-go/blackmagic v1.0.1 h1:lS5Zts+5HIC/8og6cGHb0uCcNCa3OUt1ygh3Qz2Fe80= github.com/lestrrat-go/blackmagic v1.0.1/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU= +github.com/lestrrat-go/blackmagic v1.0.2 h1:Cg2gVSc9h7sz9NOByczrbUvLopQmXrfFx//N+AkAr5k= +github.com/lestrrat-go/blackmagic v1.0.2/go.mod h1:UrEqBzIR2U6CnzVyUtfM6oZNMt/7O7Vohk2J0OGSAtU= github.com/lestrrat-go/httpcc v1.0.1 h1:ydWCStUeJLkpYyjLDHihupbn2tYmZ7m22BGkcvZZrIE= github.com/lestrrat-go/httpcc v1.0.1/go.mod h1:qiltp3Mt56+55GPVCbTdM9MlqhvzyuL6W/NMDA8vA5E= github.com/lestrrat-go/iter v1.0.1/go.mod h1:zIdgO1mRKhn8l9vrZJZz9TUMMFbQbLeTsbqPDrJ/OJc= @@ -492,6 +555,8 @@ github.com/lestrrat-go/iter v1.0.2 h1:gMXo1q4c2pHmC3dn8LzRhJfP1ceCbgSiT9lUydIzlt github.com/lestrrat-go/iter v1.0.2/go.mod h1:Momfcq3AnRlRjI5b5O8/G5/BvpzrhoFTZcn06fEOPt4= github.com/lestrrat-go/jwx v1.2.25 h1:tAx93jN2SdPvFn08fHNAhqFJazn5mBBOB8Zli0g0otA= github.com/lestrrat-go/jwx v1.2.25/go.mod h1:zoNuZymNl5lgdcu6P7K6ie2QRll5HVfF4xwxBBK1NxY= +github.com/lestrrat-go/jwx v1.2.27 h1:cvnTnda/YzdyFuWdEAMkI6BsLtItSrASEVCI3C/IUEQ= +github.com/lestrrat-go/jwx v1.2.27/go.mod h1:Stob9LjSqR3lOmNdxF0/TvZo60V3hUGv8Fr7Bwzla3k= github.com/lestrrat-go/option v1.0.0/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= github.com/lestrrat-go/option v1.0.1 h1:oAzP2fvZGQKWkvHa1/SAcFolBEca1oN+mQ7eooNBEYU= github.com/lestrrat-go/option v1.0.1/go.mod h1:5ZHFbivi4xwXxhxY9XHDe2FHo6/Z7WWmtT7T5nBBp3I= @@ -520,6 +585,8 @@ github.com/mattn/go-isatty v0.0.14/go.mod h1:7GGIvUiUoEMVVmxf/4nioHXj79iQHKdU27k github.com/mattn/go-isatty v0.0.16/go.mod h1:kYGgaQfpe5nmfYZH+SKPsOc2e4SrIfOl2e/yFXSvRLM= github.com/mattn/go-isatty v0.0.19 h1:JITubQf0MOLdlGRuRq+jtsDlekdYPia9ZFsB8h/APPA= github.com/mattn/go-isatty v0.0.19/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= +github.com/mattn/go-isatty v0.0.20 h1:xfD0iDuEKnDkl03q4limB+vH+GxLEtL/jb4xVJSWWEY= +github.com/mattn/go-isatty v0.0.20/go.mod h1:W+V8PltTTMOvKvAeJH7IuucS94S2C6jfK/D7dTCTo3Y= github.com/matttproud/golang_protobuf_extensions v1.0.1/go.mod h1:D8He9yQNgCq6Z5Ld7szi9bcBfOoFv/3dc6xSMkL2PC0= github.com/mitchellh/cli v1.0.0/go.mod h1:hNIlj7HEI86fIcpObd7a0FcrxTWetlwJDGcceTlRvqc= github.com/mitchellh/copystructure v1.0.0/go.mod h1:SNtv71yrdKgLRyLFxmLdkAbkKEFWgYaq1OVrnRcwhnw= @@ -598,6 +665,8 @@ github.com/ryanuber/go-glob v1.0.0 h1:iQh3xXAumdQ+4Ufa5b25cRpC5TYKlno6hsv6Cb3pkB github.com/ryanuber/go-glob v1.0.0/go.mod h1:807d1WSdnB0XRJzKNil9Om6lcp/3a0v4qIHxIXzX/Yc= github.com/sagikazarmark/locafero v0.3.0 h1:zT7VEGWC2DTflmccN/5T1etyKvxSxpHsjb9cJvm4SvQ= github.com/sagikazarmark/locafero v0.3.0/go.mod h1:w+v7UsPNFwzF1cHuOajOOzoq4U7v/ig1mpRjqV+Bu1U= +github.com/sagikazarmark/locafero v0.4.0 h1:HApY1R9zGo4DBgr7dqsTH/JJxLTTsOt7u6keLGt6kNQ= +github.com/sagikazarmark/locafero v0.4.0/go.mod h1:Pe1W6UlPYUk/+wc/6KFhbORCfqzgYEpgQ3O5fPuL3H4= github.com/sagikazarmark/slog-shim v0.1.0 h1:diDBnUNK9N/354PgrxMywXnAwEr1QZcOr6gto+ugjYE= github.com/sagikazarmark/slog-shim v0.1.0/go.mod h1:SrcSrq8aKtyuqEI1uvTDTK1arOWRIczQRv+GVI1AkeQ= github.com/sirupsen/logrus v1.2.0/go.mod h1:LxeOpSwHxABJmUn/MG1IvRgCAasNZTLOkJPxbbu5VWo= @@ -606,14 +675,20 @@ github.com/sirupsen/logrus v1.9.0 h1:trlNQbNUG3OdDrDil03MCb1H2o9nJ1x4/5LYw7byDE0 github.com/sirupsen/logrus v1.9.0/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sirupsen/logrus v1.9.2 h1:oxx1eChJGI6Uks2ZC4W1zpLlVgqB8ner4EuQwV4Ik1Y= github.com/sirupsen/logrus v1.9.2/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= +github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ= +github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ= github.com/sourcegraph/conc v0.3.0 h1:OQTbbt6P72L20UqAkXXuLOj79LfEanQ+YQFNpLA9ySo= github.com/sourcegraph/conc v0.3.0/go.mod h1:Sdozi7LEKbFPqYX2/J+iBAM6HpqSLTASQIKqDmF7Mt0= github.com/spf13/afero v1.9.5 h1:stMpOSZFs//0Lv29HduCmli3GUfpFoF3Y1Q/aXj/wVM= github.com/spf13/afero v1.9.5/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= github.com/spf13/afero v1.10.0 h1:EaGW2JJh15aKOejeuJ+wpFSHnbd7GE6Wvp3TsNhb6LY= github.com/spf13/afero v1.10.0/go.mod h1:UBogFpq8E9Hx+xc5CNTTEpTnuHVmXDwZcZcE1eb/UhQ= +github.com/spf13/afero v1.11.0 h1:WJQKhtpdm3v2IzqG8VMqrr6Rf3UYpEF239Jy9wNepM8= +github.com/spf13/afero v1.11.0/go.mod h1:GH9Y3pIexgf1MTIWtNGyogA5MwRIDXGUr+hbWNoBjkY= github.com/spf13/cast v1.5.1 h1:R+kOtfhWQE6TVQzY+4D7wJLBgkdVasCEFxSUBYBYIlA= github.com/spf13/cast v1.5.1/go.mod h1:b9PdjNptOpzXr7Rq1q9gJML/2cdGQAo69NKzQ10KN48= +github.com/spf13/cast v1.6.0 h1:GEiTHELF+vaR5dhz3VqZfFSzZjYbgeKDpBxQVS4GYJ0= +github.com/spf13/cast v1.6.0/go.mod h1:ancEpBxwJDODSW/UG4rDrAqiKolqNNh2DX3mk86cAdo= github.com/spf13/jwalterweatherman v1.1.0 h1:ue6voC5bR5F8YxI5S67j9i582FU4Qvo2bmqnqMYADFk= github.com/spf13/jwalterweatherman v1.1.0/go.mod h1:aNWZUN0dPAAO/Ljvb5BEdw96iTZ0EXowPYD95IqWIGo= github.com/spf13/pflag v1.0.5 h1:iy+VFUOCP1a+8yFto/drg2CJ5u0yRoB7fZw3DKv/JXA= @@ -622,6 +697,8 @@ github.com/spf13/viper v1.16.0 h1:rGGH0XDZhdUOryiDWjmIvUSWpbNqisK8Wk0Vyefw8hc= github.com/spf13/viper v1.16.0/go.mod h1:yg78JgCJcbrQOvV9YLXgkLaZqUidkY9K+Dd1FofRzQg= github.com/spf13/viper v1.17.0 h1:I5txKw7MJasPL/BrfkbA0Jyo/oELqVmux4pR/UxOMfI= github.com/spf13/viper v1.17.0/go.mod h1:BmMMMLQXSbcHK6KAOiFLz0l5JHrU89OdIRHvsk0+yVI= +github.com/spf13/viper v1.18.1 h1:rmuU42rScKWlhhJDyXZRKJQHXFX02chSVW1IvkPGiVM= +github.com/spf13/viper v1.18.1/go.mod h1:EKmWIqdnk5lOcmR72yw6hS+8OPYcwD0jteitLMVB+yk= github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.1.1/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME= github.com/stretchr/objx v0.4.0/go.mod h1:YvHI0jy2hoMjB+UWwv71VJQ9isScKT/TqJzVSSt89Yw= @@ -670,22 +747,32 @@ go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0 h1:pginetY go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.42.0/go.mod h1:XiYsayHc36K3EByOO6nbAXnAWbrUxdjUROCEeeROOH8= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0 h1:x8Z78aZx8cOF0+Kkazoc7lwUNMGy0LrzEMxTm4BbTxg= go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.45.0/go.mod h1:62CPTSry9QZtOaSsE3tOzhx6LzDhHnXJ6xHeMNNiM6Q= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1 h1:aFJWCqJMNjENlcleuuOkGAPH82y0yULBScfXcIEdS24= +go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.46.1/go.mod h1:sEGXWArGqc3tVa+ekntsN65DmVbVeW+7lTKTjZF3/Fo= go.opentelemetry.io/otel v1.16.0 h1:Z7GVAX/UkAXPKsy94IU+i6thsQS4nb7LviLpnaNeW8s= go.opentelemetry.io/otel v1.16.0/go.mod h1:vl0h9NUa1D5s1nv3A5vZOYWn8av4K8Ml6JDeHrT/bx4= go.opentelemetry.io/otel v1.19.0 h1:MuS/TNf4/j4IXsZuJegVzI1cwut7Qc00344rgH7p8bs= go.opentelemetry.io/otel v1.19.0/go.mod h1:i0QyjOq3UPoTzff0PJB2N66fb4S0+rSbSB15/oyH9fY= +go.opentelemetry.io/otel v1.21.0 h1:hzLeKBZEL7Okw2mGzZ0cc4k/A7Fta0uoPgaJCr8fsFc= +go.opentelemetry.io/otel v1.21.0/go.mod h1:QZzNPQPm1zLX4gZK4cMi+71eaorMSGT3A4znnUvNNEo= go.opentelemetry.io/otel/metric v1.16.0 h1:RbrpwVG1Hfv85LgnZ7+txXioPDoh6EdbZHo26Q3hqOo= go.opentelemetry.io/otel/metric v1.16.0/go.mod h1:QE47cpOmkwipPiefDwo2wDzwJrlfxxNYodqc4xnGCo4= go.opentelemetry.io/otel/metric v1.19.0 h1:aTzpGtV0ar9wlV4Sna9sdJyII5jTVJEvKETPiOKwvpE= go.opentelemetry.io/otel/metric v1.19.0/go.mod h1:L5rUsV9kM1IxCj1MmSdS+JQAcVm319EUrDVLrt7jqt8= +go.opentelemetry.io/otel/metric v1.21.0 h1:tlYWfeo+Bocx5kLEloTjbcDwBuELRrIFxwdQ36PlJu4= +go.opentelemetry.io/otel/metric v1.21.0/go.mod h1:o1p3CA8nNHW8j5yuQLdc1eeqEaPfzug24uvsyIEJRWM= go.opentelemetry.io/otel/sdk v1.16.0 h1:Z1Ok1YsijYL0CSJpHt4cS3wDDh7p572grzNrBMiMWgE= go.opentelemetry.io/otel/sdk v1.16.0/go.mod h1:tMsIuKXuuIWPBAOrH+eHtvhTL+SntFtXF9QD68aP6p4= go.opentelemetry.io/otel/sdk v1.19.0 h1:6USY6zH+L8uMH8L3t1enZPR3WFEmSTADlqldyHtJi3o= go.opentelemetry.io/otel/sdk v1.19.0/go.mod h1:NedEbbS4w3C6zElbLdPJKOpJQOrGUJ+GfzpjUvI0v1A= +go.opentelemetry.io/otel/sdk v1.21.0 h1:FTt8qirL1EysG6sTQRZ5TokkU8d0ugCj8htOgThZXQ8= +go.opentelemetry.io/otel/sdk v1.21.0/go.mod h1:Nna6Yv7PWTdgJHVRD9hIYywQBRx7pbox6nwBnZIxl/E= go.opentelemetry.io/otel/trace v1.16.0 h1:8JRpaObFoW0pxuVPapkgH8UhHQj+bJW8jJsCZEu5MQs= go.opentelemetry.io/otel/trace v1.16.0/go.mod h1:Yt9vYq1SdNz3xdjZZK7wcXv1qv2pwLkqr2QVwea0ef0= go.opentelemetry.io/otel/trace v1.19.0 h1:DFVQmlVbfVeOuBRrwdtaehRrWiL1JoVs9CPIQ1Dzxpg= go.opentelemetry.io/otel/trace v1.19.0/go.mod h1:mfaSyvGyEJEI0nyV2I4qhNQnbBOUUmYZpYojqMnX2vo= +go.opentelemetry.io/otel/trace v1.21.0 h1:WD9i5gzvoUPuXIXH24ZNBudiarZDKuekPqi/E8fpfLc= +go.opentelemetry.io/otel/trace v1.21.0/go.mod h1:LGbsEB0f9LGjN+OZaQQ26sohbOmiMR+BaslueVtS/qQ= go.opentelemetry.io/proto/otlp v0.7.0/go.mod h1:PqfVotwruBrMGOCsRd/89rSnXhoiJIqeYNgFYFoEGnI= go.uber.org/atomic v1.9.0/go.mod h1:fEN4uk6kAWBTFdckzkM89CLk9XfWZrxpCo0nPH17wJc= go.uber.org/atomic v1.10.0 h1:9qC72Qh0+3MqyJbAn8YU5xVq1frD8bn3JtD2oXtafVQ= @@ -724,6 +811,10 @@ golang.org/x/crypto v0.9.0 h1:LF6fAI+IutBocDJ2OT0Q1g8plpYljMZ4+lty+dsqw3g= golang.org/x/crypto v0.9.0/go.mod h1:yrmDGqONDYtNj3tH8X9dzUun2m2lzPa9ngI6/RUPGR0= golang.org/x/crypto v0.13.0 h1:mvySKfSWJ+UKUii46M40LOvyWfN0s2U+46/jDd0e6Ck= golang.org/x/crypto v0.13.0/go.mod h1:y6Z2r+Rw4iayiXXAIxJIDAJ1zMW4yaTpebo8fPOliYc= +golang.org/x/crypto v0.14.0 h1:wBqGXzWJW6m1XrIKlAH0Hs1JJ7+9KBwnIO8v66Q9cHc= +golang.org/x/crypto v0.14.0/go.mod h1:MVFd36DqK4CsrnJYDkBA3VC4m2GkXAM0PvzMCn4JQf4= +golang.org/x/crypto v0.16.0 h1:mMMrFzRSCF0GvB7Ne27XVtVAaXLrPmgPC7/v0tkwHaY= +golang.org/x/crypto v0.16.0/go.mod h1:gCAAfMLgwOJRpTjQ2zCCt2OcSfYMTeZVSRtQlPC7Nq4= golang.org/x/exp v0.0.0-20190121172915-509febef88a4/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190306152737-a1d7652674e8/go.mod h1:CJ0aWSM057203Lf6IL+f9T1iT9GByDxfZKAQTCR3kQA= golang.org/x/exp v0.0.0-20190510132918-efd6b22b2522/go.mod h1:ZjyILWgesfNpC6sMxTJOJm9Kp84zZh5NQWvqDGG3Qr8= @@ -736,6 +827,8 @@ golang.org/x/exp v0.0.0-20200207192155-f17229e696bd/go.mod h1:J/WKrq2StrnmMY6+EH golang.org/x/exp v0.0.0-20200224162631-6cc2880d07d6/go.mod h1:3jZMyOhIsHpP37uCMkUooju7aAi5cS1Q23tOzKc+0MU= golang.org/x/exp v0.0.0-20230905200255-921286631fa9 h1:GoHiUyI/Tp2nVkLI2mCxVkOjsbSXD66ic0XW0js0R9g= golang.org/x/exp v0.0.0-20230905200255-921286631fa9/go.mod h1:S2oDrQGGwySpoQPVqRShND87VCbxmc6bL1Yd2oYrm6k= +golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb h1:c0vyKkb6yr3KR7jEfJaOSv4lG7xPkbN6r52aJz1d8a8= +golang.org/x/exp v0.0.0-20231206192017-f3f8817b8deb/go.mod h1:iRJReGqOEeBhDZGkGbynYwcHlctCvnjTYIamk7uXpHI= golang.org/x/image v0.0.0-20190227222117-0694c2d4d067/go.mod h1:kZ7UVZpmo3dzQBMxlp+ypCbDeSB+sBbTgSJuh5dn5js= golang.org/x/image v0.0.0-20190802002840-cff245a6509b/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= golang.org/x/lint v0.0.0-20181026193005-c67002cb31c3/go.mod h1:UVdnD1Gm6xHRNCYTkRU2/jEulfH38KcIWyp/GAMgvoE= @@ -808,6 +901,10 @@ golang.org/x/net v0.10.0 h1:X2//UzNDwYmtCLn7To6G58Wr6f5ahEAQgKNzv9Y951M= golang.org/x/net v0.10.0/go.mod h1:0qNGK6F8kojg2nk9dLZ2mShWaEBan6FAoqfSigmmuDg= golang.org/x/net v0.15.0 h1:ugBLEUaxABaB5AJqW9enI0ACdci2RUd4eP51NTBvuJ8= golang.org/x/net v0.15.0/go.mod h1:idbUs1IY1+zTqbi8yxTbhexhEEk5ur9LInksu6HrEpk= +golang.org/x/net v0.17.0 h1:pVaXccu2ozPjCXewfr1S7xza/zcXTity9cCdXQYSjIM= +golang.org/x/net v0.17.0/go.mod h1:NxSsAGuq816PNPmqtQdLE42eU2Fs7NoRIZrHJAlaCOE= +golang.org/x/net v0.19.0 h1:zTwKpTd2XuCqf8huc7Fo2iSy+4RHPd10s4KzeTnVr1c= +golang.org/x/net v0.19.0/go.mod h1:CfAk/cbD4CthTvqiEl8NpboMuiuOYsAr/7NOjZJtv1U= golang.org/x/oauth2 v0.0.0-20180821212333-d2e6202438be/go.mod h1:N/0e6XlmueqKjAGxoOufVs8QHGRruUQn6yWY3a++T0U= golang.org/x/oauth2 v0.0.0-20190226205417-e64efc72b421/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= golang.org/x/oauth2 v0.0.0-20190604053449-0f29369cfe45/go.mod h1:gOpvHmFTYa4IltrdGE7lF6nIHvwfUNPOp7c8zoXwtLw= @@ -823,6 +920,8 @@ golang.org/x/oauth2 v0.8.0 h1:6dkIjl3j3LtZ/O3sTgZTMsLKSftL/B8Zgq4huOIIUu8= golang.org/x/oauth2 v0.8.0/go.mod h1:yr7u4HXZRm1R1kBWqr/xKNqewf0plRYoB7sla+BCIXE= golang.org/x/oauth2 v0.12.0 h1:smVPGxink+n1ZI5pkQa8y6fZT0RW0MgCO5bFpepy4B4= golang.org/x/oauth2 v0.12.0/go.mod h1:A74bZ3aGXgCY0qaIC9Ahg6Lglin4AMAco8cIv9baba4= +golang.org/x/oauth2 v0.15.0 h1:s8pnnxNVzjWyrvYdFUQq5llS1PX2zhPXmccZv99h7uQ= +golang.org/x/oauth2 v0.15.0/go.mod h1:q48ptWNTY5XWf+JNten23lcvHpLJ0ZSxF5ttTHKVCAM= golang.org/x/sync v0.0.0-20180314180146-1d60e4601c6f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181108010431-42b317875d0f/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.0.0-20181221193216-37e7f081c4d4/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= @@ -839,6 +938,7 @@ golang.org/x/sync v0.1.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.2.0 h1:PUR+T4wwASmuSTYdKjYHI5TD22Wy5ogLU5qZCOLxBrI= golang.org/x/sync v0.2.0/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM= golang.org/x/sync v0.3.0/go.mod h1:FU7BRWz2tNW+3quACPkgCx/L+uEAv1htQ0V83Z9Rj+Y= +golang.org/x/sync v0.5.0/go.mod h1:Czt+wKu1gCyEFDUtn0jG5QVvpJ6rzVqr5aXyt9drQfk= golang.org/x/sys v0.0.0-20180823144017-11551d06cbcc/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180830151530-49385e6e1522/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= golang.org/x/sys v0.0.0-20180905080454-ebe1bf3edb33/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY= @@ -900,6 +1000,9 @@ golang.org/x/sys v0.8.0 h1:EBmGv8NaZBZTWvrbjNoL6HVt+IVy3QDQpJs7VRIw3tU= golang.org/x/sys v0.8.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= golang.org/x/sys v0.12.0 h1:CM0HF96J0hcLAwsHPJZjfdNzs0gftsLfgKt57wWHJ0o= golang.org/x/sys v0.12.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.13.0/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= +golang.org/x/sys v0.15.0 h1:h48lPFYpsTvQJZF4EKyI4aLHaev3CxivZmv7yZig9pc= +golang.org/x/sys v0.15.0/go.mod h1:/VUhepiaJMQUp4+oa/7Zr1D23ma6VTLIYjOOTFZPUcA= golang.org/x/term v0.0.0-20201126162022-7de9c90e9dd1/go.mod h1:bj7SfCRtBDWHUb9snDiAeCFNEtKQo2Wmx5Cou7ajbmo= golang.org/x/term v0.0.0-20210927222741-03fcf44c2211/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= golang.org/x/term v0.1.0/go.mod h1:jbD1KX2456YbFQfuXm/mYQcufACuNUgVhRMnK/tPxf8= @@ -910,6 +1013,10 @@ golang.org/x/term v0.8.0 h1:n5xxQn2i3PC0yLAbjTpNT85q/Kgzcr2gIoX9OrJUols= golang.org/x/term v0.8.0/go.mod h1:xPskH00ivmX89bAKVGSKKtLOWNx2+17Eiy94tnKShWo= golang.org/x/term v0.12.0 h1:/ZfYdc3zq+q02Rv9vGqTeSItdzZTSNDmfTi0mBAuidU= golang.org/x/term v0.12.0/go.mod h1:owVbMEjm3cBLCHdkQu9b1opXd4ETQWc3BhuQGKgXgvU= +golang.org/x/term v0.13.0 h1:bb+I9cTfFazGW51MZqBVmZy7+JEJMouUHTUSKVQLBek= +golang.org/x/term v0.13.0/go.mod h1:LTmsnFJwVN6bCy1rVCoS+qHT1HhALEFxKncY3WNNh4U= +golang.org/x/term v0.15.0 h1:y/Oo/a/q3IXu26lQgl04j/gjuBDOBlx7X6Om1j2CPW4= +golang.org/x/term v0.15.0/go.mod h1:BDl952bC7+uMoWR75FIrCDx79TPU9oHkTZ9yRbYOrX0= golang.org/x/text v0.0.0-20170915032832-14c0d48ead0c/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= golang.org/x/text v0.3.1-0.20180807135948-17ff2d5776d2/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ= @@ -926,6 +1033,8 @@ golang.org/x/text v0.9.0 h1:2sjJmO8cDvYveuX97RDLsxlyUxLl+GHoLxBiRdHllBE= golang.org/x/text v0.9.0/go.mod h1:e1OnstbJyHTd6l/uOt8jFFHp6TRDWZR/bV3emEE/zU8= golang.org/x/text v0.13.0 h1:ablQoSUd0tRdKxZewP80B+BaqeKJuVhuRxj/dkrun3k= golang.org/x/text v0.13.0/go.mod h1:TvPlkZtksWOMsz7fbANvkp4WM8x/WCo/om8BMLbz+aE= +golang.org/x/text v0.14.0 h1:ScX5w1eTa3QqT8oi6+ziP7dTV1S2+ALU0bI+0zXKWiQ= +golang.org/x/text v0.14.0/go.mod h1:18ZOQIKpY8NJVqYksKHtTdi31H5itFRjB5/qKTNYzSU= golang.org/x/time v0.0.0-20181108054448-85acf8d2951c/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20190308202827-9d24e82272b4/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.0.0-20191024005414-555d28b269f0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= @@ -933,6 +1042,8 @@ golang.org/x/time v0.0.0-20200416051211-89c76fbcd5d1/go.mod h1:tRJNPiyCQ0inRvYxb golang.org/x/time v0.0.0-20211116232009-f0f3c7e86c11/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= golang.org/x/time v0.3.0 h1:rg5rLMjNzMS1RkNLzCG38eapWhnYLFYXDXj2gOlr8j4= golang.org/x/time v0.3.0/go.mod h1:tRJNPiyCQ0inRvYxbN9jk5I+vvW/OXSQhTDSoE431IQ= +golang.org/x/time v0.5.0 h1:o7cqy6amK/52YcAKIPlM3a+Fpj35zvRj2TP+e1xFSfk= +golang.org/x/time v0.5.0/go.mod h1:3BpzKBy/shNhVucY/MWOyx10tF3SFh9QdLuxbVysPQM= golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190114222345-bf090417da8b/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ= golang.org/x/tools v0.0.0-20190226205152-f727befe758c/go.mod h1:9Yl7xja0Znq3iFh3HoIrodX9oNMXvdceNzlUR8zjMvY= @@ -1011,6 +1122,10 @@ google.golang.org/api v0.125.0 h1:7xGvEY4fyWbhWMHf3R2/4w7L4fXyfpRGE9g6lp8+DCk= google.golang.org/api v0.125.0/go.mod h1:mBwVAtz+87bEN6CbA1GtZPDOqY2R5ONPqJeIlvyo4Aw= google.golang.org/api v0.143.0 h1:o8cekTkqhywkbZT6p1UHJPZ9+9uuCAJs/KYomxZB8fA= google.golang.org/api v0.143.0/go.mod h1:FoX9DO9hT7DLNn97OuoZAGSDuNAXdJRuGK98rSUgurk= +google.golang.org/api v0.152.0 h1:t0r1vPnfMc260S2Ci+en7kfCZaLOPs5KI0sVV/6jZrY= +google.golang.org/api v0.152.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= +google.golang.org/api v0.153.0 h1:N1AwGhielyKFaUqH07/ZSIQR3uNPcV7NVw0vj+j4iR4= +google.golang.org/api v0.153.0/go.mod h1:3qNJX5eOmhiWYc67jRA/3GsDw97UFb5ivv7Y2PrriAY= google.golang.org/appengine v1.1.0/go.mod h1:EbEs0AVv82hx2wNQdGPgUI5lhzA/G0D9YwlJXL52JkM= google.golang.org/appengine v1.4.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= google.golang.org/appengine v1.5.0/go.mod h1:xpcJRLb0r/rnEns0DIKYYv+WjYCduHsrkT7/EB5XEv4= @@ -1019,6 +1134,8 @@ google.golang.org/appengine v1.6.5/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCID google.golang.org/appengine v1.6.6/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= google.golang.org/appengine v1.6.7 h1:FZR1q0exgwxzPzp/aF+VccGrSfxfPpkBqjIIEq3ru6c= google.golang.org/appengine v1.6.7/go.mod h1:8WjMMxjGQR8xUklV/ARdw2HLXBOI7O7uCIDZVag1xfc= +google.golang.org/appengine v1.6.8 h1:IhEN5q69dyKagZPYMSdIjS2HqprW324FRQZJcGqPAsM= +google.golang.org/appengine v1.6.8/go.mod h1:1jJ3jBArFh5pcgW8gCtRJnepW8FzD1V44FJffLiz/Ds= google.golang.org/genproto v0.0.0-20170818010345-ee236bd376b0/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20180817151627-c66870c02cf8/go.mod h1:JiN7NxoALGmiZfu7CAH4rXhgtRTLTxftemlI0sWmxmc= google.golang.org/genproto v0.0.0-20190307195333-5fe7a883aa19/go.mod h1:VzzqZJRnGkLBvHegQrXjBqPurQTc5/KpmUdxsrq26oE= @@ -1063,10 +1180,20 @@ google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc h1:8DyZCyvI8mE1IdL google.golang.org/genproto v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:xZnkP7mREFX5MORlOPEzLMr+90PPZQ2QWzrVTWfAq64= google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb h1:XFBgcDwm7irdHTbz4Zk2h7Mh+eis4nfJEFQFYzJzuIA= google.golang.org/genproto v0.0.0-20230913181813-007df8e322eb/go.mod h1:yZTlhN0tQnXo3h00fuXNCxJdLdIdnVFVBaRJ5LWBbw4= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17 h1:wpZ8pe2x1Q3f2KyT5f8oP/fa9rHAKgFPr/HZdNuS+PQ= +google.golang.org/genproto v0.0.0-20231106174013-bbf56f31fb17/go.mod h1:J7XzRzVy1+IPwWHZUzoD0IccYZIrXILAQpc+Qy9CMhY= +google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f h1:Vn+VyHU5guc9KjB5KrjI2q0wCOWEOIh0OEsleqakHJg= +google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f/go.mod h1:nWSwAFPb+qfNJXsoeO3Io7zf4tMSfN8EA8RlDA04GhY= +google.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4 h1:W12Pwm4urIbRdGhMEg2NM9O3TWKjNcxQhs46V0ypf/k= +google.golang.org/genproto v0.0.0-20231127180814-3a041ad873d4/go.mod h1:5RBcpGRxr25RbDzY5w+dmaqpSEvl8Gwl1x2CICf60ic= google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc h1:XSJ8Vk1SWuNr8S18z1NZSziL0CPIXLCCMDOEFtHBOFc= google.golang.org/genproto/googleapis/rpc v0.0.0-20230530153820-e85fd2cbaebc/go.mod h1:66JfowdXAEgad5O9NnYcsNPLCPZJD++2L9X0PCMODrA= google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13 h1:N3bU/SQDCDyD6R528GJ/PwW9KjYcJA3dgyH+MovAkIM= google.golang.org/genproto/googleapis/rpc v0.0.0-20230920204549-e6e6cdab5c13/go.mod h1:KSqppvjFjtoCI+KGd4PELB0qLNxdJHRGqRI09mB6pQA= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f h1:ultW7fxlIvee4HYrtnaRPon9HpEgFk5zYpmfMgtKB5I= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231120223509-83a465c0220f/go.mod h1:L9KNLi232K1/xB6f7AlSX692koaRnKaWSR0stBki0Yc= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4 h1:DC7wcm+i+P1rN3Ff07vL+OndGg5OhNddHyTA+ocPqYE= +google.golang.org/genproto/googleapis/rpc v0.0.0-20231127180814-3a041ad873d4/go.mod h1:eJVxU6o+4G1PSczBr85xmyvSNYAKvAYgkub40YGomFM= google.golang.org/grpc v1.8.0/go.mod h1:yo6s7OP7yaDglbqo1J04qKzAhqBH6lvTonzMVmEdcZw= google.golang.org/grpc v1.19.0/go.mod h1:mqu4LbDTu4XGKhr4mRzUsmM4RtVoemTSY81AxZiDr8c= google.golang.org/grpc v1.20.1/go.mod h1:10oTOabMzJvdu6/UiuZezV6QK5dSlG84ov/aaiqXj38= @@ -1092,6 +1219,8 @@ google.golang.org/grpc v1.55.0 h1:3Oj82/tFSCeUrRTg/5E/7d/W5A1tj6Ky1ABAuZuv5ag= google.golang.org/grpc v1.55.0/go.mod h1:iYEXKGkEBhg1PjZQvoYEVPTDkHo1/bjTnfwTeGONTY8= google.golang.org/grpc v1.58.2 h1:SXUpjxeVF3FKrTYQI4f4KvbGD5u2xccdYdurwowix5I= google.golang.org/grpc v1.58.2/go.mod h1:tgX3ZQDlNJGU96V6yHh1T/JeoBQ2TXdr43YbYSsCJk0= +google.golang.org/grpc v1.59.0 h1:Z5Iec2pjwb+LEOqzpB2MR12/eKFhDPhuqW91O+4bwUk= +google.golang.org/grpc v1.59.0/go.mod h1:aUPDwccQo6OTjy7Hct4AfBPD1GptF4fyUjIkQ9YtF98= google.golang.org/protobuf v0.0.0-20200109180630-ec00e32a8dfd/go.mod h1:DFci5gLYBciE7Vtevhsrf46CRTquxDuWsQurQQe4oz8= google.golang.org/protobuf v0.0.0-20200221191635-4d8936d0db64/go.mod h1:kwYJMbMJ01Woi6D6+Kah6886xMZcty6N08ah7+eCXa0= google.golang.org/protobuf v0.0.0-20200228230310-ab0ca4ff8a60/go.mod h1:cfTl7dwQJ+fmap5saPgwCLgHXTUD7jkjRqWcaiX5VyM= diff --git a/serv/web/build/asset-manifest.json b/serv/web/build/asset-manifest.json index 4e04cf5a..1674f202 100644 --- a/serv/web/build/asset-manifest.json +++ b/serv/web/build/asset-manifest.json @@ -1,62 +1,62 @@ { "files": { - "main.css": "./static/css/main.39210121.css", - "main.js": "./static/js/main.6166934a.js", - "static/js/889.ce200a0a.chunk.js": "./static/js/889.ce200a0a.chunk.js", - "static/js/237.ac97f124.chunk.js": "./static/js/237.ac97f124.chunk.js", - "static/js/301.5d98e8dc.chunk.js": "./static/js/301.5d98e8dc.chunk.js", - "static/js/598.60488e41.chunk.js": "./static/js/598.60488e41.chunk.js", - "static/js/594.1aa776ab.chunk.js": "./static/js/594.1aa776ab.chunk.js", - "static/js/284.139fb87e.chunk.js": "./static/js/284.139fb87e.chunk.js", - "static/js/621.fab5d04c.chunk.js": "./static/js/621.fab5d04c.chunk.js", - "static/js/635.af003210.chunk.js": "./static/js/635.af003210.chunk.js", - "static/js/271.1505a6a8.chunk.js": "./static/js/271.1505a6a8.chunk.js", - "static/js/824.f3c19ca3.chunk.js": "./static/js/824.f3c19ca3.chunk.js", - "static/js/142.611662c0.chunk.js": "./static/js/142.611662c0.chunk.js", - "static/js/143.c848198a.chunk.js": "./static/js/143.c848198a.chunk.js", - "static/js/942.b2e283cd.chunk.js": "./static/js/942.b2e283cd.chunk.js", - "static/js/69.5c9349a9.chunk.js": "./static/js/69.5c9349a9.chunk.js", - "static/js/557.2b1777f5.chunk.js": "./static/js/557.2b1777f5.chunk.js", - "static/js/248.04e18c19.chunk.js": "./static/js/248.04e18c19.chunk.js", - "static/js/311.5b6cf101.chunk.js": "./static/js/311.5b6cf101.chunk.js", - "static/js/485.2101a0c7.chunk.js": "./static/js/485.2101a0c7.chunk.js", - "static/js/119.96527558.chunk.js": "./static/js/119.96527558.chunk.js", - "static/js/168.5772bc38.chunk.js": "./static/js/168.5772bc38.chunk.js", - "static/js/27.d21c7ff3.chunk.js": "./static/js/27.d21c7ff3.chunk.js", - "static/js/818.78e43826.chunk.js": "./static/js/818.78e43826.chunk.js", - "static/js/601.b1f2c1ee.chunk.js": "./static/js/601.b1f2c1ee.chunk.js", - "static/js/186.3ff7347c.chunk.js": "./static/js/186.3ff7347c.chunk.js", - "static/js/308.d593a087.chunk.js": "./static/js/308.d593a087.chunk.js", + "main.css": "./static/css/main.eee41caf.css", + "main.js": "./static/js/main.677850ad.js", + "static/js/889.980740f4.chunk.js": "./static/js/889.980740f4.chunk.js", + "static/js/237.fff68a06.chunk.js": "./static/js/237.fff68a06.chunk.js", + "static/js/301.9d02ae8f.chunk.js": "./static/js/301.9d02ae8f.chunk.js", + "static/js/598.ef83eb66.chunk.js": "./static/js/598.ef83eb66.chunk.js", + "static/js/594.c09eef4c.chunk.js": "./static/js/594.c09eef4c.chunk.js", + "static/js/284.5fa6686a.chunk.js": "./static/js/284.5fa6686a.chunk.js", + "static/js/621.c920b4e9.chunk.js": "./static/js/621.c920b4e9.chunk.js", + "static/js/635.ae474726.chunk.js": "./static/js/635.ae474726.chunk.js", + "static/js/271.cd762814.chunk.js": "./static/js/271.cd762814.chunk.js", + "static/js/824.d1ea505e.chunk.js": "./static/js/824.d1ea505e.chunk.js", + "static/js/142.452d36a8.chunk.js": "./static/js/142.452d36a8.chunk.js", + "static/js/143.38ac34fa.chunk.js": "./static/js/143.38ac34fa.chunk.js", + "static/js/942.dd41bf7c.chunk.js": "./static/js/942.dd41bf7c.chunk.js", + "static/js/69.6a9a23ed.chunk.js": "./static/js/69.6a9a23ed.chunk.js", + "static/js/557.dbc48a86.chunk.js": "./static/js/557.dbc48a86.chunk.js", + "static/js/248.9c82ef95.chunk.js": "./static/js/248.9c82ef95.chunk.js", + "static/js/311.2b245394.chunk.js": "./static/js/311.2b245394.chunk.js", + "static/js/485.7dd1e903.chunk.js": "./static/js/485.7dd1e903.chunk.js", + "static/js/119.b707f39a.chunk.js": "./static/js/119.b707f39a.chunk.js", + "static/js/168.86ac5987.chunk.js": "./static/js/168.86ac5987.chunk.js", + "static/js/27.934b5e6c.chunk.js": "./static/js/27.934b5e6c.chunk.js", + "static/js/818.71047f89.chunk.js": "./static/js/818.71047f89.chunk.js", + "static/js/601.e9bfc114.chunk.js": "./static/js/601.e9bfc114.chunk.js", + "static/js/186.b9e615a3.chunk.js": "./static/js/186.b9e615a3.chunk.js", + "static/js/308.5daf2292.chunk.js": "./static/js/308.5daf2292.chunk.js", "index.html": "./index.html", - "main.39210121.css.map": "./static/css/main.39210121.css.map", - "main.6166934a.js.map": "./static/js/main.6166934a.js.map", - "237.ac97f124.chunk.js.map": "./static/js/237.ac97f124.chunk.js.map", - "301.5d98e8dc.chunk.js.map": "./static/js/301.5d98e8dc.chunk.js.map", - "598.60488e41.chunk.js.map": "./static/js/598.60488e41.chunk.js.map", - "594.1aa776ab.chunk.js.map": "./static/js/594.1aa776ab.chunk.js.map", - "284.139fb87e.chunk.js.map": "./static/js/284.139fb87e.chunk.js.map", - "621.fab5d04c.chunk.js.map": "./static/js/621.fab5d04c.chunk.js.map", - "635.af003210.chunk.js.map": "./static/js/635.af003210.chunk.js.map", - "271.1505a6a8.chunk.js.map": "./static/js/271.1505a6a8.chunk.js.map", - "824.f3c19ca3.chunk.js.map": "./static/js/824.f3c19ca3.chunk.js.map", - "142.611662c0.chunk.js.map": "./static/js/142.611662c0.chunk.js.map", - "143.c848198a.chunk.js.map": "./static/js/143.c848198a.chunk.js.map", - "942.b2e283cd.chunk.js.map": "./static/js/942.b2e283cd.chunk.js.map", - "69.5c9349a9.chunk.js.map": "./static/js/69.5c9349a9.chunk.js.map", - "557.2b1777f5.chunk.js.map": "./static/js/557.2b1777f5.chunk.js.map", - "248.04e18c19.chunk.js.map": "./static/js/248.04e18c19.chunk.js.map", - "311.5b6cf101.chunk.js.map": "./static/js/311.5b6cf101.chunk.js.map", - "485.2101a0c7.chunk.js.map": "./static/js/485.2101a0c7.chunk.js.map", - "119.96527558.chunk.js.map": "./static/js/119.96527558.chunk.js.map", - "168.5772bc38.chunk.js.map": "./static/js/168.5772bc38.chunk.js.map", - "27.d21c7ff3.chunk.js.map": "./static/js/27.d21c7ff3.chunk.js.map", - "818.78e43826.chunk.js.map": "./static/js/818.78e43826.chunk.js.map", - "601.b1f2c1ee.chunk.js.map": "./static/js/601.b1f2c1ee.chunk.js.map", - "186.3ff7347c.chunk.js.map": "./static/js/186.3ff7347c.chunk.js.map", - "308.d593a087.chunk.js.map": "./static/js/308.d593a087.chunk.js.map" + "main.eee41caf.css.map": "./static/css/main.eee41caf.css.map", + "main.677850ad.js.map": "./static/js/main.677850ad.js.map", + "237.fff68a06.chunk.js.map": "./static/js/237.fff68a06.chunk.js.map", + "301.9d02ae8f.chunk.js.map": "./static/js/301.9d02ae8f.chunk.js.map", + "598.ef83eb66.chunk.js.map": "./static/js/598.ef83eb66.chunk.js.map", + "594.c09eef4c.chunk.js.map": "./static/js/594.c09eef4c.chunk.js.map", + "284.5fa6686a.chunk.js.map": "./static/js/284.5fa6686a.chunk.js.map", + "621.c920b4e9.chunk.js.map": "./static/js/621.c920b4e9.chunk.js.map", + "635.ae474726.chunk.js.map": "./static/js/635.ae474726.chunk.js.map", + "271.cd762814.chunk.js.map": "./static/js/271.cd762814.chunk.js.map", + "824.d1ea505e.chunk.js.map": "./static/js/824.d1ea505e.chunk.js.map", + "142.452d36a8.chunk.js.map": "./static/js/142.452d36a8.chunk.js.map", + "143.38ac34fa.chunk.js.map": "./static/js/143.38ac34fa.chunk.js.map", + "942.dd41bf7c.chunk.js.map": "./static/js/942.dd41bf7c.chunk.js.map", + "69.6a9a23ed.chunk.js.map": "./static/js/69.6a9a23ed.chunk.js.map", + "557.dbc48a86.chunk.js.map": "./static/js/557.dbc48a86.chunk.js.map", + "248.9c82ef95.chunk.js.map": "./static/js/248.9c82ef95.chunk.js.map", + "311.2b245394.chunk.js.map": "./static/js/311.2b245394.chunk.js.map", + "485.7dd1e903.chunk.js.map": "./static/js/485.7dd1e903.chunk.js.map", + "119.b707f39a.chunk.js.map": "./static/js/119.b707f39a.chunk.js.map", + "168.86ac5987.chunk.js.map": "./static/js/168.86ac5987.chunk.js.map", + "27.934b5e6c.chunk.js.map": "./static/js/27.934b5e6c.chunk.js.map", + "818.71047f89.chunk.js.map": "./static/js/818.71047f89.chunk.js.map", + "601.e9bfc114.chunk.js.map": "./static/js/601.e9bfc114.chunk.js.map", + "186.b9e615a3.chunk.js.map": "./static/js/186.b9e615a3.chunk.js.map", + "308.5daf2292.chunk.js.map": "./static/js/308.5daf2292.chunk.js.map" }, "entrypoints": [ - "static/css/main.39210121.css", - "static/js/main.6166934a.js" + "static/css/main.eee41caf.css", + "static/js/main.677850ad.js" ] } \ No newline at end of file diff --git a/serv/web/build/index.html b/serv/web/build/index.html index f99f9116..6a53d1f5 100644 --- a/serv/web/build/index.html +++ b/serv/web/build/index.html @@ -1 +1 @@ -GraphJin GraphQL Editor
\ No newline at end of file +GraphJin GraphQL Editor
\ No newline at end of file diff --git a/serv/web/build/static/css/main.39210121.css.map b/serv/web/build/static/css/main.39210121.css.map deleted file mode 100644 index ea8250ed..00000000 --- a/serv/web/build/static/css/main.39210121.css.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/css/main.39210121.css","mappings":"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","sources":["../node_modules/graphiql/graphiql.css","index.css"],"sourcesContent":["/*!*********************************************************************************************!*\\\n !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/font/roboto.css ***!\n \\*********************************************************************************************/\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAAAMwAA4AAAAABZgAAALdAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoI4ghsLEAABNgIkAxwEIAWDCgcgG3YEyI7DdHsjE9IUV+CFDh74vPL9/MmgO0un0soqjWt7En2kQoCMtXsRxyxkMqP9iO6NfSiUaLJuoRIKnhI0+ImbcWOB5XOAFVmCgxZQQmuBJRhZtsUCXm/492Dyuk2YZJdkdApZeOzyEQgKOwDgRjASBEEBVmAlgACtOHEhpjLyyrACMAB0vaLa6cAw5bc5bvhA2uwO7zXAyKPmkYNnAJgBxLEMDxFLqVBPI6EQ/daTr/QOAgfCngRoZc4UZiL623qCkf/oHVsfRCOuAIbJyF4ajQQKQLmQhNBAA4aygH9b19Xw4iAC8DkKM6WrYw/ABMAOWEAamA7sgBWACgAUSlc3SCmlc95o45idYD92Qt/+5gF19v3FALtB9+7dq/h6/Ljyu/zzYfnngwdlHxO+k39nOcO/e7nPf2vCoo3HVlmNTdnWwW3JZffuVU6cQX14kb3qUGOOJ+mjP9iMeb1Nivq5gXpJUWm+cmVK56e6PjI2uce23hHlG48vyDvym5/5q+wbkjq90rN+z53D6zXqmVUPVshZoVtrZgc4vleS1NNrni6VR8I/vTrpzpPwu1+1Pel4xBIzK16W3KcLNnVGl2RGZHbPXBAvhw4M02Ci/t0BBfw/p79XS9V7CKAMF0++DK9rtI/7MXvGATjz0TEA4K4oef476t9dS555BAoLBYCA6ei/FSzVgvg/cIR45gpTaLWeLiB+oa4xJuTks7r7/xwCmCzlpoJKALCDQmkyEsCsN0mELUADghGsGgAF6c9IXkabDYyqg6WMkZd9z7BT5gaphhhqnOH66aOvkTQhggQLpsk0xBB9DNSLJttgPQTQJBtoIE0JEY2wb+1lhF6GG62XngKUGKLFECMNkW2kZgP10+M31GZUwfojwkU0uAcQkISKFNtqGMlau3vIjjRUjMANjYkDNKeouYh7CRBmuD4CHQgHG6GXET8oT7ZU6QqUStddiABBJPSv6P315AAA)\n format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0370-03FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,\n U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,\n U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAAANUAA4AAAAABbwAAAMBAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoI0ghgLEAABNgIkAxwEIAWDMgcgG5sECK4GbGM62A+KOMNGmZWUwcdhKI9l4Sh/WwYP/3af9w0W4ERa2bOg405uoSptTooGKkF8HniO5b+Iojvye4dReBbNtVHwcLQTG2gBzQfYOqjJ/XYU/jItwgxa4I3czM4Fj9LAAnlHz+dzgSO71Jqn2QML8H66dROj0qAFLYnRhtm0b89/erW/v8l/LA6we9gCizDBtQzSf4EtkcwDT6RtmgYEQXnDKGQslZyX/CkQSFgBAE4ERggEAgmwACwQgADMsONAJKVkFWEBgAJgwMz1NlLWec3G+jtZu+rXO1i7rx/sZi0AEwB5WVY28FUE1CORQAjvtSPftAwCQQjGAbTUfm4qwrvbNmDEf5pjR4JoxElAiYiMWjQyIAEy4EBGAA4UNKCgIMC7a5Cej2sCAA+SMEEyYA2AMQBWgCmQAObACrAAQAUAJCSDMEDmo7CztfXoRGu7SUeVdbvosOq6N6PHnZ2yf9l3eXPj/q2qXdkjBL+qrix1cYsqzItOvXfRPaMXkUvPeFWoxr7tZB8gfxIhMauBapmSUhO8d3O8wUt0MoI7UAxLzt0/zhCwJnVHrsPYXenm8suPeLYORWqn/3wwK6Qp+frDiYGvxHSXFzoXfpihfmlODl9oFbOqKa8nXbZgd6axNivh4JS8xEZKChij/nuDBPx/MrxQA/WBACCtK44947xa66g/k0YcALjxaesDuBuQP/7x/3bTwmQACVMkAAQYd/7HYBqK1H97hriqWIzlN7cD8Qu1mY6Ql7eR9v8qAcCY/apKqAgArEBCCmOEAExoJiOUENTgBAI3NSBhwSjIbLboV0Blo3PIiN06hxVFfmrr0WtMvzYtWg3SBPDjz58mVY8eLTrpNOm6NfKhidepk6ZAbgbym+oG6PoN0zXxUaBHgx6Demiy6Zq0GdIl3aB6ndo04r7WvSV0/Qa0Nd2+yKcNFCrSvh/6dNKO3xV33aBeEXxNZKTyQUaverfOR49+LZno1XUboBt4oSzpEiXLUSjZDgF8+JHBMIY0KQAA)\n format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAABU0AA4AAAAAJLgAABTeAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmQbi3YcNgZgAIFkEQwKrkSlZwuBSAABNgIkA4MMBCAFgzIHIBueHrOiVpNataT4nwk2nboHhRIwDgpKyhjHLyLzQxmFwTYyDE5esZ3+2EabADRB2gAnegV3sg2h4vmn/cH/ujNn5kEfUoTVzJCo7tDcxAh1qBL7aK6c2RAfYY5oH5jywGzfVxj2dQKMqiNV1SGa2/3fsqgYgzZIg4jcRiiRIlUD6TaSLHVGBGIUGIlSIiAWaB/Nlf92N3lGYYsKSKjZnfSTB8DmMi27e2FKIBTaKlRVsztJrgQ/v1ar83g3J/7Bm3pohA6p0P68Qebt32Vvzv+J+e5iNnizRruQrw0imsSTJfEmoUCohFIvESLYkJkG86bdWhrvEfNUcXTtnhaEruXzgVaEu0VRWgYqCFQSqCJQjUANMogmzaJVj+izItbskHExWMtGIeDVV4+zjD3+RFc+yF6RlRIHstekRMaC7I2haQkgC2+4KiUBmJDOA0pVozaXNfBR9QCXV2CAnZZ/Pa939bym2tY015bSKkq/1bW5rl2W3bLb9zSVW4Drhr5Xrw/3s6jw6wK1JMm+D+n/woA6vO4yKdplbgIyweLmY2gZzWw+oG+f+/mW70DuJgYtfT7LzTxPyqddT+nC3/NdfLWlUjfjXEzmQ/hpKLyQ98ii2GeJyRwXTdK9mWCse91WkQMY68rJFB88T8t35mpaolV7x53YfELcGYe/k5e+Q8OkBTnHYqOSF4OEEujtXNjCIqJi4hKSUjJyiiqq1KhTr1m7bj36DRk1YdKUaTPmrFizRZJMikLoKiGpjpWa4NUnWmPomkLTHApWNF+toulu2I0Yi3nKgC9LYMKUrGeVRDIh1kjzTns2qSeP9MP0pJk8NMecFu5MvKMmX6zA/fX9Q5TOL5OXchlXyJRSLinno0o+qMoi3UyrVXFduLL6vNeQVxpzV1Mea84LjsgLhbwUIlcyZi3jNgFs8XbW2ZDJIg2tfzlzKEN1ZtUKbMD8DXNXQz5pzDQnsB/gtQLeJN4m5izUdKksg2nSRk5D9WyKQs/IZRNpGuhaSpjhGY1WObToSmatUWx1JnL5ZiO7F4xkJqXyAGWpz01EMiOaMnHN14SjHwXF8xU3i1ZZWLxpN73ceAqTchLyIBv2QRYchjzI1TkEbetj5cxPxG81MA2TYoHqf182swq5rkjT+39QyZjqzKjJ6TL4ACPwvPgGZpVcE6wV0i7YziJlYTFgz06wSoJTcyZeux6CfnM0C5WIWhExayJu64faUNggA4GImLpCRlmSyTJArnQhQdaTUlJopaw1sgZU7ypr6OEVYGgoYhCPTOddtBvLdjIHMufBjQi9q30D8MqGOGCoW0HhivaBxX30m1mMYRKTOyZX24T8t6yqO5dvKWY8MQzAsmM2BOifOGgAttxzR98dn3SWhwPAfk8fm+A/AFev2NuADZ8FqEOHuBI2prgBmrIZBgrWtzvfgonB94d6Td/a27u4n+rD/W5/2MfyH/R7xOPX9W29sx/qp/ut/qDq9O/Rf48AgdPYjW7/N/rfSMgHsINW4FzQnGsrQe1COnTqEn7aIocMixoxWnLsMePiJtgmJT7+OJkeb0rarDmOeQsWLVlGrVpTZUW1GrXq1GvQaP2LmZ7EKSRh4BXwgf9FYOwMVr0KLHcx4+QVV2Bww8AOyAZgR0TFTAKBMZhV3EvUu2AsNqQDS9LuB4/kVg9nIEAakUChYKh0Etsk91wOkcQ08QqFo2oYDIWCw0AMCzosvVYEqoQgyKYVaV4v0TbyETaLINHkqBSblnAxWVLyxFhZiRT0Sioxaa/G0+vRiXi6Zpzgqf6qMzwKSFfUSjihado5YLh79B8qKJo+FF/xdsZkMlr6To3QREwg/1Z5syFRpJPGSR1WRZchQqfBxXCvElCFwlTFk8zNkqOywH1Jozx2tXrde299rYZi3F/j8hyYUCJzj+MouoariaLpw5/zWB0WCylI6bQBtlJsuLccTCwFl1fCy8BJ66uZzMLZRmjB7AZshWCpiXFLqMjZ+pax70kYJ4g3vdADAy+STlWm6dCBArat+kIJvSkOqDI74f6iAA6NRLZV66doUoUfq975RbXQxEgnLi0r3ZerpoaNaNtv8/mYTGpIneZ0iko225hRgGG6ATv8jFaUUQFVCVL6ZPgE2AwMokMDZTmtsllFK0U39mkUrSheCG2eXAF9/PgHgEJfotR+I+o9dmaSuSLeJiIkgrGO+A9EKvYluMiT4dFRQ3pTajHWl9veBQLEMja6I+NcAZBPIQSUPOluNyL7529e9N4yW178bFRuj4sN7tkVOYyfugKg5w2paeMcad1xefLsQSWpM09kB4uLqzoNTXGmScx8wUOVlR8LTv706zKwnzRrdE29H0sexg7yeBbE9/nzNc3zNHXCm5409hjYGLDVoJ4MDuqTFBLMiY5L9ryuwp4SXqdQ+CuWGi42IIFQY6ro8cALgu77TvsSb6Jv7b9xxbjOkP/JQkGGdIzmAxbccBfRMaV17ab6OH+KR4NEzlTuvmgg55yjyo/ZiaWA7KO3jerpxRvkVdVjPk97M9g1R7fFn8Gek9FO5zVe6ONDwK8lVlcLslVyp3v09KACk89xQwUmt85+2eYA7GhJolY3o2BkbMODdnNr+lhgpjFOnbr1/OBYib21aZpysKN9OmVax6cxd/D5qSIpSPpukN+4CIbSDC6CzbQR2F1wtTFvzdtHjnInQ2MDSg0NJmd5k/L2KvwzFd3KPmtoB3g3lJ0pTcCObzcF8NQLDplpnvYEQRGUjJ/cURmn3HTKPmjU7Tj7EwD/mL8sMJCeAvsFbj96Z4hwh008elN4nYEWhV/w3sBFhqVETU68vNhzRDiiRwVkDedsHC0ISHPeZnOxPwqyNFzQ6a9AyDljFvXSpX5nd/S4c/VY4TBr5xSNeX+M7yuGg+ZVgBVfhZEbARbPLLLL+EQWvW+HSGAFEgjB2gc+3P3eJD018Wtmt/jHZ8XdYf5Agz4qPg8+grlb1CPMR4sx/kqh/bh06g3V6cWhBvfrKEjvzKbFUqP8UzdB/Ol3YMueVGqY9OlRHADQoV9l63ahR2W4mX5NvIs30mrXaAeqlhLLMhLLlumj4uXNgRnRgctAZ4k+Kl4C+ik3jrueOf4g05p2t3z/a1reILNNiQPUJsVUfoBaWoAt/Zp4iT9XEKRW4nqY+i0+YI/nQ4NoUPlJPo1N5rMPVs8bKEWOkFoCQnYtOlYoWsI34XKM3XayooVDte/gEwi45CVs9jrLKkqU/6F91E5pwmZsnN7JjJAANBde3pGpR5wiHi9+UAyHMG+pKt9AtnygvLe/DTABfzBuMx8Z/fjNGJFFygbKGVnUhISyRIwBAFMTEyep2yeWqF0Tx3gjYUDboDOLoq360uwh6wWnmKOjO7PmOgOk/D9zUFGT1x1A+hGsyk6txoL1w3O8YQXFg+seG97ljQCFQeCozGjZDT/VNsIqZLh+40/qbvrgXvxizVZYidysC/xB2fExFRMdkeePZqFdlzi92NCCyMYQuAv67jbcSM3E+4BTayTC4V8u3/guJcJ4AXCu3VljZ61nYGdrtc7GJsTGQZRpZG/NBUpX+DitrYH8Y+PIeDxfCtNUgu6C/tmETvY8+ajxE5pgU3w1Eue1TnB5jmH3HDRfM3N1a7/k5r7OxM31ULubE7g1mOo8OEe+ajznfNCx4eCaH9K2ynJANsrq3RXfnUBr7ODMYa1d3nq6Ng6hTCcrQ2hnw2U6W9no3xzdUNfWwUvPwQY4lkxU7+IfiX5NXARWHRPPsyXEgkWQNTxMTj0F1qNZx1QuHZUM96hDR4uylvFNuJT1ni3Kqf69hQfxT2viFZmz4s4U3SyCBzDjLO4c0R4fXd33EtiFG/+f+wtWTlhxj1oxVx0Tf6IbiQFIDfeoDPfSbdzGVa6Nw2KtfJWRAlC2dBaKm9m/P/5A7/CD+7gWleEPcu1K1r5m0jXXeSNV2v+A2dU/90j/OJiHq2mt/b8la/sxvP5l3sAb8v+S9z2tfQhI1/VCtcPLvTOsxpzBUkrhoT3EK+cMdWuZO7MGS2gF4iby2dPAkGVRKjtwVXoPf2lZ8Ffrh7n2d0mHjCWHjBeKzy3lp70Xl3w+5+pgQsPK/KSI7+O/gfw7deoD+sprsO4GJNpdfD3m3HOzYjQdU+95wFNa6d6c6q37SBtVlUnZKHPiiBqzpRM2wTedkVxOL0VoGEq8fx/ybr0HNobG+T/DZdihtMvY466f3ZBAH4qzifM2v3BkD3LkOe7oig2qnMEq1khpPjoE+dt1SwwcvPFIuF+qF1KMhlZ53FxVkQczMc0PJY6BlceunoBPHlP6qJdfpAWuDDyFTyOWlN5/nlCMNsFUL+HwHD29j57ReGU8TjI2GilMJUUTfH3jPWEw0pDPjCQcUXHyaECSO+roydQIv2pfTDGQOQFumkX//qfCUXQ7O+/9igz/zgEO5x1u++yQGIlFdutyrhSv3Yy4xljupLkmrjlSOqhexWM37f65UF4PK+GVsg2L1G3Mc8//NcvRHdRdS3E1fG10U1iOEM1AO8/KnaHmRZ4OVshCu05J9YNVmsTjk94X3eMQB8weyv478BDm+aGGGWAd4eDuh5R6EG1YmWLsfaA4dAQkFPMJTnlRbhtQf6SWT3VaIMQU7nvpkYtchh/7gR1WLLfvw9L4V9xTNHAj76Cpn7JjCHQkdr3qzIo5YO7Qv9NNLo3HCJCjUCv7tcSH2DQV7mUgyzdhl1TuOwrb4PZHrAvko4J58lW+izo1vxQthxE5hG2sBfJVYzDNPgGvYJBZF4K94oiulYLja8xJeAmCKeBMsOe+NDCWtuF0eg1zirwwCy24p3jnwBZ9NIwD5yyfQjd0lOwWDhSPGhMMyCtXO6MaN+nnnCSckWxkSwelgmAgCWR2/DwBV3fRSkzzRg1ZgHJ5l3YQkhwpHxMNN1+n8DgKKy/0NrW3tVFPvAbmE8+3qPnl7Aogu8keoCElQOVaLhh6uJtZS9oYUhQsV6z6us8EX4/xEvXFuuZvfmvlUBM609Kqb6XyLJkDiDUnbg2s9dEIroC++P2K117UlK8ELtty9oW5aLKxlk6o+gzjnC3H02FEZaivJfFIzjz7P6yXe24DSDOjJwTcdHCs33YPcxDemCFcR21xthRvnddLy2JMHwxJD8EsxJw3SCiCaWjzYU4LKW0FPokf64bGILXnpduBhqH7EXjzLf7IK4AJ58f7wBS07YJEh77c3LwwTr3VFFeHem4ZiHXNjKm2dqrTdWi9bXYesq6w5RFdQ+DEy0DQogHGdTV6w465hZJKWIVcqff7Td+uxP2lq/zaGKxDVwvkYXxwthBJQJsG5boSfGQwkYEZfFSEth4DluyswAhPKWcLcJVzxEs7CMlGsgaoO0IcnbgXtwG5b8Zx2zEuiItxUOF27OVUKg9boJwzDtb3kcZov/auX27bDfvQE2PEC2rxDeCnnldJ7t+0T/oNq3UvoTSgfEfSpngyOYcYllQaLJNUQk3r3roFKUPu10d+o9bIfPVcRZER3p0PbBjiDS8iA2hBVL0A63MMrJ8wJhmUNXLPH7ehkgcIuSqiV4h2OjFP8czC274WsrTwzrzwwVvuUxulJa+Zea+PBKvVaExUbZAciVcMVErWe+1y3243jRahGdZbLgdgc1pZuw3tvhvYEZyVZem7klEBzOyT629lFJILyQUrssdRAxG5kPUyuWfycSfcjOwSSUWUTD7EtcPBGWQs+JU2cFQRFjmTWGmqb6V/38DmomcyA8Zo+atUppDValRReG0IOowzUGInHNe5xaGeZp1/cb8F7oJtT5lDBobJUjRl5ttTLmvXrknyQQqdfEiuQDWVyJoyz6wMFiLtntKGl9UsUR3bXR1+cClQsafCLQXYMq6csDwAzW+ByM5iEUA7kUoTVdELcVwCGoPsE0lFl84+w+2CbbPYl/D/471khHss2BIU+gNPnJe+LupQYTKGzSZ9T8QG4HJ3SDXxZr5x3+EdVYmHCtCt0EhTdiegTziEIqVZmg2GI5ojf15NJok75AT9RUXrr+vo+WJFNZpN6187/P1vu2UCU6TcbSw34otto71ytIVMPtD2wAJT4G0AvLEi539dOSQgXGeK402BSFU3E7Mg1bwStUPpa/WtGCt+wfDyseGwgCOHPFoooIgSyqigihrqaO5o+Gv0pH8xQ3HmBL9wDWYmBRZ7YBaQYZZQFirGdFd/bLBBB7f5SuhHF3rD7iKaer/sXCd6bi9V57pCqtkg0PwS15zTpP/Xh53uZEOSf74EPNOsl0NdkC6gnptWCcrgFSMqadxvxPi0vaaNQKaHEWQ/0XjRFSVY01PJr91+7jWZMMQ0Qq8F45WkTAZ+gGRqUcAorIBw2zQNMD+E++aMzfTgjptQ3ESwC7QbZyTlSvAks5q+3wqS6LsC6sxsGUwreQJ0kvV/aOHuz0W+ta1zhcVMltnswAX1aBlryUxplHde/b9VfMh7BOt4vGjkv3HS6XXwojp3WsGXahpyMjEZUx8CbddNNpTrsksM098IMisB4L3fFgXAF+j946+e/0ZXZa5MRUgIwAJW3Pg/BcCqgzRJ/4cdAfBl7TxX9J0inGb5Cxj7p6s+yVU8Sxy1HZqJhlqok+Yo14TGKKcDqO70ovf1NVfqmi91PJOVrqWP2+tpvrPteVV87I+VL9EEy6pS8xMOB4HoaM7ACLAxZHO4RGA8blWJ8nKMmB2V0ocpqW7QWYOZ7D+JKlFzOcoX1kElsqpcXGuTUN7p6/+Y1xPrlZiR4morkeaSclGOFsd++qOXxYzl1B6eFe58Oltc5e+IT9CoTVQzSczYIjC04jc8RVsb8i7Q6rZqJ4hoN0hJgFZArskxuSVHtBu0S7Q79k7pzzmlQFdLpIzcToRA93ckLeCQ8oHQjByMh+dd6QADaxVwMQCmoZCNaYTqaRoj721xdhon6yvw5o871Tn+ARuXrjy7cezQkTu2WtVquom2IZeWKM7szzriwi7KPRjOwrOl6hbxfiaZvvGQ9B6K9aUdgrti24TU+di9cyON3naGdndX67WTWpiAb4EkdeEWaHudJm3evU2Wu1eZmJx3vnOlVVWHj0w1o65s632U9I3DYJdZWF2skW+D37gRfQZMmuOq4ucnVWNAvgGJsacFAA==)\n format('woff2');\n unicode-range: U+0370-03FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,\n U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,\n U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAABk8AA4AAAAAMeQAABjlAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmobllYcNgZgAIIEEQwKvFCudguCEAABNgIkA4QcBCAFgnQHIBsFKRPuMGMcANsgD4qiYjAY/JcJ3BiCt0FdjAhHwWJRoioVqofQRAWsbcdwTFm4VHx7x170Z4aVJ4CJpSM09kkuD19r5euZ7pndAJE+GUSbimK0DOUJdFSEZVYuUQf/gOZ2v2AbOQatAoIgKJWjyqKqDZxgUqXQG2UOxPhRwwaUKqMwkjYw4J/4e2Ln75t5u0CpFnBBkkJAtNf/mqa7Uv9vV3uFpwBcAcoEEDXXqrQi6RPJxyQfIOEBsBN8zYds5+hm/L1wwAuo56ZGGuaybvxqbFuxZTAnS/sRUWKK/v/rLFvd+eNzxruVdjcECkLRJR12VNX6X7Klp28ZB/StIdKy7fAgVGHsCSpDCOn0KalpkqJqs1U2p09R1lEH4kj3W0SBhy50MQwQBdH3fCHt3Pp1dCIqInIRT9TM2ddeo9VlfSrbhII1+69FgsELwGYY3KRJQyhQglClCqFJE0KbLgTVAYhDDkHYsodw5AjhxR8iUBREjFwIBAYYAgyBAAkYZBdFuNVrDzmD3J+MxGiQ+5sYEgVy/wKSY0EOcmRfYiyQIXgJAiSgAioUVSC2IEDK8+CApWOshcOMwwwvT4zHW+EPE9n4O8R4YjyRc+wfj1/mMOPm8z/EQeO4zTFEkCJ+JCgTTAi+xBeEMsJVwiZxIZ9R18jhLPQE1MVJVGWrZxJziAVENnGEuE6cqhzx+/Q+kvMBhpgMOIC6I1IXiGI/AVN8lDHxtkVg5NXlVx29kzHyC9HfNU2febXXfdMGiHXGGOlYTZLlwZQGK5yhW7HicNFYFiz/Rm7fe4KmMxsrLhYbutMQq/FYm+9xKbHieyoxe9njc6TN73vdJ9SXHHMin96D/t6Cj01N3eor0kMf4IlPSjRwVNtipfVWOirsNjJyeSCuN9xREIdBkJ0zH8p0KrRL58eljZtOP966SHwllwdsk9dKbQMfCLBXDDZ/u4WuY/7Oly3mtNfrXYMVX2I835JLjXnLOgMbcQXEcoPy6UAji3rTGLWMUiwRASF2lxFZSXwp7s5d9akLR6PmioFRKE2stwzVDWr9J5AY2UnGLrLk7CZPwR57KVKiQpUadRo0adGmQ5ceKn0GTFiyYu2Ag2zYsuPEmRt33nz5CRAoSLBQESJFiREnXoJEyVKkyZAp2wlSdjZBtgkKrVPqG9Ve02qKfuMMW2LcOJPGmTXOvHEWjbNskHXj9jfuAGADO3Lm2kF9E9eE+NYlASkXTOu99JZkKjpWlK0pp2rlNolgZ31k6/xaDbLspTjwUF+STTwW3j/RewqtUuo71T7S0sqwlUiNCdoorijeo/SKcvuAP1avSAeRDDJZtb88QYp2Sq4NAwJMaV8ZTsiCKSqjWKY4PFFuL3HZ2QqZNshOgYkUlVJqDWpF0EQc/7k80pcJau8LeEMH8gTCFrwteCtwUe1deNI+3pIBClN8LPtgXx854ROESzA+iXhKuZMwn3TXlqMwSt+S6R3ZGcn3hoIiRT6+Up+Y9pkTBYHiPIrfw9wW1XiDRbzBayyyRTKAeQO+xL7gjVnAqS9kGXEXzG2NEP2WstLvDFtmrMikYAZzWJClQ9aF/XQAsIEdnCkJSKH0O5CJY8ghbFy6Lq0N2RzhGBBc1Df7UHqwNwisQnIEEqPkvkidlAGcuCAPgy4y7ZoNpmJyUjJBBSZmzGmk4ZKBbJyQHG6ifrIMaB+H9rj3gLgMUCEavWWF21r/k6MSlTiNVNwycGITgUFLUCLT1jhxmNZ6UsqetRCWsWDoNdv1USTyXaWFgrqBT9gVRs041Ev2TXDdNrn3BnZ3lFb3U30INxwjPL16c21//PufBCwKv0PxslWGfQSutdwzgCFPiAETpuTLbRdMVxsDWzSDD4taQ7xkZKMTR5CNDBzRq2CJEtEnU85mw7Ju0G35mcF3nQmRgwSPdMs2pO7Ddu1yFB60LfoMWT1fydP3ahn/QSGdCRsrYweltp8+6HhHuRAyMQlRDPyhNDYe/LHXGIzC8BNDw7AxM3gxDmQcCmXBQHVxUiQCQ2BjuLdKAkbgxY0HHgGoceBHxIdgleyyo0VLg/vwO4UgwggBQJx2OvDPGR5QyyH0QCxeWB0kn8wBACCTdB6THVEfCZ/R/IpsIuLCYQ/cJgQBN5vhjNNFAAEypNd1TI5JMGkmfVVpkFgXW09f5+upCB6UB0UDpOn0odY/hb4AVH/PMXnD637aWYPJwM4fDfwH2P++UIEU5CkgLyzMU10KNqzAceAYWIiOsyxHQfs4MHluVsmW2S775eLcMVM4tkCGm5dVs1W2z0WZucr1kVhDxvQ+/DN/aS4QhIduBi4/0iVedvImzWfb7X9+CnQrg8gJtnvvSb7td8CWcAEUb4EfPUIlynch+RZ4aYkMGTGWxIQpM+aSWdwSsmyyajrR5NBjHWU57Iij966Ri2NyZHOFVNqFia29wg1dGvbaboH2LBh8DqTjIG0CbIWswM24AJNgnOYs5qNZiREsx8okttlWK7DnvHVz2/fhIPFyVkLickBEfZBc4/N+CY/JOJtRWS5CwUZX2TDBpaz0awUQeeP9bY8lNubIafOXxWIP2PLD1G9ZQYrbLhwnT24t2+YrXm7MR1WbpXHCl7rWwPO2xRIHEyYP8a8wPDBmGLEp+fwyKLbNpSwijnJiVPRV74J1j6KBeE7q0KWje5YT6ecLbIkUz27p+rNl6/6jfxNaEHVaiMag54wjx4jioQjLMLmRQwzHuNDT7CBoIDmAJBosfost0e7f8LnyqhAl7l5J9U7ay42+DTqvdepWct6IdGKfLFYuK9xR05+i6UQ8LX0LqiJWcswFzi/o8pyKSzCdYvg9de9vb+CByFvsQFDLS/SYWE0p9JxJug4afNN9UgI2GUvEHGuQzOrsDcRGLkhTiM126adm7GYOrmQlf1zNyXBN4Sj3Rmn0CtHAjLpPJoTtyQNu9PCqsMhkJi915gvHU+PgfrG4LrAVBPVyxQ109zdYYePPpnm+2CK4ZjN/9jNGuaLnqXzZc5bVYISZo6UWcUzYh7mBa+l3lxxV4ZDppzseWWu5RufVQakjF7gsKeeO9XBsRFyLjp5HoXoccbS9Ws1iki+WL0PZXuWoMsLGhbdtBwciprdUuCjZL36RDJNaSZnmHQy7efi5/1uqyB5ZtIuly/aGFUYmVPlsxeSQS6qf/wIuHBQ4D1ZwxL0zqcWS+K/qSDI66UjCEvZzw8ddYgRcESv325ovZ4qWRVnS10/kHsX8vBFwb92iEJmoNHkbgEQeuy2AD0/5BK8W5GUjrsidxbQ/tWEdo9rlSlvia0fNf1m9uB4yju7D3KG+yOdIcxI4JuZ0F8/m83xpGEnTWuogpuVfTClRXpm0zCRl6qVjWWyvfeiqcyru7faGruoGE+2qDrg3Rt9fTly2dHEexPGMs8vkWrsQ5r84woqy5tT6YFoB0z4lVh6FJsuWW1vGg0V2ZNGW1q7KV0zneTpW9rAnsGHh7IQXPkbPiKaSkF5E1sRjB+SXFMI7I4vCUfhaULnG9OrRtvUOnqu994Ex2eqY07byfIQ0/J5cNJLDvYlDn9uwstcq5TEW2TPRWYlMxd7fT6/GUsz8f+Wu4Ol/g1A0Oxiyo7445MEQ8TUM6vAvpw/XKW3+owMpX51Y6cLlhYa9NJTutLOTHCanFs1oueVK6gUV2g6db/JYRZmSH75ocFqrKgOyVU5nLSmf5ZFvssuVtQynrXfvVdnPIZL+sXrsUUgSEsLf9U+JnBHNw6qyYiu8z6GFzZEpIp6mxkX2vrDqsBGE87jKoRCQxDJuySF3MbvkgFqNoz9kEq0tNDYSjPScGEnzteUpCsOwxM/Wgv6S6iBbu0J8y4bKAp+/0LfFinGJPTZkUTZJWS9jS8RJfNFuTYFE/dhUoERlbPF7vOId7q4H+XuAZ97DhngDnsBPs0xd4kp724hFfE4jPlgwGD8ceDrrgfR9Zpv0NPN+p9jSzzZoBzzz2bfvd9mhSTVBe1KkTt/Ovvfv5UfdNm7DkxfOZhIkjM9LH604Ep1+LrpwO9gcHxF/L7H5HaOdoJ03XKRBYlz7KIIRXhwQvdJSXXF7jO9P/rf7Ip0NF4u2XQcjTGMa7nltLeCZpXWTU2lgnw0DjS8a2YBnshNfJA5A2m9vEVRvMAcI45tfxudXnj9iHzl9jpZWUg4nQZzRcfur7xOPnRz9aECToyu9B3Eh5o57jFfvt0d9Hf6gHYvVpTumqij+Ol2+LLAvaZ8pNCK0Mi+T2kp0kScRE8WmnBcvX+NsKzSZ7kOwo4LdN8cEMRtRfyYkUNYwL+YvhOtRh3ijYku8a4NTxMWfrjUeF+hFZ2j06gJMMOxPoUwBntLPf7uTdaEgb07zVnozPD7zfDFEJ0zn7ezzx+OvYQdjoR6RfQnyWySH7NzrDY+7zrUD61OXS0BSYkJQbpA1yyGx4p5bavckC0tfLZd1I6/nuVV7SFu/KHZ+6JYUAIcEnglIrUo3Zv59VnB88pMQ1uY5tr7z3tnAU3bqpvFup8YoSUPxlU38JRK8hLxTF8AFpaIPJZRioo94ZkVHgWAX9ZbuNkO1sp+aRiZmTt0UCcVYLW3IToQXeMrVH/734kzhc7Laf5669M1X50qekdX+osSulvm8/OZnDzvbnuWdaZ0H0zf8P18rDdyPP0xCAb/QTkyLPzd4940sx23srerJ021OZXjH0ku5NROgulPyYLyjqD7DyTbJPvfVrWu3F3vLWIeyYwJDEtyszSPMBQ0vuTimuxV/uIrSHnrFM/xRnPfZ6MSIo87w4+rS2bkA4Wjpmd9lv8tmo6UDhGfgGy/f3b0Ptmm+DuZ5Jm3BXSHgG35wZ7B8jOgu5SHgcPFSio4+TLjjyh7q75PAA3jFJVsOLiwqC5RyZzMYJdzNpemVVgdt91vZ2liDOZ7SB6wNlDCPgT0ZTnKUEQjN37Qd7LekcD6sUclZ51/uxL75hpRXVxaVIflN5U0VZ5Ra+txBfV0k2AwY/8jnBgs0OVuYv4YteqmlthJ9wot8otZSMeb/0dm+Y2pFPMfgl4YfIKvPsUqAp4CYCe9Od5lLpwsR49oEb46gSI1PnKs7BnQSJ0388hprc7Jrqs8gICKjN5LGDox8jYHXvf3w8QVWqWakhsUXMKD7ZovLr6A+PzO58twZDBwIoZCZ9buvba7MY55NDoxA5elcRnuzwh024ClVdeHAlfYBXmCErTwKwgbC1JObCVH6uiLfYrbue/eRTy+wyuHZ8fQuyfgV1lVmZ1Xl5yHgnRDSHyIUygZMmk9EbDDPlGRsGOAF+iwfpHwTvMS9GRkAB2hVNVXsqubqyuVPW3evvaWlNaez0+toaW/uXpWgI0ugZ6GQ3Hb6fPblvHB28tFbb0PPrvMs3A3Jao5VAZetNzLv1ou/hp7oPcFOulGVV8sqTgcDXFfd9WJM+REw32DiHghUnAoUoDwQ7EKYgHdeFgqnnJ8n1AQKrtm8lNLs1Ujy8E9X97Jzx1d6YiPUg0/IukvitGdBJ1dCkgF8lRWczS2VPFwVdETmHuve9lby8pfgsq3gIle2bh9hTQf3LLx/MjK/2C8exgrb3j/zeejRzKe7wLkR0np85/m3ruwpwKFcJs5H8grfcUk49vfKLOaFHhek993TugkiQsyMNhj9/upOBcbDmIfXGLFS/o1mP39VoIvwy/Ry9FzCLj64j3x+jdkDeNELnm4yfgWKeedMs9w3plC6KHv5EGolsgW97iCsAf9GwOnJtusXixquPOJBlgzrDL+NCLAqWqpFrwwIL4pgPjI5Wwo0B4sH8zUwjLbvEpvi7yGmqc6ObeGoL1MgPBg/MuG9UTOGeVKoTWq3/9HSdewVtZ84RInFSoyR36+NAp6ppvE7h1FfAuJG/DWMUpBL+vt4nfyS/3zK8rOcogWS9Iany9/iH3vPiQZYG1cdiT+Xtf2MBEOOcVv0fEn71crT9TebyFcbhs6crR++d77hNtRSW+beV5Qc9Eh3kwwQTs31KV+ofaSyYKWenOhi2/R9T+kSTnUD9w80kxrXGlnUK0CrMLaNOscrQr6G0s9No0ZrRihMqaz8suFEyGZg1DFDm0FnaMrTn2kqPqRXwv3H2Cj7qGj/K19OmvJnUFqjHEpyDwmkhVjezv9yvaNvsqlyv1uGvUyPcU/5uyvs7tWbNbft8uIjIo8H2HpF2yahNYM9ONDMoaJUVEhSQwilosLw7PGpJywqaygjavDVJcKo2hcw0aRSWY3xQmX8whVLdNwBurkHyaab85/ACGyui2AtP1BRAaG3AtnCTrt2odRlAHRkZYRFZU2vTKOAoI2rjSxqCOhjGVEMlBFccRqCiHzjWrdc/o6i05bSvrfHtXYtjYndCrCQvIS2mW53uTkmtmHB5nt87lWW8Vs+tvnh0/16qp03j3dnUl/zFxlmnpgH0j0qi75KR+nH+WdbTJWhl3U6QzJ7eGoU6TdH9+NWFrMzJMVZIBRMpefRUfo5OovqbAJUEOz6J0+vGsJzdP4JkUXqZorYLWS6u7Hp6V3WUJPp76RKgfCESB/P2MQgBFzueW1HRc3KqCy6rmYl3NCZkP/XpU7cDCo64sr0SWm/Gxw5iVP9IVmVujlz+mzX0stWZmj+2dC087e4GiqqyniKy5ngEosTnCVyDE3x7OBcJNVl/Xt5umicROabx86iVBSV72qZF2c8f9DR+jzvbOs8GCRTqaxmkf+MR3zsMNnYusiy510oPD9oF+XvDnJhnGEZwSCniUpgMivuu2Fouy62d1QZOvCWKNKsw7yl0sMT4j1P+cnaYFGUUcW4hl6TAGtaUGkawYOJ80lrvRsY+wKzGyTqk3/M5pbdXJ4nXGESwgtOhtPOM0k1ZVVlpPqqy2C4Tq2RuIGZ6Cornei+iZltdBBuFhCsfstATOlOzqRDLdwTwrzdGgkCIcnhrg4JfoEALg0r59Fa6evYMWZF5Ryrd4hzhZNFZbXfN+8u69Mk4O8dRh/D3hYXt+gxfYWVhZfQS5paa6vPQHUKRoM9qGCmJYrl6FtfP5dH9ihoyjT+bGRRfxmgkGlaE1YQdtagGu3VZbHoPrW30Zo6lNXYhAv0jXR19o4Av5AAkXVx5pccJGgR8lhWMDYWBTxzWNYiIeEWSOd3FNSZnwmt4u/xpb0Dzt++gMvpH1avRqouU149q/iclD2cMZDTWnG+oO5wnEdFZmTI48xAelyHwNSHCmxi3sNjAzl3quhVjVkz5clgKPbLuIbzTmm9FxT7HCcHknVJGzE0d2rT9PyNRUwvDL2Q6b4/iPqb9LrL7j69Wya+Rn6Wseb1+uQDvEDz/+D3t1nlz+72C61d7eVfk+O/Mq937OTVRzDzEIDWNvcQM7Bkkvr2p6ifA4mwmVQofgXOsOEp8LlUKiupSqYUSVhAzE2Jk0v8ISWJJGhTe8VrHzXGzYiMR0p1xss4GB8jM4oUMGw23kNT35gwE2HiUqz7Ajn1AtCsv4cnW1+l6C8T9Hek1V3bkkI9ZqLrxxeIa03HLwTeen5/UnvZtU9Ms0CH+2FFW/niM/6DmtxWf78Az0Be2xJ0gNzTmrkF0onCjGlQbd9ra/X1PC5MnaBMnWj/ZaXtYdOXGW7FbW+5fBOWXYKPraXwD2wHzUYdSqcyta9LKm/s/aTDCzdtj88cqWncJT3gmxZTcj5nWz4Ta1SD/VN5wys+mkbe1z9L1Bb+HqyZmUoB1J9g6fr2rQvaWFe+8qNu1M4H6WC5F92gWj337/8eTB6Wfeey8sWurcxhYmYIy7btimHi80eAavaoIVx7fuwZg//EiR0AvFkeKgP+Io7/Nif/myapdpKALgxAAu3RAW7Q3WC1/D8gFjOno904eYKdP/WCMt/2mYdvXy1pk/fEXdpfSm5NJK3Fab9/t9FsqcuNvnlADYHeK4N3GsZTzBjyeVbkP5+if4p4zRF5I8Xv/KRwBgkfdyEvmqxnU/WJdHySdOwNnbsFezZY1qeY2oeh49IYbRfmcmm6OOpvc9umn/126dh2KktgcxU57bxrm6nifQrzzca8FOT7Refi0TdY6Xu3WyvKY6IFTIna4+XCTFG+UoSGzH3q1IyjmmmguEtqp1ZNq3HmyO8TwdOrn9hD2E1Xc+sUz08SV9sn9yOyEXxPzdJgKhMeHw/ziAbtvotpeCb+eTxZkKZTpPhD1bS7dGIV2UUmgdbkfEzjFRKBWOSza7DliSY70Ptd+AU2n7smuwanAuHt4A9VeaPnh5AIBKISq6Zws+6q+CGkST/H6qWN4MsVZQhwQyFhzvCs9HSZjTmCf6aOUFhI7gLbAXcwgpvvwRi8Ipdj18tx7WA8OekHc9iurpKXMxbzr11kNIoQJlwyKeofxqQmyNqiuF2PFnL4/WIFUSbTBdEZR7VMYlWIJFaJUlsFU15UnMBCshCpMCk5BZhwNRIliZCx3lDepkGHfpCVOjarKA3hzjuKR6VCLI2UDYpnCrIoRKo4iSFUKGILQ8TGpKSqPGQ/c5af4KElpRh/kCosgIgUbAIAAA==)\n format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAAALsAA4AAAAABWAAAAKbAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoIYgXsLEAABNgIkAxwEIAWCdAcgG0AEAB6HcYyyEjO2Dy0eKLv4XvfsrGs+wIhEBOHOERRRTI2158fc/aln0WYmSJq8uTRSIgUyIVMqpfa/7uYHCqzWDuHREj0f5UuuL+ZAokTaYgiIs5sF5aUutjO7QhBlgMaYvCAIIqqoCggoq0+HjRlX70MGclDLyR3Z8fb0q/ectzCv30obmLesvO5hBhRhcp7kToaLpaRXpL0htKmb5C3rIgzUIwA1fnqrhHSbqXhA3v+sK1wRtcWuhdyg9E5tGXERkaAhroCGeNqCnJxAm6m1Sb58SICvFhXFWnVAAWQoYRjYADJUQQqIYm0uSZKkfpYv1sv21dm9b7kWbV6i3BQ2Z/sOf/hl+ezXH88LRz75pnLuq4/MO/Zx+eyHc3x9VDn3yfx9n1ILyusq3ps75y90fVZ657PJ2iXgF+odHbvzv7Lrm+uTsPR0WJqYcelN7180rHDDnbeWbrx0QHht49uXjCzffOsd5RsvGvHe4yF5o+Ej97/ZMP62+Z+3Wz/08CtZ/FezhpdvG/nb6PMhC9vNvHFx3Du9X47etewROuONg4L0v2eI+L9X7dt0evq+gNihfvWttiuWK4f8VmxWBM/+WK8b8F6Y9evfLf57r9SjuA2URBAobPm/Smni3y3+n1TqgQEACsl5awAI/5AetjNp65A+/38vDAUXaayPL4CMKHYkEFC0DlfIlbAMegyqlmGU2eSTO58TTHX2xLyWvlczc/wY7eDo5WxlYenKyMvNg9Go5MAatqis2Jty2oytLaPupFxOlsgFObsjM05dBxMHVwcMbeFma4xFh8jZxUr2e62Th09I7Bd96I2RI3gzYzqKcsHjqZzGjsamlojTwdmCy9bKFNm7IBcudRU5BU09BQ5eTm5coMaMAw==)\n format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0370-03FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,\n U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAAB44AA4AAAAAQKAAAB3hAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAbjgwcgTAGYACDFBEMCts8zA4Lg3oAATYCJAOHcAQgBYJ0ByAbBzazETFsHAB5cO4TRclghIL/MhHmoW/sii3JkCwIpmm2o8EQIDh8squu9JqOff+iQjf1biM+8RcrvTvece45JKlkeYjs6P9P9XT17F44fIAcwUEi6lMpFJE7/QM/t95fEYcIjIqRJjGQGgZRKYMR5URGpCKegjKkN0A2mNCCDHoYMKLNwKrDoCz0CH8K3PbrMABNLZi8I53ljHbl084I7Aei8kMtYPer3WN+IMvTyAlb90UTgh6oaMK1IYR1ivIDcHO5B9xTY1F62qQ9HEIjhNkz61vW+HudZavvL020NBMd6YD+zjgKcU/T8/TARaV9smT4+xfkBdsXj3TH3j2yfeQ9lg+03qBvQ9wBwB37GMoQVkRFd6mSKiXg9FinbYGrFHUTCLeqqGT3nsNGZAhuEBGRzNzvNV2uwkxa9CB7bxEPBPBXjjr+TggoogBsBgXLmAkEiTmEJTuICAyIahsQCBSwAFgAAQKYR8NumL32cfYGrTMzkhJA69ykyHjQuigsmQpakAvPTqKCGIQoSYAAClBI2A5uRIss/4QB2tCGlT7mCjUsgAHDt3LvJ0jCj14kSvTam+zU+y+Pv3Xvs/qjhVs3rWUVmnzdV8ecFzzauuRZvVwQvh3vqs7nLOxrfnPeVW/lOV12b9eqk+Az827t88kw5jsvffR2bnP20BoZ8VoqomU/ct6gJfWdrimvJhU8+eSwvFEuy+boVmyo2m10E1ZpqUNBlxlcaNg77hmfm/F2Ae143UrY0nAXzy0JG8mkuz3jZ5n7PxO34COVLwnYdbzneR5KWCRZ04BjJ0acBFRfYD3oqz5taBmtovX/F4+w7l8gQpiLECVGrDjxEhxCdViiI5LQJEuRKk26TFmy5TjqmFzH5TmBrshZJcpUYKh2DksdjgZNmrVo1abdBR06XdSFq1uvfoPGTJgyY86C62667a77HnjokceeeGrRM6+99d5Hnyz57Iuvvlm2YtWadQhzAxAAiwv20gVOjr6V+JlFgCSQjXZUKs4S58m1TGSqgoFAy2BJVtwLODKzaLk0n6AsaosBW45u1ruKoeCKfoUbebwPahazPbl0I6BHR0GODBweasY4TpaqHlDQUDDTcdmLiCALg2Ofha0WmzraagDkKks1OOEAR8B4JAr6WAfrY/0kI6iLLqXUtIyYQNGrJmnB4eBDnQnMD7HwJTA5ws0lp09SIkJIXkYrVQP0TT7AAqLvtk0SCoo0jJ9++W0DAuWyKxCY2wbcGJaPrrdHCSzI+9MAxKo6aPihqLu0kfR9FKykbJ7Had9D3ezAPEB1OQ7+B+eMNQUIkEcAdYfkIiBA/xVo+QpoyFsKJm4E9mEOCxeLY2loxrbQC+NwCo8Ijeg4GseiOMqCE9z4FptFoRiXgFVCeVflk8qryv8hrEZoJLQTLhC6CcOEK6r4zU0CsiQkQiu2h36YhHN4Bzli/KT66Or4u8gekPIuyrnKK8p/79hAaO7AI1yea78A9BjQo3rk2YHcD67eNPp/d9f5yg0ApsV///hqs2MXX1Fe/nj554UB+PkrL5yetz0//5zz3BkQYK/Pfuwh+CwBlA9LzW7VXsdQ5M7EwlanHsd5DRqZ2XvT/vbeZ79RfBMmTZkWJVqMWM+98NIrV40YM+4HbwgUQajeLQb4PyD+DTwGZrcFC78DxrdBvRfcPPTLN9umLdRpAWXkfrLYdejNrDbOng5Ojrvp62g4XHBUQRsmpHTc95NTokBwHxx+zu6jj/fToaiqf3GROhhTTEdiXY9rGW1LM3M62r7dkNaH6VCdd0X7eJs2CSX60LZ6nJ7e1UjqZIzWWV3tMeY8R7sis4d3aJ2k8Y79yZ7o8J50d7J/X7ozMiYxxI09WsecmfjcAa2VOmKOaK3DMEzTfWEY7j+8Z7fZQ0brODb1dF/90G51iQ6cio4eaaSSNWV5NVobz1ZxLZV0mIQLupNMSvdP2vopbKd/uPrm1BfqGEDBlXqWpHr+lENpf9pWxFVCbEcnqc6gLg1Ig0xSTQX4Y7Gm84Ki+Py/W5Wan13gh+0rKkbMpNAkiXUWchLPUzgqiTqCXHLI2F0bKKXc5VsFzYWJsRSpJoVTTWpNfDBAqBUlP8KwlBZSu0x6/gTu+Thhm5L83VjTozrvn+wK0J2k0gxx8d1+H9udNveA8ionCEr+6w6VTo2I1AZb4oLsMnC71Lof+2jn54a49toCh5ZyL1w8kya1nI3w3bVcQU1hi+casA2ljg0oOFVokRuvuUIhdB3jw2pRWwdccR6UCLOVeqSt7OGu9vfcpS4YiKbou0Rk81Q7bU0YckF2YxHzqMygngMbnTw2FwGkvYouIO+2OmQz7IsF5isedr6UELpy+ZuJZMD3OppCv1thaySckOHR9rk6lofOSaLnXKeFH9oImmol39KloaXX/BLPr1Bf7XzAldWt4jb8oMY21MhATsHCZir5gV+A/H3ZVWqz6uQLY8SRqia10N8d5NTxhiMknl6KBAyknZl1+Hc6hoSspAF2yLrktDDEEUkP4S5QZIJL2zx/pMsOH6vU+xbjb1yUFBsgbaia+6GinJ4Jz1NyJIKQi3qinfNSH02HqTDpSAbpRNZKJmGa5i35vnqEUbSwvZFmidKHa1PR9s3e/aBiy3eRsotyDm600fJQFB5Rr12vIA2EkqXPqA3/rYWgQTM1301jJa79AJEBbb/8fW3jQhGAKOLivlWMCTJwEwsDGSjiachUryUHmeJmhikioksURIEgbsHLKyRzMC0CmaFFH7J4+Gv9t1AxlEjLf77WlZCwMHzIyVVTAID4ekxNCTX2C41l0YYQmQ3kckt40p0e8L1vMHsCbjV9PfM6imxpaIRYq9FJPgBZADAOQ36u22ubThyoapr+X+rjiD/9NgT/pwIRq7vjre0EMKWEbw4Hq1oYjLWWKJlgO+DwGGIGexvcoABMn2a0cUDOEo6xeIZhGkWWkrYmUCMK5jSEN7e14mkFLcrJk2e7UFardo4c6pUjq/4XrvKAnvCy13lAa9MoD1P+L50tGb7cVv1oj0ZiLTewTP3/WNaue9+2uEZDMSaKg0TivITMbkP+Uj06Qv48PRftPIGYiTAQdA1oMSaKkLFryCvJipqJow3GeJZdgSQsFfKBXbI0r03OoXcWN/lpLiQ8xsMMZG3HYRr1RRId5REk0WRPGxKcrqUM76ad+dXnlFXe5axIrElK9DNqZIqQdcIVXj1G2DVNQ3GamHnfQqCjBxio65aOpZDZFJKql/XzWKiHbI8QLSIZjgfqU59tzb4h0OU4YD+Ido+KAw8WPiI9SAql918AhP3oNIVds0D4y98j36xRKFug9vWwMSSL4kYnrZtjFcI1IAFgdo3z5AChfSF3Ax+AySdHl7ZkuzzoyNX4NiZ5138FFAq9TrOOR6comDy+InOZQsFkhjRrGQBaa1eSinE7xANVwaCnnbFGVtehpCB40iCLN72ZTMpbi6CTfrVfE7VdhqP1qnSvkc+yQhv9hZCt3kWk1k04GLU+we1cDZdOLP87E535CsKPJmphHMKhxnOP3fmf7/7zbgUnXilNKOiL2XsrO7wga0ptktuqdo872SP39UcruBy/Lv9O+fcXlNERI/p8iYFQY9cHGZT0G75sZ/M5xtDNrRtFnydleurbSxR6oQ2w3HNX1VvYhjATcp1tqNU0jmwxlEiZe/Ydv5l/HyTuIbAfxUnDLLJYgOWWs+/cTYO9YycoJ0YByz3FnlqhgMvoiEOsYAy3B9/MMEDmjjnox0q/kfqgfG/UkKDGnxIFSFt/ThhJ4Oja23nUioF7LvA5zziW0keTniXxIe2nbQS9fi5f4Nbv/249Wl6cGc0pKMxLK6uEUyDf2D209L8Fb5668WFvnlaD9juIre1h0WoZfJCX4ipNNL5Dv67mbSxOUXpzrlzpbpUE2Vhb89ukfTc8nG/0zGqvRUePgHtZ2/3i/QIt3A6h1jIT5Frs7VIL4faOLuHWYvN7VxH0DclLAzclUevxG7eVecPzoqg/cNXZ18XRy/zVd8Hn9wvKZvOIPrEi10s/bituLc/Ory9mghb4FHy3fXG9qkPixVPGJ1rufAb/3xZG9Vl29uEARmZc5EJmeMPhbvzd9wx0En36GP/fsaqGKk7W/cpkcEiRuAtYiRH78rzDjgLHJu4zuAbYJ1tVvyogyMsXVx+zOy9yGjo62U/g1ZzCyPYOCfTP8+LlP7d1KY+Lqr/hS0txuyQmNKWp0lR8smaXNJY7ChF3sx4/VqGUqoyqLP9ZPAWTWguWRgnxTZ44+0cRmOYyK5gVoNT4uA7RfA7bN41H7sne+oW+wjYY/tjnE0ZLOkI5SbEb9khiTPilXrozjG5YqdT0E1uj+50LULN7Vuo97UcLg315lPI0gYAuTHBKywSFuojRAhU2bf1hfsXAt0cCnV0CMWdPxRbVzI2qX6qehYOav/7TGblKPb6HBzhoF6RR86cuLxn8HMINMW+c4rqzlj2rOgqYt8AZ/xRPWFHjZP55evb4nY9SaJdFdF3PxJnwfDd9i0S//JsStLlE5nnxMmVRAXp+DYRq/v24kz9FLRRMayPc/rl8SnlOIfmGUlPLOvIZzDMh1GOjVz8ReSuDlTfzuzzYX7xr2vOZt0DSazCTMemHypvnLUByzOHDgfmhmi5oHuCABz48Em9aWftQQk5gVkI8SPaRBk0U9hErfuzZb27pdUlCeTfV0EglPQh4a7T0bOMFc8JT3SkvG8fvpTwCH3dfBPhGEiYttXDutUenoUtHaGoENv0eby45NiknOj9TOPr68OTS+wHLGmkeCfB9JGx+1rmZxP7ukSBQqy7777PTxYtixP+3sNN/vygseypG/MMT7Gt+RC9qejrd0/qUfrrlEeygVTCIA+Y1wCP1obIDS1qMroCeqopToqesWaOXK8395IvBrqE3VyqGnXMPhUce8bOzirWS3HfBxzPdr/T9RV7edFBiI5mHCT6TkBR71BtkU8xxc8VzdRaG5haELIY93iY7p/JM3WTxJA70c+Pjj97q7JuBiVHepe8zd21YeB6JC9b1mwnajIfvIzHEaHvE0HsY+EbS0BavnVvHd1bCZ9Gt47umFPa8jNjyVM1ahIE/GOOkGrH9kKyGzhyYMjKYQQWaXnLO1XtOAM4nSDshIXsQjZ07R/JtoP9Wur64HvBT8OIfzUpQ6q2SLwurSyzGxbn5Guju/hUmqHISUhKBJkres0B+ZYzlDlb14u+7Mu2lJPg+4ukzyk+nwQIv5HmQa84Wv7syEuM1Edb5fnl2VGMR+/+CYURznzllLYyublUQSW2eDgskum8ZMM5T8zoSeCBDJF7hri8ksfm95j4vQ4paLnUwWa86F5/7xB/KjIktPOQxKFG83HeJ1uVJ9Nzv2ukbe/s9fKQ9xHV1Xq2sSHf6ciCflX4gkWHPcpD6/CYZKTzk5RIbbIjeQ6toFzsjr/LvyTIAfNoy/7w4U0wN2WFfnh25MFZtzs76+7ygJMZHzaEimzK3UDFkNEam+vY/tz/T8iiyb8CX6tUVY1nY/JgHjhO3Lt8iHBPl4fuFFWQKVvGqLpta+THQdtc4e8okA5+zyOFDxlbjqy1eBU1fJS2OLYLPMGkYri7EX4uXPBdEn30+LvJ+90eQLnfCeeXs+yP2sGilJ3fk7P88H6THI1l7s3b3abih2ChrG14Ng5sUF3Do1nZe7T6PLdUu+wpu2u2+Gxcn8mpizWJiAJ9MEqmmdc73Dt5A5kQamwfPdby9a3dbnh77UUg9ltPl/u/uYRLUX4TWrivnzbwkpYsyDQYX62EIr7Tf3yZlTQC1qrDYdMZ0VudsMMvvgw4l3c178py5VH8zq20RI/qYqPb49mvQQl+YR7W0DNTsE99S9tTKwjY6GHOh+EI60nzxEsfMS1KqLGDvBfRY5jy45WHlkyDUUrEPrkfcLjUXvtDxraYmFBec92+LC24v+QKsX0GjrktdWTuGjszJIf1b7o3807YCByi5DPXr+van26RH2PRMVH9jiMKhon4lxPpbHxUKLAEfjntJwuSC8rrb3Jv8f/JgahV9W8oevR58IO5rJX1lZXVoGy46jorrcsIKsVJTtEsAaW9SeXtbd5UZMWfO7h1SDiprbk+37PqlUZn14wE9A25++Psx+RqupX66YDgz3j678KTY6/lwRoNkwRb5nIJK0Iv4Ilxd2VbRVi2yvjURFKV8Ktvqhf+KH/ktLswC7ZMPMhrLRJrK05m2Tq4Otq4udiB4z4+yf4RqKbl+WclBwZkpHZkZQ5kZjj66llZEPSuLcEtror6FDRytTQz0tXfVMxVJt9kVGBAV7RtwsjrTGAzePk3IPBm8o5e8r0NxB5uYhYtPLwxRp4WaqqrsMrHSBs17m/uh05agM/lIhwE5y7YUsqNdWKidbWiwg3NYiK+1+gHbTfW1ltU18bB94hFUOWJslFwDtZxwsZXVUT77XNychcEWptdSfvlZWnEqOMOckuqS1OHUCiB63HdDWdXsC1yEWkGWSzoxDwkVRFm35zSj88/nsLAD02ufZ64u3ukeiT+adTj2eHUOdiA4xw+d7wU+tI7nVc8r7Fw/jO1/z/4w+uFR1aMK2n7MqDu6GDNiuqpnRi5/jC9fqNjdy0xL7ddBy9XFQOjrC/PWVjeDygnbPtXF+IF3l6eQWUMeYLkZc0sj+P5i3DBuzuEldbTwDJ1ZdaroBDIPJNrdT35P+BFP8qtat/NvVS1HvhzyefnWLxoW9XKpaqEUaajKa1qt0cAnyz5PehVOGCWq8YcS+Qnq/N73y+yiKj/mHkXOGCt9K+IW1lBafu7AuD5OpkOGC7saSV0to+irITznYxFpVLDi8EiyFaRFns3+I1HJkNPF60H4jeMdCDSakkb1pphTB6dXx5pc96cThoeXmOOqCmPMt3HryVYDBuUHK/czfAMCOjBvHL182P6wt0li6YC7WPKsNqtKvHu998mSmchr8RjI/pUN5+Ikg6y0WXjdK+sCcjosFlg0oCOQW8Umgk1d7vHigavUHqbVj6MFjCK/k3qYVl/+4qtdQWa2CvmD7uqRdwRMktYgbwZ5xsKUqSzw5s4S2MLIgyneJEoRl/BMdZYHGxJu+BH8DfaN0zdYNx7JfRL/PH8P924ZQk67uWoGnuOU0o+11J4FMsxLjt36+F+YApV75KCaBnTXTp5MZ3SUa/KvJbbHhdfE0RMfh/t7R61lbfPUddKKRt2EifoYO7sE5Ghwt3OQaw/o9RRmM7NBQTrpypPBpOP3bSlke+vwEAc7cpCtPSVki/S2Vl9dQ/2bxjq43Ukl3jaL8ySdgaLeyctz8eqA6ftHmaPHtux9t9/35+/sQHE/T7598C9++Qc0f3N7Q2FzE/nRDNNsJI+5AaQnjN8bf2J8n3nf+g47in3X+v1afwPDH5kfXdf7ZtfHzMfDa/4d103uGve4WrQdUdIafyrpQBITNrj7MHIP0N9N4G2z3li2sbrlC+Z/3WvqJ5HcDhpDztTENBxP1PvMH3bF9lCSYTwUCWEBj9DCq/1JdVd5/n2PbihBiN/jcyi/62UeqeYI2d71hLl6ustx7tt+b6y4KRYdsTlaIsA6JIDRjuoDiqIixpDwCAw1XmGozc0/WLx6pmP/qEbvIsEPr6O1MAaRqiEYS4gxFX6ComUARLZ3M9Bw7ayyU3QCljzQUQ7ehn+15HAEwnDalR1WqBKEPNxNPBYgesrCsVJ5CM9JgkBgBFBd8Gkm0IF1JCwtilOYgbiDtnqtH8+VTGg8PMOrNB4NBq+j1fCH4vlyVctO0QRY+mCvkOPxxCSU2MWfCTely70ygkpKYYH/Ia59b9gKppYalEXR6/vDUdHrGnCKY48PK69j9wCJxuV3QlqpWmr8JuzGcaIYlvZEpGwMsGpCLZYBYxFiH9lhiG2JfTfoD/EWQo6K6RdTRxKf3mFRQqQVREHDkg2GRSFHwtTej9w3MOhzr47pE76JV5zi8twkcQqTuQEmFlppPYyYllhBQPqR42YjQStkILp4HUIyjAON892A2Lt1ckphcaLnY5jjbZbeOYKGcseQDlOfDFUO2StuER8mxM0HwCR6pbmd89sbDQiAKfz2kv6DlyhRx2/3/IzhnWlRU7ajaHkAi2yPGWi4Ttx59aMOAFZI/6kKOVKmephgNZNyBx1h6sNzGS8Zjqhqfqdpsqiroh8lQNH3FezLASeMEXJU5hkslXA1GiRGu7jWeBJmp+gZi/2y3imCXkdfwxiwCiGqOIdTWCjO3vtHcQvrMCJuXgAs3dE+JtluqAa8TIkypM0119ofHXWNMdkF0XwVdCxVoLJTUAG3IOUOmsNYayM57IZgA0Iss2HJDMXMJGyPSB8jlxmJ23ioo8qX3ZeUj0KVieUSiFseWTfWAbf3NGR5LPwCKF2xLXHYtPeIbfWm1RVMU2knGBNzR45RCgrnh+lGiifmEsAoT6zi5pzF64EZRGxB4o4gBkQJn+W161Uxj6FC2yAM4aDsQADkoG5zHqSCdaPCNk8c6+yoLkh2RxeYYAIWiQTCvPIlERwkh0IA/mw60ItuWJ1vWjdZfGlGLLkUQa48VjhU7jl8aqGl7XVpdpaNopGH0vKk+nD0E8zHZakBL5c/x2z7fw7Ur42WQgfmroai7z7tq5Cew2p2lo3ywkMBI4zxlnYDuEEXU5+OfsiT77ACr1uWDwU5bkyc+16aE2Yr9y3KmcJ0MPx8tOiDoNww6nSWkNPyU18gF7WvvYcckRf6EtlzlO+312b9fEB28o/05PaNyS1icoLVjFtHjMG+lL+Sq2hyGhxzgqHuruaNhr3PLKbjqfXhxNqSbapIA4/J3FYaicpB2WpksCSEWYn4TULI0Z7numW3WvbS/AAo00eBcfhtQMRJSMxXxUkob3WV8OblfPkYqX0phdpvBfWluic7pWxcIjwUth1z07OgftNPLD9SESchO7m8dCjqnupqQxT03eBh2jdpNBE6x+GSipOLmBPiZCNW19K5zdK57051wc11GDO5hHIb5ZvmWjq5qJilGhGIo9EE/fdlqWWgs7vaPqopGDQ8zSXK2mvWaRNE2UP40rIW5DHcgiqS3c6g/WE0sgvkjxvAYlA/oN2kJ6eBm9E2+IJ6Q534g+ENjdL2M2+O6cd+cwWMx46WXPtSy26I1N6QSmOuoJ5Z9zRon11UfOTNyf60+HkO9AftCCaFoF034UpTfCol16HcHj5V13pxerwouRy2vpL8hGH2b5lXy8glodM1TAeTZaBuGlec3HyxG2mbAqptMETQ6lOPAGXNZd9zDn8VunXvPwTlZgDw5Z/FNwHgp+H5998Kc/eE9GZowCwUQIDxokkEYHZ/kzg5gk6f7OP/A12ENYj/gdyOYhpKywPaKn3jEtYgaTKzT1vRNljjGCamzrl2b3+0/W3KXKn1s9Y6wr1OIaYe+ihnX71ua/0W36EWplzPtAY6VPUE1xNC6z4hNQe5xqDHsqL42EeqqKJYVjuiFdY49FoiqPSjV4LQwiJUz1fQ0HYNs6SHH/wHf5FDu7MlT1ZsSB4z+0rmSm18rrVAUJ0WmjWU4rdzlaamulErO6hlofO1QGn8UZ/5Qgqvv8mjImuZoCxBr6sKCrq/WY2FDxPahiJFQ5zj/X5nVTpllJ30hylZ5Y+DJdBRMHcKmNuuxrKtzYKaD5VWomUmVWv+R6XtQs/HVKqanTUZIe2FpBuV4bqYghY8MBSXfuz4qy5DCNTb+6s6hVhYfS1NKNZAh3JYGcx2hgTWOTDlhK70Su0TIrByWM8MCawdVpdRtPtg/O4sQQuoBy1xt/dANpb7Rsu2xjQ4PFYUHZgrxAdWnVFdcWJZeYzaPH49Sr5a7prWiotzRN2a/fKaIR6OCjGEyOgieFFKNK8cQSja3C9ICG4SIg3xmyUC8YeowiUAcTUuBYitYw5AZGEUEMPDyB09YZZw6cFlYsTAsDjn43KE1gQSdkOfBwjwf8WkecNCABaBArUWHASYEQUNqbPAKaDkRYg46EURFedGn3Zj8GJpSffiKGKni/I2zOrfESijUKxoMZIR6NNDNITAzmFVpQSRe3RARaETtKighGrPakorRiPRbGaSVJEi6Gj0sHBGyWBKjpYiQRiIfEkSmlhKbY10RhkwZtZJa2OfXNqf0FzdkEQkujgtoSNM4pJMESOSjgSTZqQbjUWZERV6nbsuZw6s2HDlFVHtPgbqQUtOqseJAAA=)\n format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAACsUAA4AAAAAVCgAACq8AAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGmQbmWQchV4GYACDIBEMCvFc2nILhAoAATYCJAOIEAQgBYJ0ByAbwUVFRu7K4K3wKGrW3tQT/F8ncHL9WA+iQ7QIGY3GJUkUrj3IFSM3ZkP06sjHedMv9NTQeo+XL8dkXEi5mtV3TvoRkswS1PvHfz0HFx/cDSFHRgih8nVOR2BOZIAi8s0Bze1+xYgaYRSgYBIplRJS0iE1alRIjsGAkWlAy6A3VCpULDBpSTv97/drdv6+K7ZiUqElpjOECsXjxTtJXu4LVKFU0JqVsai3DQ7w9TQAjnRaM7JkmNFKD0Q1t3fVA612ZfvuEjbogAXTSEknJUXzBEV7339HpWwH/vn+57TgkghdV1mju01/GJHwqPb8nJpRBHc8Cvv/r7NsdYe9QYdwFHaZot2zZbhOUaWopCdptP9/eYwL9iyRRkvyzJysPYtywAvYBYgqHHuB0F2QK+SSoUuZk6JJ22XLEMM/tXSWzctS+qfbUuUJiXDr5OWSvtk0VCuqF4cKwiExEhsJjkEBMcoZw0pFCaWE6vdk2S/fBtHu1o3yLALSFKLEmx0fP/sRJaBwAXAYFDai1CH0uEDEiIFIlgyRKhWCjAyRKROCKgeiQTOUMT8gEChgCbACAgREDARY5JgzMPvsZ2wFYqfEkIggdgbJOwDEznUPDwIxyDmnkYKAB4ILP0AABSgI2kD+hwCiv4IBDngSZ/JMHtKGkpl/FpmVZ6mhanQZvWbl0X8MH7PGqvHWeH/WHNfHnTl2QonkRk3alDtVzUlTH9V3ZvK0pbKz8sxPfoNSUKksNL14ApJKyC8MavoEA+bzF/U5aC+5xSr75cs2HNKVts/XeudmC5odX7XbtmKzFbC/gvziCALnet+lLgeXGIFyyYMgm0OFPmqCH0BEh58gOkfOMvF8q8R6r16HW8AahDeurRj3m3Y5Xz2YJI/rRzHmzz1j/mRoes3uUSxvUOwJ4/8q0uZbrbXbZrtiXJ9aiGFhD/Wyp27pnnW5/t5UhxchJ1vvA05DexdvimfsTsUNWd1Gha1hfZ3RGliNg3gyu/GZtrtxp1jm7I0H3A3lULJ7vm4r+RYnR49v3GLbTryGNls7Ncvyoadxfxkm541y/OPIfWt91E8RSlZMKdN5wT7PAyP7iluLasu2YgtPVuWKx5+5WyGGFP88viuLa/Z9m7xQtfB4kwwFeaHhE1H4Gtue0hxBCT0LQwmrgdh520IrovXL/DJ9XMaRn9JmM73BHVXMU2Q/bKNeNy5ffV2nR0C+0DlS2th8BwMYOOw48BF13AknnSJJiiw58hQoUqZCjToNhowYM3OBBUs27Dhw5MxVqTIVKo0ZN2HSlGkzZt12x11z5i147Imnlmzasm3HW++898FHn3z3w0+//IZQzKcwlPFTQaBG0BJBCL4UIoUnBRF2iyeaNiQWfoAifnot0+81A4EhzsMS1vlt2mLfKw7tcBaWk7HyhipWo/J42pjAJKYwjRl5OZetYBVrWMdLeSNf28QWtrGDd3iPD/iIT/LnfOULvuKb/D13/HAQjo3cV/cqFDtckrMWlmIuUM4NKvmGWi5ZgmFS0NnbBPeLex8eJp+yqZdjUwLfAfGdkJwmyJkrM+thcOKnhbfsrHPHB+AGB14LLhTpm3Ak8h0li2d4jhdYDNwDhwe77tNNoN8OA2CI87CmECzH26V4lCkqUClv5I5NbGEbO/JPPH7hdyA7/d4wgCHOwxo52MAmtrCNndmjGeFmR4YjXjiWGXsH3uMDPuJTIBZPpiGgHFWooVjxBm/wBm/wRiGQnTEhZjDPb1kS2/I4YvcuYu/BB3zEp8VHO5pj7HrPsRVonLlFqy/cExvFqHe5/QoiueRwYct1Auu48h6JzKhi2/SUnSfy3IFdF9/dp9amDjlHZOaw6nwEUZZ0CCOcEEw2Cj+caRRYLASPUAj/QRN1EsYZclgpUkegR98+hqKDjKOHXGDlMBuJcIge5cTFMVnR40pVOaHmrxLG7JD01ifWvvvNEYoCBvawhwPmQIxQxLTPcfE6IcRJYUmIjaTYSUmQrBBy4qcoTkpio6z9VLSXqnioiYO6uOkJ55xY6FcEYhyAN5hjCxiWCM2qwhLvAD7DGiMCZ7FyEZcsz7JjbexRTuXAzpWJVKUqIcMciFsUMW4GyuzveN02B2veU4hnFrFZkiiHZS/hbEQFbNqB9/Y2xjufoPc1sfpZ30MnvPBu8OPViiCpA/g9TmygnFaPItLvIW8DRV6FcrbCReEANlgRgA9u2OFJxLEhxHn1CG2gwWygWSOErTjYV7AUOvDAb3BKRSjZQsm5jShWQpBUeOGHF/4NfqN4QQDnUXSCghV2w5LskAmRoGOd/+wbLPg675861oMgggj6moTt1PODA4H8f+u8guxz/XzcoUShqnPTuUERgUA/N9iTCH23Dklw48Ke1uil4vtpbPKUqdOEbsAw1+97ahbQgWXPo/WEEMG9Lazk6X4WWkLw5tAZc4Ay3dMGWRxuMmp11PnVgkDA365wWLB+Myjf1JwuD5kJFoAVdGJlYLYHBtS7xFrETtvl8Q24sK4Pb+D8H8j/JrexWOCx9jC+x9yZDLodd+8e34YelAkzEW0QSJzRqBPHbp8WKE04Ag3D/vjrn/8IwDOBICjY7yCUChxuuuUAAYL22GufQeYh/FDKYFxrPQ0RJXKhKwV/A7g/gglKETbXtWvTga5Tl249eqHEYtMnVphw/QYwMA26AYEogOKFCIUoHAoKv0MAlcMGwRF8tKEIqOEIEoExIUEeBZ8Xf736Tg/rnXPDq7j/PLNNNEA50az1m2uUzSGQeaMbOfJgQb+ty4JYR82ob7i4AfxcSrqsahM4GOsWw/7fZvqgCfLvA//A6Z+KAkKQuwFt904nNINoV6hiDRJJ9WMi+9vVATRh4YGlEtVp027IpHu2vPcfkQ7LcqNMludlcV2U0Cy0WGgNof1Ch4VEhMSEZIWUhXSFwoXahA8ihH/////tP8BSQurUa3fdsCn3bfsQ0mHhcd/VQnuFDh61jJBSsSK/tUE4RwnkCFBB/gXpkPKr8Xf6/97/ez6nrWaat0jK6iWJ4kSbWr3ImcTK95UrlguRVtchZNXuqvZxWJ5v1BL3wsnGPCpv3/wUqZ557oVFS9KkW7Zi1Zp1L5FllL0PCYpMn33x1TffZfkBgYKHyv+wHBANgDIB+Ass/Q6seSRA2x6UrwG6SpT6mCOw0JBclApUdzRUqtlDlYXWZoNyVJsiQI2kjIbYHS8vBF6IBApjOcZbBLOjAZAapRSdi0RlVEgdDPsQojfJMC2tHsyLNu+O5oPz+n1O4bMCZxOAu26FV7gFtmzdYJDGEES02VWxGbvvKDKbmzmgzfnb6TOJ1yYmO0NZL2UQyhNPvtKwDY2FQA3YSuqmdEKThQ7ALo7NoKy0NK6TfnMrmWM+Ax8Oq5wCX8W8ylxJL2vCMDVMrxiqZPOYS33ajDn4+VTaBEQmxKWY2d6IRSuMd6veGk5OmGB6wx1zANMWclWsRtZGKkMtTkU//jP7//2j5CfnWIBJMKGCs+qr+Sjf60+JacwbPcE3fGxCNfZnK463Z6AIXUhnLRWZJWHFFhkWCBS7qQYo8d+tqwQNhOvasubhhqVibhDuO1QTRp/CiA+qvWde8aFB7oHUPPZbNxKNS9yORm7IeULvrOYcQkSmBaqbjSbvvhm6UVFGu2IH2rvc/muVn9qolVjv7SyiXqaTi1KOtFn5GCs7MXahx7JpN0Ycb0XrQz2KjSjwHer4qDo8NO+XKCG9zW2SONSzjkhY9oRqG+G+c6N1beyYdiKYoQ1psI5X+N67MEHVE6hqW/t8OxROxb40I9OSFj9oEka2i2tIGMihToDCmfJeW1sLIYifk7SpUE2GF0NmQnV4T4Ba0EYzGhD3x61zNWhwHJZs9LwL75ZRjakYOb08mw7NRhTTqHj1USJZe5JGWJADe906Ia94s2GL852aXIICBVruhhniOuaQ4WS1D1kKtljxoKDbSZxrTitUp0BJu/Ink9G5lsQ8p4Nf/x/pVv8Nkx9Gv8/01E7Gp/4/N/Vx1hKdfHD869fHH8QknNNtdYFFJbQ7zV217bVfbSqiCvjS/tPB0MHKXb8+oiVd6gWgVK/kZDXr4whK+UcXfW4csTIjgRvCXXI3BE4YWdSoLyRc1Qb3R6UQPql6WZzxacfHUMizcbEbeqy8srH6lFvMkWSqHSNXyjdz2vqOWuR5LC5vLaPi/Bt6CBX96AYMWEoJqaF31cdg9m2U6oTb5KmmYVND+U/xSkZ59lLpDb3Z2suHblNfUkRanxnQ7ZanM64+572Y6WWMb5QdHf2c7DzwXum2nT5TD6bHXa51610RHmkFTyIrnC9IGzX6o5Yl4emM5lNK5pweC2UueQVv3Q33IH8yQShn8EUl5KCich9ZUmNKeEY5txrRLt/9WcrdLi1zK6raiZwyQm5G6GAblVJwneyeqzt1VqjSSfIrU85b5lFGaD50ABTCtcq5iR7nNKJlu1E0dxp26X9lLgYRLL+52qi9rkGHuCTuEfJiqtvUd5z2YqDuPWhZEDd2a6MAOVY2k1V5uOOS9zIz0V0SVjTg0VJJ7e9V9Rb+6IINUotrMcmlhl074e0Zca1btCobazgtreiB0ruHLg1KHsFig7WYevYAZVKMjVeXehrhkvOaryWu8W6UtSMTVeLF5U5IbXB4KT3037btwSl9Y9G3sBRxGMh1Fl1Df0P0CLkjtHXz2C1plHvcpy12CfmVPkt5NBnzqtUorppIwaPidYNnG7a24NW1BCgB3g3XloRYFdhMcTVzU5lBGRYTOI4779l9D6u8suB+sguMoCyhnqwNIZXOD6FjSV2cfb5hXMtSmgeaJoNT2jHnGGLlx+AovHoDk6gMob4H+Se2aAh5REtyqCDibkkbS7jKTptLBa73SwWnKHHRHCJU83Yd9VXgwxnF0E5/zsMed3vksZRhwYbJjFIr8ICmEMb6zqklQXhxuWa1D8VbI9ZK/tVuPdAJGQNOqAVBCl4u9d/D9hQr+4+27aaV/39YH8PW1Sn9arFqS5ikZZype7VLr9Ir8JtTbgp3r7mI2vIAGCmAs+FQT50iNFnTWAF9dbt/mQyfsANIAgzLC03WRhk9WYknOm0n3dMAJ6uCn3uIODyZBmkl3PSa57Lh1QSSTbZJ3AWyk5tJ7OeQhJ7nDc1dVb52UYipp/xw42Eqr8Ym5Gnc4tfNftlJ6LS9iuvH+uLcUkgHKR+75TiCI3eNgvgwWrJhCMH5sFAXxpNduzOJtnf07vahQXklEZ+39E3i+p2sjHLmpei8Stni+OgljmpY09h3SIauarooGpBA2WG0O7ydf9FySk/xhWf5QWqnOYdqEW2WZeDL7yjvsD6d9CjKvkl8O8vxDMoCIxaXq0HZssU2mT3zs1+DbXRKhK6nN9TV0E5mRCpmrZYAe6+Mya9751KVpr+4MTe11rq04UblLjT1J6ZTea2d88NB4IZZkwdlnRbQeMMKFNFelWUTNd91KCCjCce8kpSpdLH+vC7pw0aPyztF/Z6++MMCtYj2FSURcv3sCi2UoeaDisijpF6pZId2ccKyA9s02bVGIvERR4fRQaXa8Omo0ail0JvKkBLTyCGPhyRd2r10JglV6s2jjYaZwMPUqbd1KcgUq1M4yeksHLNycz2p53fvpQHbGO60IOag4STPiry6Vymld9H8/Zf0kR5agIiAz51ZYcchXOCWWn7WjZPYwkzl5nSMQKkTYLL+l+8GAwGhbxLe5s5L47ECXw/TruOmJJn7zzPKfpeKbVz2ktKbp1NKfAzTcjx+8CP4rpTiIJXfhUb1O5QfzVf1OQEDfz/YOz6DOolp7lTYSwHn4zPHK2QTa+SMEqsGd6RHx4lxwNLH0d5OgGXhTdGLfM8e9bIejThTEGc0OFQ0wrzAKEexpTiRGO8QS/QHXuvoQ97B8DabM6MZHP6U483Kadctvc9k1XVHUQ9dqKWJhJfyOt6hbt/ruJb5e1W3vGoR/HiU4kE+OcopKaFMZl5z9H791VsPGvheFC82CjJf3x3ISb9GikqIDbqYFi3l0RJpXu3fPHu3jzBUNMTgebg1yaDmF5NTixMAV1SW2tCcmn61haKf1tCQnNLcQM3Emdp6GenbuFsbmlp7F1l7WxztlkxtaMI1NlL1PceY+rBmP4IMrD2sjcxsPA317Tysfnzy1ToTTvLVAi+yX3jH1XC3CC2afsPYYFPJ2PV0O7uioAv+pjopOsm1jf+Lxns/lt1IhlqTuj4LyNpjo8KYYI8mlobYlMiyHNTRTbcIWoSFjqS0jbqOp52xhWsQcC/k8wcnw3IxpJmuR9e+t0zSE43JD2bexh8Eq5TsA1bN4a6iIWmG0e2vLUFBdyW87IN9qoFYSHkE8wMiIfTQ1rfqkLuZWEiqwTvryErgv/JE3F68RDwYb1vO6nQiULxUxmGCK86ZcaR7b7wDnHzJWdJRcod5x/0P3cyEdGFffecUdFZjb763xwxwHN4p3QGamxSN1CEl0U7KAXp8rRhOvAY0LwfqLam82V2RQ8t811o6+/b10hmU0gDH69THtNzkBWTpxBvKKjUz7RHqJTxjPginNPFOHgJZZvp3yeBEqxprUmZ+WFZZVTZjBvX92e3X851PeE+kN7yAvZ4y1BSkOJ0E/7NcSiij/c/G2Nzus1HX2E6/01GiKR2Xxv/3FbDUxwwrzkwk51BTL1VmFCBUUHTfnS2dtWBalAaeGPs4cfzz1MSsLdx9ZrjwqtXkdLa/OmVqF7e69gn1fOTzAs+NDp54WmJkckFHZUENPS1GV44F5L52Vos8Qf//PlwlpU7dWmefX/vCOfcArflXv8CmyQLzgOZaG3rYWren/kVMQm5/cUneAGhbG4j2GoyKFu/lL3sK6uNygaRmd8lQqbTBqJv/Vu4//LN6IzLpZqiUm2RwM3Hg9ZOR4TdPWMNcYyvKf5WU/ijISU0pzOX12h9IJocHp1GW0yjLmVSQXU9S0q2zdEtkxnmvUgqCdm/HUZ7+0N6j0GxGtsAcqzq+gf66xfvTuSr0qKVRX/XLmNhCZnlx7jCwpIb+GZcVjiuQFY4dB7UrEtr12praddog3ZVVhLol7x5bIO8eNwxe5UikdKaxZQrZ0iXQLzDS72JcgCMDqV+f7Lv5cLazo76ZGGBgXjasuo5/9hDrv7F/fLKnd1CuUd4qy8IoN3+bcIfrajTqVqHfhUunzNRlTxK2CkOpK9huQtq5UtOZs5PdUWxf2b/TiGLDDxx6TncdIz2+I+33y2e1q4F9PzthqS/u3fufnivt1zTXQjhzzEvtVIO8j7rgxb/Fa0aUvQXVB/EelLhJkQl6k8gCfaJr3/vvTdAMWPri23djwxfDqjxPRQhRBpLG/67sKDZxqJErsmJZDmuUiySWJBCjqUTaQTBJntu/dfjXO5RCqEL27TxZ1qsdO3tQghsje9sbKksG7nP/znk7saerriXvQPcYLVTeOtpYIw/TznP6WBK7NoZwyhMiZpe/8f23/rFDWEBAHVUfhVmqrgYsvbDm0XwUqI6meqYOA5ZOrpn85Akmw0OGfnhfehdfQ4ksMnvJUMZPcENg5/DCsLyQyMgkF0DU1xWhIWK9pIH+hSoeME+CkfrlekcNh0nLpBGIerSWINVLH2F58Ov1g2cfl6aHEyjUlKiCYiDD/qudA2+ene198r0d1RSxK+Jb4FfVVR2WpY3AfgH6ofGr1/ynKHyW1/PQRmXhofkygtvZwdq49eLzHh4jVrep+BcfnyEwL2h+TFNnaaS3sTYVKCJ3/R7ma7G1tHWwNdE0F24h6Hv8g333+VFfA34/PMxg3uZC/QFfJWWvHxn73nN9npnHb3y3qbKvuJKXmXKlMhflBeaE5kfpUtHW6Nsp0TKf9XnNR+hIZ2tuzRaGALkjeKsXev66fyRc9rhlbGOC8MfM+jf8ymNKwUyKtLUfx1z+7nFaU2F8Rh2tFMTAmvLt3OpcWRthdbHkVVjS7ZiRtMaS8tya+GD7klh/7zuxHleCO/nmt0vQpOypSyNpo2VXyurjHheHg2EEYR6whCHAEh7VXASja/RluAvYF9zC7w8gyNrqrec17dfrr7S117yArH/7MZ0PhSfoLcK99AewPntg6EQbAf3jMm/hj+Mdh8e4jm6MCArQOwjjooJBgkF84aIdglj6MJzQSXESX7/94PHShvdZn7MvnyzdebAGXvNxz58f8cw/MnzEFXURFKu0qo/lSW+k8NZ8zwGh3p0hwFGGymKAZSAGUOl0uhhOnA5QkhSbJGLLRkp/YY3A/quDN9faTj2+dPJxKygllRaVFsGhq89rEdEVOPGf9cik9O66Oz3UZmDu9li7h5FCPdM99ZkXSCXjtpGDj5joK5+KRW15vmTbVtqL6C/nW03ZhrmDNor3x8szw3eD8/DxLYADhlpwVtbqSfQA5mb+3cx+s+Z5q+ae9MK7oJbiWRjFYt+BcYpoHPcMWsKIwZGasK9PM4r6Pjxjae9g8c0l++VUzA4fHSyfARfRn68lhm4FJcsxAAct+LCgjMkbb2R/DOAGSu+R6ebVHy3K2iilD8CYb5FP6JNIfeyfxdzkR7sCaJMldG3XeJZHhpmMVohtxn1C2GxI6WXegsNcLNkZFbDd2kprDb7OuNmiucpavCPv4O7rQdqmbbeCq+jf3VMjk0FUfFSz0MMfHx9GrHgq27gGRRa0ZZSUZjkHXRq+9Uqa8am/+H5Gx4Wad1YVLRmlD4Dfsj+2ZMIWlXKbcQfCfYODHTJcRU3QDMABA6wZyoypw+KBxASHOGIA8Pco9yseUJMu+i6nrqltOUg4fCZIXqFp6AiML2HR8dZTr/eINPdcuzq2EPEMrKuvBeC7qoyJiqTOvrzQLm/S5hrphY1eYMyG+5ESfDJi2XzmmBNvtvu0KwQZysDXo4zNiKucRvY/rDI4iNXG/13OpC3xSP/jrIn+tUotWOSR/sPA9zQ8y865tjjV1bSYndn4DLTWeb+viY9MhMSzMgD7vBkfFUKdGVsXxQ2g+ysfUZosi7AWha3pVQ/BRfT/7omJ4aAkFmILYJ8zMMFRzPEdqT8DLMyqR+nXbPIJtrmXydXzcDKsqES6T7MCGMo9qHiHvEaFmyAlfOR8iMVelauWpmHm6av9HQMbN4uYxkmBHt6htvo6fjr8aq3WFtG2+dvXGSlTjiFX3RgYpywiyS/RCvZGaOJmabO1WvKaWkJxJQZ8evEJxVm1E7QJHMgkBQQkPmjvmYbxYcbgt+l5vWo+hjIdPvziGdO4uVdXOWdvmvJN0K37r6oKg69HuYQnTI4HLVfCd1V5gNPyFPfYqWL4dv191lN3QaLI459FP4ueEEXcBR/DWy7usdOTB+TWvDgXRXQ5SvhcfM8Le50I3HtMYhaUSmJKHSmilvuMy+VSISqQLt21cWPq83z+/Kf7SN/11S4ZUdJ97f2zLxvsGuw351CEu1qgw1kMuFvFQPg1q4ljXdzusey5sHt7/31tURJdunMVBh6+n8+f/zx7o2ftujSYfmatYT7NNLgk11RoePSUqaW/Sx1S13+XakzV6Kj7OWLsEuYKza1NMM8/ylFsnIEfDsMUr8JoFrsObMLENG3fLuNVl/DUgcWj8zMH6ULrjJViwaFH2OKlKFU82oYDWV5UqDksQRW+2iRaOgVxxbMsXquuw6OnvrydvrX0qHMoIDEu2C+5PAGP1qgG3Q8hNakP7tUkp2ckk7OyfSpn54IvF5QkZxQUV0eNjddEF5WmUkrKAy/fHveuyaWlZiij4uJIj8Zi1sdiQx7G2cHGo0NCx6LurQIId++TLVkIuodN0L2mG6+rPaKtHq9+TT2BRR7jT6GAcw9zzzTzGxP08ztuMqx0pfQzvJrQkxsh02f1FLNC7jKQlO6SKsq1cDf7HN/7ar2SQ0FOFcHMXlstqXMZXg1sU8s76LW7jITGCmpuHclD76wZWfOwWZN+iJtS0uEW+z1G+80IRl565+TN0rQOXKCb8Fl66dllEQFn7XilocR2aD+V4lXV+2Rd3lZXU33jYV8Q/dbDyrrWK8UFni5Wji4BmXGh0YtZuTg5WXr/S22rPUa4psl7bfOdQFtLtTChob6O72rNUVLzLNPeaDLJcJJpPzvRbWt0f3LCaK7XFvyGO63PWydFJcf5BDdEtRHlMuL1TOVl69h9WpMz08tzyaru+8wdY0/bHmfmhliAnbqsC6isRTHx6fUaYP/Ue4w0iWZ6dfV8TVXCba1VQnz1T6ChLxY5F/jLm1IS4i5pxkhDuZoNlif/EUOI25WE7rhUpY/YaikYmqh6ZYHMpmAdrQ7wx4Z9iyr9fQsq/PwLin39iov/CSgYnlNSNjRSOGtkSjQyhBOFNsRSYk1jTXJpcnUjP/9nnTIdaKmwJZ7eR/TWk/6jev7ceaVqUkMhvjwxyNff39K0I48GPEUXrYz0VaXEd88pGcmcrPa4HBufWRnte1bPQWtv0Qmaf3M8Je1aQkCNuKmKzjkDFdnQSsQO+CZhlV20GATklGPg8sXK8Cm1UiGmciOe5ERuKTQ3WNjOlgbIeKst/N/HC6z/tjgBS4eCp3+aPFYlr5Ny4VB32f4C99oQGs7fzEZW8sxPd/yRdHhXUW3/RDHJI5wALFc9awZHKyoHhxuMapkjcjdHrl3GermFWlm6kLxNPd1CLS+4BiJucL4R/E4kukb0D7N58AeGkQK94kMcGUjd6u3+8YXp7vba68QQLZOCYdVcioqfqYsYEQJhXG5yd9zWz2Lp/WXdfI9NSw0ECCPWvNHThxfBzsDQTN80MtbA1MApgRIqGjYyNyMVYNNsTbngVpFL27o55Gt5WVrqx4XxF6/m1PyjMBFRNU3PL+7ZR3Uo3kENBdk0pc05+86miFiGOmjEXMx+aQpi6aJ7Cl/4Ro4kjrJsvSQoMQFLZ9wQEcitLYmOqy3JANBl2N6fe8XsGe+qTbg0qydr5DJIs84wrp3t7LvQc9rxVAU3+bR8QIizhZyh640Cm8wL9llzVi4+/nbPRcF0lR+b0a1pveac0zjYVlq93r60Yh0QGOvrRw280E+gfewZDOuwkLZQN2238Xu4DbthT3Ed7beKi6LPv9PIqI7WCCkxqDYUeLsRjlADLU38nOTRcmFFLTxZ+4+kpReArJ7AD5Zy55rwP09o5IwXSdEr5MLgnbnk5CvRoZKj2dnPCg08hlJSHfqkFGveyV/PupFk4IlL5dzDkWXglF9/qzG7YSwpoWxtALQf2m0NbLkq5UfPdlIOSsMkfih0iH6hY/+sZtGCnE8aFMZ73xkt16yJ+7tCyfO1FjEsivecvVM0oDDqFmTTu2KQ1fjMu6fPJsiyw1eb2vCcAdqkg/Was9QxFEJSR+UaWjOVmRCSB+ad/KTLf4upXNAi35bF87fkcnwz37nfHH7NVUdhlvQ1D4R6c+YSuYjtIxvInNKj0VfgJlYX/fc5JTdzOlzVU9N7jBRyb/fv6/A5XPOVcfKNqADDBErq14w7weqeah6TIeRFFsl/A/j+2ifUzNrHc311T7My6he07z/2LL4skMm1P4FSDFJe79jKi5uLmss5vnKHgEhEkm1cuKNTbERbbMxAbIyRtaS2jrSUjpaHtq60jJYeyG4uEmPTnU52u6m1HTxZIx2HC4imOh8Nc1USPnJaUUcceLb4/PSdElEFlIHwi25TwFok6KvvlIyi5fWngKfbJGTv9zVwSETlRzK8vD1mIPuMr74DBVXGYFwlejxc1NBuQubVALf7gL+CsQ0KdnIMJTqL2gYGujgHBdnBIVEkO0cslU8sLQe4wnqX6i4zF8lBcuFyoM+/XSSf+7A84VASerT7wbVwb2G+2qhD0T8OHsOyd8V3ZXYldLFiDx7+7E8+zFdPFAm6Sp/FDl5KSMpMArVNYWqmHJWS6bAvhJZLyw3Z5/BlqnDacbroQgqod1F1SnVgtsRcUqfeuZmbIS2qhyvjpUOjfP0DXJZoS62G05spi/WM4zOefhhQdnLGoKdHJLQN9Xd6n1IF7FNGiTpanmOJ5PIjuizTll9zqfJaCxjKgz1GGDm85iAVtMgWKp/vdTft2D3NDx+Vn501FHMkGyU1lBTn1WYhibcJhaeVLsm5Oqk4aEo4Gs84zLbMGnVjZhJO1bTj07qZh97vnp9NV+leLm3PoVa2Qm3ulYp2ak5pK1JVhRvOSkd3d49S09A9gJ/d+H8IzE4FpAQ0VzdHYb2jsfVxuyvC7BCcIp2/nOYs0Kx50CgplxITX5tHjmlIwHpVsnoka+kb6aqbGBsZtoBI6uFUXnZE8Lm+MSmSnBcVXlOeRm24Vip7f+nlHUxCvqzxaW4RKwsrDTUT0/hz5+Eq04nZ4FQwkRIAWdqRkQpZyqn+tdE81y37axu6/YpUiPQpiUhIHLOgTMiZKKlrGCnJyZ9XSuSbJfX92Q0pie2Qbadv8FVDV9M7MjszMeZybXJm5VVUoVpVNp/bpZJU99hql5PnVC1NQ4uZqsp5Sx0tQxNQ28jgmKgBc8Nu70dlpVO3DZcOX/r3QvWJW//8nenJCz+Oqxdr9Ys/ABsj/AEwIuT3E+a4x0oPHJ4lJv7af/7ZtaGb/0J/3VKw68IfPGG354td1uz62Auf++nlsRr7vCEzPA6KdaKtHh6I0ll6lQE/dZAulc659gEY/2umObnq4q9meJVOMFsaOqC/bMlRWWjA3WqAdysY8HesdqCMQAfldm+um1ss3XbaLttte1K91+Ds/wdm/0EzAo8AqpfX1sZEg13qLqlQ0LoRa8jNNbOcZyKUP/r7aTJLC/PQ4vhszHqY3zl5qet3aIMbsbLcXEXj/sYRd3VrdCPIu7mpOe5fSJDBy+8gG6csQtHKtq8JN9frxTzboZphfR0wCUre9k6HQuVGLKaba3zc35egZgGlqieOLACRg7oXfBrknt+M552Nyfltr7GdpfmKPejTjYY19BMiGELNSpsEaTveYNxfLtQ93b/UDUR85YleF0vkwdtoqxY4UycFy+Dcs5a4pC3DmbrEllPzSCgL9p6YsvbYpO39iVXemrzgbM4BnHv9fw4HYKeAowxB9rC3a1+yNlgjC/2HaDD+yE/VO9NuuMGw/bqAXngsb74P8l+TX1dg03VyYTmsfeBFpdWrds+urEbXXtagX9vbmQteQ3DL3/dBVwq15VQR+eLrM8XyHekyOPBRbYKFPADckF9nzgMKpbIMdjrznVOq+0CMMn87R9YIbOzW3kc5xzWYsdq6bbjzS7EePLE3I9g7hbyTcGHH2YJyTe8nWo4UTlSfg6CvNSrcykQ6Db/Byydf1KuLp31cM2j7jdrgZvm/CuLyuB8dlCPx5S72w0Ly+JGletr0iUVEZG8uK4silB3bBfdX9tGYllEhbfiNG7QnmhR4Ls6rAWCr/iY4UeVz5PTqfr5pppwFn7OD8twschLEGf0/3ATKLvj+38OWGGx5nz4uG9TP+huOnIuRGwBqzHbpEyi+s5gdVGTBhfOfdA3UuN5nhP0V3RuhHFV52yYY+unHgbZDH+fyPPsJk4+rj+h0FZERB2WyVO+UxkRqtlf/0T9gGbDD3PIIUDZYxb3wuum5VX/H75sA8OJPvBIAvBMWv/068HdhlprCgBkKIMB47gIHwHzgseqf0UkhOseKhs7mpbX+bW/VshzqCg2lvRU1iYLuIr/5yXt589k3pJdpYpXkYMtkugocKvJEywF51RjhORYGWuAMF8ijAmkwQUixvdYH5Oh0svEyGC9lTQK5Tjn/keR/FR1svzV3eVFXQ3PLFkaMq8PE3p48RVx/8yffMblkusvwR7OqTpLIy6EWN3DeampDzGeSdJeS3fc4OO6j1jGg1OZwt1k2+4iCauCE5GOtdjRPFUyJqRXPQeAkyG5SnCaV66hx3lNUWwK38ZUdH+XEbg4NF+kfVY1ooDb/5+ryONrb2Vx3r0JocauxNj+Uukp4QMPp+t3JOkNQmF3V1lyfdWDz9VCpUT5qc+M3DRxvD6svizteK2w7HI4d78eQ4ylUWEdcnCCXHqN8di1yy18p7Rz3/Z62XTz1kiJuKCrqLp0tqDB+CycRe66wJsMu3kXWjzzzR0nwmaH7ic1Po8uexltxmBraKOowwnToEief/lA4TpXi+KVyrOf70eV+xjWXdjFnUtzwg7gPCeTte7g8aMiLcm4yO6kodazM890vqJaRKF+XrO6gqFxEZF3tzxUq5T2Flsj1IuAzBZpakCONSnWYvw0DmHbiFCuLBeZQhwIcYQNlmMFwnMxNus8liWSGjBCVGsOW+8TlHt0ZCwezVsRJjY+mIAjnKlXovtytXeCiNxxJSjbxkLiWVRD3iHejiF3Wr5ysUuLLe7WDnPOGI/mhEN8IaP3SuqY58V6f7gJlrUGah9edkQEB0YBGkBUsBGAZKFAbwkGAyUVoSGMFcDzQ7Y/g4LI/Chf/XHR/Lgb2xxITvT/OQTWry8UKk447wSExJD8f33AhGSlpUy2kH6yqn+gdaBjkKcG0EhBDFtYiTMu8ve1NipwJL4kkEexhEU5Gbp8IonsRNjIpzE8EhYbEINmzKkhGP+tnTOJ3Cu4OD1GWNKVRTKLAQqzb09dbojHShGTCz3MiiLDmlzQ21NEztXRCHEetVJlzSc29OgAA)\n format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,\n U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAAAMAAA4AAAAABWwAAAKuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoIYgXkLEAABNgIkAxwEIAWDAAcgG0oEAB6D426JQgSiDJGrY+EepR5ejwf4/fWd+/C1EBKYZDS7sRFxHTf9uCJn/m9Of4qsOwRQBbqEex0QSbKziM9Pj42dA85/tYTLU84Cj+f+PIAlq3AtV5GCrQWUqr11TNFedSEUjKs7rSju46fX7RWCSHFAeYQcQRBEKIqiAgIKlGZBdO5a3w4akEBWj6orkgSzThrq5iF0WjfiKGe7e/0dAHkwOR8nW+GblHR72hyEGmzEl02NcDPu9oBKt35NVVBcoyEuIJNhau72SE3EHkhapkdqCiZGhBhliQWUJVETSCQCNfr8o/boWoBjI3miLHqQC4ojH22AaUBxFAUpIBJlJeIVGIvLFI6PlFi4hGYVs0brZ4ZZlT0rbz1SLT+50xlW3X269vh2x+CpO/n7bw02ebvIys0wMkpteMHUIq4PGfxCRBdKjxXGaDRIc42rK+a/qgeebsfBvjGMiQ14cnJjW8fSe6fHlr2NIrgbeH2jS+k9X+md9WJP/5IvZ8LRg1cQ3gz+dJMePnr2/6ZSiy3c9rHc87Zj4tqOx0WLe1U0VR2OOEt9kq4gV/r/NBEyVbPvpL70poCoTunu3LVVZ4nW3xWV8gAKP5VqBMD10Pruq+7/52x5c4B8EQjkzs5oyJ/1JzxT0mgEACA3XjUZACFDut7UuAEqPZepikCuTcprJBVAcSJREzIBeaYSC4kSGAs2BJU5IFLcQjt+sxNAqr55kwOx947iBrvVCRYwpBuDQusVLFWyFCmCVcEwCg8JVsPPK1GwEjxesNZJv6dyHtID6dYP8UnUCvPAemHBGiA+jD6CVgilD8+tWyfSPRiYXwVJDNNkydPUzvrRmeBZvFdArqSTDSCJ3ALcvDp0JBHWjTK8pb0Qvx7N35CkXo0yFRq1qZAgVaJkYiA7H3AA)\n format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0370-03FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,\n U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAAB38AA4AAAAAQFAAAB2lAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAbjgwcgTAGYACDFBEMCtpgyyoLg3oAATYCJAOHcAQgBYMAByAbrzVFB2LYOABo7N+XKCoG0eD/OoEbQ/R9SCk6Co0tw5CRuS8arZIo5VZbrrY7musceT/cbsXfaJajqVAAOHS7rE8Nn8E0r4xcj9HQSGLyENo9/J/JJtkHuhJYwShF1IA6foB35wd+br2/gj4YtEodZQCDdvSQBQNGiaBUW0hECBYl9qgQBtJtn2AVZZEzThmyRLewajg+hAIAdLoB5bmyit47tW/GLfGMZG+h//8rgFZ49FiVpWy2tGZniPyORbvwKuEd0KOOc6348XObtI1W8dDIX5AUyVXE7t+boXK2LbWT3F8dhkf+XpfZ6vt/TbSGQreO4Vg3o8h3IegPpt+bpGiAi2r11tJK+v4m2tzISLthXVAO6JBCXDGsfcBcB6Ho0lRpytRpey7aMh2wOd/POiNw2t4rRgif8IlggjHafX/fcy1BZNpqHogH+uw11Nr+nq4NgppcfiAEFEEA1oaCpc8AgsgMgoQC4acE4ootCAQKmAeYBwIEMBdFB2C233H3/SkfGXvGSZSPDTv6RMoneZ91CmXIiUefcQohCEGiAAEUoMBTBXeihZZ/wgB96MMypQZqmKdZPXzQjEIQPkzdzMx5F7pHSX7VYxqc2zyfPbE+8nv+gzX0A9fMMYTOgwm9iCQbTxy5blecK0pwLZNcmpRFOid1I3yi2E2ImXRhM5dfHFde8kMgF+c243zuLR90nqpa9gtDHPabzAjD54QfJ2UuaDdD1rhQmwT3snJ0sSlgAULZ5lgR50/VSVufLiyNLqnKlQiMN+nZzUzOr4S+lsfmY/BYlEMQN4k8Raaf1L6M0QqQD7GuOOe7yOjzgTUNOBRBQpxwyiqsZ8n2pUYbiI1+/LN4xKFcDcKdGVmhjHU+xJRLbX3Mte3Hed3P+6WmpeefO3+xoKjkyrUbt8oqqqprauvqGxpvNzWzWu60d44MRpPZYrXZESMIozg5HG+P1+f7L0krVq1Zt2ET23c/IMx0QABYXLHzFjiO/g/hy4oADVd3mIlKhDkJcxnfQkynKhgIdDpYoFt458GozIkWFufGnS5IQAdbGJpbGyqCgjN1gTv5mDaoWdzhu3k7LhkdBRkVGBHq1uEcWVDeAAUNBXML3Pl8+JHOC85+Ttg8oamjf3QAxleWquPcAxwu/ZnIa2F1rIW1ovSgTjr1yFZISQZQCB7iSZe0x167r8Bsz20OXIHBvow9LG2SImEhOoUyVXyCMs9RhhAc2yYKBUUcxv9++2MLAqVPPwTmvrFuKVKh6+3xHRa0O5s2iOXphOFzAQVAjXH3s2XmaMEB2mmvvXZiFiC/MA7+gmPGqwXkIPcB6qaNRY4c9L9CQ+si0BAtYuKyT8aOzGDhYv5YMJRCJQihH/SwD88IjKRIjgtREGXBivXYQZVFv7guFzJbyWQCW+a3nJxcJdVTA7VQD/WzyM4OAVkg8KEcqqEVBmEdTuEVQXEiM5r9f4rkqclsKZMCmzLf/RVU3aeb+qLyhEAGiTNA/0B66bGt3g39bbnmK7/i2wowzb/9x4/VjjVdfS+/PnDea8P3z53pp7pT+ansZG0hwPaMsC3xUTywhz/VvTf0Pob8v0433HQLU5lyFSoZMrprr4sxE0OGjRk3YVKAwOfEN/+d9z74aMCgEaN+cYJA4YbKHfMD/B8Q/wbuB3MuAua9EYzPg3o7uHto12931YRQbR6l6zDc/ToounKPdAly+el2BMWezuzCY3QXQmvw5u7CKFAJAd9lCe183x74zk/iw4zvRrHiVoHTX8veWNrQa2KAVmorCRbigTVraLwTs8ZeOyYCsO6d6S04BBPEVCIAbVRU6hTb3GSSF9vaEylmcQmAUpbUVgG83+2vA1QZU37EUbZZShnT3x5eciZ3dfr+SzVh13mjxaSs5ehkeLpWnuBpIcVICTfqQW9Id6fp9TeLbfw/h0dFPdtNZMCbcko4Fh0uv0JL8A9Nhr/iY8skRVTCgiyCDlolCZXi7hxY8Nnr2lxb0W+pZy506FhhKZTKRHFSpqxltXDmjRFGtlmDjyYSinWH+q5Ru27iszSiG4o3a5qsP4a05nC1pslZwtKDz/p8+bUybYQCGuoUVGKUOcinJnMM6kEHlFsluef/bG+3Nw5mBtQmrJL5b9fyV3pIayJqSLnCZcn8naZPHHA2j3p2ByIMato33Ag/nuo6oXSidxdhCaXAZWgWcFHoQC9+ozpv6rCY8X751GLOwVSRl3AR8BaGYF1m2+gK1dfE2L4Eb9aI8s02Ti0y5Yb05kduAiWFi3Fu4xDeWsIIitnf1VVHE3udxp5vIo6HmS6y7np8qMshc/+5klDq5+JFRsKacj5oEQx4OjbkCkcVJfz2rCwf/04Pm4WyyN6xqmdrNfeDjFHT2kZmnVLtd5JL5awo3/S+9lG94VOvxcqbKoFn5nerXGKx0fz0bbT6lnFwveYIMZ6tXcRAid9yyEJHT25KyLEIDsaUE79YPeAhySbXtLFGE15XWg43df1LjLHvBDg30ZiLxccCF0Hihevc3W96kQJL0Xu0+7r7HAuoWCcLYzVS8C9cKT9ePtEb0IxRhlzvPoQq4TCzSu2l9BitPW9VXZG6Zqo6lBwDzkIx62UIoa7WhzcxAe8jdRmgUmPUlmBuw3T+UnPcUvPy9Cd41LTq6MfiFNMQOjRGxEsjISMD1ygoYNgFYlp54ZwclTHXJRZgqDikSBiRXAd9dKzEgUlKWEgNupR/ZHRLG6QgV2IjQZkg4mYCYQQUcZ5qvvkOndY/f3rGuNjfOD6w7835+RGNGtNGq0i6mDJDBZ+bYA3iCGuZjgAegPI5gezJzKSxGuYDrWS5PwvlAPaGixmYGG9CeHV2JxlZQKmmTudk2EXZkkt4gP4r2WmEWHawYbfzm5Aslc46A1lDeMjiGPboAFk8PTFyIB7puqAMoTuzhfHgZZAsDYA6PxQr0BRq+W/5rP8uk4160NsehfdozCOq/qCgr9z5JnNto6WN3ZjYObD1nIht4AzhW6cyGijUMUda1EsvSrOE/D3wTUK2H+0WzwSsqjQokISBICOiA2XF9QmByLevVc3cumBct9zNeISa8ToylJDoYCqbGfESgtsqEl7lEQOZ2r9GG9leVIx5Zaf5iB2do2lm5lEvSJYM0iVQ3DKpjPIm5UST2qrYcJrQwLe4ZbhUDPTyBQOtrMbhqwLKC90rta9AhzrNkmleWBKVJ5bRZzh/RU+5RYGOzgB1E+thYgYHZs2SORBl9lgBwp5tQmlHoEX//nLIoljzgqYL6CRno0Af9HI+Zew8DDpeBjBZQ7PW2tD+lm2PpqKyc40MFOKeB7IhU1luS/sSTRupOrGF0Eqt3mxNV2xSFBJQVe5MKOJgjQ0iQlm5omKFy6AMuVFzb9a4cI3vTBpCozXeQhh1nITLWecm76kuvtAmwtV4brGVGJ/4x531T7vu2Ml9uWS+Mx6f0j0lbz6Rxyds0I3Sv2i4VccA+/wY2t8NsKNwmmXUGl/0fBkacc9B3NFgpOmoE+nApeDPmleIZHH7ylT/dwxsW16KfdqP+f0sd+UFDdRUzoNLB4Xq7mwoYSVWOcLXC86er2KtI59Sv9X+qiguzhS5BkWAfb5peF9DheE92sPKg4S6cV6/Bemqydn/kU/2K/d/j4FJ2Fnnod6ZLsA+33KvrcAZjFuDrYK3Afv8jXvMFitgQL9tgERwa6dUVakO6n6YlWHYLvaetd0f/t+L46pnfUd9C/02gWkZsT+y58CQKtinACc7L9vMvtv2yPPgwC0OYJ/ngHomi7P9GPPjm4Vfi/c5EWERJwNisqJBN6KyaUJqLRryGuu2tXZn/Du6/wBcnC6eKfizJ9gzzpI+5Cat40bR1/N7yVTpBZ926VlvyZT3FsYG+1DYVi3i4TF1VFXbBAS22H9sfVpIwjfeaRFtLDGFRw5zJZb4Rj98fbEZzHIwm68itZVdgPzWab0HW13btvOzniCtef+/bsAR/vC0IH8sUYfsIfCP8RYm5UJKaGRGcjrCBwaPo72yAj2DA80mEqZZMvOLpSunsx8kccLOp2Qm5AR72hWGOPrdT/GsDu0Qf7p2kzui4H7udkJF9pWMjBCgYxYmFrYWRu6lA32Odf+TquCv/yrxrtzjPCgovHJRUWcC7MqCBDHULTEsa1PYSUW4TYUthmVtCSqShf3Is3Bq27ZFUia9VPKvpExhqRSkTvPOGFVqiJp9uyfLhIMpg8WDxSBX9HhGQF0M0NPcluExtRX3u3NvQ9daMcXJ3c/LMdjBjO0aeXXmSOLAhwFU46cCVWdhVBM1yfLPvfTsbHdnspsDGNw+Fh2MtllE+0U2TftHzvMooaV+cakuDG++x3Ysot2iot2ikuvhtgorqRFsFf8sq482BkfvYwPOa77TJ9I7Br5obm5UJXVFFh/KeEBKLY5K7gEXkWUZhU2Z8oS/H87lvVmXQvmM8mZevxZdE5SVlmDm9TyE1+KWX1yeUMJDPFfsmQSwV+R8OzDWHZzCe+KV1Bz3jx+jP/oQGWGXTmdUxualJdOCIpoH1tU2flRk9EQVkhNfH4orjMnoB/HRsajcjqOYs6PsnlAvN48CSiqWDYcNyWwiG5E0INMyKDQDfQo1g0wFiUri1erKplsWj4ZcCLGo9ArRf7a+enj8lPdj71F0j312ipdG+qKkIPmP3/5AXJSICz2TMfGCURVZ9fRO0zgyNMkeCnT1DHIMchGlwCJ7CjMwUGAUJcQmgtgCEZcQfXHUAZt2l90f6OLjX0jJQLE3BVvlW4l/53OKXglJ8X7iZsZtLeSWLOIJfze5a3L7fuYMdlfmD8ZG5/XBfm23X9o1B5MX2MRP2Jgj+dd19sBLJfMQi1/aDirtR2ryv/Z2jKwOXmGTA92c7fxoJgbuxntMyp1tY48UbLSNZT70DK/x/oY5HO3m6+VLBek5c67BtkE3E5zpvro+B3EbSV3/1rZWLiAMhYQkjrPa7o/2s3seNLQYJ/GwN10EC01Gw5cVfARxanlpfmkKn0Fcafr45mMn/Dz26g1aeuGtj9CK7kbff25uJGlbBTeJMV0cJA+bjZy6pfh01xjjKmC/dtYiWURZWPhZWESRLKYIP759QKeKv/lmM4jogZio+igYo6qKpQuCGyKv4XJIZPV9amQFBkb2LESGQpqg489ORwUdXdb78Syhy4rju0WmL9trBsZKZ4ODQvfvy7bKdKujxXUXV0ZGAi3mii1EmlrHz/s5n68p2Lw+BEaGQ/SH5GRZX6KzUzYb9DjAVb3/jEyhoo1ucB0nvLdtvUS385hm1nOOWazJ5us3Vxo+D1KOeQS4HAtzIW3gCzhd4+9OZaRlTSKzK6ivuZ3cZy/fyMoNOThMrbLUf2Sql9JFzCbOPB4LRKI9yOZutlqty75Juf8kjcmcORFb+/mFHJEnn7/k/3C01Kz9Te6ueygFg7gP7hdv6l439d7ntXjw2wTu6qKDbiouTO34nEGgK041T/Ub4+rCL2tzq37rPPt8sz7ah36x9gtNyeXJ/EP52hz+hPIEFKfk1btl4zCPvJ48SGMT2bDacLpxk7jJOsxoPnCTv+uALkiLBH4mF9IpeItnCrJTlQtPWbINUhWxhToFWZbZFzPVC7bhLRvsilmA/XVn/3gdmSUwEU+M79JU+S4mxvnBzveRqCiIjRH5i8Pqxlhtc/B4sa1nuNryosB4vGEC60WM2+ngS1YBcmwi5F3vGB5hmbqISnZd1aroKYVOEUWSJy33Eebd27V7NSXaWoRxwWbKS2JIBO34aJmRdFPtk5L+F8J9j2W7uwdA1SJr+i6rbbCSaic44GPBg49pmqlqq/LpGB5pMT4qKtnrangDGgOnwR4FknFYi2GDW3bKamz56WlpvZUxj+IVnKvRbznCPzu3l0Tdty6eWmgcFOWyBM58TtGH3CKSRnBYTdaR1gBFkwTkxh5m3NZSbvG8iBqyQd0+Nfl9wPdf3esTPO6pZe0LPXNj3Me4/0t3yChsPV9Zxqu5iA2m3/vzcgrOzBxDR+ggpUOMh5bO4RpyqODACWLC0AmQwzAWRPb/lL0a9+dFfibMrcJKTj1v9nlmtPNZZRsd2xuWxo9JPCJM5+hz+PB2qdOhsaCj85VvtPha0bVhAUGRC7BHKeDS1Ue84uIlohI8D0CjfSmp+ZpyufikDpIVNYNGJQH3oq66FuQkN1hXx8Iy6S1BLGCfe3JcfUK0l3dYfH1SnNBDDXMzdQ0zU4K6CckHfq5AvrM+zV3zEOXAU9Fz1P1unuEnj7Wzj4Nu5OdTSZe8VFKCDBuklanqRVynkoo9DzJddZRdNEA5c2c1Vxu/oPb5jVo3pK7QgnxsacFedKtgd5ptkKcfRX5bQf6eguJDeYUdOL4v4S5RMWa7/qWW4OLq6gNdjGxsKDyWML+uSyZnUMghFMsMsiWYz4fFhLHDwqfCo9hRMaAtP0vYk23q1AXTUjMOQftOHROvusREx1y/eBnDnPn9uWT5RdcPz6AgT5eA1CAs0/QiEROjC0fCx58zn1+GuKvbeiuOq5zVJ8wnl92B+srR+XLk65YkW6HoMru0ZNWj5EJeKl3D7en+fRbgq5016GYsYar8ecAezphdjeyeadTNXX8A+3z+LGdEojWSa3MctBJ2LPgOvxaxTDBS3PfEOJPDyMxh1sqVTTO/RFJ+u1MSPEVTFGWeOTpavXJmqm3mlknmC6PMDyOTYVJl1TZlJyGj7FsZ9ciKCOBkxkztenb3GAJhjNh7exCZobNJJ119gh2i2ESpIuJTtohdiIsXBDZ9r4Pe1dnXMLd7z7ZsF7OLyu8XHrXbkG2YssDsF0P6mB90E35n9IsOq5CoFqTldUviGcSAPfZdXzMejIt+v9SyEvSb0Wy/LFb5qmlK6LGcgCzHDkq3Q9PcxOjSWu3zhKvPBXTvNoElfmcFHxcb4etbj+eJuL9yniQul5vKYsh59t51ysq9HEEXbB3SsvW/DWilh7xTRZ1Eiwyyu2AsZfXM3hJ2ceje1M3JFnYPSgR9+u2+x2zQJiyTljnL9+/eP46/fkypbcj+eTQrvM5GGR0nmeuq5VxITAzNPxePMoKXoh++fVn0wnv1entKfEYNtMxdzWm4c0359lPnlgCb84GxJ55YWFs53w3Ya9os54xqgbHSZGtqGCrOb5oBbg7doPVf9o36G7Bronjp+3Bx6hvbk7621sf9bKyCfBj2Id4+VkoEJcV1JZVNRSUtwAfsT3MwOYHEQ+aTTFendmjN763vjduA92CStzhScXeWs06+fjUtTYugIjq5jN687My7o/WjF9gXlsGwEP8Qv4V/Uv9EdeRe+r0J1Ycr/PFVz+ufC6zxVvH/6v+rWuXPRrOdpRDJMunJ9nNF3mHUg0Ul7t9Lh4on4C+ulv/QjnEC+zTfSX4k1y5SO1BM4LRMY1aWx8ljxrMxZXZRg0O1hL/CAIb9A34MHvuUuGecmnh4swg8+wUflGbMJxpN2broa4W9xGHdQ6DI9/X+/XZCH8/wEJe8MN7vPIvd2ANYDR4Y7a1hoJgYI/mER+wmuxp9ymWPTDAQxM6OsDOmyFZ+hh5QTAEYK2nGUND53d69TKcaNjo8a4lMj5pwAthCeGRumufdibRtGE4yAsMY3QPJqyL1/5hLIkgPcyxjEzbHQLHSG8bpVmeR6XEqyGDaKngYSHMrkXYw4zkdHiCynq0l0MpGutWZZHpUhhOI2g57FK+Yn/Il31CRxHiPpB+HYXKmKBHumE+yzYNlwh+0lfwjCiG1ylwhpIzbslWGlDEg4uxvwOiizR9xOfJW2bfQezW63UFmSvxlW4DlIwqFb/WEvyiCMoPJEjVVfcsETizemN6wf0VUm6awYETT3n6mCFs6LnkUrzg5XY94EYIGpfDWpwyKc5Wj0GNmNivRw2/WzIQSS78eS5TrwwEQIL6eSomyEOZh2LRA9z+uo53An5lebGNhiWAuiFjFJuyDcQyxCoHYMNtslAs8gYzw9TO8w3i/ZpzBqumabsOo+FSOKgW8Ydo0uf01He2dwkSC8Xmyd64gklSqC8AA1M0UrbgBFK04lL9kr8idCsC0CVMO56apDk6k7ctERYyeism+AlNRuihakQcta3kNQLjSPP2Zcb8lYjHJ1p3QR/tbOtt9wqEtCDeS/Qm7ErEkC/x+Ow14FOsgR4hibYHO3Iwgip/hORO/LnAtOVAUvCQSSXKQGtc9ixe/hjtMckE03eTV7V1AFHqEhKlCDxQem+Zaf01HW69gbUmz9AaJ6Yp4BkJ0MuN9pPB6NiH/nipQunCL0hGie9I1Sw3Qy4N0jXgC8OpOI1Dap0TpczFZoqWpb8k/SeUiU4KH+Xwbhl3EQWej0W1cxwxxqBOEstHYyBnvUezrTBjJ9tUVDpKEzxK1kiXjCRS9Ou/ILKTSLOVKnnRS7r5O7wy74MECbSJNtNGui2wTZnjBnBpjd5YA/8/cSt+nrs6fFeW3b9RY8KBtO7Y4avefrZ6Q3BeSW1PKuLt8SYCO4utIx8CxPzrw1jxC9k6/vfUNWwTqF6NJ7R7rKAzevX/l2B++9mzK+C//S34X/x0xqe4hRG66PlpzmJzhB9FMab/k93LfCTN2chsr7E/E+toSS44Fw79Hj7wTKNeP2nmLQy5qa3k/s3/Nbum4VpPvpKPHf/Pulu/T3pGYXOpWY4Fp37rY5twA8dC4S0V+e8rtvokTfQw1yULDqJ/tBX28v7VoOrSSvlYNjF6H88VbbdRzFpQjxksQ0ZjVjjs8oZFLM1uLfPar+QHANn8HOE/q4qMeUJjtCI0lTOiSakteP4JklbbQa5JWpi+ow7g1Scq4m1/idekOHN+NehJAyQGMi77jGPWol6utT9RnYP5XkJV5tk+i57eZybaJPogwmQttTJgMhGpbPPuNxNmau1xbbcaB1Vi4/VUd1syZPB3qO23TVQJQibibVHq6RB1F/3hANFN/tZ8pfYE1+fjdbAmkKKV7JOhuAeptB9YG/RejPnnQPuoILlC/+VD4p93maQWKnQy+etTjUD+81gFENKW9Zfqy40j+BONBIwk1v72MjgjOslUYUzAyGuP293heb2KABBXctHGY3njlsNOiCzs8f3Wgn7BGXz9fWmg6uSTp6HRmtsq5pof7fY3FzV9SiXF8L8u0yYHrtJ8YUxOtkAqo64zBT4djsatUNLlh3ew4OcDHw48AZeWFbvw/jDbnN/oHt9QcAHjrz8LqAHwdDr//o7g9x+M2RzgwJxRAgPGkiR9gzhNdwl/zO4HYnej/Qz4/axATaPvBt4MCGlFRzao5/zVoYUJas6JCUlHPUGt8bc6pYEQ8ZhONrD5f/ds8y6q+8m25vsSRF6G+x1U/Zzdchy4306xOjlYCRs3gmtE51lwO9YzYwiexINmOml4yn/z+U0INF1vPY5RH1p9ByaOXOtz1DNFtk/ywiL92DkMm9+GVa+Wa0CLk5JiZP1uG4D6MWnMw6gpGY5Et0i7UUuerH4XCIN8KXaw5kgq/vJbDvjzKhT3Lpd7EaJUS66boopztGHEdlhQNLGFDgsjCJ7W0iik29g7PxQ2yaOWENDDbEmC2DMadWW3n2UPJ9y6lcxQq6qrke76E9oN81aFay8k3D4yWSHX4yDo2WA7dLpZWJQWrqLnkr3ohZ3lFrdTlp3WEr06OAlYGs711HExU1KRDK71HdI6AlcN6bhUhD6HVRZPyTkvnLaL7qBu94+4ORaLwAeeNfkdF5ZeYHZgr5AdWDRlSveysxof9ZfK5ZcgW5MCVwbowqzIH+XAVyCFkRqNuU4Ns3jN5dIbmPi1ucI8h05C/24WQf8gqXAOQV/1agNy6agBkFrIL1CN07RpZU1bLlmsPrhM9B7rHXV/9QYzqD+XXZRkQ4P8uEGcLa+4o84ECtTYcBJhDADSkzgkcAoqMkOYhowiK8aLbXgxkLGVZJg58o0OQkwkW/nMBxS4pWKAgEeRoIdCsJDkUp4MUT/AfmuYUX+qmeQOdyHPopuGm6a+b/YWJKtf1o87BaT4FRUTk2DRbg0U62RMdKNIJ3n3IWQoTLpieGgSpd2rTZzjWuPqhw6sBoyOEItKocHSzOm+hm+nrOrU/daeFCTRPiOnboKdGNsMRzxqNBUu2HBVVG6KWAG13fhkSPwA=)\n format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,\n U+FEFF, U+FFFD;\n}\n\n/*!************************************************************************************************!*\\\n !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/font/fira-code.css ***!\n \\************************************************************************************************/\n@font-face {\n font-family: Fira Code;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff;base64,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)\n format('woff');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n@font-face {\n font-family: Fira Code;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff;base64,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)\n format('woff');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n@font-face {\n font-family: Fira Code;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff;base64,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)\n format('woff');\n unicode-range: U+1F00-1FFF;\n}\n@font-face {\n font-family: Fira Code;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff;base64,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)\n format('woff');\n unicode-range: U+0370-03FF;\n}\n@font-face {\n font-family: Fira Code;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff;base64,d09GRgABAAAAACF0AA8AAAAANPgAAQABAAAAAAAAAAAAAAAAAAAAAAAAAABHREVGAAABWAAAALcAAAEeENMPgUdQT1MAAAIQAAAAIAAAACBEdkx1R1NVQgAAAjAAAACqAAAA7qtPmPVPUy8yAAAC3AAAAFoAAABgbptl81NUQVQAAAM4AAAAKgAAAC55kWzdY21hcAAAA2QAAAE6AAABwMYS7sJnYXNwAAAEoAAAAAgAAAAIAAAAEGdseWYAAASoAAAYlQAAJ2AKUboxaGVhZAAAHUAAAAA2AAAANhL1JvtoaGVhAAAdeAAAAB8AAAAkAzn+V2htdHgAAB2YAAAA4QAAA2DBYoWjbG9jYQAAHnwAAAG3AAABzmtRYgJtYXhwAAAgNAAAABwAAAAgAVQCg25hbWUAACBQAAABCwAAAkgzWFNlcG9zdAAAIVwAAAAWAAAAIP+fADN42mJgZGBi4GMAA0Y+IFsLiFmAomyAhuVBtwIAisFwz4LZthHMtm0rmG3btm3bjvZot/nTLywTqECdakGb6sKQGsOMWjKBDRyoExO4MOHbjXrAm/rCnwYyQTBCaTiiaRwSaTIyaBZyaT4KaTFKaTkqaTUT1KKBNqGZtqKTdqOPDmCQDjPBKCbpNGboHJboCtbpFnboHhMc4Iie4IJe4Zbe44W+4ZN+44f+4Z8KlABoAJwACngyH1YAAAEAAAAKABwAHgABREZMVAAIAAQAAAAA//8AAAAAAAB42k3KgUZDUQCA4e9sV64QyBBywRDYGyQlpTtLAuLUTGo6FhPcPUV6giTUK0S1N9s4Lgb/j/8XsC15s3VyWl/rT5p5Eh/m909iGr/MDBbT2aO4aJpGVMBqBbrDUV3pXdYXlf2r0bDSzy3QOrTuyH96niS7mXuZFQK0TxB0lUoHAoJSx47CsXOfvgWFI2c+fG0cPaXo1p2xX3/+LXMpDRy6MfXq3c8aobUpZQAAeNpjYGHZyTiBgZWBgeULyyQGBoZJEJppNYMRUwWQ5ubgZAVSDCwLGBh4gPJcDFDgHOLixHCAkUFRmH3P3xoGBo4S5hcJDAzz718HmiXLmghUosDACgD45RBUAAB42mNgBEIOIGZgEAGTMgxM5ekZJSAmAxMDM4hkZGKcAKT2MDAAADlQA1MAAHjaNcrDopVhAADA+f5sW0fZtm27Ntm2bdu2beM1wivUMlzfWQ8i5EFZeQSUlTfcQUxMXkKTMDSsC4dCWlQlal19a/Vz1X/HYrH7sVext/EyaWkEoVkYkTH+RhUzxoaM8StrvMwdkNYE/g/k5zV+XP9Rmh8Fvj8WxGzwjlAylCdUJiQgxAB5TBGZLK+pCpqpsNmKmKOQWYqbp4T5ylqilIXKWKycpUpbpKIVKliuslUqWamatapaI2WzhI1i1kvaJK6GDWrZqo7tdqhnlwb2qG+3hvZqZJ8mDmjmsKYOOai5I1o7oaVjWjmuvTM6OqeDszq7oJvLurqki4v6uKG363q5ZogHBrqrv9sGu2+AOwa5Z7jHRntujPFemeiNCV7Lb7q2Tunuir5uGumpYR4Z4YmxXvjqczrSAlY6AAAAAQAB//8AD3jajZkHXBTXt8fvnbITMQILLGtA1HWFVZG6LEtbsKHSmxSpwR5BkWoPNppUxfq3K0Y0kX/sPfGlYu81XdPtaSqwwztzZxkgL+V9lPadO+f8zr3nnlsWMSi6fR3zOvsJohGHBiEvhOJUcpWjXCXHNjL1ACedzttb5+WkHiDjyJ9e3t5aT1tbhY2Mo72EXxWkWTRj2fqUbmg7ixv7W1n3yw51C+vnZmfR09bOkKBJyNSMnzxnUN++g4Qv9pOXV6ex6S3bKcbWzs62URYc5R/Vs6fM3tpebTn8jYA3Ciz4P4Sm/ZydEYUGI8SUsZmgzgyh4SpajbVYjVU0PdH41cy38ekv8enDxs3403s4g9/GZrZswU+or9vbxfdkv8ucEEYIydBXPJLoEYnew4TyOsGHiXLoBraCn1T7j9D6ffBtgaxMvlWcylqlIF+ggarn35i4D6+inir4wVNwAb9rKk7kHfgIHFYvyqnmXar516rxM+qH9nbRHmcDflji5zO0CH5iVNz+E5PDzkYO4MXTVsk5Cf0tU9jY2mo9vfVKGfTwQErnZTWQOl92ODZz+Iqo3NOFOe8VFqzWJwedrd/FP9u8DfdiZ48akat3y3p+7cKLmaNd8gzjG7Dhhx9xwHaIUfRBfHMm3xWok8sl/iVa2oU7SPyLrlzWIvE7aJnQV2gXxBYDffUqsoMovFwptVqu9Qyk9DbmtBpSCpLGil4XvqB+zPaG0Pp5IcdC3ty2L57/CDvN/e7YDOrIwdvZA1uPus298/Y7v25OVLOZ3iv43xBNRmwS2KWRJeoLlhUqHfvX1qkdxlJ6ieghbOWfPdBsaWnkXzuBqIh60guvkrz48iugHb5lMtSLjFMr/G0PWnqCDjmkgPjF4d2Y5ykqr+1r2tyGuca71/LKSjazBiyQN0gWWopZOAh1UE4u0S+HSFTWItE7zp30iETviZTXCUoIJRmLSojCFBgdHWSSGqHgAU5CzpD5KqaUOdWRUnKVRiWXyaj8Hc+WZey4lFO2P+aNoMqEsKqc4XE75oxdbOCfKfDltKvKzTjg8X5stj8pInSGv4/f0ttbP20pHNAfN9QZZ3mOBiWiRxKhrRihn0Q5B4l+EUCo8SNBnUSbDZ0WWiR6xwCRkBHpIfZ1JlQjGG65Cr7oVOOLvXupV/ZS1cZ8NtN4nBrdskXIPwbav0PaWwijo5beYSFjmJ5Nxj+amigzHNWaJBQJ09snqVH3SkpM49+D6LUX9ZLevIgQfc803uJo6+C7jr7HX8SebQ+xJ3+RzaxsPVRZyYRVQnsl/5QZDO0hjuBASicIhle0cjW8ZiOTMRwuOXcnhlduNX7f3MxY+da2o+Yam/KvV9ORre/V1jIj6tqUhbf3z7YCRcQ36de+Uv3qoC0SvYM76RGJ3hMprxPUS/RGdWfb5xL9BguRrmj/if4GlFsLfWdjTkFJ1+hJruiEgL9xyTpcPvnD2IjkVYa6Dfw0NrNtWsLbleOGGfJ9NEe30UjIdbDBUKQPHcU+nCiMy1Xo2dVk/vaAkYQhscZajNW4eO9eM6pvs/F7athtGIk3qSXGCqOtoPAqZMlqoltD7NxyAYXYAux4gB0WrAjjymGLJqrAhs1s9dtA6pLwnNS3wWJ9a1cg4Kb38kxchm76tgsUfIA1id4KktpKlENn8Xjj6xBDDHDXjhjiNFiJiYL1Y6l3w4zvN1GFNvhKLn57VttSUU5n9lqBWtyXVgi5iF0pnZDBtrw95nrItj3Aj/CrZtuYE8qs+oZoYyS8O8xhw+fzqX2Q0VJOChG5EY2f0Z1ULtEvjYRCPOBPorfEmswnEhUWaACMa+eQ6rSwatN/0kX9EJkzcIR6hNZ/+N4t47pr5BPd7PMVdiERJfPXrcG7/1oyhdIgA+LY2eDPHvzZUDK1qQZBCbLiLCGrKLmlldbTionLvde4635u7v1djfdyD69talq7cXfTWuq/l/n3D+3DgTeu4BFH9vOnb2JrPJC/yz+Cf99gFUQq+iDzwss0LyTKFUn085TOtkckCvMC0UAHAh1NVA4GnaBN0UWro5LjMMdp9Hqs50AwKZlWci8nJypp1zf5gnD4fh9PWxvlwZ8yH70mygMH2hbvXTuqblbTmhE17GxBeNdALmn45Natad9rWjOZ8JkLIJ7HF57PwP2x9cUXs0SdoIiMtI840qwweudgpOfD6JkjpdCbMhmH1VgtVDZPhvNyIiugN6Mdvy4Dr7vMlx9vwhPaMXd83dbm5lUN9FdT/zNJadxERRn3sZkfvl+Sz6O54Eu0Snz5dfiSqFyiXyJCIatAgURvGYVakQi96gGj7CKqkkoF2Sg6aVwpsknsvo9R9qUYj6Kvt639PXHq2OMLx61M9lpWVP7pjLwzS2uvJUwJ3ZMUtjBs2LqlWUdm4YVFR6amjisYGaXPTRyZHqIeNHnVjKlbU2LCc0f4u4wP9k8Yo+mXRmYIUUJiCRRjseykcol+2ZNQXi2oluj9l51tHST6hdgW4u7a9tZLIe769t9gl7gUOYm7NAWGbXC3+CF8jQ6ToIWJ5eVNBdc8y+bX3/luxgeLwuYM0alifBasvHETTw3Znr6kdtc9dmmUfyY/77UP9hcfyLBTFPWSl5asWP5qAa5VDa1Y1TaUvvHpZ4LnaBidDLIHFlc2nYqj3t7LxzIWVsz5Vi/m/OrViJJa0cJ6FadTKbCp7UvqOP9CbE6dLCujLMVXIFLxHdJXwWJf8YTyasGSRO9bEmr8qBu9xZtWDqaftHKQ7nASyomNuHgw/XIvVNacy36nvrSsHpaNtMrrRbOvL6d3tCVu2rhxE70bLIs2yJwONc1piXJFEoU5LbU9ItF7mFBeJ6iQ6I3znRbSJfo17rTwXKTSCgiVndlF9q9oOK2m4b/W2hr+M7uufrt5y08fNNXvvLFpp7B3YCxan0HhS2eoVp4he2vyLsnDGGlOdVAHiX6BJCq7KdHbuLOtvUTvEk1uQBeDplfEcRcWTi317ru822k8A+cepKyNjyg5DXWY2g82SGviL0H0x6EOSvyJ9PYrEuXsJXoXXGBUC1QF/kDNZDjp6LBKyKJI6oqirYS6bZxFh65ZU80MWwWrvdiWxJwsxjwESVQu0S8dJSprkegdp84ThqN0kvgONaPOFc5RWsu+GyHNVEIDRRotWSY0WaTThcpZAW3ljBb1Q0MgEhtSiTQy0/lVqzWdZzWkSimwsB+Gv6FM0SeGDB08aorSd8/UzYf5pxtKiryqYodm7on4+GM+IrLGdV1T7eTvg/zMi3oEjw4J21+/oykpL+M1h+KBfY9sMi6PGo0t5kyeMBl0iQpkCtA1gei6/FSibLNEr4mU7yuoFSnZy3/c/hOi23+D1qcgCheovsOFmgPLFKfqcib825iU3t6YRETaOjlheKJycqInH2xgjN+bT5/uP94zMmBZwvR6fdDSSZVv3b2WnJGoSx7uOrJyWP48h34l/ItxdTNjRo6c6NHTHE8en9ILz6OjGC3/8Klec6BxsFO+m1/6hDcS99c3/DchJxN6oN/AjOiYdOPdwsxJ0zJSdQX4ztqTb+2F6MQoZH4Q3RQS83m5kGlHgPaA2PrA+EjhOHVbOMi6Qe2MqvCLDf4gbdMXBYVfbJ68LzR2ZNno8ndjqud5DZrpP6rs952bW+sMhllubuevVO2LA4+ibdlg8DhN9Jj0RKJ2Er30l/RiJ2VbJHo26QmiUDnskX9g7yIr1B9GQylXa/6kmkgWz1fQ2UGN9Zb+6xMr9idMOLYkZbnu8bIav9zY5OIhzvPYu4oW/8pxkcuf79j8sjbI0PPilfKjqVOGUebDxggRRIH/c+xdxgnN+ETIiJsUiyYiGlUDrwAFLOpNViE4Xah0jv+q5OEm/gS/Gyc2rrL0W5+4fJ8gKLlS92Rpjd+suPHFzs7zWY/S0t3/oAmi3wS+FTBidkgFnvtSnVnY7VLIlGo4gh23PCZmaXBU6KmJ62/n5l2sKjk9laL45MJNPSlHugZfm7chxN0tx28EONz6ombhD1vt3azwzbeadr8NPUC8kfkzS5w/CiRRZ4le6kLNJHq2k7LNEr2mEPZ+m3gdiUKB3JEeck9hTplmCdcxl7zxvwVH95063ckjsL/e0aqvryZvSfJ+/sC/hNuvn0vkGLWLluNKZa/kxY0tisPNf98BQn8v5ZOYeKYaGVAI9LcgpnO7ISNTW1TFEJFaG2kHphbD0JukB1JsRyWAh4zKa+S68Smp6fsW6saoevcLiHlv+u5M/uXTxg/i1rm/WVRQP6Z8ysnyxf6+KQnT31tQ8tZsPr147oJFswoLmerNCrMhJcnTtqeamVn69HXyDF8Uu+Gt4OosQ7RGE+EbFj4nUvu6o3vN5Kyd6Vgx6FjF9KzlSwpmz4fREKMh41kkjuevndRZohe70PEmaoGame2Mw+nOJ2ZS+7O/CrXkDAzsT+wNZCOskmSwyO6L7D05YdnMDTyU9p+axqT0gOyEPo3sDePRuLiGlUaaepmR6B09xIjZD4Ue15jssOQGS5haWv1f2aM+5Jv4w9sbu1uFGdTwF4ZBNdHHLQHV8037gEmg+hlCDMc4oB7gS7pZoL7Eg9t+xsH8x4xD27SSEtq6BOIW25Lee1PsPVrI5Uw+iW6VmSFbON25mnZfnCaQ7nrvgMULWpIRqi6/0z8t/7Hac2xVQTA/933jtyf2YZkuOFinHzmSGuM9apQ3/AIKolecX+661H5Uyvw42rftJ9CjXIwfjfLQBgdrPUZ1/JQUss2Swms0obwOdJuZqBM6S5O92YnOmDjpjau0MJbvQ0zzoFd6ifEwEA9FbiDmbeav3+iz8WkZHwrCqt59VDdwid20Q9VUC+kheI9xIpm0jKyhF1EZOQFfBy95QsUk/YyxugcFI8j4806U/AtjC77K2zcyDryT8RQVhL/Ep1qc2I8Fe9eNHwnvgb1S8aaqp2DtDFibCuokaxirBHPu/ABK8SWYuyaaUxtPUzr8Y+t9aIvRHFg3noBZOYmpy/ItBEZNzIxwT3B2cS6OrmriT7EftwZFDreRz1eoNlQwWhIbeZ+7B1oqSGzn24/jxg7O3pT4TYh6osCNHwn+CCfa55qsMJ9LFO42qJ7GqYiS1LHklAmHX1aD/49KfAKnjmnlr4zBRd3kUi23Z/zn+Ax6THfV0qwklRbly7XKLvPINJHO1PYa9j8pG6obe4dHB86I78M4rIxJJLNncXaJwTtmsBGjjtlD9g+14mpOxhUDbWW/QuZoIEJxJLE5Ti3WPOu/dFfsGmSjip0UYGM3srzu1eGnUzbUNPaOiDbMjO/DfmVw7R0YvPeRlau9W0CL6h+VOEtKLiFCobchTok2UyR6PoVE7yDsP8E9SWNJi1pSSP80qmJaUHDKUGVELKkj0CnvQ1nxXf1uluu8/mOK86k40ECKiUkWRF8PY+kA1sV7FnFxkhYrZZdyTyWvPjN52plVq85OnXZuVXllRXl5RTmjLftj17YX1eXPd+54UVlx5vrls2evXj0DsRC7pM6sFusMQhItk+iFKImyzRK9hoSaVM+3Au0j3a38SZujkubgn8Zab62XNimCUFBa15wFSmvPZk87h0dUj3dps4+sSvUwWqaXVRrmjS8vN8zpLvynwfzvIW2XZ/ItQ3DvdNp9XNGZa6sORZ+5uuZgNOgjSkjerO/MG0El48h4IaWw88wXr2aVXTedHJROa51eS19raMAD+xmaaocGD/RQeavnNnndrJGv6L2Ytl/8cklNL7M1PXq808SPWEwd+66Y3wgeiW3icYPo0YAk6izRSyI1fiToMFEONbfnw08s9Cr9AEbWmeyL//I+xXSd0uXqgXKbW63OnjVj2/jJB2cXnxoRGlA3ZcE07bysqesTFp3LrT0z6vXAbQUp4e6jffrYj8lLGb84eKRH3mBdhMHV4OFgH75gwqzKoDj/HG0QKCMKSBRbxCgskESdJXpJpLxaUCvR6y//qu1Fsa3xo25tm8mdyhbIol5sf6SEeE3VRq3T6vRyOH6aqhDTy/s/oXuO/vJLI8624RvTsv0nOesGDtpfRRUseWLDG5cYa5JS+9jC6ErWWOTQsYLjv7FK1/Nv8Qs+pxb8X+PU6cWLjYV/4QGiED38AlHsNNXc3ahY4Lxa8Czx60I1EDiMc1feDJzUB+EsAauDdeeaIIdk1JjU4tyElMQNzo215oGH09avZRyMttNSJ46iudb7NdHxO+opHmwTG2S27pFmq0gfysokSmar2JZtlug1sS2vE1QQKp48P0JIspwjtb7ShXISvUoiUUN+V0MkcG+S2eXaREvfeFy+6sfT75Q2frqltIFm22A6toXRbm1X6ENgTXyP5Nm+jvkpUWeJXuyk7A8SPdOlraNEzxE98/nxjA70WAgrtDklVF69Wrg5YXR8jWPuoUq7GW+G9PHh6w5iVzyEcWj9PGt/oXmpVWhBDAicSG8Cy8QGUXFYUtFBHSUq+ruAEP0d+Ot+Z7KBCrVt46mxxu+pb2tri+lXVy4BC6QtifmYGLMCSdRZope6UDOJniVUPJn+YTqZcuhbOOc8kdYmTlqFvg2WZiKhW0Q6TrJM6DGRJgNAbXwuvY/cHvYXejZO6DK56RP+7pec4v0mraLbsO1yrDA2VC4sK9PnJvlP6E/bJnjHBI0dEa3T4+xDVCJt1vZHmx01rmHPge0pG9NcPXO1vnOLluUsWGQ8wwRSfgijW7BS3mLvklNlZ41TqDi13EYcPnHyQg2k7oVmB/l4pg1ODMG04vHAkMLYgOBk58bG0Dr2rp3DfKU8InLdsrbDRVuzIwfOUY0tzqezlq1KLIkQ4is23Y72QnKkED9Dgmhgk2NOqbEGK1n4wqqm4gkrcoYuHVR2ZS0/xY1a42nM9qLWecJ1n949d6Iud1s8zpqOvbPtc7A2GzHE6mTTp47WqK9gF27nSY+p5Y5CJsCXpuNuXK3Gttj/OXaoeLqhhj9JNRhTcYLV5tdXx4+rT2tgMy/d2f5REs8+LizEvZYtW+ZdNj/rTT1iyI3YYPBig3qDjwHC7S6YFC3qteJiwNEmbyo1jdX41FerNo9cWfS57dmWpMKAZw+f0tltq+hs3sPSAq+/wpdTbtUL1qbP8VuS1DN2SfyZD+1wHXh1zysw5hu3UmFCZu+F7PkURsaJfJas60gGc8qC0uhhWLxIHkhbRepQ1Z7d6xZU+s09uXhC6Yi76w9EvBE7YkK4W4Kzq3OxckMF3f/K5ytmZex/+52UEW8kNM3/+NSsZWs3td027RzB4yGyqwuRPl8X76/l1G4cyzdt55twLBvCN9e0LaSX1mAf0IjvGz+izsHaaQ4au+8CqQyXIHPLSVP8rHsHVRtc7TzUN3+2dLN3NSAK27Nyup79AfwIe16IrSPPVV1+xxXugYHuLkFBOMc1MNDVLSiIlQe4uhkMbq4BHT9BwResA3VFZkY0dzlgUQn6UaP03iNHysykcxK0zmU+pwNkjogW9tp6lmb57GQBHq99CE9ns4iOkPmRp5CQVHskn+4l86vbk4xAtTXzG71JVgZPOXhuraT18IWtN6z+4O67K2+zQ3HKaP6oFqdE8MfBlhXzM71F5oxk0FbjqGU5DZ4QjS1yca/wl8zPcY8fxx3q3go8qh31SjounP81l38W/ULmPO7Ro3GHoZUL85BeLFMgC9JbpkpApg4Vl/zm6FcKFImjQ1IVBa+ELGIexi802IWlpYXZGRbGg+p5zE3aW5bz/9irJg2f5Os7afiwyb6+k4d5+Pt7aH19ZTn6ND+fNG/vNB+/NH2qQedlMHjpDKDJgnWkt8k4pBA1dV5+Svl4QRcxwnGAe+8s9fQQn7Bhjn097KdrsllHdw83V+8xme7uzi7ecTHCqISyY+lJbDPpd0g4ehKUbTt27CLhWQGvpn2hJtrCMyh9eq3izx/7ULvTYqzyJyaMyhkeMFPj3SdUpRvJ/+Dd//7KVyYGjEh0tlNmWsgdBVv1vI5WI4OgebLyL26e6B52U7OcPDtvliJ3GgzdLo5Gz34d7LTRRuoTNl/ME1pDuazPymDzrfiN5lDfO+YEIxPv07GdDNErZTcZDgl7/CdAPpe9Sl2WtQA5KxCwmMP+QAdy9sQiyzniCzhXy0/i7O8mN8DTLHg6krOR8vJ5OB/vwtnUbUoW7Fux9+mNXBFYuyBaA/KM3sI5IBmxpuE0jtRK3CvU2BqGLTiHW/Fbt8bfQqTdd9BO3jX74kNJ9oW1cvL4W7fit0ErN/YRvVT2+19lX0L44lgh+8aMTofsi1/KPgrIGvuaf2io/2tjswJA21z2Y1rHpYO2K6bYLWQ29FbZcyBXTSREpqcnyo4AuWYipjGXwY4WCTr3MotpSsaJ8WMNVbyU5+NkXCJ/RSs8Zf9LQ59JTxcv41vjOMcE/muv/wW3XUYGAAAAAAEAAAAFAIO0QZ2aXw889QADB9AAAAAA2wktdwAAAADdVa6+8iv8GAlQCWAAAAAGAAIAAAAAAAB42mNgZGBg3/O3hoGBM+GT9rcNnAFAEVRwCgCThwaOAHjafNIBBwJBEIbh/TgIRCEKEBLS/wgqEBICEBJRCiEoJDkACXAgggQIwEmhIigQBBABRQ03S63ZrMdrWKw1zkIVSPrX+xZQPYHH93SfFmWBRxzujsS4pgnbBxCm9oJqqkg8QcViYyhZuKQgmPwREmQNY4P+yxLPw1/vR0CtBAOSJyMytegLfJLi3lmVq63ZkfmkbeEzcDXX4mBwLWYC/4+koPtla1jpd/L8Iidjx+dkqRSuzgIJXNBAC1FE6GTQQRg5NOHihSviOKOO2mdAGRDUZ6wEynoCZdcyrgUAqEsMUwAAAHjaBcEDtCAhAADAsNUid7Zt27Zt27ZtPp5t27Zt2/b9GQBANdAJ9AUjwBSwDRwCXyCAHMaDqWA1OBJOgXPgergLHoUX4G34HCVDGVEeVBxVQq3QSDQFLUNn0HX0CL1FPzDGqXE2XB7Xwq1wNzwQj8Ez8Gp8Ft/Aj/E7L41Xz2vpdfH6e4e8s94Pgokk8UkT0p70IkPJBDKbXCJPyX8a0tg0GS1BK9N6tCXtQvvTUXQRXUt30MP0HH1KP9DfjLJELC3LwQqz8qwWa8o6sNVsGzvIzvrZ/IJ+e7+XP9Sf4M/2T/nXglhBxaBO0DzoFPQNzoQ5wyJh+bBO2DwcHW4M94SXwrtRyihLVCgqG7WMukYToznRxuhidDd6GX3hgGfi1XhDPpsv4Kv5LUGFEYlEWtFJ9BVLxQaxWxyXvnQyiUwvc8miso2cKxfL9XK3vCtfyM/ynwpVbJVMFVJlVQ3VWLVTE9RstUBtUwfVGXVdPVbv1E/t6WK6l56vLxlhypimZoBZYLabY+aqeWP+W2uz2UZ2hJ1mt9lb9qX9aH857KxL7jK4Iq666+r6ueFugpvhFroNMdkFeqsAeNpjYGRgYHjGxMaQwFDBwAXmIQAzAwsALJ8B2njalJDFWYQxEEAf7lxxyA13d+eC63Xd5XccCqCWrYECqIBukHyD60ZfMj5AJdcUUVBcAeRAuIBWcsKF1HInXMQC98LF9BXUC5fQWLAmXEpXgV+4lpGCGzQXQHXBrbD2yTIGJmfYJIgRx0UxxACDjNDLE+mtOCBOBMUaCWwCKG0Z1n872Bgknzik7RfxcIljYOOg6NB+XUwcpuinnxgJreERpI8QBhn6cTHI4pDijH4k0muczm9jb7zmvUfkiTzSBLAZpY8Bnf00yxywwtITffb5Zt37yf73WOqT9hERbBwSugL1Fj2PiNIj6ZBDCJsEJi4Ofdp3mj4MbGL0s80aGzwunCEVZh4AkbdX7QB42mNgZgCD/3MYjIAUIwMaAAAqlAHSAAA=)\n format('woff');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n@font-face {\n font-family: Fira Code;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff;base64,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)\n format('woff');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,\n U+FEFF, U+FFFD;\n}\n\n/*!********************************************************************************************!*\\\n !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/dist/style.css ***!\n \\********************************************************************************************/\n.graphiql-container *{box-sizing:border-box;font-variant-ligatures:none}.graphiql-container,.CodeMirror-info,.CodeMirror-lint-tooltip,.graphiql-dialog,.graphiql-dialog-overlay,.graphiql-tooltip,[data-radix-popper-content-wrapper]{--color-primary: 320, 95%, 43%;--color-secondary: 242, 51%, 61%;--color-tertiary: 188, 100%, 36%;--color-info: 208, 100%, 46%;--color-success: 158, 60%, 42%;--color-warning: 36, 100%, 41%;--color-error: 13, 93%, 58%;--color-neutral: 219, 28%, 32%;--color-base: 219, 28%, 100%;--alpha-secondary: .76;--alpha-tertiary: .5;--alpha-background-heavy: .15;--alpha-background-medium: .1;--alpha-background-light: .07;--font-family: \"Roboto\", sans-serif;--font-family-mono: \"Fira Code\", monospace;--font-size-hint:.75rem;--font-size-inline-code:.8125rem;--font-size-body:.9375rem;--font-size-h4:1.125rem;--font-size-h3:1.375rem;--font-size-h2:1.8125rem;--font-weight-regular: 400;--font-weight-medium: 500;--line-height: 1.5;--px-2: 2px;--px-4: 4px;--px-6: 6px;--px-8: 8px;--px-10: 10px;--px-12: 12px;--px-16: 16px;--px-20: 20px;--px-24: 24px;--border-radius-2: 2px;--border-radius-4: 4px;--border-radius-8: 8px;--border-radius-12: 12px;--popover-box-shadow: 0px 6px 20px rgba(59, 76, 106, .13), 0px 1.34018px 4.46726px rgba(59, 76, 106, .0774939), 0px .399006px 1.33002px rgba(59, 76, 106, .0525061);--popover-border: none;--sidebar-width: 60px;--toolbar-width: 40px;--session-header-height: 51px}@media (prefers-color-scheme: dark){body:not(.graphiql-light) .graphiql-container,body:not(.graphiql-light) .CodeMirror-info,body:not(.graphiql-light) .CodeMirror-lint-tooltip,body:not(.graphiql-light) .graphiql-dialog,body:not(.graphiql-light) .graphiql-dialog-overlay,body:not(.graphiql-light) .graphiql-tooltip,body:not(.graphiql-light) [data-radix-popper-content-wrapper]{--color-primary: 338, 100%, 67%;--color-secondary: 243, 100%, 77%;--color-tertiary: 188, 100%, 44%;--color-info: 208, 100%, 72%;--color-success: 158, 100%, 42%;--color-warning: 30, 100%, 80%;--color-error: 13, 100%, 58%;--color-neutral: 219, 29%, 78%;--color-base: 219, 29%, 18%;--popover-box-shadow: none;--popover-border: 1px solid hsl(var(--color-neutral))}}body.graphiql-dark .graphiql-container,body.graphiql-dark .CodeMirror-info,body.graphiql-dark .CodeMirror-lint-tooltip,body.graphiql-dark .graphiql-dialog,body.graphiql-dark .graphiql-dialog-overlay,body.graphiql-dark .graphiql-tooltip,body.graphiql-dark [data-radix-popper-content-wrapper]{--color-primary: 338, 100%, 67%;--color-secondary: 243, 100%, 77%;--color-tertiary: 188, 100%, 44%;--color-info: 208, 100%, 72%;--color-success: 158, 100%, 42%;--color-warning: 30, 100%, 80%;--color-error: 13, 100%, 58%;--color-neutral: 219, 29%, 78%;--color-base: 219, 29%, 18%;--popover-box-shadow: none;--popover-border: 1px solid hsl(var(--color-neutral))}.graphiql-container,.CodeMirror-info,.CodeMirror-lint-tooltip,.graphiql-dialog,.graphiql-container:is(button),.CodeMirror-info:is(button),.CodeMirror-lint-tooltip:is(button),.graphiql-dialog:is(button){color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-body);font-weight:var(----font-weight-regular);line-height:var(--line-height)}.graphiql-container input,.CodeMirror-info input,.CodeMirror-lint-tooltip input,.graphiql-dialog input{color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-caption)}.graphiql-container input::placeholder,.CodeMirror-info input::placeholder,.CodeMirror-lint-tooltip input::placeholder,.graphiql-dialog input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-container a,.CodeMirror-info a,.CodeMirror-lint-tooltip a,.graphiql-dialog a{color:hsl(var(--color-primary))}.graphiql-container a:focus,.CodeMirror-info a:focus,.CodeMirror-lint-tooltip a:focus,.graphiql-dialog a:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-un-styled,button.graphiql-un-styled{all:unset;border-radius:var(--border-radius-4);cursor:pointer}:is(.graphiql-un-styled,button.graphiql-un-styled):hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}:is(.graphiql-un-styled,button.graphiql-un-styled):active{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-un-styled,button.graphiql-un-styled):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button,button.graphiql-button{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border:none;border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),1);cursor:pointer;font-size:var(--font-size-body);padding:var(--px-8) var(--px-12)}:is(.graphiql-button,button.graphiql-button):hover,:is(.graphiql-button,button.graphiql-button):active{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-button,button.graphiql-button):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button-success:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-success),var(--alpha-background-heavy))}.graphiql-button-error:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-button-group{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:calc(var(--border-radius-4) + var(--px-4));display:flex;padding:var(--px-4)}.graphiql-button-group>button.graphiql-button{background-color:transparent}.graphiql-button-group>button.graphiql-button:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-button-group>button.graphiql-button.active{background-color:hsl(var(--color-base));cursor:default}.graphiql-button-group>*+*{margin-left:var(--px-8)}.graphiql-dialog-overlay{position:fixed;inset:0;background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));z-index:10}.graphiql-dialog{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-12);box-shadow:var(--popover-box-shadow);margin:0;max-height:80vh;max-width:80vw;overflow:auto;padding:0;width:unset;transform:translate(-50%,-50%);top:50%;left:50%;position:fixed;z-index:10}.graphiql-dialog-close>svg{color:hsla(var(--color-neutral),var(--alpha-secondary));display:block;height:var(--px-12);padding:var(--px-12);width:var(--px-12)}.graphiql-dropdown-content{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);font-size:inherit;max-width:250px;padding:var(--px-4);font-family:var(--font-family);color:hsl(var(--color-neutral));max-height:min(calc(var(--radix-dropdown-menu-content-available-height) - 10px),400px);overflow-y:scroll}.graphiql-dropdown-item{border-radius:var(--border-radius-4);font-size:inherit;margin:var(--px-4);overflow:hidden;padding:var(--px-6) var(--px-8);text-overflow:ellipsis;white-space:nowrap;outline:none;cursor:pointer;line-height:var(--line-height)}.graphiql-dropdown-item[data-selected],.graphiql-dropdown-item[data-current-nav],.graphiql-dropdown-item:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:inherit}.graphiql-dropdown-item:not(:first-child){margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) blockquote{margin-left:0;margin-right:0;padding-left:var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{border-radius:var(--border-radius-4);font-family:var(--font-family-mono);font-size:var(--font-size-inline-code)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code{padding:var(--px-2)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{overflow:auto;padding:var(--px-6) var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre code{background-color:initial;border-radius:0;padding:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{padding-left:var(--px-16)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol{list-style-type:decimal}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{list-style-type:disc}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) img{border-radius:var(--border-radius-4);max-height:120px;max-width:100%}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:first-child{margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:last-child{margin-bottom:0}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a{color:hsl(var(--color-primary));text-decoration:none}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a:hover{text-decoration:underline}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) blockquote{border-left:1.5px solid hsla(var(--color-neutral),var(--alpha-tertiary))}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) code,:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) pre{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:hsla(var(--color-neutral),1)}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description)>*{margin:var(--px-12) 0}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) a{color:hsl(var(--color-warning));text-decoration:underline}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) blockquote{border-left:1.5px solid hsl(var(--color-warning))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) pre{background-color:hsla(var(--color-warning),var(--alpha-background-heavy))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation)>*{margin:var(--px-8) 0}.graphiql-markdown-preview>:not(:first-child){display:none}.CodeMirror-hint-information-deprecation,.CodeMirror-info .info-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));margin-top:var(--px-12);padding:var(--px-6) var(--px-8)}.CodeMirror-hint-information-deprecation-label,.CodeMirror-info .info-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation-reason{margin-top:var(--px-6)}.graphiql-spinner{height:56px;margin:auto;margin-top:var(--px-16);width:56px}.graphiql-spinner:after{animation:rotation .8s linear 0s infinite;border:4px solid transparent;border-radius:100%;border-top:4px solid hsla(var(--color-neutral),var(--alpha-tertiary));content:\"\";display:inline-block;height:46px;vertical-align:middle;width:46px}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.graphiql-tooltip{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsl(var(--color-neutral));font-size:inherit;padding:var(--px-4) var(--px-6);font-family:var(--font-family)}.graphiql-tabs{display:flex;align-items:center;overflow-x:auto;padding:var(--px-12)}.graphiql-tabs>:not(:first-child){margin-left:var(--px-12)}.graphiql-tab{align-items:stretch;border-radius:var(--border-radius-8);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex}.graphiql-tab>button.graphiql-tab-close{visibility:hidden}.graphiql-tab.graphiql-tab-active>button.graphiql-tab-close,.graphiql-tab:hover>button.graphiql-tab-close,.graphiql-tab:focus-within>button.graphiql-tab-close{visibility:unset}.graphiql-tab.graphiql-tab-active{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));color:hsla(var(--color-neutral),1)}button.graphiql-tab-button{padding:var(--px-4) 0 var(--px-4) var(--px-8)}button.graphiql-tab-close{align-items:center;display:flex;padding:var(--px-4) var(--px-8)}button.graphiql-tab-close>svg{height:var(--px-8);width:var(--px-8)}.graphiql-history-header{font-size:var(--font-size-h2);font-weight:var(--font-weight-medium);display:flex;justify-content:space-between;align-items:center}.graphiql-history-header button{font-size:var(--font-size-inline-code);padding:var(--px-6) var(--px-10)}.graphiql-history-items{margin:var(--px-16) 0 0;list-style:none;padding:0}.graphiql-history-item{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;font-size:var(--font-size-inline-code);font-family:var(--font-family-mono);height:34px}.graphiql-history-item:hover{color:hsla(var(--color-neutral),1);background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-history-item:not(:first-child){margin-top:var(--px-4)}.graphiql-history-item.editable{background-color:hsla(var(--color-primary),var(--alpha-background-medium))}.graphiql-history-item.editable>input{background:transparent;border:none;flex:1;margin:0;outline:none;padding:0 var(--px-10);width:100%}.graphiql-history-item.editable>input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-history-item.editable>button{color:hsl(var(--color-primary));padding:0 var(--px-10)}.graphiql-history-item.editable>button:active{background-color:hsla(var(--color-primary),var(--alpha-background-heavy))}.graphiql-history-item.editable>button:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-history-item.editable>button>svg{display:block}button.graphiql-history-item-label{flex:1;padding:var(--px-8) var(--px-10);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}button.graphiql-history-item-action{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;padding:var(--px-8) var(--px-6)}button.graphiql-history-item-action:hover{color:hsla(var(--color-neutral),1)}button.graphiql-history-item-action>svg{height:14px;width:14px}.graphiql-history-item-spacer{height:var(--px-16)}.graphiql-doc-explorer-default-value{color:hsl(var(--color-success))}a.graphiql-doc-explorer-type-name{color:hsl(var(--color-warning));text-decoration:none}a.graphiql-doc-explorer-type-name:hover{text-decoration:underline}a.graphiql-doc-explorer-type-name:focus{outline:hsl(var(--color-warning)) auto 1px}.graphiql-doc-explorer-argument>*+*{margin-top:var(--px-12)}.graphiql-doc-explorer-argument-name{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-argument-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-argument-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--px-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-directive{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-section-title{align-items:center;display:flex;font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);line-height:1}.graphiql-doc-explorer-section-title>svg{height:var(--px-16);margin-right:var(--px-8);width:var(--px-16)}.graphiql-doc-explorer-section-content{margin-left:var(--px-8);margin-top:var(--px-16)}.graphiql-doc-explorer-section-content>*+*{margin-top:var(--px-16)}.graphiql-doc-explorer-root-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-doc-explorer-search:not([data-state=\"idle\"]){border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1)}.graphiql-doc-explorer-search:not([data-state=\"idle\"]) .graphiql-doc-explorer-search-input{background:hsl(var(--color-base))}.graphiql-doc-explorer-search-input{align-items:center;background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:var(--border-radius-4);display:flex;padding:var(--px-8) var(--px-12)}.graphiql-doc-explorer-search [role=combobox]{border:none;background-color:transparent;margin-left:var(--px-4);width:100%}.graphiql-doc-explorer-search [role=combobox]:focus{outline:none}.graphiql-doc-explorer-search [role=listbox]{background-color:hsl(var(--color-base));border:none;border-bottom-left-radius:var(--border-radius-4);border-bottom-right-radius:var(--border-radius-4);border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));max-height:400px;overflow-y:auto;margin:0;font-size:var(--font-size-body);padding:var(--px-4);position:relative}.graphiql-doc-explorer-search [role=option]{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));overflow-x:hidden;padding:var(--px-8) var(--px-12);text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-doc-explorer-search [role=option]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy))}:is(.graphiql-doc-explorer-search [role=\"option\"])+:is(.graphiql-doc-explorer-search [role=\"option\"]){margin-top:var(--px-4)}.graphiql-doc-explorer-search-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search-field{color:hsl(var(--color-warning))}.graphiql-doc-explorer-search-argument{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-search-divider{color:hsla(var(--color-neutral),var(--alpha-secondary));font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);margin-top:var(--px-8);padding:var(--px-8) var(--px-12)}.graphiql-doc-explorer-search-empty{color:hsla(var(--color-neutral),var(--alpha-secondary));padding:var(--px-8) var(--px-12)}a.graphiql-doc-explorer-field-name{color:hsl(var(--color-info));text-decoration:none}a.graphiql-doc-explorer-field-name:hover{text-decoration:underline}a.graphiql-doc-explorer-field-name:focus{outline:hsl(var(--color-info)) auto 1px}.graphiql-doc-explorer-item>:not(:first-child){margin-top:var(--px-12)}.graphiql-doc-explorer-argument-multiple{margin-left:var(--px-8)}.graphiql-doc-explorer-enum-value{color:hsl(var(--color-info))}.graphiql-doc-explorer-header{display:flex;justify-content:space-between;position:relative}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-title{visibility:hidden}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-back:not(:focus){color:transparent}.graphiql-doc-explorer-header-content{display:flex;flex-direction:column;min-width:0}.graphiql-doc-explorer-search{position:absolute;right:0;top:0}.graphiql-doc-explorer-search:focus-within{left:0}.graphiql-doc-explorer-search [role=combobox]{height:24px;width:4ch}.graphiql-doc-explorer-search [role=combobox]:focus{width:100%}a.graphiql-doc-explorer-back{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;text-decoration:none}a.graphiql-doc-explorer-back:hover{text-decoration:underline}a.graphiql-doc-explorer-back:focus{outline:hsla(var(--color-neutral),var(--alpha-secondary)) auto 1px}a.graphiql-doc-explorer-back:focus+.graphiql-doc-explorer-title{visibility:unset}a.graphiql-doc-explorer-back>svg{height:var(--px-8);margin-right:var(--px-8);width:var(--px-8)}.graphiql-doc-explorer-title{font-weight:var(--font-weight-medium);font-size:var(--font-size-h2);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.graphiql-doc-explorer-title:not(:first-child){font-size:var(--font-size-h3);margin-top:var(--px-8)}.graphiql-doc-explorer-content>*{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-20)}.graphiql-doc-explorer-error{background-color:hsla(var(--color-error),var(--alpha-background-heavy));border:1px solid hsl(var(--color-error));border-radius:var(--border-radius-8);color:hsl(var(--color-error));padding:var(--px-8) var(--px-12)}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:\"\"}span.CodeMirror-selectedtext{background:none}.graphiql-container .CodeMirror{height:100%;position:absolute;width:100%}.graphiql-container .CodeMirror{font-family:var(--font-family-mono)}.graphiql-container .CodeMirror,.graphiql-container .CodeMirror-gutters{background:none;background-color:var(--editor-background, hsl(var(--color-base)))}.graphiql-container .CodeMirror-linenumber{padding:0}.graphiql-container .CodeMirror-gutters{border:none}.cm-s-graphiql{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-keyword{color:hsl(var(--color-primary))}.cm-s-graphiql .cm-def{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-punctuation{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-variable{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-atom{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-number{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string{color:hsl(var(--color-warning))}.cm-s-graphiql .cm-builtin{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string-2{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-attribute,.cm-s-graphiql .cm-meta{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-property{color:hsl(var(--color-info))}.cm-s-graphiql .cm-qualifier{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-comment{color:hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .cm-ws{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-invalidchar{color:hsl(var(--color-error))}.cm-s-graphiql .CodeMirror-cursor{border-left:2px solid hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .CodeMirror-linenumber{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.graphiql-container div.CodeMirror span.CodeMirror-matchingbracket,.graphiql-container div.CodeMirror span.CodeMirror-nonmatchingbracket{color:hsl(var(--color-warning))}.graphiql-container .CodeMirror-selected,.graphiql-container .CodeMirror-focused .CodeMirror-selected{background:hsla(var(--color-neutral),var(--alpha-background-heavy))}.graphiql-container .CodeMirror-dialog{background:inherit;color:inherit;left:0;right:0;overflow:hidden;padding:var(--px-2) var(--px-6);position:absolute;z-index:6}.graphiql-container .CodeMirror-dialog-top{border-bottom:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));padding-bottom:var(--px-12);top:0}.graphiql-container .CodeMirror-dialog-bottom{border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));bottom:0;padding-top:var(--px-12)}.graphiql-container .CodeMirror-search-hint{display:none}.graphiql-container .CodeMirror-dialog input{border:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));border-radius:var(--border-radius-4);padding:var(--px-4)}.graphiql-container .CodeMirror-dialog input:focus{outline:hsl(var(--color-primary)) solid 2px}.graphiql-container .cm-searching{background-color:hsla(var(--color-warning),var(--alpha-background-light));padding-bottom:1.5px;padding-top:.5px}.CodeMirror-foldmarker{color:#00f;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{cursor:pointer}.CodeMirror-foldgutter-open:after{content:\"▾\"}.CodeMirror-foldgutter-folded:after{content:\"▸\"}.CodeMirror-foldgutter{width:var(--px-12)}.CodeMirror-foldmarker{background-color:hsl(var(--color-info));border-radius:var(--border-radius-4);color:hsl(var(--color-base));font-family:inherit;margin:0 var(--px-4);padding:0 var(--px-8);text-shadow:none}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.CodeMirror-foldgutter-open:after,.CodeMirror-foldgutter-folded:after{margin:0 var(--px-2)}.graphiql-editor{height:100%;position:relative;width:100%}.graphiql-editor.hidden{left:-9999px;position:absolute;top:-9999px;visibility:hidden}.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:#ffd;border:1px solid black;border-radius:4px;color:#000;font-family:monospace;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;white-space:pre;white-space:pre-wrap;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-lint-mark{background-position:left bottom;background-repeat:repeat-x}.CodeMirror-lint-mark-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=)}.CodeMirror-lint-mark-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==)}.CodeMirror-lint-marker{background-position:center center;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;width:16px;vertical-align:middle;position:relative}.CodeMirror-lint-message{padding-left:18px;background-position:top left;background-repeat:no-repeat}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=)}.CodeMirror-lint-marker-multiple{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:right bottom;width:100%;height:100%}.CodeMirror-lint-line-error{background-color:#b74c5114}.CodeMirror-lint-line-warning{background-color:#ffd3001a}.CodeMirror-lint-mark-error,.CodeMirror-lint-mark-warning{background-repeat:repeat-x;background-size:10px 3px;background-position:0 95%}.cm-s-graphiql .CodeMirror-lint-mark-error{color:hsl(var(--color-error))}.CodeMirror-lint-mark-error{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--color-error)) 80%,transparent 90%),linear-gradient(135deg,transparent 5%,hsl(var(--color-error)) 15%,transparent 25%),linear-gradient(135deg,transparent 45%,hsl(var(--color-error)) 55%,transparent 65%),linear-gradient(45deg,transparent 25%,hsl(var(--color-error)) 35%,transparent 50%)}.cm-s-graphiql .CodeMirror-lint-mark-warning{color:hsl(var(--color-warning))}.CodeMirror-lint-mark-warning{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--color-warning)) 80%,transparent 90%),linear-gradient(135deg,transparent 5%,hsl(var(--color-warning)) 15%,transparent 25%),linear-gradient(135deg,transparent 45%,hsl(var(--color-warning)) 55%,transparent 65%),linear-gradient(45deg,transparent 25%,hsl(var(--color-warning)) 35%,transparent 50%)}.CodeMirror-lint-tooltip{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);font-size:var(--font-size-body);font-family:var(--font-family);max-width:600px;overflow:hidden;padding:var(--px-12)}.CodeMirror-lint-message-error,.CodeMirror-lint-message-warning{background-image:none;padding:0}.CodeMirror-lint-message-error{color:hsl(var(--color-error))}.CodeMirror-lint-message-warning{color:hsl(var(--color-warning))}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px #0003;border-radius:3px;border:1px solid silver;background:white;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-hints{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);display:grid;font-family:var(--font-family);font-size:var(--font-size-body);grid-template-columns:auto fit-content(300px);max-height:264px;padding:0}.CodeMirror-hint{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));grid-column:1 / 2;margin:var(--px-4);padding:var(--px-6) var(--px-8)!important}.CodeMirror-hint:not(:first-child){margin-top:0}li.CodeMirror-hint-active{background:hsla(var(--color-primary),var(--alpha-background-medium));color:hsl(var(--color-primary))}.CodeMirror-hint-information{border-left:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));grid-column:2 / 3;grid-row:1 / 99999;max-height:264px;overflow:auto;padding:var(--px-12)}.CodeMirror-hint-information-header{display:flex;align-items:baseline}.CodeMirror-hint-information-field-name{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-hint-information-type-name{color:inherit;text-decoration:none}.CodeMirror-hint-information-type-name:hover{text-decoration:underline dotted}.CodeMirror-hint-information-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12)}.CodeMirror-info{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1);max-height:300px;max-width:400px;opacity:0;overflow:auto;padding:var(--px-12);position:fixed;transition:opacity .15s;z-index:10}.CodeMirror-info a{color:inherit;text-decoration:none}.CodeMirror-info a:hover{text-decoration:underline dotted}.CodeMirror-info .CodeMirror-info-header{display:flex;align-items:baseline}.CodeMirror-info .CodeMirror-info-header>.type-name,.CodeMirror-info .CodeMirror-info-header>.field-name,.CodeMirror-info .CodeMirror-info-header>.arg-name,.CodeMirror-info .CodeMirror-info-header>.directive-name,.CodeMirror-info .CodeMirror-info-header>.enum-value{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-info .type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-info .info-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12);overflow:hidden}.CodeMirror-jump-token{text-decoration:underline dotted;cursor:pointer}.auto-inserted-leaf.cm-property{animation-duration:6s;animation-name:insertionFade;border-radius:var(--border-radius-4);padding:var(--px-2)}@keyframes insertionFade{0%,to{background-color:none}15%,85%{background-color:hsla(var(--color-warning),var(--alpha-background-light))}}button.graphiql-toolbar-button{display:flex;align-items:center;justify-content:center;height:var(--toolbar-width);width:var(--toolbar-width)}button.graphiql-toolbar-button.error{background:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-execute-button-wrapper{position:relative}button.graphiql-execute-button{background-color:hsl(var(--color-primary));border:none;border-radius:var(--border-radius-8);cursor:pointer;height:var(--toolbar-width);padding:0;width:var(--toolbar-width)}button.graphiql-execute-button:hover{background-color:hsla(var(--color-primary),.9)}button.graphiql-execute-button:active{background-color:hsla(var(--color-primary),.8)}button.graphiql-execute-button:focus{outline:hsla(var(--color-primary),.8) auto 1px}button.graphiql-execute-button>svg{color:#fff;display:block;height:var(--px-16);margin:auto;width:var(--px-16)}button.graphiql-toolbar-menu{display:block;height:var(--toolbar-width);width:var(--toolbar-width)}\n\n/*!*********************************************************************************************************************!*\\\n !*** css ../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js!./style.css ***!\n \\*********************************************************************************************************************/\n/* Everything */\n.graphiql-container {\n background-color: hsl(var(--color-base));\n display: flex;\n height: 100%;\n margin: 0;\n overflow: hidden;\n width: 100%;\n}\n/* The sidebar */\n.graphiql-container .graphiql-sidebar {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: var(--px-8);\n width: var(--sidebar-width);\n}\n.graphiql-container .graphiql-sidebar .graphiql-sidebar-section {\n display: flex;\n flex-direction: column;\n gap: var(--px-8);\n}\n.graphiql-container .graphiql-sidebar button {\n display: flex;\n align-items: center;\n justify-content: center;\n color: hsla(var(--color-neutral), var(--alpha-secondary));\n height: calc(var(--sidebar-width) - (2 * var(--px-8)));\n width: calc(var(--sidebar-width) - (2 * var(--px-8)));\n}\n.graphiql-container .graphiql-sidebar button.active {\n color: hsla(var(--color-neutral), 1);\n}\n.graphiql-container .graphiql-sidebar button:not(:first-child) {\n margin-top: var(--px-4);\n}\n.graphiql-container .graphiql-sidebar button > svg {\n height: var(--px-20);\n width: var(--px-20);\n}\n/* The main content, i.e. everything except the sidebar */\n.graphiql-container .graphiql-main {\n display: flex;\n flex: 1;\n min-width: 0;\n}\n/* The current session and tabs */\n.graphiql-container .graphiql-sessions {\n background-color: hsla(var(--color-neutral), var(--alpha-background-light));\n /* Adding the 8px of padding to the inner border radius of the query editor */\n border-radius: calc(var(--border-radius-12) + var(--px-8));\n display: flex;\n flex-direction: column;\n flex: 1;\n max-height: 100%;\n margin: var(--px-16);\n margin-left: 0;\n min-width: 0;\n}\n/* The session header containing tabs and the logo */\n.graphiql-container .graphiql-session-header {\n align-items: center;\n display: flex;\n justify-content: space-between;\n height: var(--session-header-height);\n}\n/* The button to add a new tab */\nbutton.graphiql-tab-add {\n height: 100%;\n padding: var(--px-4);\n}\nbutton.graphiql-tab-add > svg {\n color: hsla(var(--color-neutral), var(--alpha-secondary));\n display: block;\n height: var(--px-16);\n width: var(--px-16);\n}\n/* The right-hand-side of the session header */\n.graphiql-container .graphiql-session-header-right {\n align-items: center;\n display: flex;\n}\n/* The GraphiQL logo */\n.graphiql-container .graphiql-logo {\n color: hsla(var(--color-neutral), var(--alpha-secondary));\n font-size: var(--font-size-h4);\n font-weight: var(--font-weight-medium);\n padding: var(--px-12) var(--px-16);\n}\n/* Undo default link styling for the default GraphiQL logo link */\n.graphiql-container .graphiql-logo .graphiql-logo-link {\n color: hsla(var(--color-neutral), var(--alpha-secondary));\n text-decoration: none;\n}\n/* The editor of the session */\n.graphiql-container .graphiql-session {\n display: flex;\n flex: 1;\n padding: 0 var(--px-8) var(--px-8);\n}\n/* All editors (query, variable, headers) */\n.graphiql-container .graphiql-editors {\n background-color: hsl(var(--color-base));\n border-radius: calc(var(--border-radius-12));\n box-shadow: var(--popover-box-shadow);\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n.graphiql-container .graphiql-editors.full-height {\n margin-top: calc(var(--px-8) - var(--session-header-height));\n}\n/* The query editor and the toolbar */\n.graphiql-container .graphiql-query-editor {\n border-bottom: 1px solid\n hsla(var(--color-neutral), var(--alpha-background-heavy));\n padding: var(--px-16);\n column-gap: var(--px-16);\n display: flex;\n width: 100%;\n}\n/* The vertical toolbar next to the query editor */\n.graphiql-container .graphiql-toolbar {\n width: var(--toolbar-width);\n}\n.graphiql-container .graphiql-toolbar > * + * {\n margin-top: var(--px-8);\n}\n/* The toolbar icons */\n.graphiql-toolbar-icon {\n color: hsla(var(--color-neutral), var(--alpha-tertiary));\n display: block;\n height: calc(var(--toolbar-width) - (var(--px-8) * 2));\n width: calc(var(--toolbar-width) - (var(--px-8) * 2));\n}\n/* The tab bar for editor tools */\n.graphiql-container .graphiql-editor-tools {\n cursor: row-resize;\n display: flex;\n width: 100%;\n column-gap: var(--px-8);\n padding: var(--px-8);\n}\n.graphiql-container .graphiql-editor-tools button {\n color: hsla(var(--color-neutral), var(--alpha-secondary));\n}\n.graphiql-container .graphiql-editor-tools button.active {\n color: hsla(var(--color-neutral), 1);\n}\n/* The tab buttons to switch between editor tools */\n.graphiql-container\n .graphiql-editor-tools\n > button:not(.graphiql-toggle-editor-tools) {\n padding: var(--px-8) var(--px-12);\n}\n.graphiql-container .graphiql-editor-tools .graphiql-toggle-editor-tools {\n margin-left: auto;\n}\n/* An editor tool, e.g. variable or header editor */\n.graphiql-container .graphiql-editor-tool {\n flex: 1;\n padding: var(--px-16);\n}\n/**\n * The way CodeMirror editors are styled they overflow their containing\n * element. For some OS-browser-combinations this might cause overlap issues,\n * setting the position of this to `relative` makes sure this element will\n * always be on top of any editors.\n */\n.graphiql-container .graphiql-toolbar,\n.graphiql-container .graphiql-editor-tools,\n.graphiql-container .graphiql-editor-tool {\n position: relative;\n}\n/* The response view */\n.graphiql-container .graphiql-response {\n --editor-background: transparent;\n display: flex;\n width: 100%;\n flex-direction: column;\n}\n/* The results editor wrapping container */\n.graphiql-container .graphiql-response .result-window {\n position: relative;\n flex: 1;\n}\n/* The footer below the response view */\n.graphiql-container .graphiql-footer {\n border-top: 1px solid\n hsla(var(--color-neutral), var(--alpha-background-heavy));\n}\n/* The plugin container */\n.graphiql-container .graphiql-plugin {\n border-left: 1px solid\n hsla(var(--color-neutral), var(--alpha-background-heavy));\n flex: 1;\n overflow-y: auto;\n padding: var(--px-16);\n}\n/* Generic drag bar for horizontal resizing */\n.graphiql-horizontal-drag-bar {\n width: var(--px-12);\n cursor: col-resize;\n}\n.graphiql-horizontal-drag-bar:hover::after {\n border: var(--px-2) solid\n hsla(var(--color-neutral), var(--alpha-background-heavy));\n border-radius: var(--border-radius-2);\n content: '';\n display: block;\n height: 25%;\n margin: 0 auto;\n position: relative;\n /* (100% - 25%) / 2 = 37.5% */\n top: 37.5%;\n width: 0;\n}\n.graphiql-container .graphiql-chevron-icon {\n color: hsla(var(--color-neutral), var(--alpha-tertiary));\n display: block;\n height: var(--px-12);\n margin: var(--px-12);\n width: var(--px-12);\n}\n/* Generic spin animation */\n.graphiql-spin {\n animation: spin 0.8s linear 0s infinite;\n}\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n/* The header of the settings dialog */\n.graphiql-dialog .graphiql-dialog-header {\n align-items: center;\n display: flex;\n justify-content: space-between;\n padding: var(--px-24);\n}\n/* The title of the settings dialog */\n.graphiql-dialog .graphiql-dialog-title {\n font-size: var(--font-size-h3);\n font-weight: var(--font-weight-medium);\n margin: 0;\n}\n/* A section inside the settings dialog */\n.graphiql-dialog .graphiql-dialog-section {\n align-items: center;\n border-top: 1px solid\n hsla(var(--color-neutral), var(--alpha-background-heavy));\n display: flex;\n justify-content: space-between;\n padding: var(--px-24);\n}\n.graphiql-dialog .graphiql-dialog-section > :not(:first-child) {\n margin-left: var(--px-24);\n}\n/* The section title in the settings dialog */\n.graphiql-dialog .graphiql-dialog-section-title {\n font-size: var(--font-size-h4);\n font-weight: var(--font-weight-medium);\n}\n/* The section caption in the settings dialog */\n.graphiql-dialog .graphiql-dialog-section-caption {\n color: hsla(var(--color-neutral), var(--alpha-secondary));\n}\n.graphiql-dialog .graphiql-warning-text {\n color: hsl(var(--color-warning));\n font-weight: var(--font-weight-medium);\n}\n.graphiql-dialog .graphiql-table {\n border-collapse: collapse;\n width: 100%;\n}\n.graphiql-dialog .graphiql-table :is(th, td) {\n border: 1px solid hsla(var(--color-neutral), var(--alpha-background-heavy));\n padding: var(--px-8) var(--px-12);\n}\n/* A single key the short-key dialog */\n.graphiql-dialog .graphiql-key {\n background-color: hsla(var(--color-neutral), var(--alpha-background-medium));\n border-radius: var(--border-radius-4);\n padding: var(--px-4);\n}\n/* Avoid showing native tooltips for icons with titles */\n.graphiql-container svg {\n pointer-events: none;\n}\n\n\n/*# sourceMappingURL=graphiql.css.map*/","body {\r\n margin: 0;\r\n padding: 0;\r\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\r\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\r\n sans-serif;\r\n -webkit-font-smoothing: antialiased;\r\n -moz-osx-font-smoothing: grayscale;\r\n}\r\n\r\n.graphiql-container, .graphiql-container button, .graphiql-container input {\r\n font-family: inherit !important;\r\n}\r\n\r\n.graphiql-container .historyPaneWrap {\r\n border-left: 1px solid #ccc !important;\r\n}\r\n\r\n#root {\r\n height: 100vh;\r\n width: 100vw;\r\n}\r\n\r\n\r\n\r\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/css/main.39210121.css b/serv/web/build/static/css/main.eee41caf.css similarity index 89% rename from serv/web/build/static/css/main.39210121.css rename to serv/web/build/static/css/main.eee41caf.css index 71a89d86..2f285965 100644 --- a/serv/web/build/static/css/main.39210121.css +++ b/serv/web/build/static/css/main.eee41caf.css @@ -8,9 +8,9 @@ /*!********************************************************************************************!*\ !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/dist/style.css ***! - \********************************************************************************************/.graphiql-container *{-webkit-font-feature-settings:none;font-feature-settings:none;box-sizing:border-box;-webkit-font-variant-ligatures:none;font-variant-ligatures:none}.CodeMirror-info,.CodeMirror-lint-tooltip,.graphiql-container,.graphiql-dialog,.graphiql-dialog-overlay,.graphiql-tooltip,[data-radix-popper-content-wrapper]{--color-primary:320,95%,43%;--color-secondary:242,51%,61%;--color-tertiary:188,100%,36%;--color-info:208,100%,46%;--color-success:158,60%,42%;--color-warning:36,100%,41%;--color-error:13,93%,58%;--color-neutral:219,28%,32%;--color-base:219,28%,100%;--alpha-secondary:.76;--alpha-tertiary:.5;--alpha-background-heavy:.15;--alpha-background-medium:.1;--alpha-background-light:.07;--font-family:"Roboto",sans-serif;--font-family-mono:"Fira Code",monospace;--font-size-hint:.75rem;--font-size-inline-code:.8125rem;--font-size-body:.9375rem;--font-size-h4:1.125rem;--font-size-h3:1.375rem;--font-size-h2:1.8125rem;--font-weight-regular:400;--font-weight-medium:500;--line-height:1.5;--px-2:2px;--px-4:4px;--px-6:6px;--px-8:8px;--px-10:10px;--px-12:12px;--px-16:16px;--px-20:20px;--px-24:24px;--border-radius-2:2px;--border-radius-4:4px;--border-radius-8:8px;--border-radius-12:12px;--popover-box-shadow:0px 6px 20px rgba(59,76,106,.13),0px 1.34018px 4.46726px rgba(59,76,106,.077),0px .399006px 1.33002px rgba(59,76,106,.053);--popover-border:none;--sidebar-width:60px;--toolbar-width:40px;--session-header-height:51px}@media (prefers-color-scheme:dark){body:not(.graphiql-light) .CodeMirror-info,body:not(.graphiql-light) .CodeMirror-lint-tooltip,body:not(.graphiql-light) .graphiql-container,body:not(.graphiql-light) .graphiql-dialog,body:not(.graphiql-light) .graphiql-dialog-overlay,body:not(.graphiql-light) .graphiql-tooltip,body:not(.graphiql-light) [data-radix-popper-content-wrapper]{--color-primary:338,100%,67%;--color-secondary:243,100%,77%;--color-tertiary:188,100%,44%;--color-info:208,100%,72%;--color-success:158,100%,42%;--color-warning:30,100%,80%;--color-error:13,100%,58%;--color-neutral:219,29%,78%;--color-base:219,29%,18%;--popover-box-shadow:none;--popover-border:1px solid hsl(var(--color-neutral))}}body.graphiql-dark .CodeMirror-info,body.graphiql-dark .CodeMirror-lint-tooltip,body.graphiql-dark .graphiql-container,body.graphiql-dark .graphiql-dialog,body.graphiql-dark .graphiql-dialog-overlay,body.graphiql-dark .graphiql-tooltip,body.graphiql-dark [data-radix-popper-content-wrapper]{--color-primary:338,100%,67%;--color-secondary:243,100%,77%;--color-tertiary:188,100%,44%;--color-info:208,100%,72%;--color-success:158,100%,42%;--color-warning:30,100%,80%;--color-error:13,100%,58%;--color-neutral:219,29%,78%;--color-base:219,29%,18%;--popover-box-shadow:none;--popover-border:1px solid hsl(var(--color-neutral))}.CodeMirror-info,.CodeMirror-info:is(button),.CodeMirror-lint-tooltip,.CodeMirror-lint-tooltip:is(button),.graphiql-container,.graphiql-container:is(button),.graphiql-dialog,.graphiql-dialog:is(button){color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-body);font-weight:var(----font-weight-regular);line-height:var(--line-height)}.CodeMirror-info input,.CodeMirror-lint-tooltip input,.graphiql-container input,.graphiql-dialog input{color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-caption)}.CodeMirror-info input::-webkit-input-placeholder,.CodeMirror-lint-tooltip input::-webkit-input-placeholder,.graphiql-container input::-webkit-input-placeholder,.graphiql-dialog input::-webkit-input-placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.CodeMirror-info input::placeholder,.CodeMirror-lint-tooltip input::placeholder,.graphiql-container input::placeholder,.graphiql-dialog input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.CodeMirror-info a,.CodeMirror-lint-tooltip a,.graphiql-container a,.graphiql-dialog a{color:hsl(var(--color-primary))}.CodeMirror-info a:focus,.CodeMirror-lint-tooltip a:focus,.graphiql-container a:focus,.graphiql-dialog a:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-un-styled,button.graphiql-un-styled{all:unset;border-radius:var(--border-radius-4);cursor:pointer}:is(.graphiql-un-styled,button.graphiql-un-styled):hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}:is(.graphiql-un-styled,button.graphiql-un-styled):active{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-un-styled,button.graphiql-un-styled):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button,button.graphiql-button{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border:none;border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),1);cursor:pointer;font-size:var(--font-size-body);padding:var(--px-8) var(--px-12)}:is(.graphiql-button,button.graphiql-button):active,:is(.graphiql-button,button.graphiql-button):hover{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-button,button.graphiql-button):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button-success:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-success),var(--alpha-background-heavy))}.graphiql-button-error:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-button-group{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:calc(var(--border-radius-4) + var(--px-4));display:flex;padding:var(--px-4)}.graphiql-button-group>button.graphiql-button{background-color:initial}.graphiql-button-group>button.graphiql-button:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-button-group>button.graphiql-button.active{background-color:hsl(var(--color-base));cursor:default}.graphiql-button-group>*+*{margin-left:var(--px-8)}.graphiql-dialog-overlay{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));inset:0;position:fixed;z-index:10}.graphiql-dialog{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-12);box-shadow:var(--popover-box-shadow);left:50%;margin:0;max-height:80vh;max-width:80vw;overflow:auto;padding:0;position:fixed;top:50%;-webkit-transform:translate(-50%,-50%);transform:translate(-50%,-50%);width:auto;z-index:10}.graphiql-dialog-close>svg{color:hsla(var(--color-neutral),var(--alpha-secondary));display:block;height:var(--px-12);padding:var(--px-12);width:var(--px-12)}.graphiql-dropdown-content{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);color:hsl(var(--color-neutral));font-family:var(--font-family);font-size:inherit;max-height:min(calc(var(--radix-dropdown-menu-content-available-height) - 10px),400px);max-width:250px;overflow-y:scroll;padding:var(--px-4)}.graphiql-dropdown-item{border-radius:var(--border-radius-4);cursor:pointer;font-size:inherit;line-height:var(--line-height);margin:var(--px-4);outline:none;overflow:hidden;padding:var(--px-6) var(--px-8);text-overflow:ellipsis;white-space:nowrap}.graphiql-dropdown-item:hover,.graphiql-dropdown-item[data-current-nav],.graphiql-dropdown-item[data-selected]{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:inherit}.graphiql-dropdown-item:not(:first-child){margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) blockquote{margin-left:0;margin-right:0;padding-left:var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{border-radius:var(--border-radius-4);font-family:var(--font-family-mono);font-size:var(--font-size-inline-code)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code{padding:var(--px-2)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{overflow:auto;padding:var(--px-6) var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre code{background-color:initial;border-radius:0;padding:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{padding-left:var(--px-16)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol{list-style-type:decimal}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{list-style-type:disc}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) img{border-radius:var(--border-radius-4);max-height:120px;max-width:100%}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:first-child{margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:last-child{margin-bottom:0}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a{color:hsl(var(--color-primary));text-decoration:none}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a:hover{text-decoration:underline}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) blockquote{border-left:1.5px solid hsla(var(--color-neutral),var(--alpha-tertiary))}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) code,:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) pre{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:hsla(var(--color-neutral),1)}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description)>*{margin:var(--px-12) 0}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) a{color:hsl(var(--color-warning));text-decoration:underline}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) blockquote{border-left:1.5px solid hsl(var(--color-warning))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) pre{background-color:hsla(var(--color-warning),var(--alpha-background-heavy))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation)>*{margin:var(--px-8) 0}.graphiql-markdown-preview>:not(:first-child){display:none}.CodeMirror-hint-information-deprecation,.CodeMirror-info .info-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));margin-top:var(--px-12);padding:var(--px-6) var(--px-8)}.CodeMirror-hint-information-deprecation-label,.CodeMirror-info .info-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation-reason{margin-top:var(--px-6)}.graphiql-spinner{height:56px;margin:auto;margin-top:var(--px-16);width:56px}.graphiql-spinner:after{-webkit-animation:rotation .8s linear 0s infinite;animation:rotation .8s linear 0s infinite;border:4px solid transparent;border-radius:100%;border-top:4px solid hsla(var(--color-neutral),var(--alpha-tertiary));content:"";display:inline-block;height:46px;vertical-align:middle;width:46px}@-webkit-keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes rotation{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.graphiql-tooltip{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsl(var(--color-neutral));font-family:var(--font-family);font-size:inherit;padding:var(--px-4) var(--px-6)}.graphiql-tabs{align-items:center;display:flex;overflow-x:auto;padding:var(--px-12)}.graphiql-tabs>:not(:first-child){margin-left:var(--px-12)}.graphiql-tab{align-items:stretch;border-radius:var(--border-radius-8);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex}.graphiql-tab>button.graphiql-tab-close{visibility:hidden}.graphiql-tab.graphiql-tab-active>button.graphiql-tab-close,.graphiql-tab:focus-within>button.graphiql-tab-close,.graphiql-tab:hover>button.graphiql-tab-close{visibility:inherit}.graphiql-tab.graphiql-tab-active{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));color:hsla(var(--color-neutral),1)}button.graphiql-tab-button{padding:var(--px-4) 0 var(--px-4) var(--px-8)}button.graphiql-tab-close{align-items:center;display:flex;padding:var(--px-4) var(--px-8)}button.graphiql-tab-close>svg{height:var(--px-8);width:var(--px-8)}.graphiql-history-header{align-items:center;display:flex;font-size:var(--font-size-h2);font-weight:var(--font-weight-medium);justify-content:space-between}.graphiql-history-header button{font-size:var(--font-size-inline-code);padding:var(--px-6) var(--px-10)}.graphiql-history-items{list-style:none;margin:var(--px-16) 0 0;padding:0}.graphiql-history-item{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;font-family:var(--font-family-mono);font-size:var(--font-size-inline-code);height:34px}.graphiql-history-item:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:hsla(var(--color-neutral),1)}.graphiql-history-item:not(:first-child){margin-top:var(--px-4)}.graphiql-history-item.editable{background-color:hsla(var(--color-primary),var(--alpha-background-medium))}.graphiql-history-item.editable>input{background:transparent;border:none;flex:1 1;margin:0;outline:none;padding:0 var(--px-10);width:100%}.graphiql-history-item.editable>input::-webkit-input-placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-history-item.editable>input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-history-item.editable>button{color:hsl(var(--color-primary));padding:0 var(--px-10)}.graphiql-history-item.editable>button:active{background-color:hsla(var(--color-primary),var(--alpha-background-heavy))}.graphiql-history-item.editable>button:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-history-item.editable>button>svg{display:block}button.graphiql-history-item-label{flex:1 1;overflow:hidden;padding:var(--px-8) var(--px-10);text-overflow:ellipsis;white-space:nowrap}button.graphiql-history-item-action{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;padding:var(--px-8) var(--px-6)}button.graphiql-history-item-action:hover{color:hsla(var(--color-neutral),1)}button.graphiql-history-item-action>svg{height:14px;width:14px}.graphiql-history-item-spacer{height:var(--px-16)}.graphiql-doc-explorer-default-value{color:hsl(var(--color-success))}a.graphiql-doc-explorer-type-name{color:hsl(var(--color-warning));text-decoration:none}a.graphiql-doc-explorer-type-name:hover{text-decoration:underline}a.graphiql-doc-explorer-type-name:focus{outline:hsl(var(--color-warning)) auto 1px}.graphiql-doc-explorer-argument>*+*{margin-top:var(--px-12)}.graphiql-doc-explorer-argument-name{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-argument-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-argument-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--px-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-directive{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-section-title{align-items:center;display:flex;font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);line-height:1}.graphiql-doc-explorer-section-title>svg{height:var(--px-16);margin-right:var(--px-8);width:var(--px-16)}.graphiql-doc-explorer-section-content{margin-left:var(--px-8);margin-top:var(--px-16)}.graphiql-doc-explorer-section-content>*+*{margin-top:var(--px-16)}.graphiql-doc-explorer-root-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-doc-explorer-search:not([data-state=idle]){border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1)}.graphiql-doc-explorer-search:not([data-state=idle]) .graphiql-doc-explorer-search-input{background:hsl(var(--color-base))}.graphiql-doc-explorer-search-input{align-items:center;background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:var(--border-radius-4);display:flex;padding:var(--px-8) var(--px-12)}.graphiql-doc-explorer-search [role=combobox]{background-color:initial;border:none;margin-left:var(--px-4);width:100%}.graphiql-doc-explorer-search [role=combobox]:focus{outline:none}.graphiql-doc-explorer-search [role=listbox]{background-color:hsl(var(--color-base));border:none;border-bottom-left-radius:var(--border-radius-4);border-bottom-right-radius:var(--border-radius-4);border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));font-size:var(--font-size-body);margin:0;max-height:400px;overflow-y:auto;padding:var(--px-4);position:relative}.graphiql-doc-explorer-search [role=option]{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));cursor:pointer;overflow-x:hidden;padding:var(--px-8) var(--px-12);text-overflow:ellipsis;white-space:nowrap}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-doc-explorer-search [role=option]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy))}:is(.graphiql-doc-explorer-search [role=option])+:is(.graphiql-doc-explorer-search [role=option]){margin-top:var(--px-4)}.graphiql-doc-explorer-search-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search-field{color:hsl(var(--color-warning))}.graphiql-doc-explorer-search-argument{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-search-divider{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);margin-top:var(--px-8)}.graphiql-doc-explorer-search-divider,.graphiql-doc-explorer-search-empty{color:hsla(var(--color-neutral),var(--alpha-secondary));padding:var(--px-8) var(--px-12)}a.graphiql-doc-explorer-field-name{color:hsl(var(--color-info));text-decoration:none}a.graphiql-doc-explorer-field-name:hover{text-decoration:underline}a.graphiql-doc-explorer-field-name:focus{outline:hsl(var(--color-info)) auto 1px}.graphiql-doc-explorer-item>:not(:first-child){margin-top:var(--px-12)}.graphiql-doc-explorer-argument-multiple{margin-left:var(--px-8)}.graphiql-doc-explorer-enum-value{color:hsl(var(--color-info))}.graphiql-doc-explorer-header{display:flex;justify-content:space-between;position:relative}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-title{visibility:hidden}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-back:not(:focus){color:transparent}.graphiql-doc-explorer-header-content{display:flex;flex-direction:column;min-width:0}.graphiql-doc-explorer-search{position:absolute;right:0;top:0}.graphiql-doc-explorer-search:focus-within{left:0}.graphiql-doc-explorer-search [role=combobox]{height:24px;width:4ch}.graphiql-doc-explorer-search [role=combobox]:focus{width:100%}a.graphiql-doc-explorer-back{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;text-decoration:none}a.graphiql-doc-explorer-back:hover{text-decoration:underline}a.graphiql-doc-explorer-back:focus{outline:hsla(var(--color-neutral),var(--alpha-secondary)) auto 1px}a.graphiql-doc-explorer-back:focus+.graphiql-doc-explorer-title{visibility:inherit}a.graphiql-doc-explorer-back>svg{height:var(--px-8);margin-right:var(--px-8);width:var(--px-8)}.graphiql-doc-explorer-title{font-size:var(--font-size-h2);font-weight:var(--font-weight-medium);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.graphiql-doc-explorer-title:not(:first-child){font-size:var(--font-size-h3);margin-top:var(--px-8)}.graphiql-doc-explorer-content>*{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-20)}.graphiql-doc-explorer-error{background-color:hsla(var(--color-error),var(--alpha-background-heavy));border:1px solid hsl(var(--color-error));border-radius:var(--border-radius-8);color:hsl(var(--color-error));padding:var(--px-8) var(--px-12)}.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-webkit-keyframes blink{50%{background-color:initial}}@keyframes blink{50%{background-color:initial}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:-50px}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:none;overflow:scroll!important;padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid transparent;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:none;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:none!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:initial}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:initial}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;-webkit-font-feature-settings:"calt";font-feature-settings:"calt";background:transparent;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:initial}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.graphiql-container .CodeMirror{font-family:var(--font-family-mono);height:100%;position:absolute;width:100%}.graphiql-container .CodeMirror,.graphiql-container .CodeMirror-gutters{background:none;background-color:hsl(var(--color-base));background-color:var(--editor-background,hsl(var(--color-base)))}.graphiql-container .CodeMirror-linenumber{padding:0}.graphiql-container .CodeMirror-gutters{border:none}.cm-s-graphiql{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-keyword{color:hsl(var(--color-primary))}.cm-s-graphiql .cm-def{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-punctuation{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-variable{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-atom{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-number{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string{color:hsl(var(--color-warning))}.cm-s-graphiql .cm-builtin{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string-2{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-attribute,.cm-s-graphiql .cm-meta{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-property{color:hsl(var(--color-info))}.cm-s-graphiql .cm-qualifier{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-comment{color:hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .cm-ws{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-invalidchar{color:hsl(var(--color-error))}.cm-s-graphiql .CodeMirror-cursor{border-left:2px solid hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .CodeMirror-linenumber{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.graphiql-container div.CodeMirror span.CodeMirror-matchingbracket,.graphiql-container div.CodeMirror span.CodeMirror-nonmatchingbracket{color:hsl(var(--color-warning))}.graphiql-container .CodeMirror-focused .CodeMirror-selected,.graphiql-container .CodeMirror-selected{background:hsla(var(--color-neutral),var(--alpha-background-heavy))}.graphiql-container .CodeMirror-dialog{background:inherit;color:inherit;left:0;overflow:hidden;padding:var(--px-2) var(--px-6);position:absolute;right:0;z-index:6}.graphiql-container .CodeMirror-dialog-top{border-bottom:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));padding-bottom:var(--px-12);top:0}.graphiql-container .CodeMirror-dialog-bottom{border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));bottom:0;padding-top:var(--px-12)}.graphiql-container .CodeMirror-search-hint{display:none}.graphiql-container .CodeMirror-dialog input{border:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));border-radius:var(--border-radius-4);padding:var(--px-4)}.graphiql-container .CodeMirror-dialog input:focus{outline:hsl(var(--color-primary)) solid 2px}.graphiql-container .cm-searching{background-color:hsla(var(--color-warning),var(--alpha-background-light));padding-bottom:1.5px;padding-top:.5px}.CodeMirror-foldmarker{color:#00f;cursor:pointer;font-family:arial;line-height:.3;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-folded,.CodeMirror-foldgutter-open{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"▾"}.CodeMirror-foldgutter-folded:after{content:"▸"}.CodeMirror-foldgutter{width:var(--px-12)}.CodeMirror-foldmarker{background-color:hsl(var(--color-info));border-radius:var(--border-radius-4);color:hsl(var(--color-base));font-family:inherit;margin:0 var(--px-4);padding:0 var(--px-8);text-shadow:none}.CodeMirror-foldgutter-folded,.CodeMirror-foldgutter-open{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.CodeMirror-foldgutter-folded:after,.CodeMirror-foldgutter-open:after{margin:0 var(--px-2)}.graphiql-editor{height:100%;position:relative;width:100%}.graphiql-editor.hidden{left:-9999px;position:absolute;top:-9999px;visibility:hidden}.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:#ffd;border:1px solid #000;border-radius:4px;color:#000;font-family:monospace;font-size:10pt;opacity:0;padding:2px 5px;position:fixed;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s;white-space:pre;white-space:pre-wrap;z-index:100}.CodeMirror-lint-mark{background-position:0 100%;background-repeat:repeat-x}.CodeMirror-lint-mark-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=)}.CodeMirror-lint-mark-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==)}.CodeMirror-lint-marker{background-position:50%;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:16px}.CodeMirror-lint-message{background-position:0 0;background-repeat:no-repeat;padding-left:18px}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=)}.CodeMirror-lint-marker-multiple{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC);background-position:100% 100%;background-repeat:no-repeat;height:100%;width:100%}.CodeMirror-lint-line-error{background-color:#b74c5114}.CodeMirror-lint-line-warning{background-color:#ffd3001a}.CodeMirror-lint-mark-error,.CodeMirror-lint-mark-warning{background-position:0 95%;background-repeat:repeat-x;background-size:10px 3px}.cm-s-graphiql .CodeMirror-lint-mark-error{color:hsl(var(--color-error))}.CodeMirror-lint-mark-error{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--color-error)) 80%,transparent 90%),linear-gradient(135deg,transparent 5%,hsl(var(--color-error)) 15%,transparent 25%),linear-gradient(135deg,transparent 45%,hsl(var(--color-error)) 55%,transparent 65%),linear-gradient(45deg,transparent 25%,hsl(var(--color-error)) 35%,transparent 50%)}.cm-s-graphiql .CodeMirror-lint-mark-warning{color:hsl(var(--color-warning))}.CodeMirror-lint-mark-warning{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--color-warning)) 80%,transparent 90%),linear-gradient(135deg,transparent 5%,hsl(var(--color-warning)) 15%,transparent 25%),linear-gradient(135deg,transparent 45%,hsl(var(--color-warning)) 55%,transparent 65%),linear-gradient(45deg,transparent 25%,hsl(var(--color-warning)) 35%,transparent 50%)}.CodeMirror-lint-tooltip{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);font-family:var(--font-family);font-size:var(--font-size-body);max-width:600px;overflow:hidden;padding:var(--px-12)}.CodeMirror-lint-message-error,.CodeMirror-lint-message-warning{background-image:none;padding:0}.CodeMirror-lint-message-error{color:hsl(var(--color-error))}.CodeMirror-lint-message-warning{color:hsl(var(--color-warning))}.CodeMirror-hints{background:#fff;border:1px solid silver;border-radius:3px;box-shadow:2px 3px 5px #0003;font-family:monospace;font-size:90%;list-style:none;margin:0;max-height:20em;overflow:hidden;overflow-y:auto;padding:2px;position:absolute;z-index:10}.CodeMirror-hint{border-radius:2px;color:#000;cursor:pointer;margin:0;padding:0 4px;white-space:pre}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-hints{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);display:grid;font-family:var(--font-family);font-size:var(--font-size-body);grid-template-columns:auto fit-content(300px);max-height:264px;padding:0}.CodeMirror-hint{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));grid-column:1/2;margin:var(--px-4);padding:var(--px-6) var(--px-8)!important}.CodeMirror-hint:not(:first-child){margin-top:0}li.CodeMirror-hint-active{background:hsla(var(--color-primary),var(--alpha-background-medium));color:hsl(var(--color-primary))}.CodeMirror-hint-information{border-left:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));grid-column:2/3;grid-row:1/99999;max-height:264px;overflow:auto;padding:var(--px-12)}.CodeMirror-hint-information-header{align-items:baseline;display:flex}.CodeMirror-hint-information-field-name{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-hint-information-type-name{color:inherit;text-decoration:none}.CodeMirror-hint-information-type-name:hover{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.CodeMirror-hint-information-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12)}.CodeMirror-info{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1);max-height:300px;max-width:400px;opacity:0;overflow:auto;padding:var(--px-12);position:fixed;transition:opacity .15s;z-index:10}.CodeMirror-info a{color:inherit;text-decoration:none}.CodeMirror-info a:hover{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.CodeMirror-info .CodeMirror-info-header{align-items:baseline;display:flex}.CodeMirror-info .CodeMirror-info-header>.arg-name,.CodeMirror-info .CodeMirror-info-header>.directive-name,.CodeMirror-info .CodeMirror-info-header>.enum-value,.CodeMirror-info .CodeMirror-info-header>.field-name,.CodeMirror-info .CodeMirror-info-header>.type-name{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-info .type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-info .info-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12);overflow:hidden}.CodeMirror-jump-token{cursor:pointer;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.auto-inserted-leaf.cm-property{-webkit-animation-duration:6s;animation-duration:6s;-webkit-animation-name:insertionFade;animation-name:insertionFade;border-radius:var(--border-radius-4);padding:var(--px-2)}@-webkit-keyframes insertionFade{0%,to{background-color:none}15%,85%{background-color:hsla(var(--color-warning),var(--alpha-background-light))}}@keyframes insertionFade{0%,to{background-color:none}15%,85%{background-color:hsla(var(--color-warning),var(--alpha-background-light))}}button.graphiql-toolbar-button{align-items:center;display:flex;height:var(--toolbar-width);justify-content:center;width:var(--toolbar-width)}button.graphiql-toolbar-button.error{background:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-execute-button-wrapper{position:relative}button.graphiql-execute-button{background-color:hsl(var(--color-primary));border:none;border-radius:var(--border-radius-8);cursor:pointer;height:var(--toolbar-width);padding:0;width:var(--toolbar-width)}button.graphiql-execute-button:hover{background-color:hsla(var(--color-primary),.9)}button.graphiql-execute-button:active{background-color:hsla(var(--color-primary),.8)}button.graphiql-execute-button:focus{outline:hsla(var(--color-primary),.8) auto 1px}button.graphiql-execute-button>svg{color:#fff;display:block;height:var(--px-16);margin:auto;width:var(--px-16)}button.graphiql-toolbar-menu{display:block;height:var(--toolbar-width);width:var(--toolbar-width)} + \********************************************************************************************/.graphiql-container *{font-feature-settings:none;box-sizing:border-box;font-variant-ligatures:none}.CodeMirror-info,.CodeMirror-lint-tooltip,.graphiql-container,.graphiql-dialog,.graphiql-dialog-overlay,.graphiql-tooltip,[data-radix-popper-content-wrapper]{--color-primary:320,95%,43%;--color-secondary:242,51%,61%;--color-tertiary:188,100%,36%;--color-info:208,100%,46%;--color-success:158,60%,42%;--color-warning:36,100%,41%;--color-error:13,93%,58%;--color-neutral:219,28%,32%;--color-base:219,28%,100%;--alpha-secondary:.76;--alpha-tertiary:.5;--alpha-background-heavy:.15;--alpha-background-medium:.1;--alpha-background-light:.07;--font-family:"Roboto",sans-serif;--font-family-mono:"Fira Code",monospace;--font-size-hint:.75rem;--font-size-inline-code:.8125rem;--font-size-body:.9375rem;--font-size-h4:1.125rem;--font-size-h3:1.375rem;--font-size-h2:1.8125rem;--font-weight-regular:400;--font-weight-medium:500;--line-height:1.5;--px-2:2px;--px-4:4px;--px-6:6px;--px-8:8px;--px-10:10px;--px-12:12px;--px-16:16px;--px-20:20px;--px-24:24px;--border-radius-2:2px;--border-radius-4:4px;--border-radius-8:8px;--border-radius-12:12px;--popover-box-shadow:0px 6px 20px #3b4c6a21,0px 1.34018px 4.46726px rgba(59,76,106,.077),0px .399006px 1.33002px rgba(59,76,106,.053);--popover-border:none;--sidebar-width:60px;--toolbar-width:40px;--session-header-height:51px}@media (prefers-color-scheme:dark){body:not(.graphiql-light) .CodeMirror-info,body:not(.graphiql-light) .CodeMirror-lint-tooltip,body:not(.graphiql-light) .graphiql-container,body:not(.graphiql-light) .graphiql-dialog,body:not(.graphiql-light) .graphiql-dialog-overlay,body:not(.graphiql-light) .graphiql-tooltip,body:not(.graphiql-light) [data-radix-popper-content-wrapper]{--color-primary:338,100%,67%;--color-secondary:243,100%,77%;--color-tertiary:188,100%,44%;--color-info:208,100%,72%;--color-success:158,100%,42%;--color-warning:30,100%,80%;--color-error:13,100%,58%;--color-neutral:219,29%,78%;--color-base:219,29%,18%;--popover-box-shadow:none;--popover-border:1px solid hsl(var(--color-neutral))}}body.graphiql-dark .CodeMirror-info,body.graphiql-dark .CodeMirror-lint-tooltip,body.graphiql-dark .graphiql-container,body.graphiql-dark .graphiql-dialog,body.graphiql-dark .graphiql-dialog-overlay,body.graphiql-dark .graphiql-tooltip,body.graphiql-dark [data-radix-popper-content-wrapper]{--color-primary:338,100%,67%;--color-secondary:243,100%,77%;--color-tertiary:188,100%,44%;--color-info:208,100%,72%;--color-success:158,100%,42%;--color-warning:30,100%,80%;--color-error:13,100%,58%;--color-neutral:219,29%,78%;--color-base:219,29%,18%;--popover-box-shadow:none;--popover-border:1px solid hsl(var(--color-neutral))}.CodeMirror-info,.CodeMirror-info:is(button),.CodeMirror-lint-tooltip,.CodeMirror-lint-tooltip:is(button),.graphiql-container,.graphiql-container:is(button),.graphiql-dialog,.graphiql-dialog:is(button){color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-body);font-weight:var(----font-weight-regular);line-height:var(--line-height)}.CodeMirror-info input,.CodeMirror-lint-tooltip input,.graphiql-container input,.graphiql-dialog input{color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-caption)}.CodeMirror-info input::placeholder,.CodeMirror-lint-tooltip input::placeholder,.graphiql-container input::placeholder,.graphiql-dialog input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.CodeMirror-info a,.CodeMirror-lint-tooltip a,.graphiql-container a,.graphiql-dialog a{color:hsl(var(--color-primary))}.CodeMirror-info a:focus,.CodeMirror-lint-tooltip a:focus,.graphiql-container a:focus,.graphiql-dialog a:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-un-styled,button.graphiql-un-styled{all:unset;border-radius:var(--border-radius-4);cursor:pointer}:is(.graphiql-un-styled,button.graphiql-un-styled):hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}:is(.graphiql-un-styled,button.graphiql-un-styled):active{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-un-styled,button.graphiql-un-styled):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button,button.graphiql-button{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border:none;border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),1);cursor:pointer;font-size:var(--font-size-body);padding:var(--px-8) var(--px-12)}:is(.graphiql-button,button.graphiql-button):active,:is(.graphiql-button,button.graphiql-button):hover{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-button,button.graphiql-button):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button-success:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-success),var(--alpha-background-heavy))}.graphiql-button-error:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-button-group{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:calc(var(--border-radius-4) + var(--px-4));display:flex;padding:var(--px-4)}.graphiql-button-group>button.graphiql-button{background-color:initial}.graphiql-button-group>button.graphiql-button:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-button-group>button.graphiql-button.active{background-color:hsl(var(--color-base));cursor:default}.graphiql-button-group>*+*{margin-left:var(--px-8)}.graphiql-dialog-overlay{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));inset:0;position:fixed;z-index:10}.graphiql-dialog{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-12);box-shadow:var(--popover-box-shadow);left:50%;margin:0;max-height:80vh;max-width:80vw;overflow:auto;padding:0;position:fixed;top:50%;transform:translate(-50%,-50%);width:auto;z-index:10}.graphiql-dialog-close>svg{color:hsla(var(--color-neutral),var(--alpha-secondary));display:block;height:var(--px-12);padding:var(--px-12);width:var(--px-12)}.graphiql-dropdown-content{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);color:hsl(var(--color-neutral));font-family:var(--font-family);font-size:inherit;max-height:min(calc(var(--radix-dropdown-menu-content-available-height) - 10px),400px);max-width:250px;overflow-y:scroll;padding:var(--px-4)}.graphiql-dropdown-item{border-radius:var(--border-radius-4);cursor:pointer;font-size:inherit;line-height:var(--line-height);margin:var(--px-4);outline:none;overflow:hidden;padding:var(--px-6) var(--px-8);text-overflow:ellipsis;white-space:nowrap}.graphiql-dropdown-item:hover,.graphiql-dropdown-item[data-current-nav],.graphiql-dropdown-item[data-selected]{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:inherit}.graphiql-dropdown-item:not(:first-child){margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) blockquote{margin-left:0;margin-right:0;padding-left:var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{border-radius:var(--border-radius-4);font-family:var(--font-family-mono);font-size:var(--font-size-inline-code)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code{padding:var(--px-2)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{overflow:auto;padding:var(--px-6) var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre code{background-color:initial;border-radius:0;padding:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{padding-left:var(--px-16)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol{list-style-type:decimal}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{list-style-type:disc}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) img{border-radius:var(--border-radius-4);max-height:120px;max-width:100%}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:first-child{margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:last-child{margin-bottom:0}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a{color:hsl(var(--color-primary));text-decoration:none}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a:hover{text-decoration:underline}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) blockquote{border-left:1.5px solid hsla(var(--color-neutral),var(--alpha-tertiary))}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) code,:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) pre{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:hsla(var(--color-neutral),1)}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description)>*{margin:var(--px-12) 0}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) a{color:hsl(var(--color-warning));text-decoration:underline}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) blockquote{border-left:1.5px solid hsl(var(--color-warning))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) pre{background-color:hsla(var(--color-warning),var(--alpha-background-heavy))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation)>*{margin:var(--px-8) 0}.graphiql-markdown-preview>:not(:first-child){display:none}.CodeMirror-hint-information-deprecation,.CodeMirror-info .info-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));margin-top:var(--px-12);padding:var(--px-6) var(--px-8)}.CodeMirror-hint-information-deprecation-label,.CodeMirror-info .info-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation-reason{margin-top:var(--px-6)}.graphiql-spinner{height:56px;margin:auto;margin-top:var(--px-16);width:56px}.graphiql-spinner:after{animation:rotation .8s linear 0s infinite;border:4px solid #0000;border-radius:100%;border-top:4px solid hsla(var(--color-neutral),var(--alpha-tertiary));content:"";display:inline-block;height:46px;vertical-align:middle;width:46px}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(1turn)}}.graphiql-tooltip{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsl(var(--color-neutral));font-family:var(--font-family);font-size:inherit;padding:var(--px-4) var(--px-6)}.graphiql-tabs{align-items:center;display:flex;overflow-x:auto;padding:var(--px-12)}.graphiql-tabs>:not(:first-child){margin-left:var(--px-12)}.graphiql-tab{align-items:stretch;border-radius:var(--border-radius-8);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex}.graphiql-tab>button.graphiql-tab-close{visibility:hidden}.graphiql-tab.graphiql-tab-active>button.graphiql-tab-close,.graphiql-tab:focus-within>button.graphiql-tab-close,.graphiql-tab:hover>button.graphiql-tab-close{visibility:inherit}.graphiql-tab.graphiql-tab-active{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));color:hsla(var(--color-neutral),1)}button.graphiql-tab-button{padding:var(--px-4) 0 var(--px-4) var(--px-8)}button.graphiql-tab-close{align-items:center;display:flex;padding:var(--px-4) var(--px-8)}button.graphiql-tab-close>svg{height:var(--px-8);width:var(--px-8)}.graphiql-history-header{align-items:center;display:flex;font-size:var(--font-size-h2);font-weight:var(--font-weight-medium);justify-content:space-between}.graphiql-history-header button{font-size:var(--font-size-inline-code);padding:var(--px-6) var(--px-10)}.graphiql-history-items{list-style:none;margin:var(--px-16) 0 0;padding:0}.graphiql-history-item{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;font-family:var(--font-family-mono);font-size:var(--font-size-inline-code);height:34px}.graphiql-history-item:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:hsla(var(--color-neutral),1)}.graphiql-history-item:not(:first-child){margin-top:var(--px-4)}.graphiql-history-item.editable{background-color:hsla(var(--color-primary),var(--alpha-background-medium))}.graphiql-history-item.editable>input{background:#0000;border:none;flex:1 1;margin:0;outline:none;padding:0 var(--px-10);width:100%}.graphiql-history-item.editable>input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-history-item.editable>button{color:hsl(var(--color-primary));padding:0 var(--px-10)}.graphiql-history-item.editable>button:active{background-color:hsla(var(--color-primary),var(--alpha-background-heavy))}.graphiql-history-item.editable>button:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-history-item.editable>button>svg{display:block}button.graphiql-history-item-label{flex:1 1;overflow:hidden;padding:var(--px-8) var(--px-10);text-overflow:ellipsis;white-space:nowrap}button.graphiql-history-item-action{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;padding:var(--px-8) var(--px-6)}button.graphiql-history-item-action:hover{color:hsla(var(--color-neutral),1)}button.graphiql-history-item-action>svg{height:14px;width:14px}.graphiql-history-item-spacer{height:var(--px-16)}.graphiql-doc-explorer-default-value{color:hsl(var(--color-success))}a.graphiql-doc-explorer-type-name{color:hsl(var(--color-warning));text-decoration:none}a.graphiql-doc-explorer-type-name:hover{text-decoration:underline}a.graphiql-doc-explorer-type-name:focus{outline:hsl(var(--color-warning)) auto 1px}.graphiql-doc-explorer-argument>*+*{margin-top:var(--px-12)}.graphiql-doc-explorer-argument-name{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-argument-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-argument-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--px-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-directive{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-section-title{align-items:center;display:flex;font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);line-height:1}.graphiql-doc-explorer-section-title>svg{height:var(--px-16);margin-right:var(--px-8);width:var(--px-16)}.graphiql-doc-explorer-section-content{margin-left:var(--px-8);margin-top:var(--px-16)}.graphiql-doc-explorer-section-content>*+*{margin-top:var(--px-16)}.graphiql-doc-explorer-root-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-doc-explorer-search:not([data-state=idle]){border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1)}.graphiql-doc-explorer-search:not([data-state=idle]) .graphiql-doc-explorer-search-input{background:hsl(var(--color-base))}.graphiql-doc-explorer-search-input{align-items:center;background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:var(--border-radius-4);display:flex;padding:var(--px-8) var(--px-12)}.graphiql-doc-explorer-search [role=combobox]{background-color:initial;border:none;margin-left:var(--px-4);width:100%}.graphiql-doc-explorer-search [role=combobox]:focus{outline:none}.graphiql-doc-explorer-search [role=listbox]{background-color:hsl(var(--color-base));border:none;border-bottom-left-radius:var(--border-radius-4);border-bottom-right-radius:var(--border-radius-4);border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));font-size:var(--font-size-body);margin:0;max-height:400px;overflow-y:auto;padding:var(--px-4);position:relative}.graphiql-doc-explorer-search [role=option]{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));cursor:pointer;overflow-x:hidden;padding:var(--px-8) var(--px-12);text-overflow:ellipsis;white-space:nowrap}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-doc-explorer-search [role=option]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy))}:is(.graphiql-doc-explorer-search [role=option])+:is(.graphiql-doc-explorer-search [role=option]){margin-top:var(--px-4)}.graphiql-doc-explorer-search-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search-field{color:hsl(var(--color-warning))}.graphiql-doc-explorer-search-argument{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-search-divider{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);margin-top:var(--px-8)}.graphiql-doc-explorer-search-divider,.graphiql-doc-explorer-search-empty{color:hsla(var(--color-neutral),var(--alpha-secondary));padding:var(--px-8) var(--px-12)}a.graphiql-doc-explorer-field-name{color:hsl(var(--color-info));text-decoration:none}a.graphiql-doc-explorer-field-name:hover{text-decoration:underline}a.graphiql-doc-explorer-field-name:focus{outline:hsl(var(--color-info)) auto 1px}.graphiql-doc-explorer-item>:not(:first-child){margin-top:var(--px-12)}.graphiql-doc-explorer-argument-multiple{margin-left:var(--px-8)}.graphiql-doc-explorer-enum-value{color:hsl(var(--color-info))}.graphiql-doc-explorer-header{display:flex;justify-content:space-between;position:relative}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-title{visibility:hidden}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-back:not(:focus){color:#0000}.graphiql-doc-explorer-header-content{display:flex;flex-direction:column;min-width:0}.graphiql-doc-explorer-search{position:absolute;right:0;top:0}.graphiql-doc-explorer-search:focus-within{left:0}.graphiql-doc-explorer-search [role=combobox]{height:24px;width:4ch}.graphiql-doc-explorer-search [role=combobox]:focus{width:100%}a.graphiql-doc-explorer-back{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;text-decoration:none}a.graphiql-doc-explorer-back:hover{text-decoration:underline}a.graphiql-doc-explorer-back:focus{outline:hsla(var(--color-neutral),var(--alpha-secondary)) auto 1px}a.graphiql-doc-explorer-back:focus+.graphiql-doc-explorer-title{visibility:inherit}a.graphiql-doc-explorer-back>svg{height:var(--px-8);margin-right:var(--px-8);width:var(--px-8)}.graphiql-doc-explorer-title{font-size:var(--font-size-h2);font-weight:var(--font-weight-medium);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.graphiql-doc-explorer-title:not(:first-child){font-size:var(--font-size-h3);margin-top:var(--px-8)}.graphiql-doc-explorer-content>*{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-20)}.graphiql-doc-explorer-error{background-color:hsla(var(--color-error),var(--alpha-background-heavy));border:1px solid hsl(var(--color-error));border-radius:var(--border-radius-8);color:hsl(var(--color-error));padding:var(--px-8) var(--px-12)}.CodeMirror{color:#000;direction:ltr;font-family:monospace;height:300px}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-gutter-filler,.CodeMirror-scrollbar-filler{background-color:#fff}.CodeMirror-gutters{background-color:#f7f7f7;border-right:1px solid #ddd;white-space:nowrap}.CodeMirror-linenumber{color:#999;min-width:20px;padding:0 3px 0 5px;text-align:right;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid #000;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{background:#7e7;border:0!important;width:auto}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:#0000}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:#0000}.cm-fat-cursor{caret-color:#0000}@keyframes blink{50%{background-color:initial}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{bottom:0;left:0;overflow:hidden;position:absolute;right:0;top:-50px}.CodeMirror-ruler{border-left:1px solid #ccc;bottom:0;position:absolute;top:0}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-type,.cm-s-default .cm-variable-3{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-invalidchar,.cm-s-default .cm-error{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:#ff96004d}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{background:#fff;overflow:hidden;position:relative}.CodeMirror-scroll{height:100%;margin-bottom:-50px;margin-right:-50px;outline:none;overflow:scroll!important;padding-bottom:50px;position:relative;z-index:0}.CodeMirror-sizer{border-right:50px solid #0000;position:relative}.CodeMirror-gutter-filler,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-vscrollbar{display:none;outline:none;position:absolute;z-index:6}.CodeMirror-vscrollbar{overflow-x:hidden;overflow-y:scroll;right:0;top:0}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-x:scroll;overflow-y:hidden}.CodeMirror-scrollbar-filler{bottom:0;right:0}.CodeMirror-gutter-filler{bottom:0;left:0}.CodeMirror-gutters{left:0;min-height:100%;position:absolute;top:0;z-index:3}.CodeMirror-gutter{display:inline-block;height:100%;margin-bottom:-50px;vertical-align:top;white-space:normal}.CodeMirror-gutter-wrapper{background:none!important;border:none!important;position:absolute;z-index:4}.CodeMirror-gutter-background{bottom:0;position:absolute;top:0;z-index:4}.CodeMirror-gutter-elt{cursor:default;position:absolute;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:initial}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:initial}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{word-wrap:normal;-webkit-tap-highlight-color:transparent;font-feature-settings:"calt";background:#0000;border-radius:0;border-width:0;color:inherit;font-family:inherit;font-size:inherit;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual;line-height:inherit;margin:0;overflow:visible;position:relative;white-space:pre;z-index:2}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{bottom:0;left:0;position:absolute;right:0;top:0;z-index:0}.CodeMirror-linewidget{padding:.1px;position:relative;z-index:2}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber,.CodeMirror-scroll,.CodeMirror-sizer{box-sizing:initial}.CodeMirror-measure{height:0;overflow:hidden;position:absolute;visibility:hidden;width:100%}.CodeMirror-cursor{pointer-events:none;position:absolute}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{position:relative;visibility:hidden;z-index:3}.CodeMirror-focused div.CodeMirror-cursors,div.CodeMirror-dragcursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:""}span.CodeMirror-selectedtext{background:none}.graphiql-container .CodeMirror{font-family:var(--font-family-mono);height:100%;position:absolute;width:100%}.graphiql-container .CodeMirror,.graphiql-container .CodeMirror-gutters{background:none;background-color:hsl(var(--color-base));background-color:var(--editor-background,hsl(var(--color-base)))}.graphiql-container .CodeMirror-linenumber{padding:0}.graphiql-container .CodeMirror-gutters{border:none}.cm-s-graphiql{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-keyword{color:hsl(var(--color-primary))}.cm-s-graphiql .cm-def{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-punctuation{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-variable{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-atom{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-number{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string{color:hsl(var(--color-warning))}.cm-s-graphiql .cm-builtin{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string-2{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-attribute,.cm-s-graphiql .cm-meta{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-property{color:hsl(var(--color-info))}.cm-s-graphiql .cm-qualifier{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-comment{color:hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .cm-ws{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-invalidchar{color:hsl(var(--color-error))}.cm-s-graphiql .CodeMirror-cursor{border-left:2px solid hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .CodeMirror-linenumber{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.graphiql-container div.CodeMirror span.CodeMirror-matchingbracket,.graphiql-container div.CodeMirror span.CodeMirror-nonmatchingbracket{color:hsl(var(--color-warning))}.graphiql-container .CodeMirror-focused .CodeMirror-selected,.graphiql-container .CodeMirror-selected{background:hsla(var(--color-neutral),var(--alpha-background-heavy))}.graphiql-container .CodeMirror-dialog{background:inherit;color:inherit;left:0;overflow:hidden;padding:var(--px-2) var(--px-6);position:absolute;right:0;z-index:6}.graphiql-container .CodeMirror-dialog-top{border-bottom:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));padding-bottom:var(--px-12);top:0}.graphiql-container .CodeMirror-dialog-bottom{border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));bottom:0;padding-top:var(--px-12)}.graphiql-container .CodeMirror-search-hint{display:none}.graphiql-container .CodeMirror-dialog input{border:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));border-radius:var(--border-radius-4);padding:var(--px-4)}.graphiql-container .CodeMirror-dialog input:focus{outline:hsl(var(--color-primary)) solid 2px}.graphiql-container .cm-searching{background-color:hsla(var(--color-warning),var(--alpha-background-light));padding-bottom:1.5px;padding-top:.5px}.CodeMirror-foldmarker{color:#00f;cursor:pointer;font-family:arial;line-height:.3;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-folded,.CodeMirror-foldgutter-open{cursor:pointer}.CodeMirror-foldgutter-open:after{content:"▾"}.CodeMirror-foldgutter-folded:after{content:"▸"}.CodeMirror-foldgutter{width:var(--px-12)}.CodeMirror-foldmarker{background-color:hsl(var(--color-info));border-radius:var(--border-radius-4);color:hsl(var(--color-base));font-family:inherit;margin:0 var(--px-4);padding:0 var(--px-8);text-shadow:none}.CodeMirror-foldgutter-folded,.CodeMirror-foldgutter-open{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.CodeMirror-foldgutter-folded:after,.CodeMirror-foldgutter-open:after{margin:0 var(--px-2)}.graphiql-editor{height:100%;position:relative;width:100%}.graphiql-editor.hidden{left:-9999px;position:absolute;top:-9999px;visibility:hidden}.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:#ffd;border:1px solid #000;border-radius:4px;color:#000;font-family:monospace;font-size:10pt;opacity:0;padding:2px 5px;position:fixed;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s;white-space:pre;white-space:pre-wrap;z-index:100}.CodeMirror-lint-mark{background-position:0 100%;background-repeat:repeat-x}.CodeMirror-lint-mark-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=)}.CodeMirror-lint-mark-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==)}.CodeMirror-lint-marker{background-position:50%;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;position:relative;vertical-align:middle;width:16px}.CodeMirror-lint-message{background-position:0 0;background-repeat:no-repeat;padding-left:18px}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=)}.CodeMirror-lint-marker-multiple{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC);background-position:100% 100%;background-repeat:no-repeat;height:100%;width:100%}.CodeMirror-lint-line-error{background-color:#b74c5114}.CodeMirror-lint-line-warning{background-color:#ffd3001a}.CodeMirror-lint-mark-error,.CodeMirror-lint-mark-warning{background-position:0 95%;background-repeat:repeat-x;background-size:10px 3px}.cm-s-graphiql .CodeMirror-lint-mark-error{color:hsl(var(--color-error))}.CodeMirror-lint-mark-error{background-image:linear-gradient(45deg,#0000 65%,hsl(var(--color-error)) 80%,#0000 90%),linear-gradient(135deg,#0000 5%,hsl(var(--color-error)) 15%,#0000 25%),linear-gradient(135deg,#0000 45%,hsl(var(--color-error)) 55%,#0000 65%),linear-gradient(45deg,#0000 25%,hsl(var(--color-error)) 35%,#0000 50%)}.cm-s-graphiql .CodeMirror-lint-mark-warning{color:hsl(var(--color-warning))}.CodeMirror-lint-mark-warning{background-image:linear-gradient(45deg,#0000 65%,hsl(var(--color-warning)) 80%,#0000 90%),linear-gradient(135deg,#0000 5%,hsl(var(--color-warning)) 15%,#0000 25%),linear-gradient(135deg,#0000 45%,hsl(var(--color-warning)) 55%,#0000 65%),linear-gradient(45deg,#0000 25%,hsl(var(--color-warning)) 35%,#0000 50%)}.CodeMirror-lint-tooltip{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);font-family:var(--font-family);font-size:var(--font-size-body);max-width:600px;overflow:hidden;padding:var(--px-12)}.CodeMirror-lint-message-error,.CodeMirror-lint-message-warning{background-image:none;padding:0}.CodeMirror-lint-message-error{color:hsl(var(--color-error))}.CodeMirror-lint-message-warning{color:hsl(var(--color-warning))}.CodeMirror-hints{background:#fff;border:1px solid silver;border-radius:3px;box-shadow:2px 3px 5px #0003;font-family:monospace;font-size:90%;list-style:none;margin:0;max-height:20em;overflow:hidden;overflow-y:auto;padding:2px;position:absolute;z-index:10}.CodeMirror-hint{border-radius:2px;color:#000;cursor:pointer;margin:0;padding:0 4px;white-space:pre}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-hints{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);display:grid;font-family:var(--font-family);font-size:var(--font-size-body);grid-template-columns:auto fit-content(300px);max-height:264px;padding:0}.CodeMirror-hint{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));grid-column:1/2;margin:var(--px-4);padding:var(--px-6) var(--px-8)!important}.CodeMirror-hint:not(:first-child){margin-top:0}li.CodeMirror-hint-active{background:hsla(var(--color-primary),var(--alpha-background-medium));color:hsl(var(--color-primary))}.CodeMirror-hint-information{border-left:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));grid-column:2/3;grid-row:1/99999;max-height:264px;overflow:auto;padding:var(--px-12)}.CodeMirror-hint-information-header{align-items:baseline;display:flex}.CodeMirror-hint-information-field-name{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-hint-information-type-name{color:inherit;text-decoration:none}.CodeMirror-hint-information-type-name:hover{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.CodeMirror-hint-information-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12)}.CodeMirror-info{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1);max-height:300px;max-width:400px;opacity:0;overflow:auto;padding:var(--px-12);position:fixed;transition:opacity .15s;z-index:10}.CodeMirror-info a{color:inherit;text-decoration:none}.CodeMirror-info a:hover{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.CodeMirror-info .CodeMirror-info-header{align-items:baseline;display:flex}.CodeMirror-info .CodeMirror-info-header>.arg-name,.CodeMirror-info .CodeMirror-info-header>.directive-name,.CodeMirror-info .CodeMirror-info-header>.enum-value,.CodeMirror-info .CodeMirror-info-header>.field-name,.CodeMirror-info .CodeMirror-info-header>.type-name{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-info .type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-info .info-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12);overflow:hidden}.CodeMirror-jump-token{cursor:pointer;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}.auto-inserted-leaf.cm-property{animation-duration:6s;animation-name:insertionFade;border-radius:var(--border-radius-4);padding:var(--px-2)}@keyframes insertionFade{0%,to{background-color:none}15%,85%{background-color:hsla(var(--color-warning),var(--alpha-background-light))}}button.graphiql-toolbar-button{align-items:center;display:flex;height:var(--toolbar-width);justify-content:center;width:var(--toolbar-width)}button.graphiql-toolbar-button.error{background:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-execute-button-wrapper{position:relative}button.graphiql-execute-button{background-color:hsl(var(--color-primary));border:none;border-radius:var(--border-radius-8);cursor:pointer;height:var(--toolbar-width);padding:0;width:var(--toolbar-width)}button.graphiql-execute-button:hover{background-color:hsla(var(--color-primary),.9)}button.graphiql-execute-button:active{background-color:hsla(var(--color-primary),.8)}button.graphiql-execute-button:focus{outline:hsla(var(--color-primary),.8) auto 1px}button.graphiql-execute-button>svg{color:#fff;display:block;height:var(--px-16);margin:auto;width:var(--px-16)}button.graphiql-toolbar-menu{display:block;height:var(--toolbar-width);width:var(--toolbar-width)} /*!*********************************************************************************************************************!*\ !*** css ../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js!./style.css ***! - \*********************************************************************************************************************/.graphiql-container{background-color:hsl(var(--color-base));display:flex;height:100%;margin:0;overflow:hidden;width:100%}.graphiql-container .graphiql-sidebar{display:flex;flex-direction:column;justify-content:space-between;padding:var(--px-8);width:var(--sidebar-width)}.graphiql-container .graphiql-sidebar .graphiql-sidebar-section{display:flex;flex-direction:column;gap:var(--px-8)}.graphiql-container .graphiql-sidebar button{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;height:calc(var(--sidebar-width) - var(--px-8)*2);justify-content:center;width:calc(var(--sidebar-width) - var(--px-8)*2)}.graphiql-container .graphiql-sidebar button.active{color:hsla(var(--color-neutral),1)}.graphiql-container .graphiql-sidebar button:not(:first-child){margin-top:var(--px-4)}.graphiql-container .graphiql-sidebar button>svg{height:var(--px-20);width:var(--px-20)}.graphiql-container .graphiql-main{display:flex;flex:1 1;min-width:0}.graphiql-container .graphiql-sessions{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:calc(var(--border-radius-12) + var(--px-8));display:flex;flex:1 1;flex-direction:column;margin:var(--px-16);margin-left:0;max-height:100%;min-width:0}.graphiql-container .graphiql-session-header{align-items:center;display:flex;height:var(--session-header-height);justify-content:space-between}button.graphiql-tab-add{height:100%;padding:var(--px-4)}button.graphiql-tab-add>svg{color:hsla(var(--color-neutral),var(--alpha-secondary));display:block;height:var(--px-16);width:var(--px-16)}.graphiql-container .graphiql-session-header-right{align-items:center;display:flex}.graphiql-container .graphiql-logo{color:hsla(var(--color-neutral),var(--alpha-secondary));font-size:var(--font-size-h4);font-weight:var(--font-weight-medium);padding:var(--px-12) var(--px-16)}.graphiql-container .graphiql-logo .graphiql-logo-link{color:hsla(var(--color-neutral),var(--alpha-secondary));text-decoration:none}.graphiql-container .graphiql-session{display:flex;flex:1 1;padding:0 var(--px-8) var(--px-8)}.graphiql-container .graphiql-editors{background-color:hsl(var(--color-base));border-radius:calc(var(--border-radius-12));box-shadow:var(--popover-box-shadow);display:flex;flex:1 1;flex-direction:column}.graphiql-container .graphiql-editors.full-height{margin-top:calc(var(--px-8) - var(--session-header-height))}.graphiql-container .graphiql-query-editor{border-bottom:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));-webkit-column-gap:var(--px-16);column-gap:var(--px-16);display:flex;padding:var(--px-16);width:100%}.graphiql-container .graphiql-toolbar{width:var(--toolbar-width)}.graphiql-container .graphiql-toolbar>*+*{margin-top:var(--px-8)}.graphiql-toolbar-icon{color:hsla(var(--color-neutral),var(--alpha-tertiary));display:block;height:calc(var(--toolbar-width) - var(--px-8)*2);width:calc(var(--toolbar-width) - var(--px-8)*2)}.graphiql-container .graphiql-editor-tools{-webkit-column-gap:var(--px-8);column-gap:var(--px-8);cursor:row-resize;display:flex;padding:var(--px-8);width:100%}.graphiql-container .graphiql-editor-tools button{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-container .graphiql-editor-tools button.active{color:hsla(var(--color-neutral),1)}.graphiql-container .graphiql-editor-tools>button:not(.graphiql-toggle-editor-tools){padding:var(--px-8) var(--px-12)}.graphiql-container .graphiql-editor-tools .graphiql-toggle-editor-tools{margin-left:auto}.graphiql-container .graphiql-editor-tool{flex:1 1;padding:var(--px-16)}.graphiql-container .graphiql-editor-tool,.graphiql-container .graphiql-editor-tools,.graphiql-container .graphiql-toolbar{position:relative}.graphiql-container .graphiql-response{--editor-background:transparent;display:flex;flex-direction:column;width:100%}.graphiql-container .graphiql-response .result-window{flex:1 1;position:relative}.graphiql-container .graphiql-footer{border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy))}.graphiql-container .graphiql-plugin{border-left:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));flex:1 1;overflow-y:auto;padding:var(--px-16)}.graphiql-horizontal-drag-bar{cursor:col-resize;width:var(--px-12)}.graphiql-horizontal-drag-bar:hover:after{border:var(--px-2) solid hsla(var(--color-neutral),var(--alpha-background-heavy));border-radius:var(--border-radius-2);content:"";display:block;height:25%;margin:0 auto;position:relative;top:37.5%;width:0}.graphiql-container .graphiql-chevron-icon{color:hsla(var(--color-neutral),var(--alpha-tertiary));display:block;height:var(--px-12);margin:var(--px-12);width:var(--px-12)}.graphiql-spin{-webkit-animation:spin .8s linear 0s infinite;animation:spin .8s linear 0s infinite}@-webkit-keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}.graphiql-dialog .graphiql-dialog-header{align-items:center;display:flex;justify-content:space-between;padding:var(--px-24)}.graphiql-dialog .graphiql-dialog-title{font-size:var(--font-size-h3);font-weight:var(--font-weight-medium);margin:0}.graphiql-dialog .graphiql-dialog-section{align-items:center;border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));display:flex;justify-content:space-between;padding:var(--px-24)}.graphiql-dialog .graphiql-dialog-section>:not(:first-child){margin-left:var(--px-24)}.graphiql-dialog .graphiql-dialog-section-title{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.graphiql-dialog .graphiql-dialog-section-caption{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-dialog .graphiql-warning-text{color:hsl(var(--color-warning));font-weight:var(--font-weight-medium)}.graphiql-dialog .graphiql-table{border-collapse:collapse;width:100%}.graphiql-dialog .graphiql-table :is(th,td){border:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));padding:var(--px-8) var(--px-12)}.graphiql-dialog .graphiql-key{background-color:hsla(var(--color-neutral),var(--alpha-background-medium));border-radius:var(--border-radius-4);padding:var(--px-4)}.graphiql-container svg{pointer-events:none}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;padding:0}.graphiql-container,.graphiql-container button,.graphiql-container input{font-family:inherit!important}.graphiql-container .historyPaneWrap{border-left:1px solid #ccc!important}#root{height:100vh;width:100vw} -/*# sourceMappingURL=main.39210121.css.map*/ \ No newline at end of file + \*********************************************************************************************************************/.graphiql-container{background-color:hsl(var(--color-base));display:flex;height:100%;margin:0;overflow:hidden;width:100%}.graphiql-container .graphiql-sidebar{display:flex;flex-direction:column;justify-content:space-between;padding:var(--px-8);width:var(--sidebar-width)}.graphiql-container .graphiql-sidebar .graphiql-sidebar-section{display:flex;flex-direction:column;gap:var(--px-8)}.graphiql-container .graphiql-sidebar button{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;height:calc(var(--sidebar-width) - var(--px-8)*2);justify-content:center;width:calc(var(--sidebar-width) - var(--px-8)*2)}.graphiql-container .graphiql-sidebar button.active{color:hsla(var(--color-neutral),1)}.graphiql-container .graphiql-sidebar button:not(:first-child){margin-top:var(--px-4)}.graphiql-container .graphiql-sidebar button>svg{height:var(--px-20);width:var(--px-20)}.graphiql-container .graphiql-main{display:flex;flex:1 1;min-width:0}.graphiql-container .graphiql-sessions{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:calc(var(--border-radius-12) + var(--px-8));display:flex;flex:1 1;flex-direction:column;margin:var(--px-16);margin-left:0;max-height:100%;min-width:0}.graphiql-container .graphiql-session-header{align-items:center;display:flex;height:var(--session-header-height);justify-content:space-between}button.graphiql-tab-add{height:100%;padding:var(--px-4)}button.graphiql-tab-add>svg{color:hsla(var(--color-neutral),var(--alpha-secondary));display:block;height:var(--px-16);width:var(--px-16)}.graphiql-container .graphiql-session-header-right{align-items:center;display:flex}.graphiql-container .graphiql-logo{color:hsla(var(--color-neutral),var(--alpha-secondary));font-size:var(--font-size-h4);font-weight:var(--font-weight-medium);padding:var(--px-12) var(--px-16)}.graphiql-container .graphiql-logo .graphiql-logo-link{color:hsla(var(--color-neutral),var(--alpha-secondary));text-decoration:none}.graphiql-container .graphiql-session{display:flex;flex:1 1;padding:0 var(--px-8) var(--px-8)}.graphiql-container .graphiql-editors{background-color:hsl(var(--color-base));border-radius:calc(var(--border-radius-12));box-shadow:var(--popover-box-shadow);display:flex;flex:1 1;flex-direction:column}.graphiql-container .graphiql-editors.full-height{margin-top:calc(var(--px-8) - var(--session-header-height))}.graphiql-container .graphiql-query-editor{border-bottom:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));column-gap:var(--px-16);display:flex;padding:var(--px-16);width:100%}.graphiql-container .graphiql-toolbar{width:var(--toolbar-width)}.graphiql-container .graphiql-toolbar>*+*{margin-top:var(--px-8)}.graphiql-toolbar-icon{color:hsla(var(--color-neutral),var(--alpha-tertiary));display:block;height:calc(var(--toolbar-width) - var(--px-8)*2);width:calc(var(--toolbar-width) - var(--px-8)*2)}.graphiql-container .graphiql-editor-tools{column-gap:var(--px-8);cursor:row-resize;display:flex;padding:var(--px-8);width:100%}.graphiql-container .graphiql-editor-tools button{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-container .graphiql-editor-tools button.active{color:hsla(var(--color-neutral),1)}.graphiql-container .graphiql-editor-tools>button:not(.graphiql-toggle-editor-tools){padding:var(--px-8) var(--px-12)}.graphiql-container .graphiql-editor-tools .graphiql-toggle-editor-tools{margin-left:auto}.graphiql-container .graphiql-editor-tool{flex:1 1;padding:var(--px-16)}.graphiql-container .graphiql-editor-tool,.graphiql-container .graphiql-editor-tools,.graphiql-container .graphiql-toolbar{position:relative}.graphiql-container .graphiql-response{--editor-background:#0000;display:flex;flex-direction:column;width:100%}.graphiql-container .graphiql-response .result-window{flex:1 1;position:relative}.graphiql-container .graphiql-footer{border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy))}.graphiql-container .graphiql-plugin{border-left:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));flex:1 1;overflow-y:auto;padding:var(--px-16)}.graphiql-horizontal-drag-bar{cursor:col-resize;width:var(--px-12)}.graphiql-horizontal-drag-bar:hover:after{border:var(--px-2) solid hsla(var(--color-neutral),var(--alpha-background-heavy));border-radius:var(--border-radius-2);content:"";display:block;height:25%;margin:0 auto;position:relative;top:37.5%;width:0}.graphiql-container .graphiql-chevron-icon{color:hsla(var(--color-neutral),var(--alpha-tertiary));display:block;height:var(--px-12);margin:var(--px-12);width:var(--px-12)}.graphiql-spin{animation:spin .8s linear 0s infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.graphiql-dialog .graphiql-dialog-header{align-items:center;display:flex;justify-content:space-between;padding:var(--px-24)}.graphiql-dialog .graphiql-dialog-title{font-size:var(--font-size-h3);font-weight:var(--font-weight-medium);margin:0}.graphiql-dialog .graphiql-dialog-section{align-items:center;border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));display:flex;justify-content:space-between;padding:var(--px-24)}.graphiql-dialog .graphiql-dialog-section>:not(:first-child){margin-left:var(--px-24)}.graphiql-dialog .graphiql-dialog-section-title{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.graphiql-dialog .graphiql-dialog-section-caption{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-dialog .graphiql-warning-text{color:hsl(var(--color-warning));font-weight:var(--font-weight-medium)}.graphiql-dialog .graphiql-table{border-collapse:collapse;width:100%}.graphiql-dialog .graphiql-table :is(th,td){border:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));padding:var(--px-8) var(--px-12)}.graphiql-dialog .graphiql-key{background-color:hsla(var(--color-neutral),var(--alpha-background-medium));border-radius:var(--border-radius-4);padding:var(--px-4)}.graphiql-container svg{pointer-events:none}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0;padding:0}.graphiql-container,.graphiql-container button,.graphiql-container input{font-family:inherit!important}.graphiql-container .historyPaneWrap{border-left:1px solid #ccc!important}#root{height:100vh;width:100vw} +/*# sourceMappingURL=main.eee41caf.css.map*/ \ No newline at end of file diff --git a/serv/web/build/static/css/main.eee41caf.css.map b/serv/web/build/static/css/main.eee41caf.css.map new file mode 100644 index 00000000..70480601 --- /dev/null +++ b/serv/web/build/static/css/main.eee41caf.css.map @@ -0,0 +1 @@ +{"version":3,"file":"static/css/main.eee41caf.css","mappings":"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","sources":["../node_modules/graphiql/graphiql.css","index.css"],"sourcesContent":["/*!*********************************************************************************************!*\\\n !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/font/roboto.css ***!\n \\*********************************************************************************************/\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAAAMwAA4AAAAABZgAAALdAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoI4ghsLEAABNgIkAxwEIAWDCgcgG3YEyI7DdHsjE9IUV+CFDh74vPL9/MmgO0un0soqjWt7En2kQoCMtXsRxyxkMqP9iO6NfSiUaLJuoRIKnhI0+ImbcWOB5XOAFVmCgxZQQmuBJRhZtsUCXm/492Dyuk2YZJdkdApZeOzyEQgKOwDgRjASBEEBVmAlgACtOHEhpjLyyrACMAB0vaLa6cAw5bc5bvhA2uwO7zXAyKPmkYNnAJgBxLEMDxFLqVBPI6EQ/daTr/QOAgfCngRoZc4UZiL623qCkf/oHVsfRCOuAIbJyF4ajQQKQLmQhNBAA4aygH9b19Xw4iAC8DkKM6WrYw/ABMAOWEAamA7sgBWACgAUSlc3SCmlc95o45idYD92Qt/+5gF19v3FALtB9+7dq/h6/Ljyu/zzYfnngwdlHxO+k39nOcO/e7nPf2vCoo3HVlmNTdnWwW3JZffuVU6cQX14kb3qUGOOJ+mjP9iMeb1Nivq5gXpJUWm+cmVK56e6PjI2uce23hHlG48vyDvym5/5q+wbkjq90rN+z53D6zXqmVUPVshZoVtrZgc4vleS1NNrni6VR8I/vTrpzpPwu1+1Pel4xBIzK16W3KcLNnVGl2RGZHbPXBAvhw4M02Ci/t0BBfw/p79XS9V7CKAMF0++DK9rtI/7MXvGATjz0TEA4K4oef476t9dS555BAoLBYCA6ei/FSzVgvg/cIR45gpTaLWeLiB+oa4xJuTks7r7/xwCmCzlpoJKALCDQmkyEsCsN0mELUADghGsGgAF6c9IXkabDYyqg6WMkZd9z7BT5gaphhhqnOH66aOvkTQhggQLpsk0xBB9DNSLJttgPQTQJBtoIE0JEY2wb+1lhF6GG62XngKUGKLFECMNkW2kZgP10+M31GZUwfojwkU0uAcQkISKFNtqGMlau3vIjjRUjMANjYkDNKeouYh7CRBmuD4CHQgHG6GXET8oT7ZU6QqUStddiABBJPSv6P315AAA)\n format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0370-03FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,\n U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,\n U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAAANUAA4AAAAABbwAAAMBAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoI0ghgLEAABNgIkAxwEIAWDMgcgG5sECK4GbGM62A+KOMNGmZWUwcdhKI9l4Sh/WwYP/3af9w0W4ERa2bOg405uoSptTooGKkF8HniO5b+Iojvye4dReBbNtVHwcLQTG2gBzQfYOqjJ/XYU/jItwgxa4I3czM4Fj9LAAnlHz+dzgSO71Jqn2QML8H66dROj0qAFLYnRhtm0b89/erW/v8l/LA6we9gCizDBtQzSf4EtkcwDT6RtmgYEQXnDKGQslZyX/CkQSFgBAE4ERggEAgmwACwQgADMsONAJKVkFWEBgAJgwMz1NlLWec3G+jtZu+rXO1i7rx/sZi0AEwB5WVY28FUE1CORQAjvtSPftAwCQQjGAbTUfm4qwrvbNmDEf5pjR4JoxElAiYiMWjQyIAEy4EBGAA4UNKCgIMC7a5Cej2sCAA+SMEEyYA2AMQBWgCmQAObACrAAQAUAJCSDMEDmo7CztfXoRGu7SUeVdbvosOq6N6PHnZ2yf9l3eXPj/q2qXdkjBL+qrix1cYsqzItOvXfRPaMXkUvPeFWoxr7tZB8gfxIhMauBapmSUhO8d3O8wUt0MoI7UAxLzt0/zhCwJnVHrsPYXenm8suPeLYORWqn/3wwK6Qp+frDiYGvxHSXFzoXfpihfmlODl9oFbOqKa8nXbZgd6axNivh4JS8xEZKChij/nuDBPx/MrxQA/WBACCtK44947xa66g/k0YcALjxaesDuBuQP/7x/3bTwmQACVMkAAQYd/7HYBqK1H97hriqWIzlN7cD8Qu1mY6Ql7eR9v8qAcCY/apKqAgArEBCCmOEAExoJiOUENTgBAI3NSBhwSjIbLboV0Blo3PIiN06hxVFfmrr0WtMvzYtWg3SBPDjz58mVY8eLTrpNOm6NfKhidepk6ZAbgbym+oG6PoN0zXxUaBHgx6Demiy6Zq0GdIl3aB6ndo04r7WvSV0/Qa0Nd2+yKcNFCrSvh/6dNKO3xV33aBeEXxNZKTyQUaverfOR49+LZno1XUboBt4oSzpEiXLUSjZDgF8+JHBMIY0KQAA)\n format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0370-03FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,\n U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: italic;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,\n U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAAALsAA4AAAAABWAAAAKbAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoIYgXsLEAABNgIkAxwEIAWCdAcgG0AEAB6HcYyyEjO2Dy0eKLv4XvfsrGs+wIhEBOHOERRRTI2158fc/aln0WYmSJq8uTRSIgUyIVMqpfa/7uYHCqzWDuHREj0f5UuuL+ZAokTaYgiIs5sF5aUutjO7QhBlgMaYvCAIIqqoCggoq0+HjRlX70MGclDLyR3Z8fb0q/ectzCv30obmLesvO5hBhRhcp7kToaLpaRXpL0htKmb5C3rIgzUIwA1fnqrhHSbqXhA3v+sK1wRtcWuhdyg9E5tGXERkaAhroCGeNqCnJxAm6m1Sb58SICvFhXFWnVAAWQoYRjYADJUQQqIYm0uSZKkfpYv1sv21dm9b7kWbV6i3BQ2Z/sOf/hl+ezXH88LRz75pnLuq4/MO/Zx+eyHc3x9VDn3yfx9n1ILyusq3ps75y90fVZ657PJ2iXgF+odHbvzv7Lrm+uTsPR0WJqYcelN7180rHDDnbeWbrx0QHht49uXjCzffOsd5RsvGvHe4yF5o+Ej97/ZMP62+Z+3Wz/08CtZ/FezhpdvG/nb6PMhC9vNvHFx3Du9X47etewROuONg4L0v2eI+L9X7dt0evq+gNihfvWttiuWK4f8VmxWBM/+WK8b8F6Y9evfLf57r9SjuA2URBAobPm/Smni3y3+n1TqgQEACsl5awAI/5AetjNp65A+/38vDAUXaayPL4CMKHYkEFC0DlfIlbAMegyqlmGU2eSTO58TTHX2xLyWvlczc/wY7eDo5WxlYenKyMvNg9Go5MAatqis2Jty2oytLaPupFxOlsgFObsjM05dBxMHVwcMbeFma4xFh8jZxUr2e62Th09I7Bd96I2RI3gzYzqKcsHjqZzGjsamlojTwdmCy9bKFNm7IBcudRU5BU09BQ5eTm5coMaMAw==)\n format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0370-03FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,\n U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,\n U+FEFF, U+FFFD;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAAChwAA4AAAAATeAAACgaAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGoFOG5JCHDYGYACCWBEMCvI82x4Lg1oAATYCJAOHMAQgBYMAByAbcT9FB2LYOAAQlrxDFMHGgYhg7wv+LxPMMdTZwdcAokVZdtu6RLW2UUDAMvAbzZ4j0u2S99aGde5X9nYZLo8RBVE8cz/ziI9IIx2hsU9yf6C5/bvdgpElUiKlIGkMA6ENkDRIGSmVI0aPDP0gFj1qoiBp0GVi0dYXJuYUHnju5981VVmCjIc7w3k0B1KTz2Y/Cgf0o2mPp/+Wsb87U/V613FQAqHQIQuFClkirPwW+afv362q6gMtVf/DsOf2cg0vvM3O4NPdzA4j3mvSUAnMZjCdnkUeRGKpRucwnAmqcD3gCWVZxcs/tQMPwPr2Toq7D0ZhBA+fWm5pLolxQRiTsrNzhdLu/v/ZTNsd76xPmzX9ECsMPVdARctFOfu1b6TZ0Qr2zs9a7YHAJCkso86kM+kMVIWLhlmS7ehCzFWK3kWXdCna1C1wmaJt0sbWSrOImtKwHO4R5x9/Su4Fx+oN7ec3pBJ8N1JXHSbD5btBxdL64RmbEBAY3Hq/9fdh7HIECcLYaYizzkJYsIKwYQtlxx7CBRnCjRvEFd4QAYIhwoRDRIqGiBMHkSgFIlMWRJ48iAIFEFddhfhPKUSZMoibbkJUqoaga4RgeAPx3nuIFasQ6z5CIDAAOAEIw0DYuAAAoZeanZz9sN0XZ6xB/jMlyAfkvwe5eYP8n8shfiAPWX0N8gNeCG6CIFtiqJtf9GvxXgISaYUFoBbxXMhQubGvc726uLHg5rjExJR0Tx3ZrOKw5Wn/QhIIl5GeLXqGlHXOU+EEm1DHutZHMAYTy4QF+DDhMBH8epbUgFiWLMcX9MywrBWln49cqDPvQ4V3wayqvCnfluUTUl0J7HbL755hb8JZNZvW55+vesv6HJ231QTzFndzWbOdc8i2zl2YaW7Qf5NqnzZydd7kCi/4mZFannpkiTG74hVPfJrDMXEFG0XiGV61ZftA1KS6oDHeeAP3jKIKTrQnWVM/au+s0gpuLGx6JGRpNknnE/R87HG7/X3q08E1N5tZM1rsYm4z4/l9NPux8A3c1CCHpdjQ7GTZ6Lb13GlycjkCAkpX5OMRbE4ySW9DY+dXaipDaJs3ojPG4jQ/aul0PNNO51SvCq6551maBRVcYsmllFGX/glWV19TjO7W3L3u11JrD3rUY4OGjJkwacq0GbPmvPDaG8tWrCEgeZ6Fl3mRjOJz+b4qtOU62xDRPocXYTmKlaIsl2epAu8rtRw7L/FFcIsiuSjuRVssxZY8dyswUqnarhsKj2STBSYvm/IxFWK6bhORl6dRzBZloWj9pVgrLy4FcbpuoTJbEKXehkPylYVNXj6Wb9t1n8Lw8kmoR3TWRE4W8wgJf3vfKTaK9qJs3V3zptL4Qpy1mTyS2OS5Z8GxKIkvxOTlXpzcKkQXpWTHE/MpxWrZvMuXX6GGromqNB7X5SGirfclgrSaKMJaUd6UZ7oCYbzulpx2Vfj0rZF6IkS4yRViSjiVE/o2lcf6/ifqxImwExxRu+P52JE0d9ZMFobyQsa5E8tBMibGQEbJ/86R+2jx8unUVlZtz6lB4/101XTo1O3hfeW83xYwNOkYEHAcMEwBdQr4nQYiJyBwAS5k4OEK7NyBnSewCwIuwcAjBRAZwCcTuGQBjyrgVw1E9cCtAXg1AocmILoLXJqBx33AaAG8VsB4AHgdgNMp2cYr2CoT4PIYeAwCYghQY4CaAIJJEDYFRNMgbAaIZkHYHBC9AE6vQcgb4PMesJZB0AoIWZPsJRtbDaN3CDgTY2BxI3zm40jcJ2+Agh52HAmVLY5u0AJ1mAYevFW9Hk5cWVXWGnpmBBLiEKpMwhTCt8CtbQ8RAdLHwZ9a7CAeIc2s4OtgYDG2Pjpxwqk1ijOjkDHF0R8pTV6VVGVVWSnLGhvATnDnaPTa7RscwG2qCZBqXEJvuR+HcK9aeg4AjD+aG4NunCsw8A/AfZUcIA05AgBsu4wM0lAHMzYpiIoxYEMGQpb77cLCRF3iH0poycnN1KYpHZnI07zLdhEcbwX2DsAuQk5AIpOa/NwKPc3pzGSe5X2+F4Pj2zvgzzPwZwYA/BkCfx6DP8vgzzvwJwsAQhaAHAAtegAuAXABQANQDIAO4AiSZRUqmVQTrBfltWpcdOk3unyJA0dOv7a+s8u15o7o6rhy487DmvX64r/wssZM/16UaG+9qzZPLQZVrDjxEiRK8sqiZDQpunXVnvIneqRKo5Ofeia9dv1wN3yQ7bmPbrgJgcEGEwR4AAB8AgDIC4AFwF0EQp8Azk0kx9snDfPj2QmX1DwUzSr3I4rZnsxV4KazY0KQuDQbrywA7HwxcI2zw1xZJWHD5VmoyqDaKJyscpqjkz68f7LUJy6TZMjXsyGBTFpTFyxonNXoVAXBK+0RqSefAlovCIp7zRt82uqT0UeNC68eabzREGvrdZ4TXocmmhWkYD1RsgYezAYhPBKxSIn4L5uSmEH33PYFeM6NZWmoZWzp0TlTuLIqS+esrdvL7Nr7to4j9KKuj2+9hmHQ2OKiv3OXFts0bnPXvEqCGte/dZxZlK2+x2IMVoKF7B+O5qvBIc79qe2ZIEetij/Rwrm+btakPVN9/M1ilf/npsR0YlRrBCW4YSK+CmBFQujrC3m+S8Ju4LHpH4nkYnJysgUVZxSJlOEfwx0uD7/GUZVIIPF5RdEjGmu8ReZm/0Af7uv5obkxNwuXvMKEb9rW1YbViRmrKxkPVLHPjRCrUuB8wyfx31SJC6Nswq2GEtXJdqucBTyVVflWFI9zuqybkrG4M4ci584piF0xKvC7dDZutTg/3uCJCYrLhUseQJkfkHC2z5f4odJxAoxLNLxC90Y6jrVmk8BeFvnl7t3h02X1SWGkYoNSa9v6o4H4GMjKTE/0XLrT4JTxJ63l9bQdeBsVy3Qi6aWJAGq/sGaSew6pnQIp0OzUgzA0ZmkKQKmtrRNiMBEVtmfeMNGBreSPDRm+vvA2zXhCBe2aS5P7KP6IJJSe6LBqz5Ei56TaOnWHeMhXMl445QWnFZOTK803ANrivZFmoBgL63JZ9voy6IknS+56R+f1DWvsvzpzWB19DIVc8mhfy6E5YI9dnpv9XEuRKw5QatQBLigNO8rTPRAhL1ec03hBwiMZFPTqL6H1E8/2X26SPWgBVUSts8n7TTMBJnmS17rjY3dML++JaWooj3xhV5mDb/e6xR3zRy5FfTvPH36NYQnfQbWiBzQOhBQ5NNFlU3ZY8czbQpnpgWi8Bxd3AwmPyNunMbt7pGj8G3WPuemhnnQlaZ/XfHpFTPbEoXsrmVvI0fu0cbgtWw41hmEIFPMty575POf9RhrpscIm4jKmFha8ldjdERqNKyPqlpb5Yx5lYIPBpkfcNt06HruzrseKVty0SzgorGALbNwvz73l6DSgh9lhy2KT0YjMaVMpauc79mWKtENlDTy3TB2zK78JVdAuz2w0NxmcWeZ0qlUa9vL2OCOdWSGZlmkf3HPSIYY7a0S3/otI0hwP2NMc3nI11Yw9k91we3kEECrWpHCdgDlKgVPNtLWLhKGF7ZcohA1gH5q3RQuqQ9w7NZqlbv+7Q/1JSsRXVky4J1YD2CPfs4lhm3aRb+QksBZc9Vpr2pq+7e74y7VGwdNegL6iDqZspLMjt1Jnr8RJxqWejmg8fkGF2cv10t+bZuJfdfXPvbXIcnSO+jdgneHNNkGGrihbmX3tuFWAEnFZT8yqnElEyFDQS3jJ53msXUKaLu4COb31KjLUCrih9oZ+oCV2U1jMFR+7uoOwQr9Bt92PkKHU0+XtBzRHBaRjrQ8Ozo1y3CQFhrEGQiXh6c+Yk3OS0PGjp1kWoJsDDYDyY76UIooOLWxMbUjT5MpGtDmhdDPZeE/yZN6kAJsENoaioZ5z9T6yMnd4KpCjOCpsYhmKimZZ+fN/YMfwcGHb1NT++2n6XSxcXVa/7cv+z7yc67dNKC1uT3ly6Y4N2FzcuokbcsdWvL64c91urT0+S6b5Y9NoJtq1FUS2QwazKM5dkkAXKnwc2dalH0j3pZVp7m0ibj1VOxm7aGk9cUJ1swGfbRL3K1/xsqijM9l37rdPcj1YUsMhGj22xTLFtjLevfZzfUhAaH1sl06a5+KxUWpZ5NA6lwq5AYkMHJNyzWTEcMzt9QSBF4I/CnlM8mQnAD0w0wsUUvbYpS5zi9z53h46FDv09lxT+YJVojc2chBiJIEjP9H1EnHf9yVWXllTdsCXgLOYk7njJJRI7JaqdR+PaAxBj4Ixj3iVnFNCGAC5ZsgD8e2siOrkW3FY9TOPfWXUmyzb8TLyQhRynZg28M31dCzs9s3yYP161d7Nj6uDvmW1UuX/42VRsAIlj+oMsGJZnUf7cGq0+lWhln14YqScT09o6NNdhLFMLPs6Rt/oMIJoYsJ+05ZQ0851tewu+ahpupMSENXDo1YamhshBb24benKkLp/2j7Bhwb5F8LHMN5mGnOeJedx7kuL1Sk58BTb1HRQH8Xjjccj/qw26c1yh6jVaDNjR3aTh/qjFmumg2K/pX94qWuvDJo1ip02Q2eQ02g6RRnbLeCtwrRLt2ZpjZJWHntwl3JkNfTJtiRwpF2S2XLbrM26mbBffNrpp+pyqeXm21xNN9Lt9yvk83Yn4ZYadaZZaBh5yyzmagub0aLuwO0yDo5dK/mrhwGp878QcWE8cXe0tM5dntMa6UQkrkSHFYGqUlwYKhXuHOL24SIK3ADReAvoQTmilsrUuhnkg3XH9oLaiObS8RGrr9mvNYY7Ww4Zegzpa24s529xTe+Qx1uq9GD2CEH4GR3bxE15VZk5T4U1CO8QjVBO8RXNKNgUNy6YLDxnJxCQCAWZYem0Lu+Z7QMtFGGZPvsoB8V9FtqJWcSe87O7a6ap2WYfFcU+wDH6UDd7wBH4EgzD/ucIX7qNIg6piAMKN4wTzh65pEwDw+6X0AhennNwVN1KK9SSIOvGWJINZbCRJatm7MDs7guh9X3YX41sFTkHMEOpE3lHeGvvbe7FiXxh8V3PT8+uZHxF1uM/1fwoLypKFiiF40Hpto87R9oAx7g7dj/fFizigJWSkfIXcIy/jhmOLLjJAhyDBbv7GeIG9uJa9sanxm9F48WXXVrE5y6Lxr1N+X8ZsHjfvFCgx19/765gffEJmLKcLzbkr3flpxfpwhwLu9WK1FS0AfLB+msHrqrm/s53p7HLA8t/lnvGEkGx4I46l9yD6SeLCoeFjgjJ9yy2TcuB31+zu6KSiddE/4lKFlwTA/Qfh2FwRE35eHtaA7T9X2Rs7eDqbOVlqcu8GFoycj7m4buHmPr1fEVbPkyjCdXw91hiSoqDrZG9JRxusAv3Qs+uoK6hjcNuoUvEvajYD4Li8pOtt7jWFdQ+LNw+LJYODQoMaj2Yyf1eU+2t9wpXZgIeXnH4+yS2PvygvrVZSW0LLTJImtCLLwqL7YALAmuSsluSd6L/vcvKWPwqhnHpZU++Xhpe7UlLiNZ1fnaFXf+ma2QGb/QkP4ESGA3CvX1haa2XsOm9zI4AZ3vHfON4HBPwwAQz+Zsx/5ZSC1/yirGvs92K/LOcVrzCr/Zvi606ret76qP2isxHlPCMLoD5cTL3KUEbOc6ngQuB3DZypoKc8N3u5SIqvvzahfez9mbXjL29nriZrL1InzYecPO2Gnr6Yfr6rvr6YXr6Q2rCf1dBq5Kz6UYThAZAArfV9wdWslrajLf9NN6rcv0SAsNXLdQ9KOIpYOYs+Dfjlu6ZeSsaY7Dp+o3PdRuPjO0c3S/YBV3Q2+TPZ7X1v/FLSqANInOfMR/THrClXy2jpV058sSk0vDQ1ImDcW2kFNLIdJ8HEu5odNLeTKN5jUxN46H2SQb6UCCBSWKCNNZ8WWDfd6mSyN/PM5Nh/gt8TqWzp2TfCrdNlz+rZVZmeGxajyhwyzY8iz+4Rcw/gAIHWlapTaXyTaXUVr1TJkmmJnogn7zz5aHSn6OysajSDlKFy1PKRLwMsfcb8TfohyzfWmYBjnEdtHr0E4Rzuqs3//7GbAurbYuGsUL/FxY5gH7bYf2D69lPYkV8WMBF+vjvj4gg7yhzSkSQ4w84qdt7Ui9L2e5xjjAp/lEx8+jf/bytoxSzi46BZ04cdTrlNdgwPY0pOBFt6+4Sf0FvqxRtH50n3AVtOVJivnjVeAX2nb/Al4j3AlhJbU6xCeYUuptdA4ifmeuOEjoJYL4VUh7CCqG7BuvstiK01GjYOZU5s5yLLzip363aLUAkwcG+PS4FwbG+eUF2rPDE9g33rN+Cz/vI4ZXeByhKcfTYvn2rv0t++kZ3R7EcS+MiaHdi3KKy/dLrhu5wwkkcQ6/zXArfuH4EueHcPOONYy0/FNPgJrjIdibf0B0JsiU4eqktEKd2DcHN1j0/xaTut6lcIt9964FDBoOP+eyz04yUkpMTBLOVUp6nY7cVGTiOFVibYE1Bekzo1cZypWoQnU1UvvXZN2o4eUzwxxdEpdmf059flOKy04P9MmKjEPB4JlBWnFxwnb6EW8CMYQhPGUu3Mgsz+MpYIp/lCFv3eKrzD8FY1GT2YY5qxs99WKE10JoNWwjbIg2BvsW9+HvMe3E/m5XdNazwSt9qgmqZtcHbNUqWqKe2Kuig/Ca2EWZ72nU7ijYZo9GjloHXvLb0Qi9cuuhpqW9uZ+jc2HT/DpKk52Bqec7X7OhWzv+t7cNvykEDS9oibc1UT3/91QRWXVQ9k8RkeCs37afhqjWPwkkDEokZpiEQwc9D/8Q4DcOC5uwm9cRlgXH4pyyI8qiRmGNKo5XKk1NMkgbwMVsqW5gkZm9lLxOOoRQnCpNi96QB3jK9HIQ8X2/MDZ5hngnzvOzjQhbmZEL8uy/J/XbulX7VH4d7YYnE3OXw+aL7hQpXRxsAaYEMm1BP8xXX4MZhj6BX7CossdKIPy9T8qIG3X3bQ1ccQsNs3WOucaRa11hxJcZkg48QA1n4+XlmxacioGJjcuvLPPIXG+oe7+gVGBeOItgQnwTyZV8qBQXHOVIzPH7+snvQKcsta7Rt7lVvE7MpyMrbyMrNO6jpW1OQnbf5qUuj7yMoa5FkD/3oxSyPNzYszzxCv5Aa6xo1mZqyMhXUz3aurhdtXDxtERDTN29h7y6SYCupcz7Nb9NfsY9u9H5A3lZv3jnfGUtofT/2Zz3hVr4mZvh+pqv54kUElAksov9mnnx7h7Ys451CQ+xeiolF10UR06Kz/C6Ge+DMlzFu4U3D5JBZzF+BlzcGmCQmHFanU+nv6MHZtXhpN8a2NI6Bl/Kwqv4BS8IOIr0idh7CP8QLSWvi90k/ynt/knGiZFEyVLt78t8zzZXIqv0NvKcH5a/S99a1qKn8HhOrmp+Q0/vvR2gJca8yZ/QR7hBhkpifQndfAONyxb/o12fYp8EsHyQu1C/H85IFy56aE+KLiQlg+WDe/nrBE5myHBi6XjMNCc3IeN/0KKfgi29CL/t5u2eQgXvMu0B1CAxEDmBub1WoUJx8MVEdSZ6FMsrQ73yb5HrZndrlS1aLSFqJSqkzYGL1gsXmBQVgovylE4+s185AEQMKtMimNUwS83mlwLNvQi/7eLtnkf57W/UdfRCi+huk5CrjmOQVuWtQ6DP7REtA9B3ffRy2//rZ1ta1KRiy91Vdi2uJCrdbESqNkV6OnAiE1Gg3pnraYBovUf9mfskku5DwVUER4gQE/z0aZOQl0S7y6kdFlrlzmO2eZyfri7cbpw7GoC7eObrncuMPFLUg/jE1tFug7RNmfqKQkFdb9J4d5c8rmeIQFioWFGYfB4sgRrFqBl/tNR3MmMN8kb5A4+r5svtyq+V/wrMuwot7n9mxB282LxMXu4jPHmyAmfztaNZSauELflH2DWf6Pl5NK1oSUEG++3gn5fGkIjwpiflXXl1JKuSJB574pEJwThcPFPdb+q5VV1oc+RhZELVC5KOEk3y+Se1lcMF7XwFnAWdK90WZSX034Uct0rKVw7zlkrPCy6Q/VO+FPGfIuix1gLomyxuEkbCR46OMH13gQNCGLCdFgYWbiP8WLus8cDlCNunb5JnBRFaknCpOjy52exLM5F+82tsl6dfm+1DylcIi38vX8g8lvNt8Oi7vj72L5hcsdl+8fzXh4l1zSec2ZzPp83eLEm0azKQ928DckDGx+QteCS9+/T21FFgWWLY08f82Oie9uMWaHHNyy4oTiHPLclL3a0nYToGggFhP6bv0PU3GKk324alfgp6evDTZVx/3GnIPmfmJLUToWuzzrPVQdwpvBP0K446XyzD6c2x2taXfOdclt6d55g3ah46/XO3sNb0UEr0dbRmif87BH7xGPo2A1yBtoWeVyFbu1LRrlSZnlSb7+HSbkKcnb0pdJ9J31l98MnIeWanvqqMBa5E2QLkU2xJrsCoOqrGiDqORZoUfpebJkD/uM1I7Rr/4mjJFoKQcJNk2WPJ7Mmtedwm0Nj/faXAT5sKYV5qlZmRfSZRG/HmRmh/d7+7XEbZiF0y5EBjfVbPrdkyHP3INLj2WrjOOla29f7zpbZY03ShWjj7sIUM3iZeltxnWLxXK0U9TpWpBtUiaygD4LAveDHgFosJCX17JpvJ6Xjm4OywdlGgKESASBoo2r5K6oYjkb6EP0kXCFvokfyjqTgLVb0zrII+HwR7WAaryaqpyaouC1sEeDk4h7jaB6vqq++XUjL/bhLg7OGVkByV7eVUt/MUSJ1RVZDnGroqYpPZpi5NVZS9YZotbXpei0gqadBools6GzmjFnW6KxWClThJfRs9EuVw0MmHorFocedIodeKavr7coNpsEG9eMwYGeweVl5ACQ12DfuWD6G6kwOCkUa8yKGvjZDG+wwMcrl5WM7NZln9PwD6dK7Gbn3ygVb5J/p1+EhJGofmQU4oiDtJ/6t0/FZaTGYMcYqmZFwXF+pJBH8P/zbfYi+Ln4hF+QTug+UoIwgTci7dE3yvxbQNv5fGbuDtx3RFFupFvT8YUG/F6RfqSL7jLnA8FH+LtGlkdDUFOohIT2hNTmnuQSGu2Lgo/fJzksPkVU0QKt+js8ISeGSRh3bBoOhdfUpxtNsAkDTGnO0isEJ/lOLHf5+RG+cZFX0b1iXW/+K/83yFxNzA1IOkgNoe0n9YdaC5tPl+/RdpinB8sHVSYaAIdl4CGANan533zrhn15IPMNsnvaqCF1EfVb4UV96UyfJSaVFLw1Ro6ICZgmeHo0ev9ORabHgLCKnvP9TmEhRYXABb6J2N6U8oLZy3HM92BKKB7pzCGsA/7+rL9Q3rW659MfYiCZ7ZHQkVxSewIM6wqjEnKBIcAoTfNRgVGDzr3NdRoYx4ON0Xvfnsrc8495m1329MX+GZ12rsRg9Gvn7TaerZ08QPyHcN2AlcCRZNc51yMb2cT5xud6BesHRpvw5lc/o58bcrh3JV9J7F6ky846CPMUwVRplX/jcaczC58H9nZslFY3PVvPHw2ruAM74XNbHq4t4tLbZT3UZq6Bin8CojOfXLue9h3WTZ+lbXMEFBeczoAfPfCt3t7e1+2VEUwIwoEMIsnVUFknjGHXDU7bOSL3Vcu500ki1YP1fN91EnEn/ixfGUb92sDXo/DNtPLgAubXp7Rwt89CYxzW+egLl6So5yvsoGTCUl5Gx6/qdiMJ64iy5N/J0NYUvzjWwXHHouo2ljtO1oiUjVLb2nNVGos2EW4WQZsMmTjJE/tkZGF7rt1hmp9egpPVaTu+fhItf33qDC76RU8FZgT+y0wJRMvkfy4oLbI44BkH36rMzbcqMadljj6+ZX8oqiw1wglAwoD2AI78obYB96101gMXZfcUfzFxbP/Gzwh+iMUCxwbjDk3Kna+b3B2aK9NCdplXf/GCBkOy0xKZ2tcaI/TRrdJBcRCGTGxMX8Bt/6gu7/WkME1oHM8quNarBcUORARJLHR24uC5vbHVYa53A99dKIfry2pnw1QEOrT9Qk+5f3k5jEJRg3I6TmZpk1h37z+f6y6WFNDrb++0pS/CFvc/Zyva1qqvf0hHPi27DeWB3cojEGR5xs9/eJrHzLeucc8TGQ50WI9KTlU18JrSXmZ9XBAP8ytLxNKwrtGRBfWH/UIbXxMW/KIfBjPdE5N8oksiPUq/i+hIKcODpNLhYbi512+7HNw7GzqmOCfDxjNKbxSdF5qaEh6bgQGgj7tZs1OCP76gNESYq2edkC807DRiKn0M4nT25IOe0cRA3R2688oxmwYrxyTkxYSmpVHAXDgYl/S7i13Dddj3kXMznrqByPxrWgN2n1i7pPwBdVWTAJSHf3zXVImoNatV5pH299g2Rcbzhl5JAZTH4/foNSGZRkE4vRh5fJ4dT4k+oROc9mNu/4C3MzY6j/y9nEscpZNx0TTFQlsQe9U/p/Rtthl5WHEHamh/HielF6F3q0i1B73i4rxADXej8h5s4uIUzaGihbp1nzanywSy4aOrm92lWFuBhASTGLvrCJdPW1oYvHoDq5HcARZqjzYZNp2AFcHxXbQM5ELcUH+H4WEMT2qXzCYl8NvltzeG2GItPF6MvnpxVMJZw4fCiOYlDMwjKTAmKQQaC6B5ncz2aeuWJKl0MfSS+Fkrwv5N+rNGDpIj1xnvZvHc2ujhDP2h2JwZlUNkGBd1Qu6IUs3RaS4iM7729JKkVMjQRQ2j9fcu3a9zjawPE0+4Ue9h1ahHbpPv+9yUxxA3JAq6u83iZm9/Y+7QT04hMjvxitczazHWCHx0Rvwbh4szpENL7jfRK+h908MfhIyP8DARCEl/isDUTE9A93QBucqGQa2Z5yO+yMxzWhlTXyWmkd9f0fL7kB7HrH17FCX9IvGiqHGgPrtDkYHk8TsZnQzZxELCzcjB4RciclFG0+MfxSzV36IODf0JaaGEvgToUOwXrC0RASp52n6T0K4rOFNyoXjD5L175T1rXZBa+/6jWgkIQkTjCnUGt2WZ/Cfh/NIetzYhi9cbDyHGOghRuH87h8lMhAL9OZ0U8vabrWfklejfr1Lz+90OqnS5XIkPSi9q0K6pOAhSGot9YzHjfdQrPtl/h+4Tm6LQ8FY0Fmb5wVEC8INezN6rXitLciGDohLIiYYzT9R9nFflGgMHh39utkT1okPBPWqW2vMf7SGOEdWQmY3xvMWl+56318u21C1+EqXftUXxKu/PNPbw/9evBMSnVsbRH6u2Tr0qOyOP2jMpJTRy0DPvz5gANOuGXXeh0itYTM35i4mZI0Rh/wvXzIrMgrg6tc5Ft2MA/k547d9f+C/pfFj+uNHfx+9fXM4ip832R9/5o3vN1k36+h1HtfHbpV+B+oU2/TWdDm9/NFQ38IfNrAl+W1OjNHHBlmD8/R5JtUnvf3M//lW5xp9rXSrtI/eJ+XFXSbh/CX7lDgcay5KKSz8r/BWigrj6cExAXLqXGZlctEBFNAOfFq0d+EfsudKbiGdnsDbxjlMHidz87VlAsiDAgAowG5EAjkOBMBi43YGxC5VC8LVHSYDTSF72TR4B98KQFUNnBu9bWDVqLqBBlM2A5tJtQyUpnGps1TIwDyjygbWkR40UBuiiNgqNapBBppK2QxsBtUy0GTKbuDmqKaBXXalLQPcqlBapxzRDqjYlCvArZ0ykckejp0LfoNytNdMgBmEIaBoYP2oRgCNyGPwIBMROUaopwpSWFOEW+jpLdGVnfdUwaAwNhuAcrTjaPmqfPAOkr9zyzlAcGTntoaHhZ0KjZec8vHAjSBlI0LkZd3Nbsxu5BiGzXpSdphKitsIviMHKc+yEKfZQAS+5PAgEuEixbxUcUowoJPwK3g7JDgpNl4PwhNSJaISZqO8EMgji2CEQASJ5XOxrQiUI6fNsG4GqkJQFFaQk1JNsY6o0w/LyLKlagbkUI52BDcmR1DjxkOjmqimjokeBBCSNCUQCQZtv7eEnEH0sGLQRUcJTL1NhXV+LFXSYZrTBiJ6sIEkcsCcbgS3AKLK2QbCQw+O8GBCYB/HyQorBMRou3LDnttx7iHJ9XbFWIaUWeVzOJ87eVak2sZtlSobxyQ9aNwGNGmVQFUMn2jURsfnXUuje922d73Cg8CcLrdHb2Wiz9U0kRvPoemdRYvLEwCFF7WLSw6tb5HlPid8ldxxOAbJfgdzPySlycbOlRw9PaSQvCQ0Mk+UiCyRIgokmzQQp/KK6FC5qHlBmYuaFfQV60CKvpf1pa7k6HMyqHWdThqL+6bnHZ91TtcCTsdGqAhhKTJ68UEDgJsEzS/ZUhXeFtivYe1NgK10irns4O4aM+736WHfPqYXKbHtdfbSOfty1ofj+ch4OH5uC4Kc/qkM0pfTfARJuY4c70kYELZrD0mAn/T5UuFfJa6zJFzan84/XSUNM2Jsf98BoV8Gkx1MUs4p3AG2t/awSoYjtmeL/bGS89LFzp8xj0d23Fcj1nvEdH9O7BJxlkv3dcxupbgk/iMawOZ6Wx5CIJqxPbrvT5VcGDDXc0w4YV2R9g2J2aiF1yneO8jmEmWRPNdxZ0f2xyzOR5zXt+dCGxdDF1EbU49O/b07sgH2Fa2dAHrpI6UAP1jskAMdd0a/W0fxACpXSRhl2NN3nFP3zZB80c+3ojSRQyRZnMW7X/jSb1f79uhllIyYoQD0fwCc96dwYs9CAGCaT8+yPv3NeI7+YxO7AwBA3zvfMwCA+ZDlf7/l/p9/2N+DARBhAAAggLC+OAGIKypwncREdW9XnyKZXD1G5AqQE4la4e8R7qEpbJPCQ0/5QmaC5t23l1TKSylvEaLWLkWNeZLs1KdZJRAl2WLjP0CfSZyRZA7nS6UreX+fJ0wOcTk56uIZLfSUYgpYnNhQpaUzCDdIx5lzh5mvO4SzwLQ1CltLpexwpGmyS4DcnuN9XpI8YSQj7GyuocVPTkrIDNo3v4p2btsTd07x9L3vFstU6pgLiMd+uxRdGwRo5QSJy/PLntBTPweVzWdxXZXw0FC+fsmJNMXzK81Gckoq84rjReXyDMtQ6hgI8TC5+u45xT47fAHL3SrB+t8opVL/LVd5dpQVdhcazmOogMLQRGdLaaRR7xKEZ5Zkx+b37bec7pebOtlTRKsVjo3iDoUruaZ6QY99loyVzjbqKPPIjss9QilGpJY6lQaQ72/ZecWpIeISLKQ0SSNHOL17tDJyEyF7FKl0N5k2KU0q6mgrrDjaoiqcCDlNZZEqdvb0DhmkdTbh/e5BKSGkSgDL2eQ5ixzHytEqOpAoJjkuZD2kN2V011+Fc0N4seCQ/WxKJ9PdDGojfkyp9DiZs11uFZXe7rE/eDejhQSiYI17g52PezDzhzd3LHDeEU9EDzHEeUFEERvEAkWIMOLJvzmCiDSiin1DFPGdF+dNIHaIFf9G7BFrPvd8iygiXogn4t7nNyKLGFbML6XjL0dPUH8QT54F8Uec+dygDuVK2Ll5Z0xgf22w3/foXorBbtQ71C3UkzuAAPgkhzAzOKEETlaCacHf74qNOxQSJQKAI4ClbRHiHLfF4BZRi6ZrsbQtjjyawEOrf6zcrA3Q5y8ARRAvHjyFkKZBjboJSjPmzwA+3HZsyg+ZqjjpEJ+4ZbYMFoVbX3ATJKx4rlQdz5/Lk4T40s4mS15C+eYIj4nn43KM2AaDBPOSfiBE9VRNh+hg9T9kun8VZFYLAUgOGDW8oOqygCrI1J7dqPIXxEP4REtkbvyQRfCz3hmm9BkyY9VJFYi8GlTvmHaWXAE=)\n format('woff2');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAAAMAAA4AAAAABWwAAAKuAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGiYbIBw2BmAANBEMCoIYgXkLEAABNgIkAxwEIAWDAAcgG0oEAB6D426JQgSiDJGrY+EepR5ejwf4/fWd+/C1EBKYZDS7sRFxHTf9uCJn/m9Of4qsOwRQBbqEex0QSbKziM9Pj42dA85/tYTLU84Cj+f+PIAlq3AtV5GCrQWUqr11TNFedSEUjKs7rSju46fX7RWCSHFAeYQcQRBEKIqiAgIKlGZBdO5a3w4akEBWj6orkgSzThrq5iF0WjfiKGe7e/0dAHkwOR8nW+GblHR72hyEGmzEl02NcDPu9oBKt35NVVBcoyEuIJNhau72SE3EHkhapkdqCiZGhBhliQWUJVETSCQCNfr8o/boWoBjI3miLHqQC4ojH22AaUBxFAUpIBJlJeIVGIvLFI6PlFi4hGYVs0brZ4ZZlT0rbz1SLT+50xlW3X269vh2x+CpO/n7bw02ebvIys0wMkpteMHUIq4PGfxCRBdKjxXGaDRIc42rK+a/qgeebsfBvjGMiQ14cnJjW8fSe6fHlr2NIrgbeH2jS+k9X+md9WJP/5IvZ8LRg1cQ3gz+dJMePnr2/6ZSiy3c9rHc87Zj4tqOx0WLe1U0VR2OOEt9kq4gV/r/NBEyVbPvpL70poCoTunu3LVVZ4nW3xWV8gAKP5VqBMD10Pruq+7/52x5c4B8EQjkzs5oyJ/1JzxT0mgEACA3XjUZACFDut7UuAEqPZepikCuTcprJBVAcSJREzIBeaYSC4kSGAs2BJU5IFLcQjt+sxNAqr55kwOx947iBrvVCRYwpBuDQusVLFWyFCmCVcEwCg8JVsPPK1GwEjxesNZJv6dyHtID6dYP8UnUCvPAemHBGiA+jD6CVgilD8+tWyfSPRiYXwVJDNNkydPUzvrRmeBZvFdArqSTDSCJ3ALcvDp0JBHWjTK8pb0Qvx7N35CkXo0yFRq1qZAgVaJkYiA7H3AA)\n format('woff2');\n unicode-range: U+1F00-1FFF;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0370-03FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1,\n U+01AF-01B0, U+1EA0-1EF9, U+20AB;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,d09GMgABAAAAAB38AA4AAAAAQFAAAB2lAAEAAAAAAAAAAAAAAAAAAAAAAAAAAAAAGkAbjgwcgTAGYACDFBEMCtpgyyoLg3oAATYCJAOHcAQgBYMAByAbrzVFB2LYOABo7N+XKCoG0eD/OoEbQ/R9SCk6Co0tw5CRuS8arZIo5VZbrrY7musceT/cbsXfaJajqVAAOHS7rE8Nn8E0r4xcj9HQSGLyENo9/J/JJtkHuhJYwShF1IA6foB35wd+br2/gj4YtEodZQCDdvSQBQNGiaBUW0hECBYl9qgQBtJtn2AVZZEzThmyRLewajg+hAIAdLoB5bmyit47tW/GLfGMZG+h//8rgFZ49FiVpWy2tGZniPyORbvwKuEd0KOOc6348XObtI1W8dDIX5AUyVXE7t+boXK2LbWT3F8dhkf+XpfZ6vt/TbSGQreO4Vg3o8h3IegPpt+bpGiAi2r11tJK+v4m2tzISLthXVAO6JBCXDGsfcBcB6Ho0lRpytRpey7aMh2wOd/POiNw2t4rRgif8IlggjHafX/fcy1BZNpqHogH+uw11Nr+nq4NgppcfiAEFEEA1oaCpc8AgsgMgoQC4acE4ootCAQKmAeYBwIEMBdFB2C233H3/SkfGXvGSZSPDTv6RMoneZ91CmXIiUefcQohCEGiAAEUoMBTBXeihZZ/wgB96MMypQZqmKdZPXzQjEIQPkzdzMx5F7pHSX7VYxqc2zyfPbE+8nv+gzX0A9fMMYTOgwm9iCQbTxy5blecK0pwLZNcmpRFOid1I3yi2E2ImXRhM5dfHFde8kMgF+c243zuLR90nqpa9gtDHPabzAjD54QfJ2UuaDdD1rhQmwT3snJ0sSlgAULZ5lgR50/VSVufLiyNLqnKlQiMN+nZzUzOr4S+lsfmY/BYlEMQN4k8Raaf1L6M0QqQD7GuOOe7yOjzgTUNOBRBQpxwyiqsZ8n2pUYbiI1+/LN4xKFcDcKdGVmhjHU+xJRLbX3Mte3Hed3P+6WmpeefO3+xoKjkyrUbt8oqqqprauvqGxpvNzWzWu60d44MRpPZYrXZESMIozg5HG+P1+f7L0krVq1Zt2ET23c/IMx0QABYXLHzFjiO/g/hy4oADVd3mIlKhDkJcxnfQkynKhgIdDpYoFt458GozIkWFufGnS5IQAdbGJpbGyqCgjN1gTv5mDaoWdzhu3k7LhkdBRkVGBHq1uEcWVDeAAUNBXML3Pl8+JHOC85+Ttg8oamjf3QAxleWquPcAxwu/ZnIa2F1rIW1ovSgTjr1yFZISQZQCB7iSZe0x167r8Bsz20OXIHBvow9LG2SImEhOoUyVXyCMs9RhhAc2yYKBUUcxv9++2MLAqVPPwTmvrFuKVKh6+3xHRa0O5s2iOXphOFzAQVAjXH3s2XmaMEB2mmvvXZiFiC/MA7+gmPGqwXkIPcB6qaNRY4c9L9CQ+si0BAtYuKyT8aOzGDhYv5YMJRCJQihH/SwD88IjKRIjgtREGXBivXYQZVFv7guFzJbyWQCW+a3nJxcJdVTA7VQD/WzyM4OAVkg8KEcqqEVBmEdTuEVQXEiM5r9f4rkqclsKZMCmzLf/RVU3aeb+qLyhEAGiTNA/0B66bGt3g39bbnmK7/i2wowzb/9x4/VjjVdfS+/PnDea8P3z53pp7pT+ansZG0hwPaMsC3xUTywhz/VvTf0Pob8v0433HQLU5lyFSoZMrprr4sxE0OGjRk3YVKAwOfEN/+d9z74aMCgEaN+cYJA4YbKHfMD/B8Q/wbuB3MuAua9EYzPg3o7uHto12931YRQbR6l6zDc/ToounKPdAly+el2BMWezuzCY3QXQmvw5u7CKFAJAd9lCe183x74zk/iw4zvRrHiVoHTX8veWNrQa2KAVmorCRbigTVraLwTs8ZeOyYCsO6d6S04BBPEVCIAbVRU6hTb3GSSF9vaEylmcQmAUpbUVgG83+2vA1QZU37EUbZZShnT3x5eciZ3dfr+SzVh13mjxaSs5ehkeLpWnuBpIcVICTfqQW9Id6fp9TeLbfw/h0dFPdtNZMCbcko4Fh0uv0JL8A9Nhr/iY8skRVTCgiyCDlolCZXi7hxY8Nnr2lxb0W+pZy506FhhKZTKRHFSpqxltXDmjRFGtlmDjyYSinWH+q5Ru27iszSiG4o3a5qsP4a05nC1pslZwtKDz/p8+bUybYQCGuoUVGKUOcinJnMM6kEHlFsluef/bG+3Nw5mBtQmrJL5b9fyV3pIayJqSLnCZcn8naZPHHA2j3p2ByIMato33Ag/nuo6oXSidxdhCaXAZWgWcFHoQC9+ozpv6rCY8X751GLOwVSRl3AR8BaGYF1m2+gK1dfE2L4Eb9aI8s02Ti0y5Yb05kduAiWFi3Fu4xDeWsIIitnf1VVHE3udxp5vIo6HmS6y7np8qMshc/+5klDq5+JFRsKacj5oEQx4OjbkCkcVJfz2rCwf/04Pm4WyyN6xqmdrNfeDjFHT2kZmnVLtd5JL5awo3/S+9lG94VOvxcqbKoFn5nerXGKx0fz0bbT6lnFwveYIMZ6tXcRAid9yyEJHT25KyLEIDsaUE79YPeAhySbXtLFGE15XWg43df1LjLHvBDg30ZiLxccCF0Hihevc3W96kQJL0Xu0+7r7HAuoWCcLYzVS8C9cKT9ePtEb0IxRhlzvPoQq4TCzSu2l9BitPW9VXZG6Zqo6lBwDzkIx62UIoa7WhzcxAe8jdRmgUmPUlmBuw3T+UnPcUvPy9Cd41LTq6MfiFNMQOjRGxEsjISMD1ygoYNgFYlp54ZwclTHXJRZgqDikSBiRXAd9dKzEgUlKWEgNupR/ZHRLG6QgV2IjQZkg4mYCYQQUcZ5qvvkOndY/f3rGuNjfOD6w7835+RGNGtNGq0i6mDJDBZ+bYA3iCGuZjgAegPI5gezJzKSxGuYDrWS5PwvlAPaGixmYGG9CeHV2JxlZQKmmTudk2EXZkkt4gP4r2WmEWHawYbfzm5Aslc46A1lDeMjiGPboAFk8PTFyIB7puqAMoTuzhfHgZZAsDYA6PxQr0BRq+W/5rP8uk4160NsehfdozCOq/qCgr9z5JnNto6WN3ZjYObD1nIht4AzhW6cyGijUMUda1EsvSrOE/D3wTUK2H+0WzwSsqjQokISBICOiA2XF9QmByLevVc3cumBct9zNeISa8ToylJDoYCqbGfESgtsqEl7lEQOZ2r9GG9leVIx5Zaf5iB2do2lm5lEvSJYM0iVQ3DKpjPIm5UST2qrYcJrQwLe4ZbhUDPTyBQOtrMbhqwLKC90rta9AhzrNkmleWBKVJ5bRZzh/RU+5RYGOzgB1E+thYgYHZs2SORBl9lgBwp5tQmlHoEX//nLIoljzgqYL6CRno0Af9HI+Zew8DDpeBjBZQ7PW2tD+lm2PpqKyc40MFOKeB7IhU1luS/sSTRupOrGF0Eqt3mxNV2xSFBJQVe5MKOJgjQ0iQlm5omKFy6AMuVFzb9a4cI3vTBpCozXeQhh1nITLWecm76kuvtAmwtV4brGVGJ/4x531T7vu2Ml9uWS+Mx6f0j0lbz6Rxyds0I3Sv2i4VccA+/wY2t8NsKNwmmXUGl/0fBkacc9B3NFgpOmoE+nApeDPmleIZHH7ylT/dwxsW16KfdqP+f0sd+UFDdRUzoNLB4Xq7mwoYSVWOcLXC86er2KtI59Sv9X+qiguzhS5BkWAfb5peF9DheE92sPKg4S6cV6/Bemqydn/kU/2K/d/j4FJ2Fnnod6ZLsA+33KvrcAZjFuDrYK3Afv8jXvMFitgQL9tgERwa6dUVakO6n6YlWHYLvaetd0f/t+L46pnfUd9C/02gWkZsT+y58CQKtinACc7L9vMvtv2yPPgwC0OYJ/ngHomi7P9GPPjm4Vfi/c5EWERJwNisqJBN6KyaUJqLRryGuu2tXZn/Du6/wBcnC6eKfizJ9gzzpI+5Cat40bR1/N7yVTpBZ926VlvyZT3FsYG+1DYVi3i4TF1VFXbBAS22H9sfVpIwjfeaRFtLDGFRw5zJZb4Rj98fbEZzHIwm68itZVdgPzWab0HW13btvOzniCtef+/bsAR/vC0IH8sUYfsIfCP8RYm5UJKaGRGcjrCBwaPo72yAj2DA80mEqZZMvOLpSunsx8kccLOp2Qm5AR72hWGOPrdT/GsDu0Qf7p2kzui4H7udkJF9pWMjBCgYxYmFrYWRu6lA32Odf+TquCv/yrxrtzjPCgovHJRUWcC7MqCBDHULTEsa1PYSUW4TYUthmVtCSqShf3Is3Bq27ZFUia9VPKvpExhqRSkTvPOGFVqiJp9uyfLhIMpg8WDxSBX9HhGQF0M0NPcluExtRX3u3NvQ9daMcXJ3c/LMdjBjO0aeXXmSOLAhwFU46cCVWdhVBM1yfLPvfTsbHdnspsDGNw+Fh2MtllE+0U2TftHzvMooaV+cakuDG++x3Ysot2iot2ikuvhtgorqRFsFf8sq482BkfvYwPOa77TJ9I7Br5obm5UJXVFFh/KeEBKLY5K7gEXkWUZhU2Z8oS/H87lvVmXQvmM8mZevxZdE5SVlmDm9TyE1+KWX1yeUMJDPFfsmQSwV+R8OzDWHZzCe+KV1Bz3jx+jP/oQGWGXTmdUxualJdOCIpoH1tU2flRk9EQVkhNfH4orjMnoB/HRsajcjqOYs6PsnlAvN48CSiqWDYcNyWwiG5E0INMyKDQDfQo1g0wFiUri1erKplsWj4ZcCLGo9ArRf7a+enj8lPdj71F0j312ipdG+qKkIPmP3/5AXJSICz2TMfGCURVZ9fRO0zgyNMkeCnT1DHIMchGlwCJ7CjMwUGAUJcQmgtgCEZcQfXHUAZt2l90f6OLjX0jJQLE3BVvlW4l/53OKXglJ8X7iZsZtLeSWLOIJfze5a3L7fuYMdlfmD8ZG5/XBfm23X9o1B5MX2MRP2Jgj+dd19sBLJfMQi1/aDirtR2ryv/Z2jKwOXmGTA92c7fxoJgbuxntMyp1tY48UbLSNZT70DK/x/oY5HO3m6+VLBek5c67BtkE3E5zpvro+B3EbSV3/1rZWLiAMhYQkjrPa7o/2s3seNLQYJ/GwN10EC01Gw5cVfARxanlpfmkKn0Fcafr45mMn/Dz26g1aeuGtj9CK7kbff25uJGlbBTeJMV0cJA+bjZy6pfh01xjjKmC/dtYiWURZWPhZWESRLKYIP759QKeKv/lmM4jogZio+igYo6qKpQuCGyKv4XJIZPV9amQFBkb2LESGQpqg489ORwUdXdb78Syhy4rju0WmL9trBsZKZ4ODQvfvy7bKdKujxXUXV0ZGAi3mii1EmlrHz/s5n68p2Lw+BEaGQ/SH5GRZX6KzUzYb9DjAVb3/jEyhoo1ucB0nvLdtvUS385hm1nOOWazJ5us3Vxo+D1KOeQS4HAtzIW3gCzhd4+9OZaRlTSKzK6ivuZ3cZy/fyMoNOThMrbLUf2Sql9JFzCbOPB4LRKI9yOZutlqty75Juf8kjcmcORFb+/mFHJEnn7/k/3C01Kz9Te6ueygFg7gP7hdv6l439d7ntXjw2wTu6qKDbiouTO34nEGgK041T/Ub4+rCL2tzq37rPPt8sz7ah36x9gtNyeXJ/EP52hz+hPIEFKfk1btl4zCPvJ48SGMT2bDacLpxk7jJOsxoPnCTv+uALkiLBH4mF9IpeItnCrJTlQtPWbINUhWxhToFWZbZFzPVC7bhLRvsilmA/XVn/3gdmSUwEU+M79JU+S4mxvnBzveRqCiIjRH5i8Pqxlhtc/B4sa1nuNryosB4vGEC60WM2+ngS1YBcmwi5F3vGB5hmbqISnZd1aroKYVOEUWSJy33Eebd27V7NSXaWoRxwWbKS2JIBO34aJmRdFPtk5L+F8J9j2W7uwdA1SJr+i6rbbCSaic44GPBg49pmqlqq/LpGB5pMT4qKtnrangDGgOnwR4FknFYi2GDW3bKamz56WlpvZUxj+IVnKvRbznCPzu3l0Tdty6eWmgcFOWyBM58TtGH3CKSRnBYTdaR1gBFkwTkxh5m3NZSbvG8iBqyQd0+Nfl9wPdf3esTPO6pZe0LPXNj3Me4/0t3yChsPV9Zxqu5iA2m3/vzcgrOzBxDR+ggpUOMh5bO4RpyqODACWLC0AmQwzAWRPb/lL0a9+dFfibMrcJKTj1v9nlmtPNZZRsd2xuWxo9JPCJM5+hz+PB2qdOhsaCj85VvtPha0bVhAUGRC7BHKeDS1Ue84uIlohI8D0CjfSmp+ZpyufikDpIVNYNGJQH3oq66FuQkN1hXx8Iy6S1BLGCfe3JcfUK0l3dYfH1SnNBDDXMzdQ0zU4K6CckHfq5AvrM+zV3zEOXAU9Fz1P1unuEnj7Wzj4Nu5OdTSZe8VFKCDBuklanqRVynkoo9DzJddZRdNEA5c2c1Vxu/oPb5jVo3pK7QgnxsacFedKtgd5ptkKcfRX5bQf6eguJDeYUdOL4v4S5RMWa7/qWW4OLq6gNdjGxsKDyWML+uSyZnUMghFMsMsiWYz4fFhLHDwqfCo9hRMaAtP0vYk23q1AXTUjMOQftOHROvusREx1y/eBnDnPn9uWT5RdcPz6AgT5eA1CAs0/QiEROjC0fCx58zn1+GuKvbeiuOq5zVJ8wnl92B+srR+XLk65YkW6HoMru0ZNWj5EJeKl3D7en+fRbgq5016GYsYar8ecAezphdjeyeadTNXX8A+3z+LGdEojWSa3MctBJ2LPgOvxaxTDBS3PfEOJPDyMxh1sqVTTO/RFJ+u1MSPEVTFGWeOTpavXJmqm3mlknmC6PMDyOTYVJl1TZlJyGj7FsZ9ciKCOBkxkztenb3GAJhjNh7exCZobNJJ119gh2i2ESpIuJTtohdiIsXBDZ9r4Pe1dnXMLd7z7ZsF7OLyu8XHrXbkG2YssDsF0P6mB90E35n9IsOq5CoFqTldUviGcSAPfZdXzMejIt+v9SyEvSb0Wy/LFb5qmlK6LGcgCzHDkq3Q9PcxOjSWu3zhKvPBXTvNoElfmcFHxcb4etbj+eJuL9yniQul5vKYsh59t51ysq9HEEXbB3SsvW/DWilh7xTRZ1Eiwyyu2AsZfXM3hJ2ceje1M3JFnYPSgR9+u2+x2zQJiyTljnL9+/eP46/fkypbcj+eTQrvM5GGR0nmeuq5VxITAzNPxePMoKXoh++fVn0wnv1entKfEYNtMxdzWm4c0359lPnlgCb84GxJ55YWFs53w3Ya9os54xqgbHSZGtqGCrOb5oBbg7doPVf9o36G7Bronjp+3Bx6hvbk7621sf9bKyCfBj2Id4+VkoEJcV1JZVNRSUtwAfsT3MwOYHEQ+aTTFendmjN763vjduA92CStzhScXeWs06+fjUtTYugIjq5jN687My7o/WjF9gXlsGwEP8Qv4V/Uv9EdeRe+r0J1Ycr/PFVz+ufC6zxVvH/6v+rWuXPRrOdpRDJMunJ9nNF3mHUg0Ul7t9Lh4on4C+ulv/QjnEC+zTfSX4k1y5SO1BM4LRMY1aWx8ljxrMxZXZRg0O1hL/CAIb9A34MHvuUuGecmnh4swg8+wUflGbMJxpN2broa4W9xGHdQ6DI9/X+/XZCH8/wEJe8MN7vPIvd2ANYDR4Y7a1hoJgYI/mER+wmuxp9ymWPTDAQxM6OsDOmyFZ+hh5QTAEYK2nGUND53d69TKcaNjo8a4lMj5pwAthCeGRumufdibRtGE4yAsMY3QPJqyL1/5hLIkgPcyxjEzbHQLHSG8bpVmeR6XEqyGDaKngYSHMrkXYw4zkdHiCynq0l0MpGutWZZHpUhhOI2g57FK+Yn/Il31CRxHiPpB+HYXKmKBHumE+yzYNlwh+0lfwjCiG1ylwhpIzbslWGlDEg4uxvwOiizR9xOfJW2bfQezW63UFmSvxlW4DlIwqFb/WEvyiCMoPJEjVVfcsETizemN6wf0VUm6awYETT3n6mCFs6LnkUrzg5XY94EYIGpfDWpwyKc5Wj0GNmNivRw2/WzIQSS78eS5TrwwEQIL6eSomyEOZh2LRA9z+uo53An5lebGNhiWAuiFjFJuyDcQyxCoHYMNtslAs8gYzw9TO8w3i/ZpzBqumabsOo+FSOKgW8Ydo0uf01He2dwkSC8Xmyd64gklSqC8AA1M0UrbgBFK04lL9kr8idCsC0CVMO56apDk6k7ctERYyeism+AlNRuihakQcta3kNQLjSPP2Zcb8lYjHJ1p3QR/tbOtt9wqEtCDeS/Qm7ErEkC/x+Ow14FOsgR4hibYHO3Iwgip/hORO/LnAtOVAUvCQSSXKQGtc9ixe/hjtMckE03eTV7V1AFHqEhKlCDxQem+Zaf01HW69gbUmz9AaJ6Yp4BkJ0MuN9pPB6NiH/nipQunCL0hGie9I1Sw3Qy4N0jXgC8OpOI1Dap0TpczFZoqWpb8k/SeUiU4KH+Xwbhl3EQWej0W1cxwxxqBOEstHYyBnvUezrTBjJ9tUVDpKEzxK1kiXjCRS9Ou/ILKTSLOVKnnRS7r5O7wy74MECbSJNtNGui2wTZnjBnBpjd5YA/8/cSt+nrs6fFeW3b9RY8KBtO7Y4avefrZ6Q3BeSW1PKuLt8SYCO4utIx8CxPzrw1jxC9k6/vfUNWwTqF6NJ7R7rKAzevX/l2B++9mzK+C//S34X/x0xqe4hRG66PlpzmJzhB9FMab/k93LfCTN2chsr7E/E+toSS44Fw79Hj7wTKNeP2nmLQy5qa3k/s3/Nbum4VpPvpKPHf/Pulu/T3pGYXOpWY4Fp37rY5twA8dC4S0V+e8rtvokTfQw1yULDqJ/tBX28v7VoOrSSvlYNjF6H88VbbdRzFpQjxksQ0ZjVjjs8oZFLM1uLfPar+QHANn8HOE/q4qMeUJjtCI0lTOiSakteP4JklbbQa5JWpi+ow7g1Scq4m1/idekOHN+NehJAyQGMi77jGPWol6utT9RnYP5XkJV5tk+i57eZybaJPogwmQttTJgMhGpbPPuNxNmau1xbbcaB1Vi4/VUd1syZPB3qO23TVQJQibibVHq6RB1F/3hANFN/tZ8pfYE1+fjdbAmkKKV7JOhuAeptB9YG/RejPnnQPuoILlC/+VD4p93maQWKnQy+etTjUD+81gFENKW9Zfqy40j+BONBIwk1v72MjgjOslUYUzAyGuP293heb2KABBXctHGY3njlsNOiCzs8f3Wgn7BGXz9fWmg6uSTp6HRmtsq5pof7fY3FzV9SiXF8L8u0yYHrtJ8YUxOtkAqo64zBT4djsatUNLlh3ew4OcDHw48AZeWFbvw/jDbnN/oHt9QcAHjrz8LqAHwdDr//o7g9x+M2RzgwJxRAgPGkiR9gzhNdwl/zO4HYnej/Qz4/axATaPvBt4MCGlFRzao5/zVoYUJas6JCUlHPUGt8bc6pYEQ8ZhONrD5f/ds8y6q+8m25vsSRF6G+x1U/Zzdchy4306xOjlYCRs3gmtE51lwO9YzYwiexINmOml4yn/z+U0INF1vPY5RH1p9ByaOXOtz1DNFtk/ywiL92DkMm9+GVa+Wa0CLk5JiZP1uG4D6MWnMw6gpGY5Et0i7UUuerH4XCIN8KXaw5kgq/vJbDvjzKhT3Lpd7EaJUS66boopztGHEdlhQNLGFDgsjCJ7W0iik29g7PxQ2yaOWENDDbEmC2DMadWW3n2UPJ9y6lcxQq6qrke76E9oN81aFay8k3D4yWSHX4yDo2WA7dLpZWJQWrqLnkr3ohZ3lFrdTlp3WEr06OAlYGs711HExU1KRDK71HdI6AlcN6bhUhD6HVRZPyTkvnLaL7qBu94+4ORaLwAeeNfkdF5ZeYHZgr5AdWDRlSveysxof9ZfK5ZcgW5MCVwbowqzIH+XAVyCFkRqNuU4Ns3jN5dIbmPi1ucI8h05C/24WQf8gqXAOQV/1agNy6agBkFrIL1CN07RpZU1bLlmsPrhM9B7rHXV/9QYzqD+XXZRkQ4P8uEGcLa+4o84ECtTYcBJhDADSkzgkcAoqMkOYhowiK8aLbXgxkLGVZJg58o0OQkwkW/nMBxS4pWKAgEeRoIdCsJDkUp4MUT/AfmuYUX+qmeQOdyHPopuGm6a+b/YWJKtf1o87BaT4FRUTk2DRbg0U62RMdKNIJ3n3IWQoTLpieGgSpd2rTZzjWuPqhw6sBoyOEItKocHSzOm+hm+nrOrU/daeFCTRPiOnboKdGNsMRzxqNBUu2HBVVG6KWAG13fhkSPwA=)\n format('woff2');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n@font-face {\n font-family: Roboto;\n font-style: normal;\n font-weight: 500;\n font-display: swap;\n src: url(data:font/woff2;base64,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)\n format('woff2');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,\n U+FEFF, U+FFFD;\n}\n\n/*!************************************************************************************************!*\\\n !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/font/fira-code.css ***!\n \\************************************************************************************************/\n@font-face {\n font-family: Fira Code;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff;base64,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)\n format('woff');\n unicode-range: U+0460-052F, U+1C80-1C88, U+20B4, U+2DE0-2DFF, U+A640-A69F,\n U+FE2E-FE2F;\n}\n@font-face {\n font-family: Fira Code;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff;base64,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)\n format('woff');\n unicode-range: U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116;\n}\n@font-face {\n font-family: Fira Code;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff;base64,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)\n format('woff');\n unicode-range: U+1F00-1FFF;\n}\n@font-face {\n font-family: Fira Code;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff;base64,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)\n format('woff');\n unicode-range: U+0370-03FF;\n}\n@font-face {\n font-family: Fira Code;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff;base64,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)\n format('woff');\n unicode-range: U+0100-024F, U+0259, U+1E00-1EFF, U+2020, U+20A0-20AB,\n U+20AD-20CF, U+2113, U+2C60-2C7F, U+A720-A7FF;\n}\n@font-face {\n font-family: Fira Code;\n font-style: normal;\n font-weight: 400;\n font-display: swap;\n src: url(data:font/woff;base64,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)\n format('woff');\n unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,\n U+02DC, U+2000-206F, U+2074, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215,\n U+FEFF, U+FFFD;\n}\n\n/*!********************************************************************************************!*\\\n !*** css ../../../node_modules/css-loader/dist/cjs.js!../../graphiql-react/dist/style.css ***!\n \\********************************************************************************************/\n.graphiql-container *{box-sizing:border-box;font-variant-ligatures:none}.graphiql-container,.CodeMirror-info,.CodeMirror-lint-tooltip,.graphiql-dialog,.graphiql-dialog-overlay,.graphiql-tooltip,[data-radix-popper-content-wrapper]{--color-primary: 320, 95%, 43%;--color-secondary: 242, 51%, 61%;--color-tertiary: 188, 100%, 36%;--color-info: 208, 100%, 46%;--color-success: 158, 60%, 42%;--color-warning: 36, 100%, 41%;--color-error: 13, 93%, 58%;--color-neutral: 219, 28%, 32%;--color-base: 219, 28%, 100%;--alpha-secondary: .76;--alpha-tertiary: .5;--alpha-background-heavy: .15;--alpha-background-medium: .1;--alpha-background-light: .07;--font-family: \"Roboto\", sans-serif;--font-family-mono: \"Fira Code\", monospace;--font-size-hint:.75rem;--font-size-inline-code:.8125rem;--font-size-body:.9375rem;--font-size-h4:1.125rem;--font-size-h3:1.375rem;--font-size-h2:1.8125rem;--font-weight-regular: 400;--font-weight-medium: 500;--line-height: 1.5;--px-2: 2px;--px-4: 4px;--px-6: 6px;--px-8: 8px;--px-10: 10px;--px-12: 12px;--px-16: 16px;--px-20: 20px;--px-24: 24px;--border-radius-2: 2px;--border-radius-4: 4px;--border-radius-8: 8px;--border-radius-12: 12px;--popover-box-shadow: 0px 6px 20px rgba(59, 76, 106, .13), 0px 1.34018px 4.46726px rgba(59, 76, 106, .0774939), 0px .399006px 1.33002px rgba(59, 76, 106, .0525061);--popover-border: none;--sidebar-width: 60px;--toolbar-width: 40px;--session-header-height: 51px}@media (prefers-color-scheme: dark){body:not(.graphiql-light) .graphiql-container,body:not(.graphiql-light) .CodeMirror-info,body:not(.graphiql-light) .CodeMirror-lint-tooltip,body:not(.graphiql-light) .graphiql-dialog,body:not(.graphiql-light) .graphiql-dialog-overlay,body:not(.graphiql-light) .graphiql-tooltip,body:not(.graphiql-light) [data-radix-popper-content-wrapper]{--color-primary: 338, 100%, 67%;--color-secondary: 243, 100%, 77%;--color-tertiary: 188, 100%, 44%;--color-info: 208, 100%, 72%;--color-success: 158, 100%, 42%;--color-warning: 30, 100%, 80%;--color-error: 13, 100%, 58%;--color-neutral: 219, 29%, 78%;--color-base: 219, 29%, 18%;--popover-box-shadow: none;--popover-border: 1px solid hsl(var(--color-neutral))}}body.graphiql-dark .graphiql-container,body.graphiql-dark .CodeMirror-info,body.graphiql-dark .CodeMirror-lint-tooltip,body.graphiql-dark .graphiql-dialog,body.graphiql-dark .graphiql-dialog-overlay,body.graphiql-dark .graphiql-tooltip,body.graphiql-dark [data-radix-popper-content-wrapper]{--color-primary: 338, 100%, 67%;--color-secondary: 243, 100%, 77%;--color-tertiary: 188, 100%, 44%;--color-info: 208, 100%, 72%;--color-success: 158, 100%, 42%;--color-warning: 30, 100%, 80%;--color-error: 13, 100%, 58%;--color-neutral: 219, 29%, 78%;--color-base: 219, 29%, 18%;--popover-box-shadow: none;--popover-border: 1px solid hsl(var(--color-neutral))}.graphiql-container,.CodeMirror-info,.CodeMirror-lint-tooltip,.graphiql-dialog,.graphiql-container:is(button),.CodeMirror-info:is(button),.CodeMirror-lint-tooltip:is(button),.graphiql-dialog:is(button){color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-body);font-weight:var(----font-weight-regular);line-height:var(--line-height)}.graphiql-container input,.CodeMirror-info input,.CodeMirror-lint-tooltip input,.graphiql-dialog input{color:hsla(var(--color-neutral),1);font-family:var(--font-family);font-size:var(--font-size-caption)}.graphiql-container input::placeholder,.CodeMirror-info input::placeholder,.CodeMirror-lint-tooltip input::placeholder,.graphiql-dialog input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-container a,.CodeMirror-info a,.CodeMirror-lint-tooltip a,.graphiql-dialog a{color:hsl(var(--color-primary))}.graphiql-container a:focus,.CodeMirror-info a:focus,.CodeMirror-lint-tooltip a:focus,.graphiql-dialog a:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-un-styled,button.graphiql-un-styled{all:unset;border-radius:var(--border-radius-4);cursor:pointer}:is(.graphiql-un-styled,button.graphiql-un-styled):hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}:is(.graphiql-un-styled,button.graphiql-un-styled):active{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-un-styled,button.graphiql-un-styled):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button,button.graphiql-button{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border:none;border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),1);cursor:pointer;font-size:var(--font-size-body);padding:var(--px-8) var(--px-12)}:is(.graphiql-button,button.graphiql-button):hover,:is(.graphiql-button,button.graphiql-button):active{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}:is(.graphiql-button,button.graphiql-button):focus{outline:hsla(var(--color-neutral),var(--alpha-background-heavy)) auto 1px}.graphiql-button-success:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-success),var(--alpha-background-heavy))}.graphiql-button-error:is(.graphiql-button,button.graphiql-button){background-color:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-button-group{background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:calc(var(--border-radius-4) + var(--px-4));display:flex;padding:var(--px-4)}.graphiql-button-group>button.graphiql-button{background-color:transparent}.graphiql-button-group>button.graphiql-button:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-button-group>button.graphiql-button.active{background-color:hsl(var(--color-base));cursor:default}.graphiql-button-group>*+*{margin-left:var(--px-8)}.graphiql-dialog-overlay{position:fixed;inset:0;background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));z-index:10}.graphiql-dialog{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-12);box-shadow:var(--popover-box-shadow);margin:0;max-height:80vh;max-width:80vw;overflow:auto;padding:0;width:unset;transform:translate(-50%,-50%);top:50%;left:50%;position:fixed;z-index:10}.graphiql-dialog-close>svg{color:hsla(var(--color-neutral),var(--alpha-secondary));display:block;height:var(--px-12);padding:var(--px-12);width:var(--px-12)}.graphiql-dropdown-content{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);font-size:inherit;max-width:250px;padding:var(--px-4);font-family:var(--font-family);color:hsl(var(--color-neutral));max-height:min(calc(var(--radix-dropdown-menu-content-available-height) - 10px),400px);overflow-y:scroll}.graphiql-dropdown-item{border-radius:var(--border-radius-4);font-size:inherit;margin:var(--px-4);overflow:hidden;padding:var(--px-6) var(--px-8);text-overflow:ellipsis;white-space:nowrap;outline:none;cursor:pointer;line-height:var(--line-height)}.graphiql-dropdown-item[data-selected],.graphiql-dropdown-item[data-current-nav],.graphiql-dropdown-item:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:inherit}.graphiql-dropdown-item:not(:first-child){margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) blockquote{margin-left:0;margin-right:0;padding-left:var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{border-radius:var(--border-radius-4);font-family:var(--font-family-mono);font-size:var(--font-size-inline-code)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) code{padding:var(--px-2)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre{overflow:auto;padding:var(--px-6) var(--px-8)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) pre code{background-color:initial;border-radius:0;padding:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol,:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{padding-left:var(--px-16)}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ol{list-style-type:decimal}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) ul{list-style-type:disc}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation) img{border-radius:var(--border-radius-4);max-height:120px;max-width:100%}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:first-child{margin-top:0}:is(.graphiql-markdown-description,.graphiql-markdown-deprecation,.CodeMirror-hint-information-description,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-description,.CodeMirror-info .info-deprecation)>:last-child{margin-bottom:0}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a{color:hsl(var(--color-primary));text-decoration:none}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) a:hover{text-decoration:underline}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) blockquote{border-left:1.5px solid hsla(var(--color-neutral),var(--alpha-tertiary))}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) code,:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description) pre{background-color:hsla(var(--color-neutral),var(--alpha-background-light));color:hsla(var(--color-neutral),1)}:is(.graphiql-markdown-description,.CodeMirror-hint-information-description,.CodeMirror-info .info-description)>*{margin:var(--px-12) 0}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) a{color:hsl(var(--color-warning));text-decoration:underline}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) blockquote{border-left:1.5px solid hsl(var(--color-warning))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) code,:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation) pre{background-color:hsla(var(--color-warning),var(--alpha-background-heavy))}:is(.graphiql-markdown-deprecation,.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation)>*{margin:var(--px-8) 0}.graphiql-markdown-preview>:not(:first-child){display:none}.CodeMirror-hint-information-deprecation,.CodeMirror-info .info-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));margin-top:var(--px-12);padding:var(--px-6) var(--px-8)}.CodeMirror-hint-information-deprecation-label,.CodeMirror-info .info-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-deprecation-reason,.CodeMirror-info .info-deprecation-reason{margin-top:var(--px-6)}.graphiql-spinner{height:56px;margin:auto;margin-top:var(--px-16);width:56px}.graphiql-spinner:after{animation:rotation .8s linear 0s infinite;border:4px solid transparent;border-radius:100%;border-top:4px solid hsla(var(--color-neutral),var(--alpha-tertiary));content:\"\";display:inline-block;height:46px;vertical-align:middle;width:46px}@keyframes rotation{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.graphiql-tooltip{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsl(var(--color-neutral));font-size:inherit;padding:var(--px-4) var(--px-6);font-family:var(--font-family)}.graphiql-tabs{display:flex;align-items:center;overflow-x:auto;padding:var(--px-12)}.graphiql-tabs>:not(:first-child){margin-left:var(--px-12)}.graphiql-tab{align-items:stretch;border-radius:var(--border-radius-8);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex}.graphiql-tab>button.graphiql-tab-close{visibility:hidden}.graphiql-tab.graphiql-tab-active>button.graphiql-tab-close,.graphiql-tab:hover>button.graphiql-tab-close,.graphiql-tab:focus-within>button.graphiql-tab-close{visibility:unset}.graphiql-tab.graphiql-tab-active{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy));color:hsla(var(--color-neutral),1)}button.graphiql-tab-button{padding:var(--px-4) 0 var(--px-4) var(--px-8)}button.graphiql-tab-close{align-items:center;display:flex;padding:var(--px-4) var(--px-8)}button.graphiql-tab-close>svg{height:var(--px-8);width:var(--px-8)}.graphiql-history-header{font-size:var(--font-size-h2);font-weight:var(--font-weight-medium);display:flex;justify-content:space-between;align-items:center}.graphiql-history-header button{font-size:var(--font-size-inline-code);padding:var(--px-6) var(--px-10)}.graphiql-history-items{margin:var(--px-16) 0 0;list-style:none;padding:0}.graphiql-history-item{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;font-size:var(--font-size-inline-code);font-family:var(--font-family-mono);height:34px}.graphiql-history-item:hover{color:hsla(var(--color-neutral),1);background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-history-item:not(:first-child){margin-top:var(--px-4)}.graphiql-history-item.editable{background-color:hsla(var(--color-primary),var(--alpha-background-medium))}.graphiql-history-item.editable>input{background:transparent;border:none;flex:1;margin:0;outline:none;padding:0 var(--px-10);width:100%}.graphiql-history-item.editable>input::placeholder{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-history-item.editable>button{color:hsl(var(--color-primary));padding:0 var(--px-10)}.graphiql-history-item.editable>button:active{background-color:hsla(var(--color-primary),var(--alpha-background-heavy))}.graphiql-history-item.editable>button:focus{outline:hsl(var(--color-primary)) auto 1px}.graphiql-history-item.editable>button>svg{display:block}button.graphiql-history-item-label{flex:1;padding:var(--px-8) var(--px-10);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}button.graphiql-history-item-action{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;padding:var(--px-8) var(--px-6)}button.graphiql-history-item-action:hover{color:hsla(var(--color-neutral),1)}button.graphiql-history-item-action>svg{height:14px;width:14px}.graphiql-history-item-spacer{height:var(--px-16)}.graphiql-doc-explorer-default-value{color:hsl(var(--color-success))}a.graphiql-doc-explorer-type-name{color:hsl(var(--color-warning));text-decoration:none}a.graphiql-doc-explorer-type-name:hover{text-decoration:underline}a.graphiql-doc-explorer-type-name:focus{outline:hsl(var(--color-warning)) auto 1px}.graphiql-doc-explorer-argument>*+*{margin-top:var(--px-12)}.graphiql-doc-explorer-argument-name{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-argument-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--border-radius-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-argument-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-deprecation{background-color:hsla(var(--color-warning),var(--alpha-background-light));border:1px solid hsl(var(--color-warning));border-radius:var(--px-4);color:hsl(var(--color-warning));padding:var(--px-8)}.graphiql-doc-explorer-deprecation-label{font-size:var(--font-size-hint);font-weight:var(--font-weight-medium)}.graphiql-doc-explorer-directive{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-section-title{align-items:center;display:flex;font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);line-height:1}.graphiql-doc-explorer-section-title>svg{height:var(--px-16);margin-right:var(--px-8);width:var(--px-16)}.graphiql-doc-explorer-section-content{margin-left:var(--px-8);margin-top:var(--px-16)}.graphiql-doc-explorer-section-content>*+*{margin-top:var(--px-16)}.graphiql-doc-explorer-root-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search{color:hsla(var(--color-neutral),var(--alpha-secondary))}.graphiql-doc-explorer-search:not([data-state=\"idle\"]){border:var(--popover-border);border-radius:var(--border-radius-4);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1)}.graphiql-doc-explorer-search:not([data-state=\"idle\"]) .graphiql-doc-explorer-search-input{background:hsl(var(--color-base))}.graphiql-doc-explorer-search-input{align-items:center;background-color:hsla(var(--color-neutral),var(--alpha-background-light));border-radius:var(--border-radius-4);display:flex;padding:var(--px-8) var(--px-12)}.graphiql-doc-explorer-search [role=combobox]{border:none;background-color:transparent;margin-left:var(--px-4);width:100%}.graphiql-doc-explorer-search [role=combobox]:focus{outline:none}.graphiql-doc-explorer-search [role=listbox]{background-color:hsl(var(--color-base));border:none;border-bottom-left-radius:var(--border-radius-4);border-bottom-right-radius:var(--border-radius-4);border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));max-height:400px;overflow-y:auto;margin:0;font-size:var(--font-size-body);padding:var(--px-4);position:relative}.graphiql-doc-explorer-search [role=option]{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));overflow-x:hidden;padding:var(--px-8) var(--px-12);text-overflow:ellipsis;white-space:nowrap;cursor:pointer}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]{background-color:hsla(var(--color-neutral),var(--alpha-background-light))}.graphiql-doc-explorer-search [role=option]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-medium))}.graphiql-doc-explorer-search [role=option][data-headlessui-state=active]:hover{background-color:hsla(var(--color-neutral),var(--alpha-background-heavy))}:is(.graphiql-doc-explorer-search [role=\"option\"])+:is(.graphiql-doc-explorer-search [role=\"option\"]){margin-top:var(--px-4)}.graphiql-doc-explorer-search-type{color:hsl(var(--color-info))}.graphiql-doc-explorer-search-field{color:hsl(var(--color-warning))}.graphiql-doc-explorer-search-argument{color:hsl(var(--color-secondary))}.graphiql-doc-explorer-search-divider{color:hsla(var(--color-neutral),var(--alpha-secondary));font-size:var(--font-size-hint);font-weight:var(--font-weight-medium);margin-top:var(--px-8);padding:var(--px-8) var(--px-12)}.graphiql-doc-explorer-search-empty{color:hsla(var(--color-neutral),var(--alpha-secondary));padding:var(--px-8) var(--px-12)}a.graphiql-doc-explorer-field-name{color:hsl(var(--color-info));text-decoration:none}a.graphiql-doc-explorer-field-name:hover{text-decoration:underline}a.graphiql-doc-explorer-field-name:focus{outline:hsl(var(--color-info)) auto 1px}.graphiql-doc-explorer-item>:not(:first-child){margin-top:var(--px-12)}.graphiql-doc-explorer-argument-multiple{margin-left:var(--px-8)}.graphiql-doc-explorer-enum-value{color:hsl(var(--color-info))}.graphiql-doc-explorer-header{display:flex;justify-content:space-between;position:relative}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-title{visibility:hidden}.graphiql-doc-explorer-header:focus-within .graphiql-doc-explorer-back:not(:focus){color:transparent}.graphiql-doc-explorer-header-content{display:flex;flex-direction:column;min-width:0}.graphiql-doc-explorer-search{position:absolute;right:0;top:0}.graphiql-doc-explorer-search:focus-within{left:0}.graphiql-doc-explorer-search [role=combobox]{height:24px;width:4ch}.graphiql-doc-explorer-search [role=combobox]:focus{width:100%}a.graphiql-doc-explorer-back{align-items:center;color:hsla(var(--color-neutral),var(--alpha-secondary));display:flex;text-decoration:none}a.graphiql-doc-explorer-back:hover{text-decoration:underline}a.graphiql-doc-explorer-back:focus{outline:hsla(var(--color-neutral),var(--alpha-secondary)) auto 1px}a.graphiql-doc-explorer-back:focus+.graphiql-doc-explorer-title{visibility:unset}a.graphiql-doc-explorer-back>svg{height:var(--px-8);margin-right:var(--px-8);width:var(--px-8)}.graphiql-doc-explorer-title{font-weight:var(--font-weight-medium);font-size:var(--font-size-h2);overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.graphiql-doc-explorer-title:not(:first-child){font-size:var(--font-size-h3);margin-top:var(--px-8)}.graphiql-doc-explorer-content>*{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-20)}.graphiql-doc-explorer-error{background-color:hsla(var(--color-error),var(--alpha-background-heavy));border:1px solid hsl(var(--color-error));border-radius:var(--border-radius-8);color:hsl(var(--color-error));padding:var(--px-8) var(--px-12)}.CodeMirror{font-family:monospace;height:300px;color:#000;direction:ltr}.CodeMirror-lines{padding:4px 0}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{padding:0 4px}.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{background-color:#fff}.CodeMirror-gutters{border-right:1px solid #ddd;background-color:#f7f7f7;white-space:nowrap}.CodeMirror-linenumber{padding:0 3px 0 5px;min-width:20px;text-align:right;color:#999;white-space:nowrap}.CodeMirror-guttermarker{color:#000}.CodeMirror-guttermarker-subtle{color:#999}.CodeMirror-cursor{border-left:1px solid black;border-right:none;width:0}.CodeMirror div.CodeMirror-secondarycursor{border-left:1px solid silver}.cm-fat-cursor .CodeMirror-cursor{width:auto;border:0!important;background:#7e7}.cm-fat-cursor div.CodeMirror-cursors{z-index:1}.cm-fat-cursor .CodeMirror-line::selection,.cm-fat-cursor .CodeMirror-line>span::selection,.cm-fat-cursor .CodeMirror-line>span>span::selection{background:transparent}.cm-fat-cursor .CodeMirror-line::-moz-selection,.cm-fat-cursor .CodeMirror-line>span::-moz-selection,.cm-fat-cursor .CodeMirror-line>span>span::-moz-selection{background:transparent}.cm-fat-cursor{caret-color:transparent}@-moz-keyframes blink{50%{background-color:transparent}}@-webkit-keyframes blink{50%{background-color:transparent}}@keyframes blink{50%{background-color:transparent}}.cm-tab{display:inline-block;text-decoration:inherit}.CodeMirror-rulers{position:absolute;left:0;right:0;top:-50px;bottom:0;overflow:hidden}.CodeMirror-ruler{border-left:1px solid #ccc;top:0;bottom:0;position:absolute}.cm-s-default .cm-header{color:#00f}.cm-s-default .cm-quote{color:#090}.cm-negative{color:#d44}.cm-positive{color:#292}.cm-header,.cm-strong{font-weight:700}.cm-em{font-style:italic}.cm-link{text-decoration:underline}.cm-strikethrough{text-decoration:line-through}.cm-s-default .cm-keyword{color:#708}.cm-s-default .cm-atom{color:#219}.cm-s-default .cm-number{color:#164}.cm-s-default .cm-def{color:#00f}.cm-s-default .cm-variable-2{color:#05a}.cm-s-default .cm-variable-3,.cm-s-default .cm-type{color:#085}.cm-s-default .cm-comment{color:#a50}.cm-s-default .cm-string{color:#a11}.cm-s-default .cm-string-2{color:#f50}.cm-s-default .cm-meta,.cm-s-default .cm-qualifier{color:#555}.cm-s-default .cm-builtin{color:#30a}.cm-s-default .cm-bracket{color:#997}.cm-s-default .cm-tag{color:#170}.cm-s-default .cm-attribute{color:#00c}.cm-s-default .cm-hr{color:#999}.cm-s-default .cm-link{color:#00c}.cm-s-default .cm-error,.cm-invalidchar{color:red}.CodeMirror-composing{border-bottom:2px solid}div.CodeMirror span.CodeMirror-matchingbracket{color:#0b0}div.CodeMirror span.CodeMirror-nonmatchingbracket{color:#a22}.CodeMirror-matchingtag{background:rgba(255,150,0,.3)}.CodeMirror-activeline-background{background:#e8f2ff}.CodeMirror{position:relative;overflow:hidden;background:white}.CodeMirror-scroll{overflow:scroll!important;margin-bottom:-50px;margin-right:-50px;padding-bottom:50px;height:100%;outline:none;position:relative;z-index:0}.CodeMirror-sizer{position:relative;border-right:50px solid transparent}.CodeMirror-vscrollbar,.CodeMirror-hscrollbar,.CodeMirror-scrollbar-filler,.CodeMirror-gutter-filler{position:absolute;z-index:6;display:none;outline:none}.CodeMirror-vscrollbar{right:0;top:0;overflow-x:hidden;overflow-y:scroll}.CodeMirror-hscrollbar{bottom:0;left:0;overflow-y:hidden;overflow-x:scroll}.CodeMirror-scrollbar-filler{right:0;bottom:0}.CodeMirror-gutter-filler{left:0;bottom:0}.CodeMirror-gutters{position:absolute;left:0;top:0;min-height:100%;z-index:3}.CodeMirror-gutter{white-space:normal;height:100%;display:inline-block;vertical-align:top;margin-bottom:-50px}.CodeMirror-gutter-wrapper{position:absolute;z-index:4;background:none!important;border:none!important}.CodeMirror-gutter-background{position:absolute;top:0;bottom:0;z-index:4}.CodeMirror-gutter-elt{position:absolute;cursor:default;z-index:4}.CodeMirror-gutter-wrapper ::selection{background-color:transparent}.CodeMirror-gutter-wrapper ::-moz-selection{background-color:transparent}.CodeMirror-lines{cursor:text;min-height:1px}.CodeMirror pre.CodeMirror-line,.CodeMirror pre.CodeMirror-line-like{-moz-border-radius:0;-webkit-border-radius:0;border-radius:0;border-width:0;background:transparent;font-family:inherit;font-size:inherit;margin:0;white-space:pre;word-wrap:normal;line-height:inherit;color:inherit;z-index:2;position:relative;overflow:visible;-webkit-tap-highlight-color:transparent;-webkit-font-variant-ligatures:contextual;font-variant-ligatures:contextual}.CodeMirror-wrap pre.CodeMirror-line,.CodeMirror-wrap pre.CodeMirror-line-like{word-wrap:break-word;white-space:pre-wrap;word-break:normal}.CodeMirror-linebackground{position:absolute;left:0;right:0;top:0;bottom:0;z-index:0}.CodeMirror-linewidget{position:relative;z-index:2;padding:.1px}.CodeMirror-rtl pre{direction:rtl}.CodeMirror-code{outline:none}.CodeMirror-scroll,.CodeMirror-sizer,.CodeMirror-gutter,.CodeMirror-gutters,.CodeMirror-linenumber{-moz-box-sizing:content-box;box-sizing:content-box}.CodeMirror-measure{position:absolute;width:100%;height:0;overflow:hidden;visibility:hidden}.CodeMirror-cursor{position:absolute;pointer-events:none}.CodeMirror-measure pre{position:static}div.CodeMirror-cursors{visibility:hidden;position:relative;z-index:3}div.CodeMirror-dragcursors,.CodeMirror-focused div.CodeMirror-cursors{visibility:visible}.CodeMirror-selected{background:#d9d9d9}.CodeMirror-focused .CodeMirror-selected{background:#d7d4f0}.CodeMirror-crosshair{cursor:crosshair}.CodeMirror-line::selection,.CodeMirror-line>span::selection,.CodeMirror-line>span>span::selection{background:#d7d4f0}.CodeMirror-line::-moz-selection,.CodeMirror-line>span::-moz-selection,.CodeMirror-line>span>span::-moz-selection{background:#d7d4f0}.cm-searching{background-color:#ffa;background-color:#ff06}.cm-force-border{padding-right:.1px}@media print{.CodeMirror div.CodeMirror-cursors{visibility:hidden}}.cm-tab-wrap-hack:after{content:\"\"}span.CodeMirror-selectedtext{background:none}.graphiql-container .CodeMirror{height:100%;position:absolute;width:100%}.graphiql-container .CodeMirror{font-family:var(--font-family-mono)}.graphiql-container .CodeMirror,.graphiql-container .CodeMirror-gutters{background:none;background-color:var(--editor-background, hsl(var(--color-base)))}.graphiql-container .CodeMirror-linenumber{padding:0}.graphiql-container .CodeMirror-gutters{border:none}.cm-s-graphiql{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-keyword{color:hsl(var(--color-primary))}.cm-s-graphiql .cm-def{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-punctuation{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-variable{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-atom{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-number{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string{color:hsl(var(--color-warning))}.cm-s-graphiql .cm-builtin{color:hsl(var(--color-success))}.cm-s-graphiql .cm-string-2{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-attribute,.cm-s-graphiql .cm-meta{color:hsl(var(--color-tertiary))}.cm-s-graphiql .cm-property{color:hsl(var(--color-info))}.cm-s-graphiql .cm-qualifier{color:hsl(var(--color-secondary))}.cm-s-graphiql .cm-comment{color:hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .cm-ws{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.cm-s-graphiql .cm-invalidchar{color:hsl(var(--color-error))}.cm-s-graphiql .CodeMirror-cursor{border-left:2px solid hsla(var(--color-neutral),var(--alpha-secondary))}.cm-s-graphiql .CodeMirror-linenumber{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.graphiql-container div.CodeMirror span.CodeMirror-matchingbracket,.graphiql-container div.CodeMirror span.CodeMirror-nonmatchingbracket{color:hsl(var(--color-warning))}.graphiql-container .CodeMirror-selected,.graphiql-container .CodeMirror-focused .CodeMirror-selected{background:hsla(var(--color-neutral),var(--alpha-background-heavy))}.graphiql-container .CodeMirror-dialog{background:inherit;color:inherit;left:0;right:0;overflow:hidden;padding:var(--px-2) var(--px-6);position:absolute;z-index:6}.graphiql-container .CodeMirror-dialog-top{border-bottom:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));padding-bottom:var(--px-12);top:0}.graphiql-container .CodeMirror-dialog-bottom{border-top:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));bottom:0;padding-top:var(--px-12)}.graphiql-container .CodeMirror-search-hint{display:none}.graphiql-container .CodeMirror-dialog input{border:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));border-radius:var(--border-radius-4);padding:var(--px-4)}.graphiql-container .CodeMirror-dialog input:focus{outline:hsl(var(--color-primary)) solid 2px}.graphiql-container .cm-searching{background-color:hsla(var(--color-warning),var(--alpha-background-light));padding-bottom:1.5px;padding-top:.5px}.CodeMirror-foldmarker{color:#00f;text-shadow:#b9f 1px 1px 2px,#b9f -1px -1px 2px,#b9f 1px -1px 2px,#b9f -1px 1px 2px;font-family:arial;line-height:.3;cursor:pointer}.CodeMirror-foldgutter{width:.7em}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{cursor:pointer}.CodeMirror-foldgutter-open:after{content:\"▾\"}.CodeMirror-foldgutter-folded:after{content:\"▸\"}.CodeMirror-foldgutter{width:var(--px-12)}.CodeMirror-foldmarker{background-color:hsl(var(--color-info));border-radius:var(--border-radius-4);color:hsl(var(--color-base));font-family:inherit;margin:0 var(--px-4);padding:0 var(--px-8);text-shadow:none}.CodeMirror-foldgutter-open,.CodeMirror-foldgutter-folded{color:hsla(var(--color-neutral),var(--alpha-tertiary))}.CodeMirror-foldgutter-open:after,.CodeMirror-foldgutter-folded:after{margin:0 var(--px-2)}.graphiql-editor{height:100%;position:relative;width:100%}.graphiql-editor.hidden{left:-9999px;position:absolute;top:-9999px;visibility:hidden}.CodeMirror-lint-markers{width:16px}.CodeMirror-lint-tooltip{background-color:#ffd;border:1px solid black;border-radius:4px;color:#000;font-family:monospace;font-size:10pt;overflow:hidden;padding:2px 5px;position:fixed;white-space:pre;white-space:pre-wrap;z-index:100;max-width:600px;opacity:0;transition:opacity .4s;-moz-transition:opacity .4s;-webkit-transition:opacity .4s;-o-transition:opacity .4s;-ms-transition:opacity .4s}.CodeMirror-lint-mark{background-position:left bottom;background-repeat:repeat-x}.CodeMirror-lint-mark-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJFhQXEbhTg7YAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAMklEQVQI12NkgIIvJ3QXMjAwdDN+OaEbysDA4MPAwNDNwMCwiOHLCd1zX07o6kBVGQEAKBANtobskNMAAAAASUVORK5CYII=)}.CodeMirror-lint-mark-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAQAAAADCAYAAAC09K7GAAAAAXNSR0IArs4c6QAAAAZiS0dEAP8A/wD/oL2nkwAAAAlwSFlzAAALEwAACxMBAJqcGAAAAAd0SU1FB9sJDw4cOCW1/KIAAAAZdEVYdENvbW1lbnQAQ3JlYXRlZCB3aXRoIEdJTVBXgQ4XAAAAHElEQVQI12NggIL/DAz/GdA5/xkY/qPKMDAwAADLZwf5rvm+LQAAAABJRU5ErkJggg==)}.CodeMirror-lint-marker{background-position:center center;background-repeat:no-repeat;cursor:pointer;display:inline-block;height:16px;width:16px;vertical-align:middle;position:relative}.CodeMirror-lint-message{padding-left:18px;background-position:top left;background-repeat:no-repeat}.CodeMirror-lint-marker-warning,.CodeMirror-lint-message-warning{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAANlBMVEX/uwDvrwD/uwD/uwD/uwD/uwD/uwD/uwD/uwD6twD/uwAAAADurwD2tQD7uAD+ugAAAAD/uwDhmeTRAAAADHRSTlMJ8mN1EYcbmiixgACm7WbuAAAAVklEQVR42n3PUQqAIBBFUU1LLc3u/jdbOJoW1P08DA9Gba8+YWJ6gNJoNYIBzAA2chBth5kLmG9YUoG0NHAUwFXwO9LuBQL1giCQb8gC9Oro2vp5rncCIY8L8uEx5ZkAAAAASUVORK5CYII=)}.CodeMirror-lint-marker-error,.CodeMirror-lint-message-error{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAHlBMVEW7AAC7AACxAAC7AAC7AAAAAAC4AAC5AAD///+7AAAUdclpAAAABnRSTlMXnORSiwCK0ZKSAAAATUlEQVR42mWPOQ7AQAgDuQLx/z8csYRmPRIFIwRGnosRrpamvkKi0FTIiMASR3hhKW+hAN6/tIWhu9PDWiTGNEkTtIOucA5Oyr9ckPgAWm0GPBog6v4AAAAASUVORK5CYII=)}.CodeMirror-lint-marker-multiple{background-image:url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAcAAAAHCAMAAADzjKfhAAAACVBMVEUAAAAAAAC/v7914kyHAAAAAXRSTlMAQObYZgAAACNJREFUeNo1ioEJAAAIwmz/H90iFFSGJgFMe3gaLZ0od+9/AQZ0ADosbYraAAAAAElFTkSuQmCC);background-repeat:no-repeat;background-position:right bottom;width:100%;height:100%}.CodeMirror-lint-line-error{background-color:#b74c5114}.CodeMirror-lint-line-warning{background-color:#ffd3001a}.CodeMirror-lint-mark-error,.CodeMirror-lint-mark-warning{background-repeat:repeat-x;background-size:10px 3px;background-position:0 95%}.cm-s-graphiql .CodeMirror-lint-mark-error{color:hsl(var(--color-error))}.CodeMirror-lint-mark-error{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--color-error)) 80%,transparent 90%),linear-gradient(135deg,transparent 5%,hsl(var(--color-error)) 15%,transparent 25%),linear-gradient(135deg,transparent 45%,hsl(var(--color-error)) 55%,transparent 65%),linear-gradient(45deg,transparent 25%,hsl(var(--color-error)) 35%,transparent 50%)}.cm-s-graphiql .CodeMirror-lint-mark-warning{color:hsl(var(--color-warning))}.CodeMirror-lint-mark-warning{background-image:linear-gradient(45deg,transparent 65%,hsl(var(--color-warning)) 80%,transparent 90%),linear-gradient(135deg,transparent 5%,hsl(var(--color-warning)) 15%,transparent 25%),linear-gradient(135deg,transparent 45%,hsl(var(--color-warning)) 55%,transparent 65%),linear-gradient(45deg,transparent 25%,hsl(var(--color-warning)) 35%,transparent 50%)}.CodeMirror-lint-tooltip{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);font-size:var(--font-size-body);font-family:var(--font-family);max-width:600px;overflow:hidden;padding:var(--px-12)}.CodeMirror-lint-message-error,.CodeMirror-lint-message-warning{background-image:none;padding:0}.CodeMirror-lint-message-error{color:hsl(var(--color-error))}.CodeMirror-lint-message-warning{color:hsl(var(--color-warning))}.CodeMirror-hints{position:absolute;z-index:10;overflow:hidden;list-style:none;margin:0;padding:2px;-webkit-box-shadow:2px 3px 5px rgba(0,0,0,.2);-moz-box-shadow:2px 3px 5px rgba(0,0,0,.2);box-shadow:2px 3px 5px #0003;border-radius:3px;border:1px solid silver;background:white;font-size:90%;font-family:monospace;max-height:20em;overflow-y:auto}.CodeMirror-hint{margin:0;padding:0 4px;border-radius:2px;white-space:pre;color:#000;cursor:pointer}li.CodeMirror-hint-active{background:#08f;color:#fff}.CodeMirror-hints{background:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);display:grid;font-family:var(--font-family);font-size:var(--font-size-body);grid-template-columns:auto fit-content(300px);max-height:264px;padding:0}.CodeMirror-hint{border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));grid-column:1 / 2;margin:var(--px-4);padding:var(--px-6) var(--px-8)!important}.CodeMirror-hint:not(:first-child){margin-top:0}li.CodeMirror-hint-active{background:hsla(var(--color-primary),var(--alpha-background-medium));color:hsl(var(--color-primary))}.CodeMirror-hint-information{border-left:1px solid hsla(var(--color-neutral),var(--alpha-background-heavy));grid-column:2 / 3;grid-row:1 / 99999;max-height:264px;overflow:auto;padding:var(--px-12)}.CodeMirror-hint-information-header{display:flex;align-items:baseline}.CodeMirror-hint-information-field-name{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-hint-information-type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-hint-information-type-name{color:inherit;text-decoration:none}.CodeMirror-hint-information-type-name:hover{text-decoration:underline dotted}.CodeMirror-hint-information-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12)}.CodeMirror-info{background-color:hsl(var(--color-base));border:var(--popover-border);border-radius:var(--border-radius-8);box-shadow:var(--popover-box-shadow);color:hsla(var(--color-neutral),1);max-height:300px;max-width:400px;opacity:0;overflow:auto;padding:var(--px-12);position:fixed;transition:opacity .15s;z-index:10}.CodeMirror-info a{color:inherit;text-decoration:none}.CodeMirror-info a:hover{text-decoration:underline dotted}.CodeMirror-info .CodeMirror-info-header{display:flex;align-items:baseline}.CodeMirror-info .CodeMirror-info-header>.type-name,.CodeMirror-info .CodeMirror-info-header>.field-name,.CodeMirror-info .CodeMirror-info-header>.arg-name,.CodeMirror-info .CodeMirror-info-header>.directive-name,.CodeMirror-info .CodeMirror-info-header>.enum-value{font-size:var(--font-size-h4);font-weight:var(--font-weight-medium)}.CodeMirror-info .type-name-pill{border:1px solid hsla(var(--color-neutral),var(--alpha-tertiary));border-radius:var(--border-radius-4);color:hsla(var(--color-neutral),var(--alpha-secondary));margin-left:var(--px-6);padding:var(--px-4)}.CodeMirror-info .info-description{color:hsla(var(--color-neutral),var(--alpha-secondary));margin-top:var(--px-12);overflow:hidden}.CodeMirror-jump-token{text-decoration:underline dotted;cursor:pointer}.auto-inserted-leaf.cm-property{animation-duration:6s;animation-name:insertionFade;border-radius:var(--border-radius-4);padding:var(--px-2)}@keyframes insertionFade{0%,to{background-color:none}15%,85%{background-color:hsla(var(--color-warning),var(--alpha-background-light))}}button.graphiql-toolbar-button{display:flex;align-items:center;justify-content:center;height:var(--toolbar-width);width:var(--toolbar-width)}button.graphiql-toolbar-button.error{background:hsla(var(--color-error),var(--alpha-background-heavy))}.graphiql-execute-button-wrapper{position:relative}button.graphiql-execute-button{background-color:hsl(var(--color-primary));border:none;border-radius:var(--border-radius-8);cursor:pointer;height:var(--toolbar-width);padding:0;width:var(--toolbar-width)}button.graphiql-execute-button:hover{background-color:hsla(var(--color-primary),.9)}button.graphiql-execute-button:active{background-color:hsla(var(--color-primary),.8)}button.graphiql-execute-button:focus{outline:hsla(var(--color-primary),.8) auto 1px}button.graphiql-execute-button>svg{color:#fff;display:block;height:var(--px-16);margin:auto;width:var(--px-16)}button.graphiql-toolbar-menu{display:block;height:var(--toolbar-width);width:var(--toolbar-width)}\n\n/*!*********************************************************************************************************************!*\\\n !*** css ../../../node_modules/css-loader/dist/cjs.js!../../../node_modules/postcss-loader/dist/cjs.js!./style.css ***!\n \\*********************************************************************************************************************/\n/* Everything */\n.graphiql-container {\n background-color: hsl(var(--color-base));\n display: flex;\n height: 100%;\n margin: 0;\n overflow: hidden;\n width: 100%;\n}\n/* The sidebar */\n.graphiql-container .graphiql-sidebar {\n display: flex;\n flex-direction: column;\n justify-content: space-between;\n padding: var(--px-8);\n width: var(--sidebar-width);\n}\n.graphiql-container .graphiql-sidebar .graphiql-sidebar-section {\n display: flex;\n flex-direction: column;\n gap: var(--px-8);\n}\n.graphiql-container .graphiql-sidebar button {\n display: flex;\n align-items: center;\n justify-content: center;\n color: hsla(var(--color-neutral), var(--alpha-secondary));\n height: calc(var(--sidebar-width) - (2 * var(--px-8)));\n width: calc(var(--sidebar-width) - (2 * var(--px-8)));\n}\n.graphiql-container .graphiql-sidebar button.active {\n color: hsla(var(--color-neutral), 1);\n}\n.graphiql-container .graphiql-sidebar button:not(:first-child) {\n margin-top: var(--px-4);\n}\n.graphiql-container .graphiql-sidebar button > svg {\n height: var(--px-20);\n width: var(--px-20);\n}\n/* The main content, i.e. everything except the sidebar */\n.graphiql-container .graphiql-main {\n display: flex;\n flex: 1;\n min-width: 0;\n}\n/* The current session and tabs */\n.graphiql-container .graphiql-sessions {\n background-color: hsla(var(--color-neutral), var(--alpha-background-light));\n /* Adding the 8px of padding to the inner border radius of the query editor */\n border-radius: calc(var(--border-radius-12) + var(--px-8));\n display: flex;\n flex-direction: column;\n flex: 1;\n max-height: 100%;\n margin: var(--px-16);\n margin-left: 0;\n min-width: 0;\n}\n/* The session header containing tabs and the logo */\n.graphiql-container .graphiql-session-header {\n align-items: center;\n display: flex;\n justify-content: space-between;\n height: var(--session-header-height);\n}\n/* The button to add a new tab */\nbutton.graphiql-tab-add {\n height: 100%;\n padding: var(--px-4);\n}\nbutton.graphiql-tab-add > svg {\n color: hsla(var(--color-neutral), var(--alpha-secondary));\n display: block;\n height: var(--px-16);\n width: var(--px-16);\n}\n/* The right-hand-side of the session header */\n.graphiql-container .graphiql-session-header-right {\n align-items: center;\n display: flex;\n}\n/* The GraphiQL logo */\n.graphiql-container .graphiql-logo {\n color: hsla(var(--color-neutral), var(--alpha-secondary));\n font-size: var(--font-size-h4);\n font-weight: var(--font-weight-medium);\n padding: var(--px-12) var(--px-16);\n}\n/* Undo default link styling for the default GraphiQL logo link */\n.graphiql-container .graphiql-logo .graphiql-logo-link {\n color: hsla(var(--color-neutral), var(--alpha-secondary));\n text-decoration: none;\n}\n/* The editor of the session */\n.graphiql-container .graphiql-session {\n display: flex;\n flex: 1;\n padding: 0 var(--px-8) var(--px-8);\n}\n/* All editors (query, variable, headers) */\n.graphiql-container .graphiql-editors {\n background-color: hsl(var(--color-base));\n border-radius: calc(var(--border-radius-12));\n box-shadow: var(--popover-box-shadow);\n display: flex;\n flex: 1;\n flex-direction: column;\n}\n.graphiql-container .graphiql-editors.full-height {\n margin-top: calc(var(--px-8) - var(--session-header-height));\n}\n/* The query editor and the toolbar */\n.graphiql-container .graphiql-query-editor {\n border-bottom: 1px solid\n hsla(var(--color-neutral), var(--alpha-background-heavy));\n padding: var(--px-16);\n column-gap: var(--px-16);\n display: flex;\n width: 100%;\n}\n/* The vertical toolbar next to the query editor */\n.graphiql-container .graphiql-toolbar {\n width: var(--toolbar-width);\n}\n.graphiql-container .graphiql-toolbar > * + * {\n margin-top: var(--px-8);\n}\n/* The toolbar icons */\n.graphiql-toolbar-icon {\n color: hsla(var(--color-neutral), var(--alpha-tertiary));\n display: block;\n height: calc(var(--toolbar-width) - (var(--px-8) * 2));\n width: calc(var(--toolbar-width) - (var(--px-8) * 2));\n}\n/* The tab bar for editor tools */\n.graphiql-container .graphiql-editor-tools {\n cursor: row-resize;\n display: flex;\n width: 100%;\n column-gap: var(--px-8);\n padding: var(--px-8);\n}\n.graphiql-container .graphiql-editor-tools button {\n color: hsla(var(--color-neutral), var(--alpha-secondary));\n}\n.graphiql-container .graphiql-editor-tools button.active {\n color: hsla(var(--color-neutral), 1);\n}\n/* The tab buttons to switch between editor tools */\n.graphiql-container\n .graphiql-editor-tools\n > button:not(.graphiql-toggle-editor-tools) {\n padding: var(--px-8) var(--px-12);\n}\n.graphiql-container .graphiql-editor-tools .graphiql-toggle-editor-tools {\n margin-left: auto;\n}\n/* An editor tool, e.g. variable or header editor */\n.graphiql-container .graphiql-editor-tool {\n flex: 1;\n padding: var(--px-16);\n}\n/**\n * The way CodeMirror editors are styled they overflow their containing\n * element. For some OS-browser-combinations this might cause overlap issues,\n * setting the position of this to `relative` makes sure this element will\n * always be on top of any editors.\n */\n.graphiql-container .graphiql-toolbar,\n.graphiql-container .graphiql-editor-tools,\n.graphiql-container .graphiql-editor-tool {\n position: relative;\n}\n/* The response view */\n.graphiql-container .graphiql-response {\n --editor-background: transparent;\n display: flex;\n width: 100%;\n flex-direction: column;\n}\n/* The results editor wrapping container */\n.graphiql-container .graphiql-response .result-window {\n position: relative;\n flex: 1;\n}\n/* The footer below the response view */\n.graphiql-container .graphiql-footer {\n border-top: 1px solid\n hsla(var(--color-neutral), var(--alpha-background-heavy));\n}\n/* The plugin container */\n.graphiql-container .graphiql-plugin {\n border-left: 1px solid\n hsla(var(--color-neutral), var(--alpha-background-heavy));\n flex: 1;\n overflow-y: auto;\n padding: var(--px-16);\n}\n/* Generic drag bar for horizontal resizing */\n.graphiql-horizontal-drag-bar {\n width: var(--px-12);\n cursor: col-resize;\n}\n.graphiql-horizontal-drag-bar:hover::after {\n border: var(--px-2) solid\n hsla(var(--color-neutral), var(--alpha-background-heavy));\n border-radius: var(--border-radius-2);\n content: '';\n display: block;\n height: 25%;\n margin: 0 auto;\n position: relative;\n /* (100% - 25%) / 2 = 37.5% */\n top: 37.5%;\n width: 0;\n}\n.graphiql-container .graphiql-chevron-icon {\n color: hsla(var(--color-neutral), var(--alpha-tertiary));\n display: block;\n height: var(--px-12);\n margin: var(--px-12);\n width: var(--px-12);\n}\n/* Generic spin animation */\n.graphiql-spin {\n animation: spin 0.8s linear 0s infinite;\n}\n@keyframes spin {\n from {\n transform: rotate(0deg);\n }\n to {\n transform: rotate(360deg);\n }\n}\n/* The header of the settings dialog */\n.graphiql-dialog .graphiql-dialog-header {\n align-items: center;\n display: flex;\n justify-content: space-between;\n padding: var(--px-24);\n}\n/* The title of the settings dialog */\n.graphiql-dialog .graphiql-dialog-title {\n font-size: var(--font-size-h3);\n font-weight: var(--font-weight-medium);\n margin: 0;\n}\n/* A section inside the settings dialog */\n.graphiql-dialog .graphiql-dialog-section {\n align-items: center;\n border-top: 1px solid\n hsla(var(--color-neutral), var(--alpha-background-heavy));\n display: flex;\n justify-content: space-between;\n padding: var(--px-24);\n}\n.graphiql-dialog .graphiql-dialog-section > :not(:first-child) {\n margin-left: var(--px-24);\n}\n/* The section title in the settings dialog */\n.graphiql-dialog .graphiql-dialog-section-title {\n font-size: var(--font-size-h4);\n font-weight: var(--font-weight-medium);\n}\n/* The section caption in the settings dialog */\n.graphiql-dialog .graphiql-dialog-section-caption {\n color: hsla(var(--color-neutral), var(--alpha-secondary));\n}\n.graphiql-dialog .graphiql-warning-text {\n color: hsl(var(--color-warning));\n font-weight: var(--font-weight-medium);\n}\n.graphiql-dialog .graphiql-table {\n border-collapse: collapse;\n width: 100%;\n}\n.graphiql-dialog .graphiql-table :is(th, td) {\n border: 1px solid hsla(var(--color-neutral), var(--alpha-background-heavy));\n padding: var(--px-8) var(--px-12);\n}\n/* A single key the short-key dialog */\n.graphiql-dialog .graphiql-key {\n background-color: hsla(var(--color-neutral), var(--alpha-background-medium));\n border-radius: var(--border-radius-4);\n padding: var(--px-4);\n}\n/* Avoid showing native tooltips for icons with titles */\n.graphiql-container svg {\n pointer-events: none;\n}\n\n\n/*# sourceMappingURL=graphiql.css.map*/","body {\n margin: 0;\n padding: 0;\n font-family: -apple-system, BlinkMacSystemFont, \"Segoe UI\", \"Roboto\", \"Oxygen\",\n \"Ubuntu\", \"Cantarell\", \"Fira Sans\", \"Droid Sans\", \"Helvetica Neue\",\n sans-serif;\n -webkit-font-smoothing: antialiased;\n -moz-osx-font-smoothing: grayscale;\n}\n\n.graphiql-container, .graphiql-container button, .graphiql-container input {\n font-family: inherit !important;\n}\n\n.graphiql-container .historyPaneWrap {\n border-left: 1px solid #ccc !important;\n}\n\n#root {\n height: 100vh;\n width: 100vw;\n}\n\n\n\n"],"names":[],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/119.96527558.chunk.js b/serv/web/build/static/js/119.96527558.chunk.js deleted file mode 100644 index 8d992af3..00000000 --- a/serv/web/build/static/js/119.96527558.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[119,889],{889:function(e,t,n){n.r(t),n.d(t,{C:function(){return a},c:function(){return u}});var r=n(8308);function i(e,t){for(var n=function(){var n=t[r];if("string"!=typeof n&&!Array.isArray(n)){var i=function(t){if("default"!==t&&!(t in e)){var r=Object.getOwnPropertyDescriptor(n,t);r&&Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:function(){return n[t]}})}};for(var o in n)i(o)}},r=0;r {\n const parser = onlineParser({\n eatWhitespace: stream => stream.eatWhile(isIgnored),\n lexRules: LexRules,\n parseRules: ParseRules,\n editorConfig: { tabSize: config.tabSize },\n });\n return {\n config,\n startState: parser.startState,\n token: parser.token,\n indent,\n electricInput: /^\\s*[})\\]]/,\n fold: 'brace',\n lineComment: '#',\n closeBrackets: {\n pairs: '()[]{}\"\"',\n explode: '()[]{}',\n },\n };\n};\nexport default graphqlModeFactory;\n//# sourceMappingURL=mode-factory.js.map","import CodeMirror from 'codemirror';\nimport modeFactory from './utils/mode-factory';\nCodeMirror.defineMode('graphql', modeFactory);\n//# sourceMappingURL=mode.js.map"],"names":["indent","state","textAfter","_a","_b","levels","indentLevel","length","at","this","electricInput","test","config","indentUnit","__name","graphqlModeFactory","parser","onlineParser","eatWhitespace","stream","eatWhile","isIgnored","lexRules","LexRules","parseRules","ParseRules","editorConfig","tabSize","startState","token","fold","lineComment","closeBrackets","pairs","explode","CodeMirror","modeFactory"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/119.b707f39a.chunk.js b/serv/web/build/static/js/119.b707f39a.chunk.js new file mode 100644 index 00000000..3ba17e6d --- /dev/null +++ b/serv/web/build/static/js/119.b707f39a.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[119,889],{889:(e,t,n)=>{n.r(t),n.d(t,{C:()=>a,c:()=>l});var r=n(8308);function i(e,t){for(var n=0;nr[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(i,"name",{value:"_mergeNamespaces",configurable:!0});var o=(0,r.r)();const a=(0,r.g)(o),l=i({__proto__:null,default:a},[o])},5012:(e,t,n)=>{n.d(t,{i:()=>r});function r(e,t){var n,r;const{levels:i,indentLevel:o}=e;return((i&&0!==i.length?i.at(-1)-(null!==(n=this.electricInput)&&void 0!==n&&n.test(t)?1:0):o)||0)*((null===(r=this.config)||void 0===r?void 0:r.indentUnit)||0)}(0,Object.defineProperty)(r,"name",{value:"indent",configurable:!0})},4119:(e,t,n)=>{n.r(t);var r=n(889),i=n(4652),o=n(5012),a=(n(8308),Object.defineProperty);const l=((e,t)=>a(e,"name",{value:t,configurable:!0}))((e=>{const t=(0,i.Xs)({eatWhitespace:e=>e.eatWhile(i.WU),lexRules:i.nW,parseRules:i.kh,editorConfig:{tabSize:e.tabSize}});return{config:e,startState:t.startState,token:t.token,indent:o.i,electricInput:/^\s*[})\]]/,fold:"brace",lineComment:"#",closeBrackets:{pairs:'()[]{}""',explode:"()[]{}"}}}),"graphqlModeFactory");r.C.defineMode("graphql",l)}}]); +//# sourceMappingURL=119.b707f39a.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/119.b707f39a.chunk.js.map b/serv/web/build/static/js/119.b707f39a.chunk.js.map new file mode 100644 index 00000000..7bb8a6ce --- /dev/null +++ b/serv/web/build/static/js/119.b707f39a.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/119.b707f39a.chunk.js","mappings":"2pBAAe,SAASA,EAAOC,EAAOC,GAClC,IAAIC,EAAIC,EACR,MAAQC,OAAAC,EAAQC,YAAAC,GAAgBP,EAIhC,QAHeK,GAA4B,IAAlBA,EAAOG,OAE1BH,EAAOI,IAAI,IAAqC,QAA7BP,EAAKQ,KAAKC,qBAAkC,IAAPT,GAAyBA,EAAGU,KAAKX,GAAc,EAAI,GAD3GM,IAEW,KAA8B,QAAtBJ,EAAKO,KAAKG,cAA2B,IAAPV,OAAgB,EAASA,EAAGW,aAAe,EACtG,E,yBAPwBf,E,cAAA,S,4GCExB,MAAMgB,E,8CAAqBb,EAAAF,IACvB,MAAMD,GAASI,EAAAA,EAAAA,IAAa,CACxBa,cAAeC,GAAUA,EAAOC,SAASb,EAAAA,IACzCc,SAAUlB,EAAAA,GACVmB,WAAYC,EAAAA,GACZC,aAAc,CAAEC,QAASvB,EAAOuB,WAEpC,MAAO,CACHV,OAAAb,EACAwB,WAAYzB,EAAOyB,WACnBC,MAAO1B,EAAO0B,MACdC,OAAAC,EAAAA,EACAhB,cAAe,aACfiB,KAAM,QACNC,YAAa,IACbC,cAAe,CACXC,MAAO,WACPC,QAAS,UAErB,GAnB2B,sBCA3BC,EAAAA,EAAWC,WAAW,UAAWnB,E","sources":["../node_modules/@graphiql/codemirror-graphql/esm/utils/mode-indent.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/mode-factory.js","../node_modules/@graphiql/codemirror-graphql/esm/mode.js"],"sourcesContent":["export default function indent(state, textAfter) {\n var _a, _b;\n const { levels, indentLevel } = state;\n const level = !levels || levels.length === 0\n ? indentLevel\n : levels.at(-1) - (((_a = this.electricInput) === null || _a === void 0 ? void 0 : _a.test(textAfter)) ? 1 : 0);\n return (level || 0) * (((_b = this.config) === null || _b === void 0 ? void 0 : _b.indentUnit) || 0);\n}\n//# sourceMappingURL=mode-indent.js.map","import { LexRules, ParseRules, isIgnored, onlineParser, } from 'graphql-language-service';\nimport indent from './mode-indent';\nconst graphqlModeFactory = config => {\n const parser = onlineParser({\n eatWhitespace: stream => stream.eatWhile(isIgnored),\n lexRules: LexRules,\n parseRules: ParseRules,\n editorConfig: { tabSize: config.tabSize },\n });\n return {\n config,\n startState: parser.startState,\n token: parser.token,\n indent,\n electricInput: /^\\s*[})\\]]/,\n fold: 'brace',\n lineComment: '#',\n closeBrackets: {\n pairs: '()[]{}\"\"',\n explode: '()[]{}',\n },\n };\n};\nexport default graphqlModeFactory;\n//# sourceMappingURL=mode-factory.js.map","import CodeMirror from 'codemirror';\nimport modeFactory from './utils/mode-factory';\nCodeMirror.defineMode('graphql', modeFactory);\n//# sourceMappingURL=mode.js.map"],"names":["r","e","n","t","i","levels","l","indentLevel","v","length","at","this","electricInput","test","config","indentUnit","m","eatWhitespace","o","eatWhile","lexRules","parseRules","p","editorConfig","tabSize","startState","token","indent","d","fold","lineComment","closeBrackets","pairs","explode","s","defineMode"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/142.452d36a8.chunk.js b/serv/web/build/static/js/142.452d36a8.chunk.js new file mode 100644 index 00000000..2a5038c2 --- /dev/null +++ b/serv/web/build/static/js/142.452d36a8.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[142],{2704:(e,t,n)=>{n.d(t,{r:()=>s});var r,i=n(8308),o=Object.defineProperty,l=(e,t)=>o(e,"name",{value:t,configurable:!0}),a={exports:{}};function s(){return r||(r=1,function(e){var t=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),n=e.Pos,r={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function i(e){return e&&e.bracketRegex||/[(){}[\]]/}function o(e,t,o){var l=e.getLineHandle(t.line),s=t.ch-1,c=o&&o.afterCursor;null==c&&(c=/(^| )cm-fat-cursor($| )/.test(e.getWrapperElement().className));var f=i(o),u=!c&&s>=0&&f.test(l.text.charAt(s))&&r[l.text.charAt(s)]||f.test(l.text.charAt(s+1))&&r[l.text.charAt(++s)];if(!u)return null;var h=">"==u.charAt(1)?1:-1;if(o&&o.strict&&h>0!=(s==t.ch))return null;var d=e.getTokenTypeAt(n(t.line,s+1)),m=a(e,n(t.line,s+(h>0?1:0)),h,d,o);return null==m?null:{from:n(t.line,s),to:m&&m.pos,match:m&&m.ch==u.charAt(0),forward:h>0}}function a(e,t,o,l,a){for(var s=a&&a.maxScanLineLength||1e4,c=a&&a.maxScanLines||1e3,f=[],u=i(a),h=o>0?Math.min(t.line+c,e.lastLine()+1):Math.max(e.firstLine()-1,t.line-c),d=t.line;d!=h;d+=o){var m=e.getLine(d);if(m){var g=o>0?0:m.length-1,p=o>0?m.length:-1;if(!(m.length>s))for(d==t.line&&(g=t.ch-(o<0?1:0));g!=p;g+=o){var C=m.charAt(g);if(u.test(C)&&(void 0===l||(e.getTokenTypeAt(n(d,g+1))||"")==(l||""))){var v=r[C];if(v&&">"==v.charAt(1)==o>0)f.push(C);else{if(!f.length)return{pos:n(d,g),ch:C};f.pop()}}}}}return d-o!=(o>0?e.lastLine():e.firstLine())&&null}function s(e,r,i){for(var a=e.state.matchBrackets.maxHighlightLineLength||1e3,s=i&&i.highlightNonMatching,c=[],f=e.listSelections(),u=0;u{n.d(t,{r:()=>s});var r,i=n(8308),o=Object.defineProperty,l=(e,t)=>o(e,"name",{value:t,configurable:!0}),a={exports:{}};function s(){return r||(r=1,function(e){var t,n,r=e.Pos;function i(e){var t=e.flags;return null!==t&&void 0!==t?t:(e.ignoreCase?"i":"")+(e.global?"g":"")+(e.multiline?"m":"")}function o(e,t){for(var n=i(e),r=n,o=0;of);u++){var h=e.getLine(c++);i=null==i?h:i+"\n"+h}l*=2,t.lastIndex=n.ch;var d=t.exec(i);if(d){var m=i.slice(0,d.index).split("\n"),g=d[0].split("\n"),p=n.line+m.length-1,C=m[m.length-1].length;return{from:r(p,C),to:r(p+g.length-1,1==g.length?C+g[0].length:g[g.length-1].length),match:d}}}}function f(e,t,n){for(var r,i=0;i<=e.length;){t.lastIndex=i;var o=t.exec(e);if(!o)break;var l=o.index+o[0].length;if(l>e.length-n)break;(!r||l>r.index+r[0].length)&&(r=o),i=o.index+1}return r}function u(e,t,n){t=o(t,"g");for(var i=n.line,l=n.ch,a=e.firstLine();i>=a;i--,l=-1){var s=e.getLine(i),c=f(s,t,l<0?0:s.length-l);if(c)return{from:r(i,c.index),to:r(i,c.index+c[0].length),match:c}}}function h(e,t,n){if(!a(t))return u(e,t,n);t=o(t,"gm");for(var i,l=1,s=e.getLine(n.line).length-n.ch,c=n.line,h=e.firstLine();c>=h;){for(var d=0;d=h;d++){var m=e.getLine(c--);i=null==i?m:m+"\n"+i}l*=2;var g=f(i,t,s);if(g){var p=i.slice(0,g.index).split("\n"),C=g[0].split("\n"),v=c+p.length,S=p[p.length-1].length;return{from:r(v,S),to:r(v+C.length-1,1==C.length?S+C[0].length:C[C.length-1].length),match:g}}}}function d(e,t,n,r){if(e.length==t.length)return n;for(var i=0,o=n+Math.max(0,e.length-t.length);;){if(i==o)return i;var l=i+o>>1,a=r(e.slice(0,l)).length;if(a==n)return l;a>n?o=l:i=l+1}}function m(e,i,o,l){if(!i.length)return null;var a=l?t:n,s=a(i).split(/\r|\n\r?/);e:for(var c=o.line,f=o.ch,u=e.lastLine()+1-s.length;c<=u;c++,f=0){var h=e.getLine(c).slice(f),m=a(h);if(1==s.length){var g=m.indexOf(s[0]);if(-1==g)continue e;return o=d(h,m,g,a)+f,{from:r(c,d(h,m,g,a)+f),to:r(c,d(h,m,g+s[0].length,a)+f)}}var p=m.length-s[0].length;if(m.slice(p)==s[0]){for(var C=1;C=u;c--,f=-1){var h=e.getLine(c);f>-1&&(h=h.slice(0,f));var m=a(h);if(1==s.length){var g=m.lastIndexOf(s[0]);if(-1==g)continue e;return{from:r(c,d(h,m,g,a)),to:r(c,d(h,m,g+s[0].length,a))}}var p=s[s.length-1];if(m.slice(0,p.length)==p){var C=1;for(o=c-s.length+1;C(this.doc.getLine(n.line)||"").length&&(n.ch=0,n.line++)),0!=e.cmpPos(n,this.doc.clipPos(n))))return this.atOccurrence=!1;var i=this.matches(t,n);if(this.afterEmptyMatch=i&&0==e.cmpPos(i.from,i.to),i)return this.pos=i,this.atOccurrence=!0,this.pos.match||!0;var o=r(t?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:o,to:o},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(t,n){if(this.atOccurrence){var i=e.splitLines(t);this.doc.replaceRange(i,this.pos.from,this.pos.to,n),this.pos.to=r(this.pos.from.line+i.length-1,i[i.length-1].length+(1==i.length?this.pos.from.ch:0))}}},e.defineExtension("getSearchCursor",(function(e,t,n){return new p(this.doc,e,t,n)})),e.defineDocExtension("getSearchCursor",(function(e,t,n){return new p(this,e,t,n)})),e.defineExtension("selectMatches",(function(t,n){for(var r=[],i=this.getSearchCursor(t,this.getCursor("from"),n);i.findNext()&&!(e.cmpPos(i.to(),this.getCursor("to"))>0);)r.push({anchor:i.from(),head:i.to()});r.length&&this.setSelections(r,0)}))}((0,i.r)())),a.exports}l(s,"requireSearchcursor")},9142:(e,t,n)=>{n.r(t),n.d(t,{s:()=>f});var r=n(8308),i=n(3300),o=n(2704),l=Object.defineProperty,a=(e,t)=>l(e,"name",{value:t,configurable:!0});function s(e,t){for(var n=0;nr[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}a(s,"_mergeNamespaces");!function(e){var t=e.commands,n=e.Pos;function r(t,r,i){if(i<0&&0==r.ch)return t.clipPos(n(r.line-1));var o=t.getLine(r.line);if(i>0&&r.ch>=o.length)return t.clipPos(n(r.line+1,0));for(var l,a="start",s=r.ch,c=s,f=i<0?0:o.length,u=0;c!=f;c+=i,u++){var h=o.charAt(i<0?c-1:c),d="_"!=h&&e.isWordChar(h)?"w":"o";if("w"==d&&h.toUpperCase()==h&&(d="W"),"start"==a)"o"!=d?(a="in",l=d):s=c+i;else if("in"==a&&l!=d){if("w"==l&&"W"==d&&i<0&&c--,"W"==l&&"w"==d&&i>0){if(c==s+1){l="w";continue}c--}break}}return n(r.line,c)}function i(e,t){e.extendSelectionsBy((function(n){return e.display.shift||e.doc.extend||n.empty()?r(e.doc,n.head,t):t<0?n.from():n.to()}))}function o(t,r){if(t.isReadOnly())return e.Pass;t.operation((function(){for(var e=t.listSelections().length,i=[],o=-1,l=0;l=n&&e.execCommand("goLineUp")}e.scrollTo(null,t.top-e.defaultTextHeight())},t.scrollLineDown=function(e){var t=e.getScrollInfo();if(!e.somethingSelected()){var n=e.lineAtHeight(t.top,"local")+1;e.getCursor().line<=n&&e.execCommand("goLineDown")}e.scrollTo(null,t.top+e.defaultTextHeight())},t.splitSelectionByLine=function(e){for(var t=e.listSelections(),r=[],i=0;io.line&&a==l.line&&0==l.ch||r.push({anchor:a==o.line?o:n(a,0),head:a==l.line?l:n(a)});e.setSelections(r,0)},t.singleSelectionTop=function(e){var t=e.listSelections()[0];e.setSelection(t.anchor,t.head,{scroll:!1})},t.selectLine=function(e){for(var t=e.listSelections(),r=[],i=0;i=0;a--){var c=r[i[a]];if(!(s&&e.cmpPos(c.head,s)>0)){var f=l(t,c.head);s=f.from,t.replaceRange(n(f.word),f.from,f.to)}}}))}function g(t){var n=t.getCursor("from"),r=t.getCursor("to");if(0==e.cmpPos(n,r)){var i=l(t,n);if(!i.word)return;n=i.from,r=i.to}return{from:n,to:r,query:t.getRange(n,r),word:i}}function p(e,t){var r=g(e);if(r){var i=r.query,o=e.getSearchCursor(i,t?r.to:r.from);(t?o.findNext():o.findPrevious())?e.setSelection(o.from(),o.to()):(o=e.getSearchCursor(i,t?n(e.firstLine(),0):e.clipPos(n(e.lastLine()))),(t?o.findNext():o.findPrevious())?e.setSelection(o.from(),o.to()):r.word&&e.setSelection(r.from,r.to))}}a(u,"selectBetweenBrackets"),t.selectScope=function(e){u(e)||e.execCommand("selectAll")},t.selectBetweenBrackets=function(t){if(!u(t))return e.Pass},a(h,"puncType"),t.goToBracket=function(t){t.extendSelectionsBy((function(r){var i=t.scanForBracket(r.head,1,h(t.getTokenTypeAt(r.head)));if(i&&0!=e.cmpPos(i.pos,r.head))return i.pos;var o=t.scanForBracket(r.head,-1,h(t.getTokenTypeAt(n(r.head.line,r.head.ch+1))));return o&&n(o.pos.line,o.pos.ch+1)||r.head}))},t.swapLineUp=function(t){if(t.isReadOnly())return e.Pass;for(var r=t.listSelections(),i=[],o=t.firstLine()-1,l=[],a=0;ao?i.push(c,f):i.length&&(i[i.length-1]=f),o=f}t.operation((function(){for(var e=0;et.lastLine()?t.replaceRange("\n"+a,n(t.lastLine()),null,"+swapLine"):t.replaceRange(a+"\n",n(o,0),null,"+swapLine")}t.setSelections(l),t.scrollIntoView()}))},t.swapLineDown=function(t){if(t.isReadOnly())return e.Pass;for(var r=t.listSelections(),i=[],o=t.lastLine()+1,l=r.length-1;l>=0;l--){var a=r[l],s=a.to().line+1,c=a.from().line;0==a.to().ch&&!a.empty()&&s--,s=0;e-=2){var r=i[e],o=i[e+1],l=t.getLine(r);r==t.lastLine()?t.replaceRange("",n(r-1),n(r),"+swapLine"):t.replaceRange("",n(r,0),n(r+1,0),"+swapLine"),t.replaceRange(l+"\n",n(o,0),null,"+swapLine")}t.scrollIntoView()}))},t.toggleCommentIndented=function(e){e.toggleComment({indent:!0})},t.joinLines=function(e){for(var t=e.listSelections(),r=[],i=0;i=0;o--){var l=r[o].head,a=t.getRange({line:l.line,ch:0},l),s=e.countColumn(a,null,t.getOption("tabSize")),c=t.findPosH(l,-1,"char",!1);if(a&&!/\S/.test(a)&&s%i==0){var f=new n(l.line,e.findColumn(a,s-i,i));f.ch!=l.ch&&(c=f)}t.replaceRange("",c,l,"+delete")}}))},t.delLineRight=function(e){e.operation((function(){for(var t=e.listSelections(),r=t.length-1;r>=0;r--)e.replaceRange("",t[r].anchor,n(t[r].to().line),"+delete");e.scrollIntoView()}))},t.upcaseAtCursor=function(e){m(e,(function(e){return e.toUpperCase()}))},t.downcaseAtCursor=function(e){m(e,(function(e){return e.toLowerCase()}))},t.setSublimeMark=function(e){e.state.sublimeMark&&e.state.sublimeMark.clear(),e.state.sublimeMark=e.setBookmark(e.getCursor())},t.selectToSublimeMark=function(e){var t=e.state.sublimeMark&&e.state.sublimeMark.find();t&&e.setSelection(e.getCursor(),t)},t.deleteToSublimeMark=function(t){var n=t.state.sublimeMark&&t.state.sublimeMark.find();if(n){var r=t.getCursor(),i=n;if(e.cmpPos(r,i)>0){var o=i;i=r,r=o}t.state.sublimeKilled=t.getRange(r,i),t.replaceRange("",r,i)}},t.swapWithSublimeMark=function(e){var t=e.state.sublimeMark&&e.state.sublimeMark.find();t&&(e.state.sublimeMark.clear(),e.state.sublimeMark=e.setBookmark(e.getCursor()),e.setCursor(t))},t.sublimeYank=function(e){null!=e.state.sublimeKilled&&e.replaceSelection(e.state.sublimeKilled,null,"paste")},t.showInCenter=function(e){var t=e.cursorCoords(null,"local");e.scrollTo(null,(t.top+t.bottom)/2-e.getScrollInfo().clientHeight/2)},a(g,"getTarget"),a(p,"findAndGoTo"),t.findUnder=function(e){p(e,!0)},t.findUnderPrevious=function(e){p(e,!1)},t.findAllUnder=function(e){var t=g(e);if(t){for(var n=e.getSearchCursor(t.query),r=[],i=-1;n.findNext();)r.push({anchor:n.from(),head:n.to()}),n.from().line<=t.from.line&&n.from().ch<=t.from.ch&&i++;e.setSelections(r,i)}};var C=e.keyMap;C.macSublime={"Cmd-Left":"goLineStartSmart","Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-Left":"goSubwordLeft","Ctrl-Right":"goSubwordRight","Ctrl-Alt-Up":"scrollLineUp","Ctrl-Alt-Down":"scrollLineDown","Cmd-L":"selectLine","Shift-Cmd-L":"splitSelectionByLine",Esc:"singleSelectionTop","Cmd-Enter":"insertLineAfter","Shift-Cmd-Enter":"insertLineBefore","Cmd-D":"selectNextOccurrence","Shift-Cmd-Space":"selectScope","Shift-Cmd-M":"selectBetweenBrackets","Cmd-M":"goToBracket","Cmd-Ctrl-Up":"swapLineUp","Cmd-Ctrl-Down":"swapLineDown","Cmd-/":"toggleCommentIndented","Cmd-J":"joinLines","Shift-Cmd-D":"duplicateLine",F5:"sortLines","Shift-F5":"reverseSortLines","Cmd-F5":"sortLinesInsensitive","Shift-Cmd-F5":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Cmd-F2":"toggleBookmark","Shift-Cmd-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Cmd-K Cmd-D":"skipAndSelectNextOccurrence","Cmd-K Cmd-K":"delLineRight","Cmd-K Cmd-U":"upcaseAtCursor","Cmd-K Cmd-L":"downcaseAtCursor","Cmd-K Cmd-Space":"setSublimeMark","Cmd-K Cmd-A":"selectToSublimeMark","Cmd-K Cmd-W":"deleteToSublimeMark","Cmd-K Cmd-X":"swapWithSublimeMark","Cmd-K Cmd-Y":"sublimeYank","Cmd-K Cmd-C":"showInCenter","Cmd-K Cmd-G":"clearBookmarks","Cmd-K Cmd-Backspace":"delLineLeft","Cmd-K Cmd-1":"foldAll","Cmd-K Cmd-0":"unfoldAll","Cmd-K Cmd-J":"unfoldAll","Ctrl-Shift-Up":"addCursorToPrevLine","Ctrl-Shift-Down":"addCursorToNextLine","Cmd-F3":"findUnder","Shift-Cmd-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Cmd-[":"fold","Shift-Cmd-]":"unfold","Cmd-I":"findIncremental","Shift-Cmd-I":"findIncrementalReverse","Cmd-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"macDefault"},e.normalizeKeyMap(C.macSublime),C.pcSublime={"Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-T":"transposeChars","Alt-Left":"goSubwordLeft","Alt-Right":"goSubwordRight","Ctrl-Up":"scrollLineUp","Ctrl-Down":"scrollLineDown","Ctrl-L":"selectLine","Shift-Ctrl-L":"splitSelectionByLine",Esc:"singleSelectionTop","Ctrl-Enter":"insertLineAfter","Shift-Ctrl-Enter":"insertLineBefore","Ctrl-D":"selectNextOccurrence","Shift-Ctrl-Space":"selectScope","Shift-Ctrl-M":"selectBetweenBrackets","Ctrl-M":"goToBracket","Shift-Ctrl-Up":"swapLineUp","Shift-Ctrl-Down":"swapLineDown","Ctrl-/":"toggleCommentIndented","Ctrl-J":"joinLines","Shift-Ctrl-D":"duplicateLine",F9:"sortLines","Shift-F9":"reverseSortLines","Ctrl-F9":"sortLinesInsensitive","Shift-Ctrl-F9":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Ctrl-F2":"toggleBookmark","Shift-Ctrl-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Ctrl-K Ctrl-D":"skipAndSelectNextOccurrence","Ctrl-K Ctrl-K":"delLineRight","Ctrl-K Ctrl-U":"upcaseAtCursor","Ctrl-K Ctrl-L":"downcaseAtCursor","Ctrl-K Ctrl-Space":"setSublimeMark","Ctrl-K Ctrl-A":"selectToSublimeMark","Ctrl-K Ctrl-W":"deleteToSublimeMark","Ctrl-K Ctrl-X":"swapWithSublimeMark","Ctrl-K Ctrl-Y":"sublimeYank","Ctrl-K Ctrl-C":"showInCenter","Ctrl-K Ctrl-G":"clearBookmarks","Ctrl-K Ctrl-Backspace":"delLineLeft","Ctrl-K Ctrl-1":"foldAll","Ctrl-K Ctrl-0":"unfoldAll","Ctrl-K Ctrl-J":"unfoldAll","Ctrl-Alt-Up":"addCursorToPrevLine","Ctrl-Alt-Down":"addCursorToNextLine","Ctrl-F3":"findUnder","Shift-Ctrl-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Ctrl-[":"fold","Shift-Ctrl-]":"unfold","Ctrl-I":"findIncremental","Shift-Ctrl-I":"findIncrementalReverse","Ctrl-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"pcDefault"},e.normalizeKeyMap(C.pcSublime);var v=C.default==C.macDefault;C.sublime=v?C.macSublime:C.pcSublime}((0,r.r)(),(0,i.r)(),(0,o.r)());var c={};const f=s({__proto__:null,default:(0,r.g)(c)},[c])}}]); +//# sourceMappingURL=142.452d36a8.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/142.452d36a8.chunk.js.map b/serv/web/build/static/js/142.452d36a8.chunk.js.map new file mode 100644 index 00000000..fb2316ac --- /dev/null +++ b/serv/web/build/static/js/142.452d36a8.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/142.452d36a8.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/edit/matchbrackets.js","../node_modules/node_modules/codemirror/addon/search/searchcursor.js","../node_modules/node_modules/codemirror/keymap/sublime.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\", \"<\": \">>\", \">\": \"<<\"};\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor\n if (afterCursor == null)\n afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n var re = bracketRegex(config)\n\n // A cursor is defined as between two characters, but in in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) ||\n re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = bracketRegex(config)\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined ||\n (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && (match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets)\n cm.off(\"blur\", clearHighlighted)\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets)\n cm.on(\"blur\", clearHighlighted)\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig){\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {strict: true} : null\n } else {\n oldConfig.strict = config\n config = oldConfig\n }\n }\n return findMatchingBracket(this, pos, config)\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.afterEmptyMatch = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n if (this.afterEmptyMatch && this.atOccurrence) {\n // do not return the same 0 width match twice\n head = Pos(head.line, head.ch)\n if (reverse) {\n head.ch--;\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false\n }\n }\n var result = this.matches(reverse, head)\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// A rough approximation of Sublime Text's keybindings\n// Depends on addon/search/searchcursor.js and optionally addon/dialog/dialogs.js\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../lib/codemirror\"), require(\"../addon/search/searchcursor\"), require(\"../addon/edit/matchbrackets\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../lib/codemirror\", \"../addon/search/searchcursor\", \"../addon/edit/matchbrackets\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var cmds = CodeMirror.commands;\n var Pos = CodeMirror.Pos;\n\n // This is not exactly Sublime's algorithm. I couldn't make heads or tails of that.\n function findPosSubword(doc, start, dir) {\n if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1));\n var line = doc.getLine(start.line);\n if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0));\n var state = \"start\", type, startPos = start.ch;\n for (var pos = startPos, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) {\n var next = line.charAt(dir < 0 ? pos - 1 : pos);\n var cat = next != \"_\" && CodeMirror.isWordChar(next) ? \"w\" : \"o\";\n if (cat == \"w\" && next.toUpperCase() == next) cat = \"W\";\n if (state == \"start\") {\n if (cat != \"o\") { state = \"in\"; type = cat; }\n else startPos = pos + dir\n } else if (state == \"in\") {\n if (type != cat) {\n if (type == \"w\" && cat == \"W\" && dir < 0) pos--;\n if (type == \"W\" && cat == \"w\" && dir > 0) { // From uppercase to lowercase\n if (pos == startPos + 1) { type = \"w\"; continue; }\n else pos--;\n }\n break;\n }\n }\n }\n return Pos(start.line, pos);\n }\n\n function moveSubword(cm, dir) {\n cm.extendSelectionsBy(function(range) {\n if (cm.display.shift || cm.doc.extend || range.empty())\n return findPosSubword(cm.doc, range.head, dir);\n else\n return dir < 0 ? range.from() : range.to();\n });\n }\n\n cmds.goSubwordLeft = function(cm) { moveSubword(cm, -1); };\n cmds.goSubwordRight = function(cm) { moveSubword(cm, 1); };\n\n cmds.scrollLineUp = function(cm) {\n var info = cm.getScrollInfo();\n if (!cm.somethingSelected()) {\n var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, \"local\");\n if (cm.getCursor().line >= visibleBottomLine)\n cm.execCommand(\"goLineUp\");\n }\n cm.scrollTo(null, info.top - cm.defaultTextHeight());\n };\n cmds.scrollLineDown = function(cm) {\n var info = cm.getScrollInfo();\n if (!cm.somethingSelected()) {\n var visibleTopLine = cm.lineAtHeight(info.top, \"local\")+1;\n if (cm.getCursor().line <= visibleTopLine)\n cm.execCommand(\"goLineDown\");\n }\n cm.scrollTo(null, info.top + cm.defaultTextHeight());\n };\n\n cmds.splitSelectionByLine = function(cm) {\n var ranges = cm.listSelections(), lineRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(), to = ranges[i].to();\n for (var line = from.line; line <= to.line; ++line)\n if (!(to.line > from.line && line == to.line && to.ch == 0))\n lineRanges.push({anchor: line == from.line ? from : Pos(line, 0),\n head: line == to.line ? to : Pos(line)});\n }\n cm.setSelections(lineRanges, 0);\n };\n\n cmds.singleSelectionTop = function(cm) {\n var range = cm.listSelections()[0];\n cm.setSelection(range.anchor, range.head, {scroll: false});\n };\n\n cmds.selectLine = function(cm) {\n var ranges = cm.listSelections(), extended = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n extended.push({anchor: Pos(range.from().line, 0),\n head: Pos(range.to().line + 1, 0)});\n }\n cm.setSelections(extended);\n };\n\n function insertLine(cm, above) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n cm.operation(function() {\n var len = cm.listSelections().length, newSelection = [], last = -1;\n for (var i = 0; i < len; i++) {\n var head = cm.listSelections()[i].head;\n if (head.line <= last) continue;\n var at = Pos(head.line + (above ? 0 : 1), 0);\n cm.replaceRange(\"\\n\", at, null, \"+insertLine\");\n cm.indentLine(at.line, null, true);\n newSelection.push({head: at, anchor: at});\n last = head.line + 1;\n }\n cm.setSelections(newSelection);\n });\n cm.execCommand(\"indentAuto\");\n }\n\n cmds.insertLineAfter = function(cm) { return insertLine(cm, false); };\n\n cmds.insertLineBefore = function(cm) { return insertLine(cm, true); };\n\n function wordAt(cm, pos) {\n var start = pos.ch, end = start, line = cm.getLine(pos.line);\n while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start;\n while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end;\n return {from: Pos(pos.line, start), to: Pos(pos.line, end), word: line.slice(start, end)};\n }\n\n cmds.selectNextOccurrence = function(cm) {\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel;\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n cm.setSelection(word.from, word.to);\n fullWord = true;\n } else {\n var text = cm.getRange(from, to);\n var query = fullWord ? new RegExp(\"\\\\b\" + text + \"\\\\b\") : text;\n var cur = cm.getSearchCursor(query, to);\n var found = cur.findNext();\n if (!found) {\n cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0));\n found = cur.findNext();\n }\n if (!found || isSelectedRange(cm.listSelections(), cur.from(), cur.to())) return\n cm.addSelection(cur.from(), cur.to());\n }\n if (fullWord)\n cm.state.sublimeFindFullWord = cm.doc.sel;\n };\n\n cmds.skipAndSelectNextOccurrence = function(cm) {\n var prevAnchor = cm.getCursor(\"anchor\"), prevHead = cm.getCursor(\"head\");\n cmds.selectNextOccurrence(cm);\n if (CodeMirror.cmpPos(prevAnchor, prevHead) != 0) {\n cm.doc.setSelections(cm.doc.listSelections()\n .filter(function (sel) {\n return sel.anchor != prevAnchor || sel.head != prevHead;\n }));\n }\n }\n\n function addCursorToSelection(cm, dir) {\n var ranges = cm.listSelections(), newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var newAnchor = cm.findPosV(\n range.anchor, dir, \"line\", range.anchor.goalColumn);\n var newHead = cm.findPosV(\n range.head, dir, \"line\", range.head.goalColumn);\n newAnchor.goalColumn = range.anchor.goalColumn != null ?\n range.anchor.goalColumn : cm.cursorCoords(range.anchor, \"div\").left;\n newHead.goalColumn = range.head.goalColumn != null ?\n range.head.goalColumn : cm.cursorCoords(range.head, \"div\").left;\n var newRange = {anchor: newAnchor, head: newHead};\n newRanges.push(range);\n newRanges.push(newRange);\n }\n cm.setSelections(newRanges);\n }\n cmds.addCursorToPrevLine = function(cm) { addCursorToSelection(cm, -1); };\n cmds.addCursorToNextLine = function(cm) { addCursorToSelection(cm, 1); };\n\n function isSelectedRange(ranges, from, to) {\n for (var i = 0; i < ranges.length; i++)\n if (CodeMirror.cmpPos(ranges[i].from(), from) == 0 &&\n CodeMirror.cmpPos(ranges[i].to(), to) == 0) return true\n return false\n }\n\n var mirror = \"(){}[]\";\n function selectBetweenBrackets(cm) {\n var ranges = cm.listSelections(), newRanges = []\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], pos = range.head, opening = cm.scanForBracket(pos, -1);\n if (!opening) return false;\n for (;;) {\n var closing = cm.scanForBracket(pos, 1);\n if (!closing) return false;\n if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) {\n var startPos = Pos(opening.pos.line, opening.pos.ch + 1);\n if (CodeMirror.cmpPos(startPos, range.from()) == 0 &&\n CodeMirror.cmpPos(closing.pos, range.to()) == 0) {\n opening = cm.scanForBracket(opening.pos, -1);\n if (!opening) return false;\n } else {\n newRanges.push({anchor: startPos, head: closing.pos});\n break;\n }\n }\n pos = Pos(closing.pos.line, closing.pos.ch + 1);\n }\n }\n cm.setSelections(newRanges);\n return true;\n }\n\n cmds.selectScope = function(cm) {\n selectBetweenBrackets(cm) || cm.execCommand(\"selectAll\");\n };\n cmds.selectBetweenBrackets = function(cm) {\n if (!selectBetweenBrackets(cm)) return CodeMirror.Pass;\n };\n\n function puncType(type) {\n return !type ? null : /\\bpunctuation\\b/.test(type) ? type : undefined\n }\n\n cmds.goToBracket = function(cm) {\n cm.extendSelectionsBy(function(range) {\n var next = cm.scanForBracket(range.head, 1, puncType(cm.getTokenTypeAt(range.head)));\n if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos;\n var prev = cm.scanForBracket(range.head, -1, puncType(cm.getTokenTypeAt(Pos(range.head.line, range.head.ch + 1))));\n return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head;\n });\n };\n\n cmds.swapLineUp = function(cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), linesToMove = [], at = cm.firstLine() - 1, newSels = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], from = range.from().line - 1, to = range.to().line;\n newSels.push({anchor: Pos(range.anchor.line - 1, range.anchor.ch),\n head: Pos(range.head.line - 1, range.head.ch)});\n if (range.to().ch == 0 && !range.empty()) --to;\n if (from > at) linesToMove.push(from, to);\n else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n cm.operation(function() {\n for (var i = 0; i < linesToMove.length; i += 2) {\n var from = linesToMove[i], to = linesToMove[i + 1];\n var line = cm.getLine(from);\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n if (to > cm.lastLine())\n cm.replaceRange(\"\\n\" + line, Pos(cm.lastLine()), null, \"+swapLine\");\n else\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n cm.setSelections(newSels);\n cm.scrollIntoView();\n });\n };\n\n cmds.swapLineDown = function(cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), linesToMove = [], at = cm.lastLine() + 1;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var range = ranges[i], from = range.to().line + 1, to = range.from().line;\n if (range.to().ch == 0 && !range.empty()) from--;\n if (from < at) linesToMove.push(from, to);\n else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n cm.operation(function() {\n for (var i = linesToMove.length - 2; i >= 0; i -= 2) {\n var from = linesToMove[i], to = linesToMove[i + 1];\n var line = cm.getLine(from);\n if (from == cm.lastLine())\n cm.replaceRange(\"\", Pos(from - 1), Pos(from), \"+swapLine\");\n else\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n cm.scrollIntoView();\n });\n };\n\n cmds.toggleCommentIndented = function(cm) {\n cm.toggleComment({ indent: true });\n }\n\n cmds.joinLines = function(cm) {\n var ranges = cm.listSelections(), joined = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], from = range.from();\n var start = from.line, end = range.to().line;\n while (i < ranges.length - 1 && ranges[i + 1].from().line == end)\n end = ranges[++i].to().line;\n joined.push({start: start, end: end, anchor: !range.empty() && from});\n }\n cm.operation(function() {\n var offset = 0, ranges = [];\n for (var i = 0; i < joined.length; i++) {\n var obj = joined[i];\n var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch), head;\n for (var line = obj.start; line <= obj.end; line++) {\n var actual = line - offset;\n if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1);\n if (actual < cm.lastLine()) {\n cm.replaceRange(\" \", Pos(actual), Pos(actual + 1, /^\\s*/.exec(cm.getLine(actual + 1))[0].length));\n ++offset;\n }\n }\n ranges.push({anchor: anchor || head, head: head});\n }\n cm.setSelections(ranges, 0);\n });\n };\n\n cmds.duplicateLine = function(cm) {\n cm.operation(function() {\n var rangeCount = cm.listSelections().length;\n for (var i = 0; i < rangeCount; i++) {\n var range = cm.listSelections()[i];\n if (range.empty())\n cm.replaceRange(cm.getLine(range.head.line) + \"\\n\", Pos(range.head.line, 0));\n else\n cm.replaceRange(cm.getRange(range.from(), range.to()), range.from());\n }\n cm.scrollIntoView();\n });\n };\n\n\n function sortLines(cm, caseSensitive, direction) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), toSort = [], selected;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) continue;\n var from = range.from().line, to = range.to().line;\n while (i < ranges.length - 1 && ranges[i + 1].from().line == to)\n to = ranges[++i].to().line;\n if (!ranges[i].to().ch) to--;\n toSort.push(from, to);\n }\n if (toSort.length) selected = true;\n else toSort.push(cm.firstLine(), cm.lastLine());\n\n cm.operation(function() {\n var ranges = [];\n for (var i = 0; i < toSort.length; i += 2) {\n var from = toSort[i], to = toSort[i + 1];\n var start = Pos(from, 0), end = Pos(to);\n var lines = cm.getRange(start, end, false);\n if (caseSensitive)\n lines.sort(function(a, b) { return a < b ? -direction : a == b ? 0 : direction; });\n else\n lines.sort(function(a, b) {\n var au = a.toUpperCase(), bu = b.toUpperCase();\n if (au != bu) { a = au; b = bu; }\n return a < b ? -direction : a == b ? 0 : direction;\n });\n cm.replaceRange(lines, start, end);\n if (selected) ranges.push({anchor: start, head: Pos(to + 1, 0)});\n }\n if (selected) cm.setSelections(ranges, 0);\n });\n }\n\n cmds.sortLines = function(cm) { sortLines(cm, true, 1); };\n cmds.reverseSortLines = function(cm) { sortLines(cm, true, -1); };\n cmds.sortLinesInsensitive = function(cm) { sortLines(cm, false, 1); };\n cmds.reverseSortLinesInsensitive = function(cm) { sortLines(cm, false, -1); };\n\n cmds.nextBookmark = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n var current = marks.shift();\n var found = current.find();\n if (found) {\n marks.push(current);\n return cm.setSelection(found.from, found.to);\n }\n }\n };\n\n cmds.prevBookmark = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n marks.unshift(marks.pop());\n var found = marks[marks.length - 1].find();\n if (!found)\n marks.pop();\n else\n return cm.setSelection(found.from, found.to);\n }\n };\n\n cmds.toggleBookmark = function(cm) {\n var ranges = cm.listSelections();\n var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []);\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(), to = ranges[i].to();\n var found = ranges[i].empty() ? cm.findMarksAt(from) : cm.findMarks(from, to);\n for (var j = 0; j < found.length; j++) {\n if (found[j].sublimeBookmark) {\n found[j].clear();\n for (var k = 0; k < marks.length; k++)\n if (marks[k] == found[j])\n marks.splice(k--, 1);\n break;\n }\n }\n if (j == found.length)\n marks.push(cm.markText(from, to, {sublimeBookmark: true, clearWhenEmpty: false}));\n }\n };\n\n cmds.clearBookmarks = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) for (var i = 0; i < marks.length; i++) marks[i].clear();\n marks.length = 0;\n };\n\n cmds.selectBookmarks = function(cm) {\n var marks = cm.state.sublimeBookmarks, ranges = [];\n if (marks) for (var i = 0; i < marks.length; i++) {\n var found = marks[i].find();\n if (!found)\n marks.splice(i--, 0);\n else\n ranges.push({anchor: found.from, head: found.to});\n }\n if (ranges.length)\n cm.setSelections(ranges, 0);\n };\n\n function modifyWordOrSelection(cm, mod) {\n cm.operation(function() {\n var ranges = cm.listSelections(), indices = [], replacements = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) { indices.push(i); replacements.push(\"\"); }\n else replacements.push(mod(cm.getRange(range.from(), range.to())));\n }\n cm.replaceSelections(replacements, \"around\", \"case\");\n for (var i = indices.length - 1, at; i >= 0; i--) {\n var range = ranges[indices[i]];\n if (at && CodeMirror.cmpPos(range.head, at) > 0) continue;\n var word = wordAt(cm, range.head);\n at = word.from;\n cm.replaceRange(mod(word.word), word.from, word.to);\n }\n });\n }\n\n cmds.smartBackspace = function(cm) {\n if (cm.somethingSelected()) return CodeMirror.Pass;\n\n cm.operation(function() {\n var cursors = cm.listSelections();\n var indentUnit = cm.getOption(\"indentUnit\");\n\n for (var i = cursors.length - 1; i >= 0; i--) {\n var cursor = cursors[i].head;\n var toStartOfLine = cm.getRange({line: cursor.line, ch: 0}, cursor);\n var column = CodeMirror.countColumn(toStartOfLine, null, cm.getOption(\"tabSize\"));\n\n // Delete by one character by default\n var deletePos = cm.findPosH(cursor, -1, \"char\", false);\n\n if (toStartOfLine && !/\\S/.test(toStartOfLine) && column % indentUnit == 0) {\n var prevIndent = new Pos(cursor.line,\n CodeMirror.findColumn(toStartOfLine, column - indentUnit, indentUnit));\n\n // Smart delete only if we found a valid prevIndent location\n if (prevIndent.ch != cursor.ch) deletePos = prevIndent;\n }\n\n cm.replaceRange(\"\", deletePos, cursor, \"+delete\");\n }\n });\n };\n\n cmds.delLineRight = function(cm) {\n cm.operation(function() {\n var ranges = cm.listSelections();\n for (var i = ranges.length - 1; i >= 0; i--)\n cm.replaceRange(\"\", ranges[i].anchor, Pos(ranges[i].to().line), \"+delete\");\n cm.scrollIntoView();\n });\n };\n\n cmds.upcaseAtCursor = function(cm) {\n modifyWordOrSelection(cm, function(str) { return str.toUpperCase(); });\n };\n cmds.downcaseAtCursor = function(cm) {\n modifyWordOrSelection(cm, function(str) { return str.toLowerCase(); });\n };\n\n cmds.setSublimeMark = function(cm) {\n if (cm.state.sublimeMark) cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n };\n cmds.selectToSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) cm.setSelection(cm.getCursor(), found);\n };\n cmds.deleteToSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) {\n var from = cm.getCursor(), to = found;\n if (CodeMirror.cmpPos(from, to) > 0) { var tmp = to; to = from; from = tmp; }\n cm.state.sublimeKilled = cm.getRange(from, to);\n cm.replaceRange(\"\", from, to);\n }\n };\n cmds.swapWithSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) {\n cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n cm.setCursor(found);\n }\n };\n cmds.sublimeYank = function(cm) {\n if (cm.state.sublimeKilled != null)\n cm.replaceSelection(cm.state.sublimeKilled, null, \"paste\");\n };\n\n cmds.showInCenter = function(cm) {\n var pos = cm.cursorCoords(null, \"local\");\n cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2);\n };\n\n function getTarget(cm) {\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n from = word.from;\n to = word.to;\n }\n return {from: from, to: to, query: cm.getRange(from, to), word: word};\n }\n\n function findAndGoTo(cm, forward) {\n var target = getTarget(cm);\n if (!target) return;\n var query = target.query;\n var cur = cm.getSearchCursor(query, forward ? target.to : target.from);\n\n if (forward ? cur.findNext() : cur.findPrevious()) {\n cm.setSelection(cur.from(), cur.to());\n } else {\n cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0)\n : cm.clipPos(Pos(cm.lastLine())));\n if (forward ? cur.findNext() : cur.findPrevious())\n cm.setSelection(cur.from(), cur.to());\n else if (target.word)\n cm.setSelection(target.from, target.to);\n }\n };\n cmds.findUnder = function(cm) { findAndGoTo(cm, true); };\n cmds.findUnderPrevious = function(cm) { findAndGoTo(cm,false); };\n cmds.findAllUnder = function(cm) {\n var target = getTarget(cm);\n if (!target) return;\n var cur = cm.getSearchCursor(target.query);\n var matches = [];\n var primaryIndex = -1;\n while (cur.findNext()) {\n matches.push({anchor: cur.from(), head: cur.to()});\n if (cur.from().line <= target.from.line && cur.from().ch <= target.from.ch)\n primaryIndex++;\n }\n cm.setSelections(matches, primaryIndex);\n };\n\n\n var keyMap = CodeMirror.keyMap;\n keyMap.macSublime = {\n \"Cmd-Left\": \"goLineStartSmart\",\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-Left\": \"goSubwordLeft\",\n \"Ctrl-Right\": \"goSubwordRight\",\n \"Ctrl-Alt-Up\": \"scrollLineUp\",\n \"Ctrl-Alt-Down\": \"scrollLineDown\",\n \"Cmd-L\": \"selectLine\",\n \"Shift-Cmd-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Cmd-Enter\": \"insertLineAfter\",\n \"Shift-Cmd-Enter\": \"insertLineBefore\",\n \"Cmd-D\": \"selectNextOccurrence\",\n \"Shift-Cmd-Space\": \"selectScope\",\n \"Shift-Cmd-M\": \"selectBetweenBrackets\",\n \"Cmd-M\": \"goToBracket\",\n \"Cmd-Ctrl-Up\": \"swapLineUp\",\n \"Cmd-Ctrl-Down\": \"swapLineDown\",\n \"Cmd-/\": \"toggleCommentIndented\",\n \"Cmd-J\": \"joinLines\",\n \"Shift-Cmd-D\": \"duplicateLine\",\n \"F5\": \"sortLines\",\n \"Shift-F5\": \"reverseSortLines\",\n \"Cmd-F5\": \"sortLinesInsensitive\",\n \"Shift-Cmd-F5\": \"reverseSortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Cmd-F2\": \"toggleBookmark\",\n \"Shift-Cmd-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Cmd-K Cmd-D\": \"skipAndSelectNextOccurrence\",\n \"Cmd-K Cmd-K\": \"delLineRight\",\n \"Cmd-K Cmd-U\": \"upcaseAtCursor\",\n \"Cmd-K Cmd-L\": \"downcaseAtCursor\",\n \"Cmd-K Cmd-Space\": \"setSublimeMark\",\n \"Cmd-K Cmd-A\": \"selectToSublimeMark\",\n \"Cmd-K Cmd-W\": \"deleteToSublimeMark\",\n \"Cmd-K Cmd-X\": \"swapWithSublimeMark\",\n \"Cmd-K Cmd-Y\": \"sublimeYank\",\n \"Cmd-K Cmd-C\": \"showInCenter\",\n \"Cmd-K Cmd-G\": \"clearBookmarks\",\n \"Cmd-K Cmd-Backspace\": \"delLineLeft\",\n \"Cmd-K Cmd-1\": \"foldAll\",\n \"Cmd-K Cmd-0\": \"unfoldAll\",\n \"Cmd-K Cmd-J\": \"unfoldAll\",\n \"Ctrl-Shift-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Shift-Down\": \"addCursorToNextLine\",\n \"Cmd-F3\": \"findUnder\",\n \"Shift-Cmd-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Cmd-[\": \"fold\",\n \"Shift-Cmd-]\": \"unfold\",\n \"Cmd-I\": \"findIncremental\",\n \"Shift-Cmd-I\": \"findIncrementalReverse\",\n \"Cmd-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"macDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.macSublime);\n\n keyMap.pcSublime = {\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-T\": \"transposeChars\",\n \"Alt-Left\": \"goSubwordLeft\",\n \"Alt-Right\": \"goSubwordRight\",\n \"Ctrl-Up\": \"scrollLineUp\",\n \"Ctrl-Down\": \"scrollLineDown\",\n \"Ctrl-L\": \"selectLine\",\n \"Shift-Ctrl-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Ctrl-Enter\": \"insertLineAfter\",\n \"Shift-Ctrl-Enter\": \"insertLineBefore\",\n \"Ctrl-D\": \"selectNextOccurrence\",\n \"Shift-Ctrl-Space\": \"selectScope\",\n \"Shift-Ctrl-M\": \"selectBetweenBrackets\",\n \"Ctrl-M\": \"goToBracket\",\n \"Shift-Ctrl-Up\": \"swapLineUp\",\n \"Shift-Ctrl-Down\": \"swapLineDown\",\n \"Ctrl-/\": \"toggleCommentIndented\",\n \"Ctrl-J\": \"joinLines\",\n \"Shift-Ctrl-D\": \"duplicateLine\",\n \"F9\": \"sortLines\",\n \"Shift-F9\": \"reverseSortLines\",\n \"Ctrl-F9\": \"sortLinesInsensitive\",\n \"Shift-Ctrl-F9\": \"reverseSortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Ctrl-F2\": \"toggleBookmark\",\n \"Shift-Ctrl-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Ctrl-K Ctrl-D\": \"skipAndSelectNextOccurrence\",\n \"Ctrl-K Ctrl-K\": \"delLineRight\",\n \"Ctrl-K Ctrl-U\": \"upcaseAtCursor\",\n \"Ctrl-K Ctrl-L\": \"downcaseAtCursor\",\n \"Ctrl-K Ctrl-Space\": \"setSublimeMark\",\n \"Ctrl-K Ctrl-A\": \"selectToSublimeMark\",\n \"Ctrl-K Ctrl-W\": \"deleteToSublimeMark\",\n \"Ctrl-K Ctrl-X\": \"swapWithSublimeMark\",\n \"Ctrl-K Ctrl-Y\": \"sublimeYank\",\n \"Ctrl-K Ctrl-C\": \"showInCenter\",\n \"Ctrl-K Ctrl-G\": \"clearBookmarks\",\n \"Ctrl-K Ctrl-Backspace\": \"delLineLeft\",\n \"Ctrl-K Ctrl-1\": \"foldAll\",\n \"Ctrl-K Ctrl-0\": \"unfoldAll\",\n \"Ctrl-K Ctrl-J\": \"unfoldAll\",\n \"Ctrl-Alt-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Alt-Down\": \"addCursorToNextLine\",\n \"Ctrl-F3\": \"findUnder\",\n \"Shift-Ctrl-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Ctrl-[\": \"fold\",\n \"Shift-Ctrl-]\": \"unfold\",\n \"Ctrl-I\": \"findIncremental\",\n \"Shift-Ctrl-I\": \"findIncrementalReverse\",\n \"Ctrl-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"pcDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.pcSublime);\n\n var mac = keyMap.default == keyMap.macDefault;\n keyMap.sublime = mac ? keyMap.macSublime : keyMap.pcSublime;\n});\n"],"names":["o","S","test","navigator","userAgent","document","documentMode","g","Pos","p","A","t","bracketRegex","b","r","e","i","getLineHandle","line","n","ch","l","afterCursor","getWrapperElement","className","h","u","text","charAt","a","strict","k","getTokenTypeAt","s","H","from","to","pos","match","forward","maxScanLineLength","maxScanLines","Math","min","lastLine","max","firstLine","c","getLine","v","length","q","d","m","push","pop","M","state","matchBrackets","maxHighlightLineLength","highlightNonMatching","listSelections","empty","head","markText","focused","focus","f","operation","clear","setTimeout","x","currentlyHighlighted","B","defineOption","Init","off","on","defineExtension","this","F","T","exports","P","flags","ignoreCase","global","multiline","indexOf","RegExp","source","R","I","lastIndex","exec","index","j","slice","split","z","D","L","y","O","C","lastIndexOf","w","atOccurrence","afterEmptyMatch","doc","clipPos","caseFold","matches","String","prototype","normalize","toLowerCase","findNext","find","findPrevious","cmpPos","replace","splitLines","replaceRange","defineDocExtension","getSearchCursor","getCursor","anchor","setSelections","G","N","commands","isWordChar","toUpperCase","extendSelectionsBy","display","shift","extend","isReadOnly","Pass","indentLine","execCommand","K","word","findPosV","goalColumn","cursorCoords","left","goSubwordLeft","goSubwordRight","scrollLineUp","getScrollInfo","somethingSelected","lineAtHeight","top","clientHeight","scrollTo","defaultTextHeight","scrollLineDown","splitSelectionByLine","singleSelectionTop","setSelection","scroll","selectLine","insertLineAfter","insertLineBefore","selectNextOccurrence","sublimeFindFullWord","sel","getRange","addSelection","skipAndSelectNextOccurrence","filter","addCursorToPrevLine","addCursorToNextLine","U","scanForBracket","sort","W","replaceSelections","query","selectScope","selectBetweenBrackets","goToBracket","swapLineUp","scrollIntoView","swapLineDown","toggleCommentIndented","toggleComment","indent","joinLines","start","end","duplicateLine","sortLines","reverseSortLines","sortLinesInsensitive","reverseSortLinesInsensitive","nextBookmark","sublimeBookmarks","prevBookmark","unshift","toggleBookmark","findMarksAt","findMarks","sublimeBookmark","splice","clearWhenEmpty","clearBookmarks","selectBookmarks","smartBackspace","getOption","countColumn","findPosH","findColumn","delLineRight","upcaseAtCursor","downcaseAtCursor","setSublimeMark","sublimeMark","setBookmark","selectToSublimeMark","deleteToSublimeMark","sublimeKilled","swapWithSublimeMark","setCursor","sublimeYank","replaceSelection","showInCenter","bottom","findUnder","findUnderPrevious","findAllUnder","keyMap","macSublime","Esc","F5","F2","Backspace","F3","fallthrough","normalizeKeyMap","pcSublime","F9","default","macDefault","sublime","Y","J"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/142.611662c0.chunk.js b/serv/web/build/static/js/142.611662c0.chunk.js deleted file mode 100644 index f0d5b485..00000000 --- a/serv/web/build/static/js/142.611662c0.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[142],{2704:function(e,t,n){n.d(t,{r:function(){return s}});var r,i=n(8308),o=Object.defineProperty,l=function(e,t){return o(e,"name",{value:t,configurable:!0})},a={exports:{}};function s(){return r||(r=1,function(e){var t=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),n=e.Pos,r={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function i(e){return e&&e.bracketRegex||/[(){}[\]]/}function o(e,t,o){var l=e.getLineHandle(t.line),s=t.ch-1,c=o&&o.afterCursor;null==c&&(c=/(^| )cm-fat-cursor($| )/.test(e.getWrapperElement().className));var f=i(o),u=!c&&s>=0&&f.test(l.text.charAt(s))&&r[l.text.charAt(s)]||f.test(l.text.charAt(s+1))&&r[l.text.charAt(++s)];if(!u)return null;var h=">"==u.charAt(1)?1:-1;if(o&&o.strict&&h>0!=(s==t.ch))return null;var d=e.getTokenTypeAt(n(t.line,s+1)),m=a(e,n(t.line,s+(h>0?1:0)),h,d,o);return null==m?null:{from:n(t.line,s),to:m&&m.pos,match:m&&m.ch==u.charAt(0),forward:h>0}}function a(e,t,o,l,a){for(var s=a&&a.maxScanLineLength||1e4,c=a&&a.maxScanLines||1e3,f=[],u=i(a),h=o>0?Math.min(t.line+c,e.lastLine()+1):Math.max(e.firstLine()-1,t.line-c),d=t.line;d!=h;d+=o){var m=e.getLine(d);if(m){var g=o>0?0:m.length-1,p=o>0?m.length:-1;if(!(m.length>s))for(d==t.line&&(g=t.ch-(o<0?1:0));g!=p;g+=o){var C=m.charAt(g);if(u.test(C)&&(void 0===l||(e.getTokenTypeAt(n(d,g+1))||"")==(l||""))){var v=r[C];if(v&&">"==v.charAt(1)==o>0)f.push(C);else{if(!f.length)return{pos:n(d,g),ch:C};f.pop()}}}}}return d-o!=(o>0?e.lastLine():e.firstLine())&&null}function s(e,r,i){for(var a=e.state.matchBrackets.maxHighlightLineLength||1e3,s=i&&i.highlightNonMatching,c=[],f=e.listSelections(),u=0;uf);u++){var h=e.getLine(c++);i=null==i?h:i+"\n"+h}l*=2,t.lastIndex=n.ch;var d=t.exec(i);if(d){var m=i.slice(0,d.index).split("\n"),g=d[0].split("\n"),p=n.line+m.length-1,C=m[m.length-1].length;return{from:r(p,C),to:r(p+g.length-1,1==g.length?C+g[0].length:g[g.length-1].length),match:d}}}}function f(e,t,n){for(var r,i=0;i<=e.length;){t.lastIndex=i;var o=t.exec(e);if(!o)break;var l=o.index+o[0].length;if(l>e.length-n)break;(!r||l>r.index+r[0].length)&&(r=o),i=o.index+1}return r}function u(e,t,n){t=o(t,"g");for(var i=n.line,l=n.ch,a=e.firstLine();i>=a;i--,l=-1){var s=e.getLine(i),c=f(s,t,l<0?0:s.length-l);if(c)return{from:r(i,c.index),to:r(i,c.index+c[0].length),match:c}}}function h(e,t,n){if(!a(t))return u(e,t,n);t=o(t,"gm");for(var i,l=1,s=e.getLine(n.line).length-n.ch,c=n.line,h=e.firstLine();c>=h;){for(var d=0;d=h;d++){var m=e.getLine(c--);i=null==i?m:m+"\n"+i}l*=2;var g=f(i,t,s);if(g){var p=i.slice(0,g.index).split("\n"),C=g[0].split("\n"),v=c+p.length,S=p[p.length-1].length;return{from:r(v,S),to:r(v+C.length-1,1==C.length?S+C[0].length:C[C.length-1].length),match:g}}}}function d(e,t,n,r){if(e.length==t.length)return n;for(var i=0,o=n+Math.max(0,e.length-t.length);;){if(i==o)return i;var l=i+o>>1,a=r(e.slice(0,l)).length;if(a==n)return l;a>n?o=l:i=l+1}}function m(e,i,o,l){if(!i.length)return null;var a=l?t:n,s=a(i).split(/\r|\n\r?/);e:for(var c=o.line,f=o.ch,u=e.lastLine()+1-s.length;c<=u;c++,f=0){var h=e.getLine(c).slice(f),m=a(h);if(1==s.length){var g=m.indexOf(s[0]);if(-1==g)continue e;return o=d(h,m,g,a)+f,{from:r(c,d(h,m,g,a)+f),to:r(c,d(h,m,g+s[0].length,a)+f)}}var p=m.length-s[0].length;if(m.slice(p)==s[0]){for(var C=1;C=u;c--,f=-1){var h=e.getLine(c);f>-1&&(h=h.slice(0,f));var m=a(h);if(1==s.length){var g=m.lastIndexOf(s[0]);if(-1==g)continue e;return{from:r(c,d(h,m,g,a)),to:r(c,d(h,m,g+s[0].length,a))}}var p=s[s.length-1];if(m.slice(0,p.length)==p){var C=1;for(o=c-s.length+1;C(this.doc.getLine(n.line)||"").length&&(n.ch=0,n.line++)),0!=e.cmpPos(n,this.doc.clipPos(n))))return this.atOccurrence=!1;var i=this.matches(t,n);if(this.afterEmptyMatch=i&&0==e.cmpPos(i.from,i.to),i)return this.pos=i,this.atOccurrence=!0,this.pos.match||!0;var o=r(t?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:o,to:o},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(t,n){if(this.atOccurrence){var i=e.splitLines(t);this.doc.replaceRange(i,this.pos.from,this.pos.to,n),this.pos.to=r(this.pos.from.line+i.length-1,i[i.length-1].length+(1==i.length?this.pos.from.ch:0))}}},e.defineExtension("getSearchCursor",(function(e,t,n){return new p(this.doc,e,t,n)})),e.defineDocExtension("getSearchCursor",(function(e,t,n){return new p(this,e,t,n)})),e.defineExtension("selectMatches",(function(t,n){for(var r=[],i=this.getSearchCursor(t,this.getCursor("from"),n);i.findNext()&&!(e.cmpPos(i.to(),this.getCursor("to"))>0);)r.push({anchor:i.from(),head:i.to()});r.length&&this.setSelections(r,0)}))}((0,i.r)())),a.exports}l(s,"requireSearchcursor")},9762:function(e,t,n){n.r(t),n.d(t,{s:function(){return f}});var r=n(8308),i=n(3300),o=n(2704),l=Object.defineProperty,a=function(e,t){return l(e,"name",{value:t,configurable:!0})};function s(e,t){for(var n=function(){var n=t[r];if("string"!=typeof n&&!Array.isArray(n)){var i=function(t){if("default"!==t&&!(t in e)){var r=Object.getOwnPropertyDescriptor(n,t);r&&Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:function(){return n[t]}})}};for(var o in n)i(o)}},r=0;r0&&r.ch>=o.length)return t.clipPos(n(r.line+1,0));for(var l,a="start",s=r.ch,c=s,f=i<0?0:o.length,u=0;c!=f;c+=i,u++){var h=o.charAt(i<0?c-1:c),d="_"!=h&&e.isWordChar(h)?"w":"o";if("w"==d&&h.toUpperCase()==h&&(d="W"),"start"==a)"o"!=d?(a="in",l=d):s=c+i;else if("in"==a&&l!=d){if("w"==l&&"W"==d&&i<0&&c--,"W"==l&&"w"==d&&i>0){if(c==s+1){l="w";continue}c--}break}}return n(r.line,c)}function i(e,t){e.extendSelectionsBy((function(n){return e.display.shift||e.doc.extend||n.empty()?r(e.doc,n.head,t):t<0?n.from():n.to()}))}function o(t,r){if(t.isReadOnly())return e.Pass;t.operation((function(){for(var e=t.listSelections().length,i=[],o=-1,l=0;l=n&&e.execCommand("goLineUp")}e.scrollTo(null,t.top-e.defaultTextHeight())},t.scrollLineDown=function(e){var t=e.getScrollInfo();if(!e.somethingSelected()){var n=e.lineAtHeight(t.top,"local")+1;e.getCursor().line<=n&&e.execCommand("goLineDown")}e.scrollTo(null,t.top+e.defaultTextHeight())},t.splitSelectionByLine=function(e){for(var t=e.listSelections(),r=[],i=0;io.line&&a==l.line&&0==l.ch||r.push({anchor:a==o.line?o:n(a,0),head:a==l.line?l:n(a)});e.setSelections(r,0)},t.singleSelectionTop=function(e){var t=e.listSelections()[0];e.setSelection(t.anchor,t.head,{scroll:!1})},t.selectLine=function(e){for(var t=e.listSelections(),r=[],i=0;i=0;a--){var c=r[i[a]];if(!(s&&e.cmpPos(c.head,s)>0)){var f=l(t,c.head);s=f.from,t.replaceRange(n(f.word),f.from,f.to)}}}))}function g(t){var n=t.getCursor("from"),r=t.getCursor("to");if(0==e.cmpPos(n,r)){var i=l(t,n);if(!i.word)return;n=i.from,r=i.to}return{from:n,to:r,query:t.getRange(n,r),word:i}}function p(e,t){var r=g(e);if(r){var i=r.query,o=e.getSearchCursor(i,t?r.to:r.from);(t?o.findNext():o.findPrevious())?e.setSelection(o.from(),o.to()):(o=e.getSearchCursor(i,t?n(e.firstLine(),0):e.clipPos(n(e.lastLine()))),(t?o.findNext():o.findPrevious())?e.setSelection(o.from(),o.to()):r.word&&e.setSelection(r.from,r.to))}}a(u,"selectBetweenBrackets"),t.selectScope=function(e){u(e)||e.execCommand("selectAll")},t.selectBetweenBrackets=function(t){if(!u(t))return e.Pass},a(h,"puncType"),t.goToBracket=function(t){t.extendSelectionsBy((function(r){var i=t.scanForBracket(r.head,1,h(t.getTokenTypeAt(r.head)));if(i&&0!=e.cmpPos(i.pos,r.head))return i.pos;var o=t.scanForBracket(r.head,-1,h(t.getTokenTypeAt(n(r.head.line,r.head.ch+1))));return o&&n(o.pos.line,o.pos.ch+1)||r.head}))},t.swapLineUp=function(t){if(t.isReadOnly())return e.Pass;for(var r=t.listSelections(),i=[],o=t.firstLine()-1,l=[],a=0;ao?i.push(c,f):i.length&&(i[i.length-1]=f),o=f}t.operation((function(){for(var e=0;et.lastLine()?t.replaceRange("\n"+a,n(t.lastLine()),null,"+swapLine"):t.replaceRange(a+"\n",n(o,0),null,"+swapLine")}t.setSelections(l),t.scrollIntoView()}))},t.swapLineDown=function(t){if(t.isReadOnly())return e.Pass;for(var r=t.listSelections(),i=[],o=t.lastLine()+1,l=r.length-1;l>=0;l--){var a=r[l],s=a.to().line+1,c=a.from().line;0==a.to().ch&&!a.empty()&&s--,s=0;e-=2){var r=i[e],o=i[e+1],l=t.getLine(r);r==t.lastLine()?t.replaceRange("",n(r-1),n(r),"+swapLine"):t.replaceRange("",n(r,0),n(r+1,0),"+swapLine"),t.replaceRange(l+"\n",n(o,0),null,"+swapLine")}t.scrollIntoView()}))},t.toggleCommentIndented=function(e){e.toggleComment({indent:!0})},t.joinLines=function(e){for(var t=e.listSelections(),r=[],i=0;i=0;o--){var l=r[o].head,a=t.getRange({line:l.line,ch:0},l),s=e.countColumn(a,null,t.getOption("tabSize")),c=t.findPosH(l,-1,"char",!1);if(a&&!/\S/.test(a)&&s%i==0){var f=new n(l.line,e.findColumn(a,s-i,i));f.ch!=l.ch&&(c=f)}t.replaceRange("",c,l,"+delete")}}))},t.delLineRight=function(e){e.operation((function(){for(var t=e.listSelections(),r=t.length-1;r>=0;r--)e.replaceRange("",t[r].anchor,n(t[r].to().line),"+delete");e.scrollIntoView()}))},t.upcaseAtCursor=function(e){m(e,(function(e){return e.toUpperCase()}))},t.downcaseAtCursor=function(e){m(e,(function(e){return e.toLowerCase()}))},t.setSublimeMark=function(e){e.state.sublimeMark&&e.state.sublimeMark.clear(),e.state.sublimeMark=e.setBookmark(e.getCursor())},t.selectToSublimeMark=function(e){var t=e.state.sublimeMark&&e.state.sublimeMark.find();t&&e.setSelection(e.getCursor(),t)},t.deleteToSublimeMark=function(t){var n=t.state.sublimeMark&&t.state.sublimeMark.find();if(n){var r=t.getCursor(),i=n;if(e.cmpPos(r,i)>0){var o=i;i=r,r=o}t.state.sublimeKilled=t.getRange(r,i),t.replaceRange("",r,i)}},t.swapWithSublimeMark=function(e){var t=e.state.sublimeMark&&e.state.sublimeMark.find();t&&(e.state.sublimeMark.clear(),e.state.sublimeMark=e.setBookmark(e.getCursor()),e.setCursor(t))},t.sublimeYank=function(e){null!=e.state.sublimeKilled&&e.replaceSelection(e.state.sublimeKilled,null,"paste")},t.showInCenter=function(e){var t=e.cursorCoords(null,"local");e.scrollTo(null,(t.top+t.bottom)/2-e.getScrollInfo().clientHeight/2)},a(g,"getTarget"),a(p,"findAndGoTo"),t.findUnder=function(e){p(e,!0)},t.findUnderPrevious=function(e){p(e,!1)},t.findAllUnder=function(e){var t=g(e);if(t){for(var n=e.getSearchCursor(t.query),r=[],i=-1;n.findNext();)r.push({anchor:n.from(),head:n.to()}),n.from().line<=t.from.line&&n.from().ch<=t.from.ch&&i++;e.setSelections(r,i)}};var C=e.keyMap;C.macSublime={"Cmd-Left":"goLineStartSmart","Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-Left":"goSubwordLeft","Ctrl-Right":"goSubwordRight","Ctrl-Alt-Up":"scrollLineUp","Ctrl-Alt-Down":"scrollLineDown","Cmd-L":"selectLine","Shift-Cmd-L":"splitSelectionByLine",Esc:"singleSelectionTop","Cmd-Enter":"insertLineAfter","Shift-Cmd-Enter":"insertLineBefore","Cmd-D":"selectNextOccurrence","Shift-Cmd-Space":"selectScope","Shift-Cmd-M":"selectBetweenBrackets","Cmd-M":"goToBracket","Cmd-Ctrl-Up":"swapLineUp","Cmd-Ctrl-Down":"swapLineDown","Cmd-/":"toggleCommentIndented","Cmd-J":"joinLines","Shift-Cmd-D":"duplicateLine",F5:"sortLines","Shift-F5":"reverseSortLines","Cmd-F5":"sortLinesInsensitive","Shift-Cmd-F5":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Cmd-F2":"toggleBookmark","Shift-Cmd-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Cmd-K Cmd-D":"skipAndSelectNextOccurrence","Cmd-K Cmd-K":"delLineRight","Cmd-K Cmd-U":"upcaseAtCursor","Cmd-K Cmd-L":"downcaseAtCursor","Cmd-K Cmd-Space":"setSublimeMark","Cmd-K Cmd-A":"selectToSublimeMark","Cmd-K Cmd-W":"deleteToSublimeMark","Cmd-K Cmd-X":"swapWithSublimeMark","Cmd-K Cmd-Y":"sublimeYank","Cmd-K Cmd-C":"showInCenter","Cmd-K Cmd-G":"clearBookmarks","Cmd-K Cmd-Backspace":"delLineLeft","Cmd-K Cmd-1":"foldAll","Cmd-K Cmd-0":"unfoldAll","Cmd-K Cmd-J":"unfoldAll","Ctrl-Shift-Up":"addCursorToPrevLine","Ctrl-Shift-Down":"addCursorToNextLine","Cmd-F3":"findUnder","Shift-Cmd-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Cmd-[":"fold","Shift-Cmd-]":"unfold","Cmd-I":"findIncremental","Shift-Cmd-I":"findIncrementalReverse","Cmd-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"macDefault"},e.normalizeKeyMap(C.macSublime),C.pcSublime={"Shift-Tab":"indentLess","Shift-Ctrl-K":"deleteLine","Alt-Q":"wrapLines","Ctrl-T":"transposeChars","Alt-Left":"goSubwordLeft","Alt-Right":"goSubwordRight","Ctrl-Up":"scrollLineUp","Ctrl-Down":"scrollLineDown","Ctrl-L":"selectLine","Shift-Ctrl-L":"splitSelectionByLine",Esc:"singleSelectionTop","Ctrl-Enter":"insertLineAfter","Shift-Ctrl-Enter":"insertLineBefore","Ctrl-D":"selectNextOccurrence","Shift-Ctrl-Space":"selectScope","Shift-Ctrl-M":"selectBetweenBrackets","Ctrl-M":"goToBracket","Shift-Ctrl-Up":"swapLineUp","Shift-Ctrl-Down":"swapLineDown","Ctrl-/":"toggleCommentIndented","Ctrl-J":"joinLines","Shift-Ctrl-D":"duplicateLine",F9:"sortLines","Shift-F9":"reverseSortLines","Ctrl-F9":"sortLinesInsensitive","Shift-Ctrl-F9":"reverseSortLinesInsensitive",F2:"nextBookmark","Shift-F2":"prevBookmark","Ctrl-F2":"toggleBookmark","Shift-Ctrl-F2":"clearBookmarks","Alt-F2":"selectBookmarks",Backspace:"smartBackspace","Ctrl-K Ctrl-D":"skipAndSelectNextOccurrence","Ctrl-K Ctrl-K":"delLineRight","Ctrl-K Ctrl-U":"upcaseAtCursor","Ctrl-K Ctrl-L":"downcaseAtCursor","Ctrl-K Ctrl-Space":"setSublimeMark","Ctrl-K Ctrl-A":"selectToSublimeMark","Ctrl-K Ctrl-W":"deleteToSublimeMark","Ctrl-K Ctrl-X":"swapWithSublimeMark","Ctrl-K Ctrl-Y":"sublimeYank","Ctrl-K Ctrl-C":"showInCenter","Ctrl-K Ctrl-G":"clearBookmarks","Ctrl-K Ctrl-Backspace":"delLineLeft","Ctrl-K Ctrl-1":"foldAll","Ctrl-K Ctrl-0":"unfoldAll","Ctrl-K Ctrl-J":"unfoldAll","Ctrl-Alt-Up":"addCursorToPrevLine","Ctrl-Alt-Down":"addCursorToNextLine","Ctrl-F3":"findUnder","Shift-Ctrl-F3":"findUnderPrevious","Alt-F3":"findAllUnder","Shift-Ctrl-[":"fold","Shift-Ctrl-]":"unfold","Ctrl-I":"findIncremental","Shift-Ctrl-I":"findIncrementalReverse","Ctrl-H":"replace",F3:"findNext","Shift-F3":"findPrev",fallthrough:"pcDefault"},e.normalizeKeyMap(C.pcSublime);var v=C.default==C.macDefault;C.sublime=v?C.macSublime:C.pcSublime}((0,r.r)(),(0,i.r)(),(0,o.r)());var c={},f=s({__proto__:null,default:(0,r.g)(c)},[c])}}]); -//# sourceMappingURL=142.611662c0.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/142.611662c0.chunk.js.map b/serv/web/build/static/js/142.611662c0.chunk.js.map deleted file mode 100644 index ae4f8d82..00000000 --- a/serv/web/build/static/js/142.611662c0.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/142.611662c0.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/edit/matchbrackets.js","../node_modules/node_modules/codemirror/addon/search/searchcursor.js","../node_modules/node_modules/codemirror/keymap/sublime.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n var ie_lt8 = /MSIE \\d/.test(navigator.userAgent) &&\n (document.documentMode == null || document.documentMode < 8);\n\n var Pos = CodeMirror.Pos;\n\n var matching = {\"(\": \")>\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\", \"<\": \">>\", \">\": \"<<\"};\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor\n if (afterCursor == null)\n afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n var re = bracketRegex(config)\n\n // A cursor is defined as between two characters, but in in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) ||\n re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = bracketRegex(config)\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined ||\n (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && (match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets)\n cm.off(\"blur\", clearHighlighted)\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets)\n cm.on(\"blur\", clearHighlighted)\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig){\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {strict: true} : null\n } else {\n oldConfig.strict = config\n config = oldConfig\n }\n }\n return findMatchingBracket(this, pos, config)\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.afterEmptyMatch = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n if (this.afterEmptyMatch && this.atOccurrence) {\n // do not return the same 0 width match twice\n head = Pos(head.line, head.ch)\n if (reverse) {\n head.ch--;\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false\n }\n }\n var result = this.matches(reverse, head)\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// A rough approximation of Sublime Text's keybindings\n// Depends on addon/search/searchcursor.js and optionally addon/dialog/dialogs.js\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../lib/codemirror\"), require(\"../addon/search/searchcursor\"), require(\"../addon/edit/matchbrackets\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../lib/codemirror\", \"../addon/search/searchcursor\", \"../addon/edit/matchbrackets\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var cmds = CodeMirror.commands;\n var Pos = CodeMirror.Pos;\n\n // This is not exactly Sublime's algorithm. I couldn't make heads or tails of that.\n function findPosSubword(doc, start, dir) {\n if (dir < 0 && start.ch == 0) return doc.clipPos(Pos(start.line - 1));\n var line = doc.getLine(start.line);\n if (dir > 0 && start.ch >= line.length) return doc.clipPos(Pos(start.line + 1, 0));\n var state = \"start\", type, startPos = start.ch;\n for (var pos = startPos, e = dir < 0 ? 0 : line.length, i = 0; pos != e; pos += dir, i++) {\n var next = line.charAt(dir < 0 ? pos - 1 : pos);\n var cat = next != \"_\" && CodeMirror.isWordChar(next) ? \"w\" : \"o\";\n if (cat == \"w\" && next.toUpperCase() == next) cat = \"W\";\n if (state == \"start\") {\n if (cat != \"o\") { state = \"in\"; type = cat; }\n else startPos = pos + dir\n } else if (state == \"in\") {\n if (type != cat) {\n if (type == \"w\" && cat == \"W\" && dir < 0) pos--;\n if (type == \"W\" && cat == \"w\" && dir > 0) { // From uppercase to lowercase\n if (pos == startPos + 1) { type = \"w\"; continue; }\n else pos--;\n }\n break;\n }\n }\n }\n return Pos(start.line, pos);\n }\n\n function moveSubword(cm, dir) {\n cm.extendSelectionsBy(function(range) {\n if (cm.display.shift || cm.doc.extend || range.empty())\n return findPosSubword(cm.doc, range.head, dir);\n else\n return dir < 0 ? range.from() : range.to();\n });\n }\n\n cmds.goSubwordLeft = function(cm) { moveSubword(cm, -1); };\n cmds.goSubwordRight = function(cm) { moveSubword(cm, 1); };\n\n cmds.scrollLineUp = function(cm) {\n var info = cm.getScrollInfo();\n if (!cm.somethingSelected()) {\n var visibleBottomLine = cm.lineAtHeight(info.top + info.clientHeight, \"local\");\n if (cm.getCursor().line >= visibleBottomLine)\n cm.execCommand(\"goLineUp\");\n }\n cm.scrollTo(null, info.top - cm.defaultTextHeight());\n };\n cmds.scrollLineDown = function(cm) {\n var info = cm.getScrollInfo();\n if (!cm.somethingSelected()) {\n var visibleTopLine = cm.lineAtHeight(info.top, \"local\")+1;\n if (cm.getCursor().line <= visibleTopLine)\n cm.execCommand(\"goLineDown\");\n }\n cm.scrollTo(null, info.top + cm.defaultTextHeight());\n };\n\n cmds.splitSelectionByLine = function(cm) {\n var ranges = cm.listSelections(), lineRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(), to = ranges[i].to();\n for (var line = from.line; line <= to.line; ++line)\n if (!(to.line > from.line && line == to.line && to.ch == 0))\n lineRanges.push({anchor: line == from.line ? from : Pos(line, 0),\n head: line == to.line ? to : Pos(line)});\n }\n cm.setSelections(lineRanges, 0);\n };\n\n cmds.singleSelectionTop = function(cm) {\n var range = cm.listSelections()[0];\n cm.setSelection(range.anchor, range.head, {scroll: false});\n };\n\n cmds.selectLine = function(cm) {\n var ranges = cm.listSelections(), extended = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n extended.push({anchor: Pos(range.from().line, 0),\n head: Pos(range.to().line + 1, 0)});\n }\n cm.setSelections(extended);\n };\n\n function insertLine(cm, above) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n cm.operation(function() {\n var len = cm.listSelections().length, newSelection = [], last = -1;\n for (var i = 0; i < len; i++) {\n var head = cm.listSelections()[i].head;\n if (head.line <= last) continue;\n var at = Pos(head.line + (above ? 0 : 1), 0);\n cm.replaceRange(\"\\n\", at, null, \"+insertLine\");\n cm.indentLine(at.line, null, true);\n newSelection.push({head: at, anchor: at});\n last = head.line + 1;\n }\n cm.setSelections(newSelection);\n });\n cm.execCommand(\"indentAuto\");\n }\n\n cmds.insertLineAfter = function(cm) { return insertLine(cm, false); };\n\n cmds.insertLineBefore = function(cm) { return insertLine(cm, true); };\n\n function wordAt(cm, pos) {\n var start = pos.ch, end = start, line = cm.getLine(pos.line);\n while (start && CodeMirror.isWordChar(line.charAt(start - 1))) --start;\n while (end < line.length && CodeMirror.isWordChar(line.charAt(end))) ++end;\n return {from: Pos(pos.line, start), to: Pos(pos.line, end), word: line.slice(start, end)};\n }\n\n cmds.selectNextOccurrence = function(cm) {\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n var fullWord = cm.state.sublimeFindFullWord == cm.doc.sel;\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n cm.setSelection(word.from, word.to);\n fullWord = true;\n } else {\n var text = cm.getRange(from, to);\n var query = fullWord ? new RegExp(\"\\\\b\" + text + \"\\\\b\") : text;\n var cur = cm.getSearchCursor(query, to);\n var found = cur.findNext();\n if (!found) {\n cur = cm.getSearchCursor(query, Pos(cm.firstLine(), 0));\n found = cur.findNext();\n }\n if (!found || isSelectedRange(cm.listSelections(), cur.from(), cur.to())) return\n cm.addSelection(cur.from(), cur.to());\n }\n if (fullWord)\n cm.state.sublimeFindFullWord = cm.doc.sel;\n };\n\n cmds.skipAndSelectNextOccurrence = function(cm) {\n var prevAnchor = cm.getCursor(\"anchor\"), prevHead = cm.getCursor(\"head\");\n cmds.selectNextOccurrence(cm);\n if (CodeMirror.cmpPos(prevAnchor, prevHead) != 0) {\n cm.doc.setSelections(cm.doc.listSelections()\n .filter(function (sel) {\n return sel.anchor != prevAnchor || sel.head != prevHead;\n }));\n }\n }\n\n function addCursorToSelection(cm, dir) {\n var ranges = cm.listSelections(), newRanges = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n var newAnchor = cm.findPosV(\n range.anchor, dir, \"line\", range.anchor.goalColumn);\n var newHead = cm.findPosV(\n range.head, dir, \"line\", range.head.goalColumn);\n newAnchor.goalColumn = range.anchor.goalColumn != null ?\n range.anchor.goalColumn : cm.cursorCoords(range.anchor, \"div\").left;\n newHead.goalColumn = range.head.goalColumn != null ?\n range.head.goalColumn : cm.cursorCoords(range.head, \"div\").left;\n var newRange = {anchor: newAnchor, head: newHead};\n newRanges.push(range);\n newRanges.push(newRange);\n }\n cm.setSelections(newRanges);\n }\n cmds.addCursorToPrevLine = function(cm) { addCursorToSelection(cm, -1); };\n cmds.addCursorToNextLine = function(cm) { addCursorToSelection(cm, 1); };\n\n function isSelectedRange(ranges, from, to) {\n for (var i = 0; i < ranges.length; i++)\n if (CodeMirror.cmpPos(ranges[i].from(), from) == 0 &&\n CodeMirror.cmpPos(ranges[i].to(), to) == 0) return true\n return false\n }\n\n var mirror = \"(){}[]\";\n function selectBetweenBrackets(cm) {\n var ranges = cm.listSelections(), newRanges = []\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], pos = range.head, opening = cm.scanForBracket(pos, -1);\n if (!opening) return false;\n for (;;) {\n var closing = cm.scanForBracket(pos, 1);\n if (!closing) return false;\n if (closing.ch == mirror.charAt(mirror.indexOf(opening.ch) + 1)) {\n var startPos = Pos(opening.pos.line, opening.pos.ch + 1);\n if (CodeMirror.cmpPos(startPos, range.from()) == 0 &&\n CodeMirror.cmpPos(closing.pos, range.to()) == 0) {\n opening = cm.scanForBracket(opening.pos, -1);\n if (!opening) return false;\n } else {\n newRanges.push({anchor: startPos, head: closing.pos});\n break;\n }\n }\n pos = Pos(closing.pos.line, closing.pos.ch + 1);\n }\n }\n cm.setSelections(newRanges);\n return true;\n }\n\n cmds.selectScope = function(cm) {\n selectBetweenBrackets(cm) || cm.execCommand(\"selectAll\");\n };\n cmds.selectBetweenBrackets = function(cm) {\n if (!selectBetweenBrackets(cm)) return CodeMirror.Pass;\n };\n\n function puncType(type) {\n return !type ? null : /\\bpunctuation\\b/.test(type) ? type : undefined\n }\n\n cmds.goToBracket = function(cm) {\n cm.extendSelectionsBy(function(range) {\n var next = cm.scanForBracket(range.head, 1, puncType(cm.getTokenTypeAt(range.head)));\n if (next && CodeMirror.cmpPos(next.pos, range.head) != 0) return next.pos;\n var prev = cm.scanForBracket(range.head, -1, puncType(cm.getTokenTypeAt(Pos(range.head.line, range.head.ch + 1))));\n return prev && Pos(prev.pos.line, prev.pos.ch + 1) || range.head;\n });\n };\n\n cmds.swapLineUp = function(cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), linesToMove = [], at = cm.firstLine() - 1, newSels = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], from = range.from().line - 1, to = range.to().line;\n newSels.push({anchor: Pos(range.anchor.line - 1, range.anchor.ch),\n head: Pos(range.head.line - 1, range.head.ch)});\n if (range.to().ch == 0 && !range.empty()) --to;\n if (from > at) linesToMove.push(from, to);\n else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n cm.operation(function() {\n for (var i = 0; i < linesToMove.length; i += 2) {\n var from = linesToMove[i], to = linesToMove[i + 1];\n var line = cm.getLine(from);\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n if (to > cm.lastLine())\n cm.replaceRange(\"\\n\" + line, Pos(cm.lastLine()), null, \"+swapLine\");\n else\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n cm.setSelections(newSels);\n cm.scrollIntoView();\n });\n };\n\n cmds.swapLineDown = function(cm) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), linesToMove = [], at = cm.lastLine() + 1;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var range = ranges[i], from = range.to().line + 1, to = range.from().line;\n if (range.to().ch == 0 && !range.empty()) from--;\n if (from < at) linesToMove.push(from, to);\n else if (linesToMove.length) linesToMove[linesToMove.length - 1] = to;\n at = to;\n }\n cm.operation(function() {\n for (var i = linesToMove.length - 2; i >= 0; i -= 2) {\n var from = linesToMove[i], to = linesToMove[i + 1];\n var line = cm.getLine(from);\n if (from == cm.lastLine())\n cm.replaceRange(\"\", Pos(from - 1), Pos(from), \"+swapLine\");\n else\n cm.replaceRange(\"\", Pos(from, 0), Pos(from + 1, 0), \"+swapLine\");\n cm.replaceRange(line + \"\\n\", Pos(to, 0), null, \"+swapLine\");\n }\n cm.scrollIntoView();\n });\n };\n\n cmds.toggleCommentIndented = function(cm) {\n cm.toggleComment({ indent: true });\n }\n\n cmds.joinLines = function(cm) {\n var ranges = cm.listSelections(), joined = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], from = range.from();\n var start = from.line, end = range.to().line;\n while (i < ranges.length - 1 && ranges[i + 1].from().line == end)\n end = ranges[++i].to().line;\n joined.push({start: start, end: end, anchor: !range.empty() && from});\n }\n cm.operation(function() {\n var offset = 0, ranges = [];\n for (var i = 0; i < joined.length; i++) {\n var obj = joined[i];\n var anchor = obj.anchor && Pos(obj.anchor.line - offset, obj.anchor.ch), head;\n for (var line = obj.start; line <= obj.end; line++) {\n var actual = line - offset;\n if (line == obj.end) head = Pos(actual, cm.getLine(actual).length + 1);\n if (actual < cm.lastLine()) {\n cm.replaceRange(\" \", Pos(actual), Pos(actual + 1, /^\\s*/.exec(cm.getLine(actual + 1))[0].length));\n ++offset;\n }\n }\n ranges.push({anchor: anchor || head, head: head});\n }\n cm.setSelections(ranges, 0);\n });\n };\n\n cmds.duplicateLine = function(cm) {\n cm.operation(function() {\n var rangeCount = cm.listSelections().length;\n for (var i = 0; i < rangeCount; i++) {\n var range = cm.listSelections()[i];\n if (range.empty())\n cm.replaceRange(cm.getLine(range.head.line) + \"\\n\", Pos(range.head.line, 0));\n else\n cm.replaceRange(cm.getRange(range.from(), range.to()), range.from());\n }\n cm.scrollIntoView();\n });\n };\n\n\n function sortLines(cm, caseSensitive, direction) {\n if (cm.isReadOnly()) return CodeMirror.Pass\n var ranges = cm.listSelections(), toSort = [], selected;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) continue;\n var from = range.from().line, to = range.to().line;\n while (i < ranges.length - 1 && ranges[i + 1].from().line == to)\n to = ranges[++i].to().line;\n if (!ranges[i].to().ch) to--;\n toSort.push(from, to);\n }\n if (toSort.length) selected = true;\n else toSort.push(cm.firstLine(), cm.lastLine());\n\n cm.operation(function() {\n var ranges = [];\n for (var i = 0; i < toSort.length; i += 2) {\n var from = toSort[i], to = toSort[i + 1];\n var start = Pos(from, 0), end = Pos(to);\n var lines = cm.getRange(start, end, false);\n if (caseSensitive)\n lines.sort(function(a, b) { return a < b ? -direction : a == b ? 0 : direction; });\n else\n lines.sort(function(a, b) {\n var au = a.toUpperCase(), bu = b.toUpperCase();\n if (au != bu) { a = au; b = bu; }\n return a < b ? -direction : a == b ? 0 : direction;\n });\n cm.replaceRange(lines, start, end);\n if (selected) ranges.push({anchor: start, head: Pos(to + 1, 0)});\n }\n if (selected) cm.setSelections(ranges, 0);\n });\n }\n\n cmds.sortLines = function(cm) { sortLines(cm, true, 1); };\n cmds.reverseSortLines = function(cm) { sortLines(cm, true, -1); };\n cmds.sortLinesInsensitive = function(cm) { sortLines(cm, false, 1); };\n cmds.reverseSortLinesInsensitive = function(cm) { sortLines(cm, false, -1); };\n\n cmds.nextBookmark = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n var current = marks.shift();\n var found = current.find();\n if (found) {\n marks.push(current);\n return cm.setSelection(found.from, found.to);\n }\n }\n };\n\n cmds.prevBookmark = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) while (marks.length) {\n marks.unshift(marks.pop());\n var found = marks[marks.length - 1].find();\n if (!found)\n marks.pop();\n else\n return cm.setSelection(found.from, found.to);\n }\n };\n\n cmds.toggleBookmark = function(cm) {\n var ranges = cm.listSelections();\n var marks = cm.state.sublimeBookmarks || (cm.state.sublimeBookmarks = []);\n for (var i = 0; i < ranges.length; i++) {\n var from = ranges[i].from(), to = ranges[i].to();\n var found = ranges[i].empty() ? cm.findMarksAt(from) : cm.findMarks(from, to);\n for (var j = 0; j < found.length; j++) {\n if (found[j].sublimeBookmark) {\n found[j].clear();\n for (var k = 0; k < marks.length; k++)\n if (marks[k] == found[j])\n marks.splice(k--, 1);\n break;\n }\n }\n if (j == found.length)\n marks.push(cm.markText(from, to, {sublimeBookmark: true, clearWhenEmpty: false}));\n }\n };\n\n cmds.clearBookmarks = function(cm) {\n var marks = cm.state.sublimeBookmarks;\n if (marks) for (var i = 0; i < marks.length; i++) marks[i].clear();\n marks.length = 0;\n };\n\n cmds.selectBookmarks = function(cm) {\n var marks = cm.state.sublimeBookmarks, ranges = [];\n if (marks) for (var i = 0; i < marks.length; i++) {\n var found = marks[i].find();\n if (!found)\n marks.splice(i--, 0);\n else\n ranges.push({anchor: found.from, head: found.to});\n }\n if (ranges.length)\n cm.setSelections(ranges, 0);\n };\n\n function modifyWordOrSelection(cm, mod) {\n cm.operation(function() {\n var ranges = cm.listSelections(), indices = [], replacements = [];\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (range.empty()) { indices.push(i); replacements.push(\"\"); }\n else replacements.push(mod(cm.getRange(range.from(), range.to())));\n }\n cm.replaceSelections(replacements, \"around\", \"case\");\n for (var i = indices.length - 1, at; i >= 0; i--) {\n var range = ranges[indices[i]];\n if (at && CodeMirror.cmpPos(range.head, at) > 0) continue;\n var word = wordAt(cm, range.head);\n at = word.from;\n cm.replaceRange(mod(word.word), word.from, word.to);\n }\n });\n }\n\n cmds.smartBackspace = function(cm) {\n if (cm.somethingSelected()) return CodeMirror.Pass;\n\n cm.operation(function() {\n var cursors = cm.listSelections();\n var indentUnit = cm.getOption(\"indentUnit\");\n\n for (var i = cursors.length - 1; i >= 0; i--) {\n var cursor = cursors[i].head;\n var toStartOfLine = cm.getRange({line: cursor.line, ch: 0}, cursor);\n var column = CodeMirror.countColumn(toStartOfLine, null, cm.getOption(\"tabSize\"));\n\n // Delete by one character by default\n var deletePos = cm.findPosH(cursor, -1, \"char\", false);\n\n if (toStartOfLine && !/\\S/.test(toStartOfLine) && column % indentUnit == 0) {\n var prevIndent = new Pos(cursor.line,\n CodeMirror.findColumn(toStartOfLine, column - indentUnit, indentUnit));\n\n // Smart delete only if we found a valid prevIndent location\n if (prevIndent.ch != cursor.ch) deletePos = prevIndent;\n }\n\n cm.replaceRange(\"\", deletePos, cursor, \"+delete\");\n }\n });\n };\n\n cmds.delLineRight = function(cm) {\n cm.operation(function() {\n var ranges = cm.listSelections();\n for (var i = ranges.length - 1; i >= 0; i--)\n cm.replaceRange(\"\", ranges[i].anchor, Pos(ranges[i].to().line), \"+delete\");\n cm.scrollIntoView();\n });\n };\n\n cmds.upcaseAtCursor = function(cm) {\n modifyWordOrSelection(cm, function(str) { return str.toUpperCase(); });\n };\n cmds.downcaseAtCursor = function(cm) {\n modifyWordOrSelection(cm, function(str) { return str.toLowerCase(); });\n };\n\n cmds.setSublimeMark = function(cm) {\n if (cm.state.sublimeMark) cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n };\n cmds.selectToSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) cm.setSelection(cm.getCursor(), found);\n };\n cmds.deleteToSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) {\n var from = cm.getCursor(), to = found;\n if (CodeMirror.cmpPos(from, to) > 0) { var tmp = to; to = from; from = tmp; }\n cm.state.sublimeKilled = cm.getRange(from, to);\n cm.replaceRange(\"\", from, to);\n }\n };\n cmds.swapWithSublimeMark = function(cm) {\n var found = cm.state.sublimeMark && cm.state.sublimeMark.find();\n if (found) {\n cm.state.sublimeMark.clear();\n cm.state.sublimeMark = cm.setBookmark(cm.getCursor());\n cm.setCursor(found);\n }\n };\n cmds.sublimeYank = function(cm) {\n if (cm.state.sublimeKilled != null)\n cm.replaceSelection(cm.state.sublimeKilled, null, \"paste\");\n };\n\n cmds.showInCenter = function(cm) {\n var pos = cm.cursorCoords(null, \"local\");\n cm.scrollTo(null, (pos.top + pos.bottom) / 2 - cm.getScrollInfo().clientHeight / 2);\n };\n\n function getTarget(cm) {\n var from = cm.getCursor(\"from\"), to = cm.getCursor(\"to\");\n if (CodeMirror.cmpPos(from, to) == 0) {\n var word = wordAt(cm, from);\n if (!word.word) return;\n from = word.from;\n to = word.to;\n }\n return {from: from, to: to, query: cm.getRange(from, to), word: word};\n }\n\n function findAndGoTo(cm, forward) {\n var target = getTarget(cm);\n if (!target) return;\n var query = target.query;\n var cur = cm.getSearchCursor(query, forward ? target.to : target.from);\n\n if (forward ? cur.findNext() : cur.findPrevious()) {\n cm.setSelection(cur.from(), cur.to());\n } else {\n cur = cm.getSearchCursor(query, forward ? Pos(cm.firstLine(), 0)\n : cm.clipPos(Pos(cm.lastLine())));\n if (forward ? cur.findNext() : cur.findPrevious())\n cm.setSelection(cur.from(), cur.to());\n else if (target.word)\n cm.setSelection(target.from, target.to);\n }\n };\n cmds.findUnder = function(cm) { findAndGoTo(cm, true); };\n cmds.findUnderPrevious = function(cm) { findAndGoTo(cm,false); };\n cmds.findAllUnder = function(cm) {\n var target = getTarget(cm);\n if (!target) return;\n var cur = cm.getSearchCursor(target.query);\n var matches = [];\n var primaryIndex = -1;\n while (cur.findNext()) {\n matches.push({anchor: cur.from(), head: cur.to()});\n if (cur.from().line <= target.from.line && cur.from().ch <= target.from.ch)\n primaryIndex++;\n }\n cm.setSelections(matches, primaryIndex);\n };\n\n\n var keyMap = CodeMirror.keyMap;\n keyMap.macSublime = {\n \"Cmd-Left\": \"goLineStartSmart\",\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-Left\": \"goSubwordLeft\",\n \"Ctrl-Right\": \"goSubwordRight\",\n \"Ctrl-Alt-Up\": \"scrollLineUp\",\n \"Ctrl-Alt-Down\": \"scrollLineDown\",\n \"Cmd-L\": \"selectLine\",\n \"Shift-Cmd-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Cmd-Enter\": \"insertLineAfter\",\n \"Shift-Cmd-Enter\": \"insertLineBefore\",\n \"Cmd-D\": \"selectNextOccurrence\",\n \"Shift-Cmd-Space\": \"selectScope\",\n \"Shift-Cmd-M\": \"selectBetweenBrackets\",\n \"Cmd-M\": \"goToBracket\",\n \"Cmd-Ctrl-Up\": \"swapLineUp\",\n \"Cmd-Ctrl-Down\": \"swapLineDown\",\n \"Cmd-/\": \"toggleCommentIndented\",\n \"Cmd-J\": \"joinLines\",\n \"Shift-Cmd-D\": \"duplicateLine\",\n \"F5\": \"sortLines\",\n \"Shift-F5\": \"reverseSortLines\",\n \"Cmd-F5\": \"sortLinesInsensitive\",\n \"Shift-Cmd-F5\": \"reverseSortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Cmd-F2\": \"toggleBookmark\",\n \"Shift-Cmd-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Cmd-K Cmd-D\": \"skipAndSelectNextOccurrence\",\n \"Cmd-K Cmd-K\": \"delLineRight\",\n \"Cmd-K Cmd-U\": \"upcaseAtCursor\",\n \"Cmd-K Cmd-L\": \"downcaseAtCursor\",\n \"Cmd-K Cmd-Space\": \"setSublimeMark\",\n \"Cmd-K Cmd-A\": \"selectToSublimeMark\",\n \"Cmd-K Cmd-W\": \"deleteToSublimeMark\",\n \"Cmd-K Cmd-X\": \"swapWithSublimeMark\",\n \"Cmd-K Cmd-Y\": \"sublimeYank\",\n \"Cmd-K Cmd-C\": \"showInCenter\",\n \"Cmd-K Cmd-G\": \"clearBookmarks\",\n \"Cmd-K Cmd-Backspace\": \"delLineLeft\",\n \"Cmd-K Cmd-1\": \"foldAll\",\n \"Cmd-K Cmd-0\": \"unfoldAll\",\n \"Cmd-K Cmd-J\": \"unfoldAll\",\n \"Ctrl-Shift-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Shift-Down\": \"addCursorToNextLine\",\n \"Cmd-F3\": \"findUnder\",\n \"Shift-Cmd-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Cmd-[\": \"fold\",\n \"Shift-Cmd-]\": \"unfold\",\n \"Cmd-I\": \"findIncremental\",\n \"Shift-Cmd-I\": \"findIncrementalReverse\",\n \"Cmd-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"macDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.macSublime);\n\n keyMap.pcSublime = {\n \"Shift-Tab\": \"indentLess\",\n \"Shift-Ctrl-K\": \"deleteLine\",\n \"Alt-Q\": \"wrapLines\",\n \"Ctrl-T\": \"transposeChars\",\n \"Alt-Left\": \"goSubwordLeft\",\n \"Alt-Right\": \"goSubwordRight\",\n \"Ctrl-Up\": \"scrollLineUp\",\n \"Ctrl-Down\": \"scrollLineDown\",\n \"Ctrl-L\": \"selectLine\",\n \"Shift-Ctrl-L\": \"splitSelectionByLine\",\n \"Esc\": \"singleSelectionTop\",\n \"Ctrl-Enter\": \"insertLineAfter\",\n \"Shift-Ctrl-Enter\": \"insertLineBefore\",\n \"Ctrl-D\": \"selectNextOccurrence\",\n \"Shift-Ctrl-Space\": \"selectScope\",\n \"Shift-Ctrl-M\": \"selectBetweenBrackets\",\n \"Ctrl-M\": \"goToBracket\",\n \"Shift-Ctrl-Up\": \"swapLineUp\",\n \"Shift-Ctrl-Down\": \"swapLineDown\",\n \"Ctrl-/\": \"toggleCommentIndented\",\n \"Ctrl-J\": \"joinLines\",\n \"Shift-Ctrl-D\": \"duplicateLine\",\n \"F9\": \"sortLines\",\n \"Shift-F9\": \"reverseSortLines\",\n \"Ctrl-F9\": \"sortLinesInsensitive\",\n \"Shift-Ctrl-F9\": \"reverseSortLinesInsensitive\",\n \"F2\": \"nextBookmark\",\n \"Shift-F2\": \"prevBookmark\",\n \"Ctrl-F2\": \"toggleBookmark\",\n \"Shift-Ctrl-F2\": \"clearBookmarks\",\n \"Alt-F2\": \"selectBookmarks\",\n \"Backspace\": \"smartBackspace\",\n \"Ctrl-K Ctrl-D\": \"skipAndSelectNextOccurrence\",\n \"Ctrl-K Ctrl-K\": \"delLineRight\",\n \"Ctrl-K Ctrl-U\": \"upcaseAtCursor\",\n \"Ctrl-K Ctrl-L\": \"downcaseAtCursor\",\n \"Ctrl-K Ctrl-Space\": \"setSublimeMark\",\n \"Ctrl-K Ctrl-A\": \"selectToSublimeMark\",\n \"Ctrl-K Ctrl-W\": \"deleteToSublimeMark\",\n \"Ctrl-K Ctrl-X\": \"swapWithSublimeMark\",\n \"Ctrl-K Ctrl-Y\": \"sublimeYank\",\n \"Ctrl-K Ctrl-C\": \"showInCenter\",\n \"Ctrl-K Ctrl-G\": \"clearBookmarks\",\n \"Ctrl-K Ctrl-Backspace\": \"delLineLeft\",\n \"Ctrl-K Ctrl-1\": \"foldAll\",\n \"Ctrl-K Ctrl-0\": \"unfoldAll\",\n \"Ctrl-K Ctrl-J\": \"unfoldAll\",\n \"Ctrl-Alt-Up\": \"addCursorToPrevLine\",\n \"Ctrl-Alt-Down\": \"addCursorToNextLine\",\n \"Ctrl-F3\": \"findUnder\",\n \"Shift-Ctrl-F3\": \"findUnderPrevious\",\n \"Alt-F3\": \"findAllUnder\",\n \"Shift-Ctrl-[\": \"fold\",\n \"Shift-Ctrl-]\": \"unfold\",\n \"Ctrl-I\": \"findIncremental\",\n \"Shift-Ctrl-I\": \"findIncrementalReverse\",\n \"Ctrl-H\": \"replace\",\n \"F3\": \"findNext\",\n \"Shift-F3\": \"findPrev\",\n \"fallthrough\": \"pcDefault\"\n };\n CodeMirror.normalizeKeyMap(keyMap.pcSublime);\n\n var mac = keyMap.default == keyMap.macDefault;\n keyMap.sublime = mac ? keyMap.macSublime : keyMap.pcSublime;\n});\n"],"names":["CodeMirror","ie_lt8","test","navigator","userAgent","document","documentMode","Pos","matching","bracketRegex","config","findMatchingBracket","cm","where","line","getLineHandle","pos","ch","afterCursor","getWrapperElement","className","re","match","text","charAt","dir","strict","style","getTokenTypeAt","found","scanForBracket","from","to","forward","maxScanLen","maxScanLineLength","maxScanLines","stack","lineEnd","Math","min","lastLine","max","firstLine","lineNo","getLine","length","end","push","pop","matchBrackets","autoclear","maxHighlightLen","state","maxHighlightLineLength","highlightNonMatching","marks","ranges","listSelections","i","empty","head","markText","focused","focus","clear","f","operation","setTimeout","doMatchBrackets","currentlyHighlighted","clearHighlighted","__name","defineOption","val","old","Init","off","on","defineExtension","this","oldConfig","mod","require$$0","doFold","noFold","regexpFlags","regexp","flags","ignoreCase","global","multiline","ensureFlags","current","target","indexOf","RegExp","source","maybeMultiline","searchRegexpForward","doc","start","last","lastIndex","string","exec","index","searchRegexpForwardMultiline","chunk","curLine","before","slice","split","inside","startLine","startCh","lastMatchIn","endMargin","newMatch","searchRegexpBackward","first","searchRegexpBackwardMultiline","chunkSize","adjustPos","orig","folded","foldFunc","mid","len","searchStringForward","query","caseFold","fold","lines","search","cutFrom","endString","searchStringBackward","lastIndexOf","top","topString","SearchCursor","options","atOccurrence","afterEmptyMatch","clipPos","matches","reverse","String","prototype","normalize","str","toLowerCase","findNext","find","findPrevious","cmpPos","result","replace","newText","origin","splitLines","replaceRange","defineDocExtension","cur","getSearchCursor","getCursor","anchor","setSelections","cmds","commands","findPosSubword","type","startPos","e","next","cat","isWordChar","toUpperCase","moveSubword","extendSelectionsBy","range","display","shift","extend","insertLine","above","isReadOnly","Pass","newSelection","at","indentLine","execCommand","wordAt","word","addCursorToSelection","newRanges","newAnchor","findPosV","goalColumn","newHead","cursorCoords","left","newRange","isSelectedRange","goSubwordLeft","goSubwordRight","scrollLineUp","info","getScrollInfo","somethingSelected","visibleBottomLine","lineAtHeight","clientHeight","scrollTo","defaultTextHeight","scrollLineDown","visibleTopLine","splitSelectionByLine","lineRanges","singleSelectionTop","setSelection","scroll","selectLine","extended","insertLineAfter","insertLineBefore","selectNextOccurrence","fullWord","sublimeFindFullWord","sel","getRange","addSelection","skipAndSelectNextOccurrence","prevAnchor","prevHead","filter","addCursorToPrevLine","addCursorToNextLine","mirror","selectBetweenBrackets","opening","closing","puncType","sortLines","caseSensitive","direction","selected","toSort","sort","a","b","au","bu","modifyWordOrSelection","indices","replacements","replaceSelections","getTarget","findAndGoTo","selectScope","goToBracket","prev","swapLineUp","linesToMove","newSels","scrollIntoView","swapLineDown","toggleCommentIndented","toggleComment","indent","joinLines","joined","offset","obj","actual","duplicateLine","rangeCount","reverseSortLines","sortLinesInsensitive","reverseSortLinesInsensitive","nextBookmark","sublimeBookmarks","prevBookmark","unshift","toggleBookmark","findMarksAt","findMarks","j","sublimeBookmark","k","splice","clearWhenEmpty","clearBookmarks","selectBookmarks","smartBackspace","cursors","indentUnit","getOption","cursor","toStartOfLine","column","countColumn","deletePos","findPosH","prevIndent","findColumn","delLineRight","upcaseAtCursor","downcaseAtCursor","setSublimeMark","sublimeMark","setBookmark","selectToSublimeMark","deleteToSublimeMark","tmp","sublimeKilled","swapWithSublimeMark","setCursor","sublimeYank","replaceSelection","showInCenter","bottom","findUnder","findUnderPrevious","findAllUnder","primaryIndex","keyMap","macSublime","Esc","F5","F2","Backspace","F3","fallthrough","normalizeKeyMap","pcSublime","F9","mac","default","macDefault","sublime","require$$1","require$$2"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/143.38ac34fa.chunk.js b/serv/web/build/static/js/143.38ac34fa.chunk.js new file mode 100644 index 00000000..b49e8dee --- /dev/null +++ b/serv/web/build/static/js/143.38ac34fa.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[143],{3143:(e,t,r)=>{r.r(t),r.d(t,{j:()=>c});var n=r(8308),a=Object.defineProperty,i=(e,t)=>a(e,"name",{value:t,configurable:!0});function o(e,t){for(var r=0;rn[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}i(o,"_mergeNamespaces");!function(e,t){var r;(r=(0,n.r)()).defineMode("javascript",(function(e,t){var n,a,o=e.indentUnit,s=t.statementIndent,c=t.jsonld,u=t.json||c,f=!1!==t.trackScope,l=t.typescript,p=t.wordCharacters||/[\w$\xa1-\uffff]/,d=function(){function e(e){return{type:e,style:"keyword"}}i(e,"kw");var t=e("keyword a"),r=e("keyword b"),n=e("keyword c"),a=e("keyword d"),o=e("operator"),s={type:"atom",style:"atom"};return{if:e("if"),while:t,with:t,else:r,do:r,try:r,finally:r,return:a,break:a,continue:a,new:e("new"),delete:n,void:n,throw:n,debugger:e("debugger"),var:e("var"),const:e("var"),let:e("var"),function:e("function"),catch:e("catch"),for:e("for"),switch:e("switch"),case:e("case"),default:e("default"),in:o,typeof:o,instanceof:o,true:s,false:s,null:s,undefined:s,NaN:s,Infinity:s,this:e("this"),class:e("class"),super:e("atom"),yield:n,export:e("export"),import:e("import"),extends:n,await:n}}(),m=/[+\-*&%=<>!?|~^@]/,y=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function k(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}function v(e,t,r){return n=e,a=r,t}function b(e,t){var r=e.next();if('"'==r||"'"==r)return t.tokenize=w(r),t.tokenize(e,t);if("."==r&&e.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return v("number","number");if("."==r&&e.match(".."))return v("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(r))return v(r);if("="==r&&e.eat(">"))return v("=>","operator");if("0"==r&&e.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return v("number","number");if(/\d/.test(r))return e.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),v("number","number");if("/"==r)return e.eat("*")?(t.tokenize=x,x(e,t)):e.eat("/")?(e.skipToEnd(),v("comment","comment")):it(e,t,1)?(k(e),e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),v("regexp","string-2")):(e.eat("="),v("operator","operator",e.current()));if("`"==r)return t.tokenize=g,g(e,t);if("#"==r&&"!"==e.peek())return e.skipToEnd(),v("meta","meta");if("#"==r&&e.eatWhile(p))return v("variable","property");if("<"==r&&e.match("!--")||"-"==r&&e.match("->")&&!/\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),v("comment","comment");if(m.test(r))return(">"!=r||!t.lexical||">"!=t.lexical.type)&&(e.eat("=")?("!"==r||"="==r)&&e.eat("="):/[<>*+\-|&?]/.test(r)&&(e.eat(r),">"==r&&e.eat(r))),"?"==r&&e.eat(".")?v("."):v("operator","operator",e.current());if(p.test(r)){e.eatWhile(p);var n=e.current();if("."!=t.lastType){if(d.propertyIsEnumerable(n)){var a=d[n];return v(a.type,a.style,n)}if("async"==n&&e.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return v("async","keyword",n)}return v("variable","variable",n)}}function w(e){return function(t,r){var n,a=!1;if(c&&"@"==t.peek()&&t.match(y))return r.tokenize=b,v("jsonld-keyword","meta");for(;null!=(n=t.next())&&(n!=e||a);)a=!a&&"\\"==n;return a||(r.tokenize=b),v("string","string")}}function x(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=b;break}n="*"==r}return v("comment","comment")}function g(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=b;break}n=!n&&"\\"==r}return v("quasi","string-2",e.current())}i(k,"readRegexp"),i(v,"ret"),i(b,"tokenBase"),i(w,"tokenString"),i(x,"tokenComment"),i(g,"tokenQuasi");var h="([{}])";function j(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){if(l){var n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r));n&&(r=n.index)}for(var a=0,i=!1,o=r-1;o>=0;--o){var s=e.string.charAt(o),c=h.indexOf(s);if(c>=0&&c<3){if(!a){++o;break}if(0==--a){"("==s&&(i=!0);break}}else if(c>=3&&c<6)++a;else if(p.test(s))i=!0;else if(/["'\/`]/.test(s))for(;;--o){if(0==o)return;if(e.string.charAt(o-1)==s&&"\\"!=e.string.charAt(o-2)){o--;break}}else if(i&&!a){++o;break}}i&&!a&&(t.fatArrowAt=o)}}i(j,"findFatArrow");var A={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function M(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function E(e,t){if(!f)return!1;for(var r=e.localVars;r;r=r.next)if(r.name==t)return!0;for(var n=e.context;n;n=n.prev)for(r=n.vars;r;r=r.next)if(r.name==t)return!0}function T(e,t,r,n,a){var i=e.cc;for(V.state=e,V.stream=a,V.marked=null,V.cc=i,V.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;)if((i.length?i.pop():u?R:D)(r,n)){for(;i.length&&i[i.length-1].lex;)i.pop()();return V.marked?V.marked:"variable"==r&&E(e,n)?"variable-2":t}}i(M,"JSLexical"),i(E,"inScope"),i(T,"parseJS");var V={state:null,column:null,marked:null,cc:null};function C(){for(var e=arguments.length-1;e>=0;e--)V.cc.push(arguments[e])}function I(){return C.apply(null,arguments),!0}function z(e,t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}function S(e){var r=V.state;if(V.marked="def",f){if(r.context)if("var"==r.lexical.info&&r.context&&r.context.block){var n=_(e,r.context);if(null!=n)return void(r.context=n)}else if(!z(e,r.localVars))return void(r.localVars=new q(e,r.localVars));t.globalVars&&!z(e,r.globalVars)&&(r.globalVars=new q(e,r.globalVars))}}function _(e,t){if(t){if(t.block){var r=_(e,t.prev);return r?r==t.prev?t:new $(r,t.vars,!0):null}return z(e,t.vars)?t:new $(t.prev,new q(e,t.vars),!1)}return null}function O(e){return"public"==e||"private"==e||"protected"==e||"abstract"==e||"readonly"==e}function $(e,t,r){this.prev=e,this.vars=t,this.block=r}function q(e,t){this.name=e,this.next=t}i(C,"pass"),i(I,"cont"),i(z,"inList"),i(S,"register"),i(_,"registerVarScoped"),i(O,"isModifier"),i($,"Context"),i(q,"Var");var N=new q("this",new q("arguments",null));function P(){V.state.context=new $(V.state.context,V.state.localVars,!1),V.state.localVars=N}function B(){V.state.context=new $(V.state.context,V.state.localVars,!0),V.state.localVars=null}function F(){V.state.localVars=V.state.context.vars,V.state.context=V.state.context.prev}function L(e,t){var r=i((function(){var r=V.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var a=r.lexical;a&&")"==a.type&&a.align;a=a.prev)n=a.indented;r.lexical=new M(n,V.stream.column(),e,null,r.lexical,t)}),"result");return r.lex=!0,r}function Q(){var e=V.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function W(e){function t(r){return r==e?I():";"==e||"}"==r||")"==r||"]"==r?C():I(t)}return i(t,"exp"),t}function D(e,t){return"var"==e?I(L("vardef",t),Ce,W(";"),Q):"keyword a"==e?I(L("form"),H,D,Q):"keyword b"==e?I(L("form"),D,Q):"keyword d"==e?V.stream.match(/^\s*$/,!1)?I():I(L("stat"),G,W(";"),Q):"debugger"==e?I(W(";")):"{"==e?I(L("}"),B,de,Q,F):";"==e?I():"if"==e?("else"==V.state.lexical.info&&V.state.cc[V.state.cc.length-1]==Q&&V.state.cc.pop()(),I(L("form"),H,D,Q,$e)):"function"==e?I(Be):"for"==e?I(L("form"),B,qe,D,F,Q):"class"==e||l&&"interface"==t?(V.marked="keyword",I(L("form","class"==e?e:t),De,Q)):"variable"==e?l&&"declare"==t?(V.marked="keyword",I(D)):l&&("module"==t||"enum"==t||"type"==t)&&V.stream.match(/^\s*\w/,!1)?(V.marked="keyword","enum"==t?I(rt):"type"==t?I(Le,W("operator"),be,W(";")):I(L("form"),Ie,W("{"),L("}"),de,Q,Q)):l&&"namespace"==t?(V.marked="keyword",I(L("form"),R,D,Q)):l&&"abstract"==t?(V.marked="keyword",I(D)):I(L("stat"),oe):"switch"==e?I(L("form"),H,W("{"),L("}","switch"),B,de,Q,Q,F):"case"==e?I(R,W(":")):"default"==e?I(W(":")):"catch"==e?I(L("form"),P,J,D,Q,F):"export"==e?I(L("stat"),He,Q):"import"==e?I(L("stat"),Ge,Q):"async"==e?I(D):"@"==t?I(R,D):C(L("stat"),R,W(";"),Q)}function J(e){if("("==e)return I(Qe,W(")"))}function R(e,t){return K(e,t,!1)}function U(e,t){return K(e,t,!0)}function H(e){return"("!=e?C():I(L(")"),G,W(")"),Q)}function K(e,t,r){if(V.state.fatArrowAt==V.stream.start){var n=r?re:te;if("("==e)return I(P,L(")"),le(Qe,")"),Q,W("=>"),n,F);if("variable"==e)return C(P,Ie,W("=>"),n,F)}var a=r?Y:X;return A.hasOwnProperty(e)?I(a):"function"==e?I(Be,a):"class"==e||l&&"interface"==t?(V.marked="keyword",I(L("form"),We,Q)):"keyword c"==e||"async"==e?I(r?U:R):"("==e?I(L(")"),G,W(")"),Q,a):"operator"==e||"spread"==e?I(r?U:R):"["==e?I(L("]"),tt,Q,a):"{"==e?pe(ce,"}",null,a):"quasi"==e?C(Z,a):"new"==e?I(ne(r)):I()}function G(e){return e.match(/[;\}\)\],]/)?C():C(R)}function X(e,t){return","==e?I(G):Y(e,t,!1)}function Y(e,t,r){var n=0==r?X:Y,a=0==r?R:U;if("=>"==e)return I(P,r?re:te,F);if("operator"==e)return/\+\+|--/.test(t)||l&&"!"==t?I(n):l&&"<"==t&&V.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?I(L(">"),le(be,">"),Q,n):"?"==t?I(R,W(":"),a):I(a);if("quasi"==e)return C(Z,n);if(";"!=e){if("("==e)return pe(U,")","call",n);if("."==e)return I(se,n);if("["==e)return I(L("]"),G,W("]"),Q,n);if(l&&"as"==t)return V.marked="keyword",I(be,n);if("regexp"==e)return V.state.lastType=V.marked="operator",V.stream.backUp(V.stream.pos-V.stream.start-1),I(a)}}function Z(e,t){return"quasi"!=e?C():"${"!=t.slice(t.length-2)?I(Z):I(G,ee)}function ee(e){if("}"==e)return V.marked="string-2",V.state.tokenize=g,I(Z)}function te(e){return j(V.stream,V.state),C("{"==e?D:R)}function re(e){return j(V.stream,V.state),C("{"==e?D:U)}function ne(e){return function(t){return"."==t?I(e?ie:ae):"variable"==t&&l?I(Ee,e?Y:X):C(e?U:R)}}function ae(e,t){if("target"==t)return V.marked="keyword",I(X)}function ie(e,t){if("target"==t)return V.marked="keyword",I(Y)}function oe(e){return":"==e?I(Q,D):C(X,W(";"),Q)}function se(e){if("variable"==e)return V.marked="property",I()}function ce(e,t){return"async"==e?(V.marked="property",I(ce)):"variable"==e||"keyword"==V.style?(V.marked="property","get"==t||"set"==t?I(ue):(l&&V.state.fatArrowAt==V.stream.start&&(r=V.stream.match(/^\s*:\s*/,!1))&&(V.state.fatArrowAt=V.stream.pos+r[0].length),I(fe))):"number"==e||"string"==e?(V.marked=c?"property":V.style+" property",I(fe)):"jsonld-keyword"==e?I(fe):l&&O(t)?(V.marked="keyword",I(ce)):"["==e?I(R,me,W("]"),fe):"spread"==e?I(U,fe):"*"==t?(V.marked="keyword",I(ce)):":"==e?C(fe):void 0;var r}function ue(e){return"variable"!=e?C(fe):(V.marked="property",I(Be))}function fe(e){return":"==e?I(U):"("==e?C(Be):void 0}function le(e,t,r){function n(a,i){if(r?r.indexOf(a)>-1:","==a){var o=V.state.lexical;return"call"==o.info&&(o.pos=(o.pos||0)+1),I((function(r,n){return r==t||n==t?C():C(e)}),n)}return a==t||i==t?I():r&&r.indexOf(";")>-1?C(e):I(W(t))}return i(n,"proceed"),function(r,a){return r==t||a==t?I():C(e,n)}}function pe(e,t,r){for(var n=3;n"),be):"quasi"==e?C(he,Me):void 0}function we(e){if("=>"==e)return I(be)}function xe(e){return e.match(/[\}\)\]]/)?I():","==e||";"==e?I(xe):C(ge,xe)}function ge(e,t){return"variable"==e||"keyword"==V.style?(V.marked="property",I(ge)):"?"==t||"number"==e||"string"==e?I(ge):":"==e?I(be):"["==e?I(W("variable"),ye,W("]"),ge):"("==e?C(Fe,ge):e.match(/[;\}\)\],]/)?void 0:I()}function he(e,t){return"quasi"!=e?C():"${"!=t.slice(t.length-2)?I(he):I(be,je)}function je(e){if("}"==e)return V.marked="string-2",V.state.tokenize=g,I(he)}function Ae(e,t){return"variable"==e&&V.stream.match(/^\s*[?:]/,!1)||"?"==t?I(Ae):":"==e?I(be):"spread"==e?I(Ae):C(be)}function Me(e,t){return"<"==t?I(L(">"),le(be,">"),Q,Me):"|"==t||"."==e||"&"==t?I(be):"["==e?I(be,W("]"),Me):"extends"==t||"implements"==t?(V.marked="keyword",I(be)):"?"==t?I(be,W(":"),be):void 0}function Ee(e,t){if("<"==t)return I(L(">"),le(be,">"),Q,Me)}function Te(){return C(be,Ve)}function Ve(e,t){if("="==t)return I(be)}function Ce(e,t){return"enum"==t?(V.marked="keyword",I(rt)):C(Ie,me,_e,Oe)}function Ie(e,t){return l&&O(t)?(V.marked="keyword",I(Ie)):"variable"==e?(S(t),I()):"spread"==e?I(Ie):"["==e?pe(Se,"]"):"{"==e?pe(ze,"}"):void 0}function ze(e,t){return"variable"!=e||V.stream.match(/^\s*:/,!1)?("variable"==e&&(V.marked="property"),"spread"==e?I(Ie):"}"==e?C():"["==e?I(R,W("]"),W(":"),ze):I(W(":"),Ie,_e)):(S(t),I(_e))}function Se(){return C(Ie,_e)}function _e(e,t){if("="==t)return I(U)}function Oe(e){if(","==e)return I(Ce)}function $e(e,t){if("keyword b"==e&&"else"==t)return I(L("form","else"),D,Q)}function qe(e,t){return"await"==t?I(qe):"("==e?I(L(")"),Ne,Q):void 0}function Ne(e){return"var"==e?I(Ce,Pe):"variable"==e?I(Pe):C(Pe)}function Pe(e,t){return")"==e?I():";"==e?I(Pe):"in"==t||"of"==t?(V.marked="keyword",I(R,Pe)):C(R,Pe)}function Be(e,t){return"*"==t?(V.marked="keyword",I(Be)):"variable"==e?(S(t),I(Be)):"("==e?I(P,L(")"),le(Qe,")"),Q,ke,D,F):l&&"<"==t?I(L(">"),le(Te,">"),Q,Be):void 0}function Fe(e,t){return"*"==t?(V.marked="keyword",I(Fe)):"variable"==e?(S(t),I(Fe)):"("==e?I(P,L(")"),le(Qe,")"),Q,ke,F):l&&"<"==t?I(L(">"),le(Te,">"),Q,Fe):void 0}function Le(e,t){return"keyword"==e||"variable"==e?(V.marked="type",I(Le)):"<"==t?I(L(">"),le(Te,">"),Q):void 0}function Qe(e,t){return"@"==t&&I(R,Qe),"spread"==e?I(Qe):l&&O(t)?(V.marked="keyword",I(Qe)):l&&"this"==e?I(me,_e):C(Ie,me,_e)}function We(e,t){return"variable"==e?De(e,t):Je(e,t)}function De(e,t){if("variable"==e)return S(t),I(Je)}function Je(e,t){return"<"==t?I(L(">"),le(Te,">"),Q,Je):"extends"==t||"implements"==t||l&&","==e?("implements"==t&&(V.marked="keyword"),I(l?be:R,Je)):"{"==e?I(L("}"),Re,Q):void 0}function Re(e,t){return"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t||l&&O(t))&&V.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(V.marked="keyword",I(Re)):"variable"==e||"keyword"==V.style?(V.marked="property",I(Ue,Re)):"number"==e||"string"==e?I(Ue,Re):"["==e?I(R,me,W("]"),Ue,Re):"*"==t?(V.marked="keyword",I(Re)):l&&"("==e?C(Fe,Re):";"==e||","==e?I(Re):"}"==e?I():"@"==t?I(R,Re):void 0}function Ue(e,t){if("!"==t||"?"==t)return I(Ue);if(":"==e)return I(be,_e);if("="==t)return I(U);var r=V.state.lexical.prev;return C(r&&"interface"==r.info?Fe:Be)}function He(e,t){return"*"==t?(V.marked="keyword",I(et,W(";"))):"default"==t?(V.marked="keyword",I(R,W(";"))):"{"==e?I(le(Ke,"}"),et,W(";")):C(D)}function Ke(e,t){return"as"==t?(V.marked="keyword",I(W("variable"))):"variable"==e?C(U,Ke):void 0}function Ge(e){return"string"==e?I():"("==e?C(R):"."==e?C(X):C(Xe,Ye,et)}function Xe(e,t){return"{"==e?pe(Xe,"}"):("variable"==e&&S(t),"*"==t&&(V.marked="keyword"),I(Ze))}function Ye(e){if(","==e)return I(Xe,Ye)}function Ze(e,t){if("as"==t)return V.marked="keyword",I(Xe)}function et(e,t){if("from"==t)return V.marked="keyword",I(R)}function tt(e){return"]"==e?I():C(le(U,"]"))}function rt(){return C(L("form"),Ie,W("{"),L("}"),le(nt,"}"),Q,Q)}function nt(){return C(Ie,_e)}function at(e,t){return"operator"==e.lastType||","==e.lastType||m.test(t.charAt(0))||/[,.]/.test(t.charAt(0))}function it(e,t,r){return t.tokenize==b&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}return i(P,"pushcontext"),i(B,"pushblockcontext"),P.lex=B.lex=!0,i(F,"popcontext"),F.lex=!0,i(L,"pushlex"),i(Q,"poplex"),Q.lex=!0,i(W,"expect"),i(D,"statement"),i(J,"maybeCatchBinding"),i(R,"expression"),i(U,"expressionNoComma"),i(H,"parenExpr"),i(K,"expressionInner"),i(G,"maybeexpression"),i(X,"maybeoperatorComma"),i(Y,"maybeoperatorNoComma"),i(Z,"quasi"),i(ee,"continueQuasi"),i(te,"arrowBody"),i(re,"arrowBodyNoComma"),i(ne,"maybeTarget"),i(ae,"target"),i(ie,"targetNoComma"),i(oe,"maybelabel"),i(se,"property"),i(ce,"objprop"),i(ue,"getterSetter"),i(fe,"afterprop"),i(le,"commasep"),i(pe,"contCommasep"),i(de,"block"),i(me,"maybetype"),i(ye,"maybetypeOrIn"),i(ke,"mayberettype"),i(ve,"isKW"),i(be,"typeexpr"),i(we,"maybeReturnType"),i(xe,"typeprops"),i(ge,"typeprop"),i(he,"quasiType"),i(je,"continueQuasiType"),i(Ae,"typearg"),i(Me,"afterType"),i(Ee,"maybeTypeArgs"),i(Te,"typeparam"),i(Ve,"maybeTypeDefault"),i(Ce,"vardef"),i(Ie,"pattern"),i(ze,"proppattern"),i(Se,"eltpattern"),i(_e,"maybeAssign"),i(Oe,"vardefCont"),i($e,"maybeelse"),i(qe,"forspec"),i(Ne,"forspec1"),i(Pe,"forspec2"),i(Be,"functiondef"),i(Fe,"functiondecl"),i(Le,"typename"),i(Qe,"funarg"),i(We,"classExpression"),i(De,"className"),i(Je,"classNameAfter"),i(Re,"classBody"),i(Ue,"classfield"),i(He,"afterExport"),i(Ke,"exportField"),i(Ge,"afterImport"),i(Xe,"importSpec"),i(Ye,"maybeMoreImports"),i(Ze,"maybeAs"),i(et,"maybeFrom"),i(tt,"arrayLiteral"),i(rt,"enumdef"),i(nt,"enummember"),i(at,"isContinuedStatement"),i(it,"expressionAllowed"),{startState:function(e){var r={tokenize:b,lastType:"sof",cc:[],lexical:new M((e||0)-o,0,"block",!1),localVars:t.localVars,context:t.localVars&&new $(null,null,!1),indented:e||0};return t.globalVars&&"object"==typeof t.globalVars&&(r.globalVars=t.globalVars),r},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),j(e,t)),t.tokenize!=x&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==n?r:(t.lastType="operator"!=n||"++"!=a&&"--"!=a?n:"incdec",T(t,r,n,a,e))},indent:function(e,n){if(e.tokenize==x||e.tokenize==g)return r.Pass;if(e.tokenize!=b)return 0;var a,i=n&&n.charAt(0),c=e.lexical;if(!/^\s*else\b/.test(n))for(var u=e.cc.length-1;u>=0;--u){var f=e.cc[u];if(f==Q)c=c.prev;else if(f!=$e&&f!=F)break}for(;("stat"==c.type||"form"==c.type)&&("}"==i||(a=e.cc[e.cc.length-1])&&(a==X||a==Y)&&!/^[,\.=+\-*:?[\(]/.test(n));)c=c.prev;s&&")"==c.type&&"stat"==c.prev.type&&(c=c.prev);var l=c.type,p=i==l;return"vardef"==l?c.indented+("operator"==e.lastType||","==e.lastType?c.info.length+1:0):"form"==l&&"{"==i?c.indented:"form"==l?c.indented+o:"stat"==l?c.indented+(at(e,n)?s||o:0):"switch"!=c.info||p||0==t.doubleIndentSwitch?c.align?c.column+(p?0:1):c.indented+(p?0:o):c.indented+(/^(?:case|default)\b/.test(n)?o:2*o)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:u?null:"/*",blockCommentEnd:u?null:"*/",blockCommentContinue:u?null:" * ",lineComment:u?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:u?"json":"javascript",jsonldMode:c,jsonMode:u,expressionAllowed:it,skipExpression:function(e){T(e,"atom","atom","true",new r.StringStream("",2,null))}}})),r.registerHelper("wordChars","javascript",/[\w$]/),r.defineMIME("text/javascript","javascript"),r.defineMIME("text/ecmascript","javascript"),r.defineMIME("application/javascript","javascript"),r.defineMIME("application/x-javascript","javascript"),r.defineMIME("application/ecmascript","javascript"),r.defineMIME("application/json",{name:"javascript",json:!0}),r.defineMIME("application/x-json",{name:"javascript",json:!0}),r.defineMIME("application/manifest+json",{name:"javascript",json:!0}),r.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),r.defineMIME("text/typescript",{name:"javascript",typescript:!0}),r.defineMIME("application/typescript",{name:"javascript",typescript:!0})}();var s={};const c=o({__proto__:null,default:(0,n.g)(s)},[s])}}]); +//# sourceMappingURL=143.38ac34fa.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/143.38ac34fa.chunk.js.map b/serv/web/build/static/js/143.38ac34fa.chunk.js.map new file mode 100644 index 00000000..306a2097 --- /dev/null +++ b/serv/web/build/static/js/143.38ac34fa.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/143.38ac34fa.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/mode/javascript/javascript.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n"],"names":["w","ge","defineMode","M","h","K","nr","A","indentUnit","vr","statementIndent","rr","jsonld","O","json","gr","trackScope","k","typescript","er","wordCharacters","yr","r","y","type","style","f","e","t","a","o","d","p","if","while","with","else","do","try","finally","return","break","continue","new","delete","void","throw","debugger","var","const","let","function","catch","for","switch","case","default","in","typeof","instanceof","true","false","null","undefined","NaN","Infinity","this","class","super","yield","export","import","extends","await","jr","Jr","Lr","next","x","$","tokenize","Qr","match","test","eat","tr","skipToEnd","Fr","current","H","peek","eatWhile","string","slice","start","lexical","lastType","propertyIsEnumerable","Rr","dr","fatArrowAt","indexOf","exec","index","charAt","V","Ur","atom","number","variable","regexp","Er","indented","column","prev","info","align","Wr","localVars","name","context","vars","Tr","cc","i","state","stream","marked","hasOwnProperty","length","pop","b","v","lex","s","arguments","push","n","apply","mr","D","block","Ar","X","globalVars","G","ir","Kr","q","fr","E","c","u","l","xr","pr","J","or","Mr","z","Or","qr","Pr","$r","m","T","Cr","Hr","de","me","P","Vr","j","Sr","Ir","g","L","N","le","ke","Y","ur","ar","Xr","re","backUp","pos","Gr","Zr","Yr","ae","ee","B","Q","ne","_r","te","I","kr","wr","ie","br","Z","U","fe","sr","ue","_","se","oe","zr","ce","R","cr","S","C","hr","Nr","lr","Br","pe","be","we","startState","token","sol","indentation","eatSpace","indent","Pass","doubleIndentSwitch","electricInput","blockCommentStart","blockCommentEnd","blockCommentContinue","lineComment","fold","closeBrackets","helperType","jsonldMode","jsonMode","expressionAllowed","skipExpression","StringStream","registerHelper","defineMIME"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/143.c848198a.chunk.js b/serv/web/build/static/js/143.c848198a.chunk.js deleted file mode 100644 index 3fa7bb9f..00000000 --- a/serv/web/build/static/js/143.c848198a.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[143],{3143:function(e,t,r){r.r(t),r.d(t,{j:function(){return c}});var n=r(8308),a=Object.defineProperty,i=function(e,t){return a(e,"name",{value:t,configurable:!0})};function o(e,t){for(var r=function(){var r=t[n];if("string"!=typeof r&&!Array.isArray(r)){var a=function(t){if("default"!==t&&!(t in e)){var n=Object.getOwnPropertyDescriptor(r,t);n&&Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:function(){return r[t]}})}};for(var i in r)a(i)}},n=0;n!?|~^@]/,y=/^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)"/;function v(e){for(var t,r=!1,n=!1;null!=(t=e.next());){if(!r){if("/"==t&&!n)return;"["==t?n=!0:n&&"]"==t&&(n=!1)}r=!r&&"\\"==t}}function k(e,t,r){return n=e,a=r,t}function b(e,t){var r=e.next();if('"'==r||"'"==r)return t.tokenize=w(r),t.tokenize(e,t);if("."==r&&e.match(/^\d[\d_]*(?:[eE][+\-]?[\d_]+)?/))return k("number","number");if("."==r&&e.match(".."))return k("spread","meta");if(/[\[\]{}\(\),;\:\.]/.test(r))return k(r);if("="==r&&e.eat(">"))return k("=>","operator");if("0"==r&&e.match(/^(?:x[\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/))return k("number","number");if(/\d/.test(r))return e.match(/^[\d_]*(?:n|(?:\.[\d_]*)?(?:[eE][+\-]?[\d_]+)?)?/),k("number","number");if("/"==r)return e.eat("*")?(t.tokenize=x,x(e,t)):e.eat("/")?(e.skipToEnd(),k("comment","comment")):it(e,t,1)?(v(e),e.match(/^\b(([gimyus])(?![gimyus]*\2))+\b/),k("regexp","string-2")):(e.eat("="),k("operator","operator",e.current()));if("`"==r)return t.tokenize=g,g(e,t);if("#"==r&&"!"==e.peek())return e.skipToEnd(),k("meta","meta");if("#"==r&&e.eatWhile(p))return k("variable","property");if("<"==r&&e.match("!--")||"-"==r&&e.match("->")&&!/\S/.test(e.string.slice(0,e.start)))return e.skipToEnd(),k("comment","comment");if(m.test(r))return(">"!=r||!t.lexical||">"!=t.lexical.type)&&(e.eat("=")?("!"==r||"="==r)&&e.eat("="):/[<>*+\-|&?]/.test(r)&&(e.eat(r),">"==r&&e.eat(r))),"?"==r&&e.eat(".")?k("."):k("operator","operator",e.current());if(p.test(r)){e.eatWhile(p);var n=e.current();if("."!=t.lastType){if(d.propertyIsEnumerable(n)){var a=d[n];return k(a.type,a.style,n)}if("async"==n&&e.match(/^(\s|\/\*([^*]|\*(?!\/))*?\*\/)*[\[\(\w]/,!1))return k("async","keyword",n)}return k("variable","variable",n)}}function w(e){return function(t,r){var n,a=!1;if(c&&"@"==t.peek()&&t.match(y))return r.tokenize=b,k("jsonld-keyword","meta");for(;null!=(n=t.next())&&(n!=e||a);)a=!a&&"\\"==n;return a||(r.tokenize=b),k("string","string")}}function x(e,t){for(var r,n=!1;r=e.next();){if("/"==r&&n){t.tokenize=b;break}n="*"==r}return k("comment","comment")}function g(e,t){for(var r,n=!1;null!=(r=e.next());){if(!n&&("`"==r||"$"==r&&e.eat("{"))){t.tokenize=b;break}n=!n&&"\\"==r}return k("quasi","string-2",e.current())}i(v,"readRegexp"),i(k,"ret"),i(b,"tokenBase"),i(w,"tokenString"),i(x,"tokenComment"),i(g,"tokenQuasi");var h="([{}])";function j(e,t){t.fatArrowAt&&(t.fatArrowAt=null);var r=e.string.indexOf("=>",e.start);if(!(r<0)){if(l){var n=/:\s*(?:\w+(?:<[^>]*>|\[\])?|\{[^}]*\})\s*$/.exec(e.string.slice(e.start,r));n&&(r=n.index)}for(var a=0,i=!1,o=r-1;o>=0;--o){var s=e.string.charAt(o),c=h.indexOf(s);if(c>=0&&c<3){if(!a){++o;break}if(0==--a){"("==s&&(i=!0);break}}else if(c>=3&&c<6)++a;else if(p.test(s))i=!0;else if(/["'\/`]/.test(s))for(;;--o){if(0==o)return;if(e.string.charAt(o-1)==s&&"\\"!=e.string.charAt(o-2)){o--;break}}else if(i&&!a){++o;break}}i&&!a&&(t.fatArrowAt=o)}}i(j,"findFatArrow");var A={atom:!0,number:!0,variable:!0,string:!0,regexp:!0,this:!0,import:!0,"jsonld-keyword":!0};function M(e,t,r,n,a,i){this.indented=e,this.column=t,this.type=r,this.prev=a,this.info=i,null!=n&&(this.align=n)}function E(e,t){if(!f)return!1;for(var r=e.localVars;r;r=r.next)if(r.name==t)return!0;for(var n=e.context;n;n=n.prev)for(r=n.vars;r;r=r.next)if(r.name==t)return!0}function T(e,t,r,n,a){var i=e.cc;for(V.state=e,V.stream=a,V.marked=null,V.cc=i,V.style=t,e.lexical.hasOwnProperty("align")||(e.lexical.align=!0);;)if((i.length?i.pop():u?R:D)(r,n)){for(;i.length&&i[i.length-1].lex;)i.pop()();return V.marked?V.marked:"variable"==r&&E(e,n)?"variable-2":t}}i(M,"JSLexical"),i(E,"inScope"),i(T,"parseJS");var V={state:null,column:null,marked:null,cc:null};function C(){for(var e=arguments.length-1;e>=0;e--)V.cc.push(arguments[e])}function I(){return C.apply(null,arguments),!0}function z(e,t){for(var r=t;r;r=r.next)if(r.name==e)return!0;return!1}function S(e){var r=V.state;if(V.marked="def",f){if(r.context)if("var"==r.lexical.info&&r.context&&r.context.block){var n=_(e,r.context);if(null!=n)return void(r.context=n)}else if(!z(e,r.localVars))return void(r.localVars=new q(e,r.localVars));t.globalVars&&!z(e,r.globalVars)&&(r.globalVars=new q(e,r.globalVars))}}function _(e,t){if(t){if(t.block){var r=_(e,t.prev);return r?r==t.prev?t:new $(r,t.vars,!0):null}return z(e,t.vars)?t:new $(t.prev,new q(e,t.vars),!1)}return null}function O(e){return"public"==e||"private"==e||"protected"==e||"abstract"==e||"readonly"==e}function $(e,t,r){this.prev=e,this.vars=t,this.block=r}function q(e,t){this.name=e,this.next=t}i(C,"pass"),i(I,"cont"),i(z,"inList"),i(S,"register"),i(_,"registerVarScoped"),i(O,"isModifier"),i($,"Context"),i(q,"Var");var N=new q("this",new q("arguments",null));function P(){V.state.context=new $(V.state.context,V.state.localVars,!1),V.state.localVars=N}function B(){V.state.context=new $(V.state.context,V.state.localVars,!0),V.state.localVars=null}function F(){V.state.localVars=V.state.context.vars,V.state.context=V.state.context.prev}function L(e,t){var r=i((function(){var r=V.state,n=r.indented;if("stat"==r.lexical.type)n=r.lexical.indented;else for(var a=r.lexical;a&&")"==a.type&&a.align;a=a.prev)n=a.indented;r.lexical=new M(n,V.stream.column(),e,null,r.lexical,t)}),"result");return r.lex=!0,r}function Q(){var e=V.state;e.lexical.prev&&(")"==e.lexical.type&&(e.indented=e.lexical.indented),e.lexical=e.lexical.prev)}function W(e){function t(r){return r==e?I():";"==e||"}"==r||")"==r||"]"==r?C():I(t)}return i(t,"exp"),t}function D(e,t){return"var"==e?I(L("vardef",t),Ce,W(";"),Q):"keyword a"==e?I(L("form"),H,D,Q):"keyword b"==e?I(L("form"),D,Q):"keyword d"==e?V.stream.match(/^\s*$/,!1)?I():I(L("stat"),G,W(";"),Q):"debugger"==e?I(W(";")):"{"==e?I(L("}"),B,de,Q,F):";"==e?I():"if"==e?("else"==V.state.lexical.info&&V.state.cc[V.state.cc.length-1]==Q&&V.state.cc.pop()(),I(L("form"),H,D,Q,$e)):"function"==e?I(Be):"for"==e?I(L("form"),B,qe,D,F,Q):"class"==e||l&&"interface"==t?(V.marked="keyword",I(L("form","class"==e?e:t),De,Q)):"variable"==e?l&&"declare"==t?(V.marked="keyword",I(D)):l&&("module"==t||"enum"==t||"type"==t)&&V.stream.match(/^\s*\w/,!1)?(V.marked="keyword","enum"==t?I(rt):"type"==t?I(Le,W("operator"),be,W(";")):I(L("form"),Ie,W("{"),L("}"),de,Q,Q)):l&&"namespace"==t?(V.marked="keyword",I(L("form"),R,D,Q)):l&&"abstract"==t?(V.marked="keyword",I(D)):I(L("stat"),oe):"switch"==e?I(L("form"),H,W("{"),L("}","switch"),B,de,Q,Q,F):"case"==e?I(R,W(":")):"default"==e?I(W(":")):"catch"==e?I(L("form"),P,J,D,Q,F):"export"==e?I(L("stat"),He,Q):"import"==e?I(L("stat"),Ge,Q):"async"==e?I(D):"@"==t?I(R,D):C(L("stat"),R,W(";"),Q)}function J(e){if("("==e)return I(Qe,W(")"))}function R(e,t){return K(e,t,!1)}function U(e,t){return K(e,t,!0)}function H(e){return"("!=e?C():I(L(")"),G,W(")"),Q)}function K(e,t,r){if(V.state.fatArrowAt==V.stream.start){var n=r?re:te;if("("==e)return I(P,L(")"),le(Qe,")"),Q,W("=>"),n,F);if("variable"==e)return C(P,Ie,W("=>"),n,F)}var a=r?Y:X;return A.hasOwnProperty(e)?I(a):"function"==e?I(Be,a):"class"==e||l&&"interface"==t?(V.marked="keyword",I(L("form"),We,Q)):"keyword c"==e||"async"==e?I(r?U:R):"("==e?I(L(")"),G,W(")"),Q,a):"operator"==e||"spread"==e?I(r?U:R):"["==e?I(L("]"),tt,Q,a):"{"==e?pe(ce,"}",null,a):"quasi"==e?C(Z,a):"new"==e?I(ne(r)):I()}function G(e){return e.match(/[;\}\)\],]/)?C():C(R)}function X(e,t){return","==e?I(G):Y(e,t,!1)}function Y(e,t,r){var n=0==r?X:Y,a=0==r?R:U;if("=>"==e)return I(P,r?re:te,F);if("operator"==e)return/\+\+|--/.test(t)||l&&"!"==t?I(n):l&&"<"==t&&V.stream.match(/^([^<>]|<[^<>]*>)*>\s*\(/,!1)?I(L(">"),le(be,">"),Q,n):"?"==t?I(R,W(":"),a):I(a);if("quasi"==e)return C(Z,n);if(";"!=e){if("("==e)return pe(U,")","call",n);if("."==e)return I(se,n);if("["==e)return I(L("]"),G,W("]"),Q,n);if(l&&"as"==t)return V.marked="keyword",I(be,n);if("regexp"==e)return V.state.lastType=V.marked="operator",V.stream.backUp(V.stream.pos-V.stream.start-1),I(a)}}function Z(e,t){return"quasi"!=e?C():"${"!=t.slice(t.length-2)?I(Z):I(G,ee)}function ee(e){if("}"==e)return V.marked="string-2",V.state.tokenize=g,I(Z)}function te(e){return j(V.stream,V.state),C("{"==e?D:R)}function re(e){return j(V.stream,V.state),C("{"==e?D:U)}function ne(e){return function(t){return"."==t?I(e?ie:ae):"variable"==t&&l?I(Ee,e?Y:X):C(e?U:R)}}function ae(e,t){if("target"==t)return V.marked="keyword",I(X)}function ie(e,t){if("target"==t)return V.marked="keyword",I(Y)}function oe(e){return":"==e?I(Q,D):C(X,W(";"),Q)}function se(e){if("variable"==e)return V.marked="property",I()}function ce(e,t){return"async"==e?(V.marked="property",I(ce)):"variable"==e||"keyword"==V.style?(V.marked="property","get"==t||"set"==t?I(ue):(l&&V.state.fatArrowAt==V.stream.start&&(r=V.stream.match(/^\s*:\s*/,!1))&&(V.state.fatArrowAt=V.stream.pos+r[0].length),I(fe))):"number"==e||"string"==e?(V.marked=c?"property":V.style+" property",I(fe)):"jsonld-keyword"==e?I(fe):l&&O(t)?(V.marked="keyword",I(ce)):"["==e?I(R,me,W("]"),fe):"spread"==e?I(U,fe):"*"==t?(V.marked="keyword",I(ce)):":"==e?C(fe):void 0;var r}function ue(e){return"variable"!=e?C(fe):(V.marked="property",I(Be))}function fe(e){return":"==e?I(U):"("==e?C(Be):void 0}function le(e,t,r){function n(a,i){if(r?r.indexOf(a)>-1:","==a){var o=V.state.lexical;return"call"==o.info&&(o.pos=(o.pos||0)+1),I((function(r,n){return r==t||n==t?C():C(e)}),n)}return a==t||i==t?I():r&&r.indexOf(";")>-1?C(e):I(W(t))}return i(n,"proceed"),function(r,a){return r==t||a==t?I():C(e,n)}}function pe(e,t,r){for(var n=3;n"),be):"quasi"==e?C(he,Me):void 0}function we(e){if("=>"==e)return I(be)}function xe(e){return e.match(/[\}\)\]]/)?I():","==e||";"==e?I(xe):C(ge,xe)}function ge(e,t){return"variable"==e||"keyword"==V.style?(V.marked="property",I(ge)):"?"==t||"number"==e||"string"==e?I(ge):":"==e?I(be):"["==e?I(W("variable"),ye,W("]"),ge):"("==e?C(Fe,ge):e.match(/[;\}\)\],]/)?void 0:I()}function he(e,t){return"quasi"!=e?C():"${"!=t.slice(t.length-2)?I(he):I(be,je)}function je(e){if("}"==e)return V.marked="string-2",V.state.tokenize=g,I(he)}function Ae(e,t){return"variable"==e&&V.stream.match(/^\s*[?:]/,!1)||"?"==t?I(Ae):":"==e?I(be):"spread"==e?I(Ae):C(be)}function Me(e,t){return"<"==t?I(L(">"),le(be,">"),Q,Me):"|"==t||"."==e||"&"==t?I(be):"["==e?I(be,W("]"),Me):"extends"==t||"implements"==t?(V.marked="keyword",I(be)):"?"==t?I(be,W(":"),be):void 0}function Ee(e,t){if("<"==t)return I(L(">"),le(be,">"),Q,Me)}function Te(){return C(be,Ve)}function Ve(e,t){if("="==t)return I(be)}function Ce(e,t){return"enum"==t?(V.marked="keyword",I(rt)):C(Ie,me,_e,Oe)}function Ie(e,t){return l&&O(t)?(V.marked="keyword",I(Ie)):"variable"==e?(S(t),I()):"spread"==e?I(Ie):"["==e?pe(Se,"]"):"{"==e?pe(ze,"}"):void 0}function ze(e,t){return"variable"!=e||V.stream.match(/^\s*:/,!1)?("variable"==e&&(V.marked="property"),"spread"==e?I(Ie):"}"==e?C():"["==e?I(R,W("]"),W(":"),ze):I(W(":"),Ie,_e)):(S(t),I(_e))}function Se(){return C(Ie,_e)}function _e(e,t){if("="==t)return I(U)}function Oe(e){if(","==e)return I(Ce)}function $e(e,t){if("keyword b"==e&&"else"==t)return I(L("form","else"),D,Q)}function qe(e,t){return"await"==t?I(qe):"("==e?I(L(")"),Ne,Q):void 0}function Ne(e){return"var"==e?I(Ce,Pe):"variable"==e?I(Pe):C(Pe)}function Pe(e,t){return")"==e?I():";"==e?I(Pe):"in"==t||"of"==t?(V.marked="keyword",I(R,Pe)):C(R,Pe)}function Be(e,t){return"*"==t?(V.marked="keyword",I(Be)):"variable"==e?(S(t),I(Be)):"("==e?I(P,L(")"),le(Qe,")"),Q,ve,D,F):l&&"<"==t?I(L(">"),le(Te,">"),Q,Be):void 0}function Fe(e,t){return"*"==t?(V.marked="keyword",I(Fe)):"variable"==e?(S(t),I(Fe)):"("==e?I(P,L(")"),le(Qe,")"),Q,ve,F):l&&"<"==t?I(L(">"),le(Te,">"),Q,Fe):void 0}function Le(e,t){return"keyword"==e||"variable"==e?(V.marked="type",I(Le)):"<"==t?I(L(">"),le(Te,">"),Q):void 0}function Qe(e,t){return"@"==t&&I(R,Qe),"spread"==e?I(Qe):l&&O(t)?(V.marked="keyword",I(Qe)):l&&"this"==e?I(me,_e):C(Ie,me,_e)}function We(e,t){return"variable"==e?De(e,t):Je(e,t)}function De(e,t){if("variable"==e)return S(t),I(Je)}function Je(e,t){return"<"==t?I(L(">"),le(Te,">"),Q,Je):"extends"==t||"implements"==t||l&&","==e?("implements"==t&&(V.marked="keyword"),I(l?be:R,Je)):"{"==e?I(L("}"),Re,Q):void 0}function Re(e,t){return"async"==e||"variable"==e&&("static"==t||"get"==t||"set"==t||l&&O(t))&&V.stream.match(/^\s+[\w$\xa1-\uffff]/,!1)?(V.marked="keyword",I(Re)):"variable"==e||"keyword"==V.style?(V.marked="property",I(Ue,Re)):"number"==e||"string"==e?I(Ue,Re):"["==e?I(R,me,W("]"),Ue,Re):"*"==t?(V.marked="keyword",I(Re)):l&&"("==e?C(Fe,Re):";"==e||","==e?I(Re):"}"==e?I():"@"==t?I(R,Re):void 0}function Ue(e,t){if("!"==t||"?"==t)return I(Ue);if(":"==e)return I(be,_e);if("="==t)return I(U);var r=V.state.lexical.prev;return C(r&&"interface"==r.info?Fe:Be)}function He(e,t){return"*"==t?(V.marked="keyword",I(et,W(";"))):"default"==t?(V.marked="keyword",I(R,W(";"))):"{"==e?I(le(Ke,"}"),et,W(";")):C(D)}function Ke(e,t){return"as"==t?(V.marked="keyword",I(W("variable"))):"variable"==e?C(U,Ke):void 0}function Ge(e){return"string"==e?I():"("==e?C(R):"."==e?C(X):C(Xe,Ye,et)}function Xe(e,t){return"{"==e?pe(Xe,"}"):("variable"==e&&S(t),"*"==t&&(V.marked="keyword"),I(Ze))}function Ye(e){if(","==e)return I(Xe,Ye)}function Ze(e,t){if("as"==t)return V.marked="keyword",I(Xe)}function et(e,t){if("from"==t)return V.marked="keyword",I(R)}function tt(e){return"]"==e?I():C(le(U,"]"))}function rt(){return C(L("form"),Ie,W("{"),L("}"),le(nt,"}"),Q,Q)}function nt(){return C(Ie,_e)}function at(e,t){return"operator"==e.lastType||","==e.lastType||m.test(t.charAt(0))||/[,.]/.test(t.charAt(0))}function it(e,t,r){return t.tokenize==b&&/^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\[{}\(,;:]|=>)$/.test(t.lastType)||"quasi"==t.lastType&&/\{\s*$/.test(e.string.slice(0,e.pos-(r||0)))}return i(P,"pushcontext"),i(B,"pushblockcontext"),P.lex=B.lex=!0,i(F,"popcontext"),F.lex=!0,i(L,"pushlex"),i(Q,"poplex"),Q.lex=!0,i(W,"expect"),i(D,"statement"),i(J,"maybeCatchBinding"),i(R,"expression"),i(U,"expressionNoComma"),i(H,"parenExpr"),i(K,"expressionInner"),i(G,"maybeexpression"),i(X,"maybeoperatorComma"),i(Y,"maybeoperatorNoComma"),i(Z,"quasi"),i(ee,"continueQuasi"),i(te,"arrowBody"),i(re,"arrowBodyNoComma"),i(ne,"maybeTarget"),i(ae,"target"),i(ie,"targetNoComma"),i(oe,"maybelabel"),i(se,"property"),i(ce,"objprop"),i(ue,"getterSetter"),i(fe,"afterprop"),i(le,"commasep"),i(pe,"contCommasep"),i(de,"block"),i(me,"maybetype"),i(ye,"maybetypeOrIn"),i(ve,"mayberettype"),i(ke,"isKW"),i(be,"typeexpr"),i(we,"maybeReturnType"),i(xe,"typeprops"),i(ge,"typeprop"),i(he,"quasiType"),i(je,"continueQuasiType"),i(Ae,"typearg"),i(Me,"afterType"),i(Ee,"maybeTypeArgs"),i(Te,"typeparam"),i(Ve,"maybeTypeDefault"),i(Ce,"vardef"),i(Ie,"pattern"),i(ze,"proppattern"),i(Se,"eltpattern"),i(_e,"maybeAssign"),i(Oe,"vardefCont"),i($e,"maybeelse"),i(qe,"forspec"),i(Ne,"forspec1"),i(Pe,"forspec2"),i(Be,"functiondef"),i(Fe,"functiondecl"),i(Le,"typename"),i(Qe,"funarg"),i(We,"classExpression"),i(De,"className"),i(Je,"classNameAfter"),i(Re,"classBody"),i(Ue,"classfield"),i(He,"afterExport"),i(Ke,"exportField"),i(Ge,"afterImport"),i(Xe,"importSpec"),i(Ye,"maybeMoreImports"),i(Ze,"maybeAs"),i(et,"maybeFrom"),i(tt,"arrayLiteral"),i(rt,"enumdef"),i(nt,"enummember"),i(at,"isContinuedStatement"),i(it,"expressionAllowed"),{startState:function(e){var r={tokenize:b,lastType:"sof",cc:[],lexical:new M((e||0)-o,0,"block",!1),localVars:t.localVars,context:t.localVars&&new $(null,null,!1),indented:e||0};return t.globalVars&&"object"==typeof t.globalVars&&(r.globalVars=t.globalVars),r},token:function(e,t){if(e.sol()&&(t.lexical.hasOwnProperty("align")||(t.lexical.align=!1),t.indented=e.indentation(),j(e,t)),t.tokenize!=x&&e.eatSpace())return null;var r=t.tokenize(e,t);return"comment"==n?r:(t.lastType="operator"!=n||"++"!=a&&"--"!=a?n:"incdec",T(t,r,n,a,e))},indent:function(e,n){if(e.tokenize==x||e.tokenize==g)return r.Pass;if(e.tokenize!=b)return 0;var a,i=n&&n.charAt(0),c=e.lexical;if(!/^\s*else\b/.test(n))for(var u=e.cc.length-1;u>=0;--u){var f=e.cc[u];if(f==Q)c=c.prev;else if(f!=$e&&f!=F)break}for(;("stat"==c.type||"form"==c.type)&&("}"==i||(a=e.cc[e.cc.length-1])&&(a==X||a==Y)&&!/^[,\.=+\-*:?[\(]/.test(n));)c=c.prev;s&&")"==c.type&&"stat"==c.prev.type&&(c=c.prev);var l=c.type,p=i==l;return"vardef"==l?c.indented+("operator"==e.lastType||","==e.lastType?c.info.length+1:0):"form"==l&&"{"==i?c.indented:"form"==l?c.indented+o:"stat"==l?c.indented+(at(e,n)?s||o:0):"switch"!=c.info||p||0==t.doubleIndentSwitch?c.align?c.column+(p?0:1):c.indented+(p?0:o):c.indented+(/^(?:case|default)\b/.test(n)?o:2*o)},electricInput:/^\s*(?:case .*?:|default:|\{|\})$/,blockCommentStart:u?null:"/*",blockCommentEnd:u?null:"*/",blockCommentContinue:u?null:" * ",lineComment:u?null:"//",fold:"brace",closeBrackets:"()[]{}''\"\"``",helperType:u?"json":"javascript",jsonldMode:c,jsonMode:u,expressionAllowed:it,skipExpression:function(e){T(e,"atom","atom","true",new r.StringStream("",2,null))}}})),r.registerHelper("wordChars","javascript",/[\w$]/),r.defineMIME("text/javascript","javascript"),r.defineMIME("text/ecmascript","javascript"),r.defineMIME("application/javascript","javascript"),r.defineMIME("application/x-javascript","javascript"),r.defineMIME("application/ecmascript","javascript"),r.defineMIME("application/json",{name:"javascript",json:!0}),r.defineMIME("application/x-json",{name:"javascript",json:!0}),r.defineMIME("application/manifest+json",{name:"javascript",json:!0}),r.defineMIME("application/ld+json",{name:"javascript",jsonld:!0}),r.defineMIME("text/typescript",{name:"javascript",typescript:!0}),r.defineMIME("application/typescript",{name:"javascript",typescript:!0})}();var s={},c=o({__proto__:null,default:(0,n.g)(s)},[s])}}]); -//# sourceMappingURL=143.c848198a.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/143.c848198a.chunk.js.map b/serv/web/build/static/js/143.c848198a.chunk.js.map deleted file mode 100644 index a2575dce..00000000 --- a/serv/web/build/static/js/143.c848198a.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/143.c848198a.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/mode/javascript/javascript.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nCodeMirror.defineMode(\"javascript\", function(config, parserConfig) {\n var indentUnit = config.indentUnit;\n var statementIndent = parserConfig.statementIndent;\n var jsonldMode = parserConfig.jsonld;\n var jsonMode = parserConfig.json || jsonldMode;\n var trackScope = parserConfig.trackScope !== false\n var isTS = parserConfig.typescript;\n var wordRE = parserConfig.wordCharacters || /[\\w$\\xa1-\\uffff]/;\n\n // Tokenizer\n\n var keywords = function(){\n function kw(type) {return {type: type, style: \"keyword\"};}\n var A = kw(\"keyword a\"), B = kw(\"keyword b\"), C = kw(\"keyword c\"), D = kw(\"keyword d\");\n var operator = kw(\"operator\"), atom = {type: \"atom\", style: \"atom\"};\n\n return {\n \"if\": kw(\"if\"), \"while\": A, \"with\": A, \"else\": B, \"do\": B, \"try\": B, \"finally\": B,\n \"return\": D, \"break\": D, \"continue\": D, \"new\": kw(\"new\"), \"delete\": C, \"void\": C, \"throw\": C,\n \"debugger\": kw(\"debugger\"), \"var\": kw(\"var\"), \"const\": kw(\"var\"), \"let\": kw(\"var\"),\n \"function\": kw(\"function\"), \"catch\": kw(\"catch\"),\n \"for\": kw(\"for\"), \"switch\": kw(\"switch\"), \"case\": kw(\"case\"), \"default\": kw(\"default\"),\n \"in\": operator, \"typeof\": operator, \"instanceof\": operator,\n \"true\": atom, \"false\": atom, \"null\": atom, \"undefined\": atom, \"NaN\": atom, \"Infinity\": atom,\n \"this\": kw(\"this\"), \"class\": kw(\"class\"), \"super\": kw(\"atom\"),\n \"yield\": C, \"export\": kw(\"export\"), \"import\": kw(\"import\"), \"extends\": C,\n \"await\": C\n };\n }();\n\n var isOperatorChar = /[+\\-*&%=<>!?|~^@]/;\n var isJsonldKeyword = /^@(context|id|value|language|type|container|list|set|reverse|index|base|vocab|graph)\"/;\n\n function readRegexp(stream) {\n var escaped = false, next, inSet = false;\n while ((next = stream.next()) != null) {\n if (!escaped) {\n if (next == \"/\" && !inSet) return;\n if (next == \"[\") inSet = true;\n else if (inSet && next == \"]\") inSet = false;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n }\n\n // Used as scratch variables to communicate multiple values without\n // consing up tons of objects.\n var type, content;\n function ret(tp, style, cont) {\n type = tp; content = cont;\n return style;\n }\n function tokenBase(stream, state) {\n var ch = stream.next();\n if (ch == '\"' || ch == \"'\") {\n state.tokenize = tokenString(ch);\n return state.tokenize(stream, state);\n } else if (ch == \".\" && stream.match(/^\\d[\\d_]*(?:[eE][+\\-]?[\\d_]+)?/)) {\n return ret(\"number\", \"number\");\n } else if (ch == \".\" && stream.match(\"..\")) {\n return ret(\"spread\", \"meta\");\n } else if (/[\\[\\]{}\\(\\),;\\:\\.]/.test(ch)) {\n return ret(ch);\n } else if (ch == \"=\" && stream.eat(\">\")) {\n return ret(\"=>\", \"operator\");\n } else if (ch == \"0\" && stream.match(/^(?:x[\\dA-Fa-f_]+|o[0-7_]+|b[01_]+)n?/)) {\n return ret(\"number\", \"number\");\n } else if (/\\d/.test(ch)) {\n stream.match(/^[\\d_]*(?:n|(?:\\.[\\d_]*)?(?:[eE][+\\-]?[\\d_]+)?)?/);\n return ret(\"number\", \"number\");\n } else if (ch == \"/\") {\n if (stream.eat(\"*\")) {\n state.tokenize = tokenComment;\n return tokenComment(stream, state);\n } else if (stream.eat(\"/\")) {\n stream.skipToEnd();\n return ret(\"comment\", \"comment\");\n } else if (expressionAllowed(stream, state, 1)) {\n readRegexp(stream);\n stream.match(/^\\b(([gimyus])(?![gimyus]*\\2))+\\b/);\n return ret(\"regexp\", \"string-2\");\n } else {\n stream.eat(\"=\");\n return ret(\"operator\", \"operator\", stream.current());\n }\n } else if (ch == \"`\") {\n state.tokenize = tokenQuasi;\n return tokenQuasi(stream, state);\n } else if (ch == \"#\" && stream.peek() == \"!\") {\n stream.skipToEnd();\n return ret(\"meta\", \"meta\");\n } else if (ch == \"#\" && stream.eatWhile(wordRE)) {\n return ret(\"variable\", \"property\")\n } else if (ch == \"<\" && stream.match(\"!--\") ||\n (ch == \"-\" && stream.match(\"->\") && !/\\S/.test(stream.string.slice(0, stream.start)))) {\n stream.skipToEnd()\n return ret(\"comment\", \"comment\")\n } else if (isOperatorChar.test(ch)) {\n if (ch != \">\" || !state.lexical || state.lexical.type != \">\") {\n if (stream.eat(\"=\")) {\n if (ch == \"!\" || ch == \"=\") stream.eat(\"=\")\n } else if (/[<>*+\\-|&?]/.test(ch)) {\n stream.eat(ch)\n if (ch == \">\") stream.eat(ch)\n }\n }\n if (ch == \"?\" && stream.eat(\".\")) return ret(\".\")\n return ret(\"operator\", \"operator\", stream.current());\n } else if (wordRE.test(ch)) {\n stream.eatWhile(wordRE);\n var word = stream.current()\n if (state.lastType != \".\") {\n if (keywords.propertyIsEnumerable(word)) {\n var kw = keywords[word]\n return ret(kw.type, kw.style, word)\n }\n if (word == \"async\" && stream.match(/^(\\s|\\/\\*([^*]|\\*(?!\\/))*?\\*\\/)*[\\[\\(\\w]/, false))\n return ret(\"async\", \"keyword\", word)\n }\n return ret(\"variable\", \"variable\", word)\n }\n }\n\n function tokenString(quote) {\n return function(stream, state) {\n var escaped = false, next;\n if (jsonldMode && stream.peek() == \"@\" && stream.match(isJsonldKeyword)){\n state.tokenize = tokenBase;\n return ret(\"jsonld-keyword\", \"meta\");\n }\n while ((next = stream.next()) != null) {\n if (next == quote && !escaped) break;\n escaped = !escaped && next == \"\\\\\";\n }\n if (!escaped) state.tokenize = tokenBase;\n return ret(\"string\", \"string\");\n };\n }\n\n function tokenComment(stream, state) {\n var maybeEnd = false, ch;\n while (ch = stream.next()) {\n if (ch == \"/\" && maybeEnd) {\n state.tokenize = tokenBase;\n break;\n }\n maybeEnd = (ch == \"*\");\n }\n return ret(\"comment\", \"comment\");\n }\n\n function tokenQuasi(stream, state) {\n var escaped = false, next;\n while ((next = stream.next()) != null) {\n if (!escaped && (next == \"`\" || next == \"$\" && stream.eat(\"{\"))) {\n state.tokenize = tokenBase;\n break;\n }\n escaped = !escaped && next == \"\\\\\";\n }\n return ret(\"quasi\", \"string-2\", stream.current());\n }\n\n var brackets = \"([{}])\";\n // This is a crude lookahead trick to try and notice that we're\n // parsing the argument patterns for a fat-arrow function before we\n // actually hit the arrow token. It only works if the arrow is on\n // the same line as the arguments and there's no strange noise\n // (comments) in between. Fallback is to only notice when we hit the\n // arrow, and not declare the arguments as locals for the arrow\n // body.\n function findFatArrow(stream, state) {\n if (state.fatArrowAt) state.fatArrowAt = null;\n var arrow = stream.string.indexOf(\"=>\", stream.start);\n if (arrow < 0) return;\n\n if (isTS) { // Try to skip TypeScript return type declarations after the arguments\n var m = /:\\s*(?:\\w+(?:<[^>]*>|\\[\\])?|\\{[^}]*\\})\\s*$/.exec(stream.string.slice(stream.start, arrow))\n if (m) arrow = m.index\n }\n\n var depth = 0, sawSomething = false;\n for (var pos = arrow - 1; pos >= 0; --pos) {\n var ch = stream.string.charAt(pos);\n var bracket = brackets.indexOf(ch);\n if (bracket >= 0 && bracket < 3) {\n if (!depth) { ++pos; break; }\n if (--depth == 0) { if (ch == \"(\") sawSomething = true; break; }\n } else if (bracket >= 3 && bracket < 6) {\n ++depth;\n } else if (wordRE.test(ch)) {\n sawSomething = true;\n } else if (/[\"'\\/`]/.test(ch)) {\n for (;; --pos) {\n if (pos == 0) return\n var next = stream.string.charAt(pos - 1)\n if (next == ch && stream.string.charAt(pos - 2) != \"\\\\\") { pos--; break }\n }\n } else if (sawSomething && !depth) {\n ++pos;\n break;\n }\n }\n if (sawSomething && !depth) state.fatArrowAt = pos;\n }\n\n // Parser\n\n var atomicTypes = {\"atom\": true, \"number\": true, \"variable\": true, \"string\": true,\n \"regexp\": true, \"this\": true, \"import\": true, \"jsonld-keyword\": true};\n\n function JSLexical(indented, column, type, align, prev, info) {\n this.indented = indented;\n this.column = column;\n this.type = type;\n this.prev = prev;\n this.info = info;\n if (align != null) this.align = align;\n }\n\n function inScope(state, varname) {\n if (!trackScope) return false\n for (var v = state.localVars; v; v = v.next)\n if (v.name == varname) return true;\n for (var cx = state.context; cx; cx = cx.prev) {\n for (var v = cx.vars; v; v = v.next)\n if (v.name == varname) return true;\n }\n }\n\n function parseJS(state, style, type, content, stream) {\n var cc = state.cc;\n // Communicate our context to the combinators.\n // (Less wasteful than consing up a hundred closures on every call.)\n cx.state = state; cx.stream = stream; cx.marked = null, cx.cc = cc; cx.style = style;\n\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = true;\n\n while(true) {\n var combinator = cc.length ? cc.pop() : jsonMode ? expression : statement;\n if (combinator(type, content)) {\n while(cc.length && cc[cc.length - 1].lex)\n cc.pop()();\n if (cx.marked) return cx.marked;\n if (type == \"variable\" && inScope(state, content)) return \"variable-2\";\n return style;\n }\n }\n }\n\n // Combinator utils\n\n var cx = {state: null, column: null, marked: null, cc: null};\n function pass() {\n for (var i = arguments.length - 1; i >= 0; i--) cx.cc.push(arguments[i]);\n }\n function cont() {\n pass.apply(null, arguments);\n return true;\n }\n function inList(name, list) {\n for (var v = list; v; v = v.next) if (v.name == name) return true\n return false;\n }\n function register(varname) {\n var state = cx.state;\n cx.marked = \"def\";\n if (!trackScope) return\n if (state.context) {\n if (state.lexical.info == \"var\" && state.context && state.context.block) {\n // FIXME function decls are also not block scoped\n var newContext = registerVarScoped(varname, state.context)\n if (newContext != null) {\n state.context = newContext\n return\n }\n } else if (!inList(varname, state.localVars)) {\n state.localVars = new Var(varname, state.localVars)\n return\n }\n }\n // Fall through means this is global\n if (parserConfig.globalVars && !inList(varname, state.globalVars))\n state.globalVars = new Var(varname, state.globalVars)\n }\n function registerVarScoped(varname, context) {\n if (!context) {\n return null\n } else if (context.block) {\n var inner = registerVarScoped(varname, context.prev)\n if (!inner) return null\n if (inner == context.prev) return context\n return new Context(inner, context.vars, true)\n } else if (inList(varname, context.vars)) {\n return context\n } else {\n return new Context(context.prev, new Var(varname, context.vars), false)\n }\n }\n\n function isModifier(name) {\n return name == \"public\" || name == \"private\" || name == \"protected\" || name == \"abstract\" || name == \"readonly\"\n }\n\n // Combinators\n\n function Context(prev, vars, block) { this.prev = prev; this.vars = vars; this.block = block }\n function Var(name, next) { this.name = name; this.next = next }\n\n var defaultVars = new Var(\"this\", new Var(\"arguments\", null))\n function pushcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, false)\n cx.state.localVars = defaultVars\n }\n function pushblockcontext() {\n cx.state.context = new Context(cx.state.context, cx.state.localVars, true)\n cx.state.localVars = null\n }\n pushcontext.lex = pushblockcontext.lex = true\n function popcontext() {\n cx.state.localVars = cx.state.context.vars\n cx.state.context = cx.state.context.prev\n }\n popcontext.lex = true\n function pushlex(type, info) {\n var result = function() {\n var state = cx.state, indent = state.indented;\n if (state.lexical.type == \"stat\") indent = state.lexical.indented;\n else for (var outer = state.lexical; outer && outer.type == \")\" && outer.align; outer = outer.prev)\n indent = outer.indented;\n state.lexical = new JSLexical(indent, cx.stream.column(), type, null, state.lexical, info);\n };\n result.lex = true;\n return result;\n }\n function poplex() {\n var state = cx.state;\n if (state.lexical.prev) {\n if (state.lexical.type == \")\")\n state.indented = state.lexical.indented;\n state.lexical = state.lexical.prev;\n }\n }\n poplex.lex = true;\n\n function expect(wanted) {\n function exp(type) {\n if (type == wanted) return cont();\n else if (wanted == \";\" || type == \"}\" || type == \")\" || type == \"]\") return pass();\n else return cont(exp);\n };\n return exp;\n }\n\n function statement(type, value) {\n if (type == \"var\") return cont(pushlex(\"vardef\", value), vardef, expect(\";\"), poplex);\n if (type == \"keyword a\") return cont(pushlex(\"form\"), parenExpr, statement, poplex);\n if (type == \"keyword b\") return cont(pushlex(\"form\"), statement, poplex);\n if (type == \"keyword d\") return cx.stream.match(/^\\s*$/, false) ? cont() : cont(pushlex(\"stat\"), maybeexpression, expect(\";\"), poplex);\n if (type == \"debugger\") return cont(expect(\";\"));\n if (type == \"{\") return cont(pushlex(\"}\"), pushblockcontext, block, poplex, popcontext);\n if (type == \";\") return cont();\n if (type == \"if\") {\n if (cx.state.lexical.info == \"else\" && cx.state.cc[cx.state.cc.length - 1] == poplex)\n cx.state.cc.pop()();\n return cont(pushlex(\"form\"), parenExpr, statement, poplex, maybeelse);\n }\n if (type == \"function\") return cont(functiondef);\n if (type == \"for\") return cont(pushlex(\"form\"), pushblockcontext, forspec, statement, popcontext, poplex);\n if (type == \"class\" || (isTS && value == \"interface\")) {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\", type == \"class\" ? type : value), className, poplex)\n }\n if (type == \"variable\") {\n if (isTS && value == \"declare\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else if (isTS && (value == \"module\" || value == \"enum\" || value == \"type\") && cx.stream.match(/^\\s*\\w/, false)) {\n cx.marked = \"keyword\"\n if (value == \"enum\") return cont(enumdef);\n else if (value == \"type\") return cont(typename, expect(\"operator\"), typeexpr, expect(\";\"));\n else return cont(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), block, poplex, poplex)\n } else if (isTS && value == \"namespace\") {\n cx.marked = \"keyword\"\n return cont(pushlex(\"form\"), expression, statement, poplex)\n } else if (isTS && value == \"abstract\") {\n cx.marked = \"keyword\"\n return cont(statement)\n } else {\n return cont(pushlex(\"stat\"), maybelabel);\n }\n }\n if (type == \"switch\") return cont(pushlex(\"form\"), parenExpr, expect(\"{\"), pushlex(\"}\", \"switch\"), pushblockcontext,\n block, poplex, poplex, popcontext);\n if (type == \"case\") return cont(expression, expect(\":\"));\n if (type == \"default\") return cont(expect(\":\"));\n if (type == \"catch\") return cont(pushlex(\"form\"), pushcontext, maybeCatchBinding, statement, poplex, popcontext);\n if (type == \"export\") return cont(pushlex(\"stat\"), afterExport, poplex);\n if (type == \"import\") return cont(pushlex(\"stat\"), afterImport, poplex);\n if (type == \"async\") return cont(statement)\n if (value == \"@\") return cont(expression, statement)\n return pass(pushlex(\"stat\"), expression, expect(\";\"), poplex);\n }\n function maybeCatchBinding(type) {\n if (type == \"(\") return cont(funarg, expect(\")\"))\n }\n function expression(type, value) {\n return expressionInner(type, value, false);\n }\n function expressionNoComma(type, value) {\n return expressionInner(type, value, true);\n }\n function parenExpr(type) {\n if (type != \"(\") return pass()\n return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex)\n }\n function expressionInner(type, value, noComma) {\n if (cx.state.fatArrowAt == cx.stream.start) {\n var body = noComma ? arrowBodyNoComma : arrowBody;\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, expect(\"=>\"), body, popcontext);\n else if (type == \"variable\") return pass(pushcontext, pattern, expect(\"=>\"), body, popcontext);\n }\n\n var maybeop = noComma ? maybeoperatorNoComma : maybeoperatorComma;\n if (atomicTypes.hasOwnProperty(type)) return cont(maybeop);\n if (type == \"function\") return cont(functiondef, maybeop);\n if (type == \"class\" || (isTS && value == \"interface\")) { cx.marked = \"keyword\"; return cont(pushlex(\"form\"), classExpression, poplex); }\n if (type == \"keyword c\" || type == \"async\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"(\") return cont(pushlex(\")\"), maybeexpression, expect(\")\"), poplex, maybeop);\n if (type == \"operator\" || type == \"spread\") return cont(noComma ? expressionNoComma : expression);\n if (type == \"[\") return cont(pushlex(\"]\"), arrayLiteral, poplex, maybeop);\n if (type == \"{\") return contCommasep(objprop, \"}\", null, maybeop);\n if (type == \"quasi\") return pass(quasi, maybeop);\n if (type == \"new\") return cont(maybeTarget(noComma));\n return cont();\n }\n function maybeexpression(type) {\n if (type.match(/[;\\}\\)\\],]/)) return pass();\n return pass(expression);\n }\n\n function maybeoperatorComma(type, value) {\n if (type == \",\") return cont(maybeexpression);\n return maybeoperatorNoComma(type, value, false);\n }\n function maybeoperatorNoComma(type, value, noComma) {\n var me = noComma == false ? maybeoperatorComma : maybeoperatorNoComma;\n var expr = noComma == false ? expression : expressionNoComma;\n if (type == \"=>\") return cont(pushcontext, noComma ? arrowBodyNoComma : arrowBody, popcontext);\n if (type == \"operator\") {\n if (/\\+\\+|--/.test(value) || isTS && value == \"!\") return cont(me);\n if (isTS && value == \"<\" && cx.stream.match(/^([^<>]|<[^<>]*>)*>\\s*\\(/, false))\n return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, me);\n if (value == \"?\") return cont(expression, expect(\":\"), expr);\n return cont(expr);\n }\n if (type == \"quasi\") { return pass(quasi, me); }\n if (type == \";\") return;\n if (type == \"(\") return contCommasep(expressionNoComma, \")\", \"call\", me);\n if (type == \".\") return cont(property, me);\n if (type == \"[\") return cont(pushlex(\"]\"), maybeexpression, expect(\"]\"), poplex, me);\n if (isTS && value == \"as\") { cx.marked = \"keyword\"; return cont(typeexpr, me) }\n if (type == \"regexp\") {\n cx.state.lastType = cx.marked = \"operator\"\n cx.stream.backUp(cx.stream.pos - cx.stream.start - 1)\n return cont(expr)\n }\n }\n function quasi(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasi);\n return cont(maybeexpression, continueQuasi);\n }\n function continueQuasi(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasi);\n }\n }\n function arrowBody(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expression);\n }\n function arrowBodyNoComma(type) {\n findFatArrow(cx.stream, cx.state);\n return pass(type == \"{\" ? statement : expressionNoComma);\n }\n function maybeTarget(noComma) {\n return function(type) {\n if (type == \".\") return cont(noComma ? targetNoComma : target);\n else if (type == \"variable\" && isTS) return cont(maybeTypeArgs, noComma ? maybeoperatorNoComma : maybeoperatorComma)\n else return pass(noComma ? expressionNoComma : expression);\n };\n }\n function target(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorComma); }\n }\n function targetNoComma(_, value) {\n if (value == \"target\") { cx.marked = \"keyword\"; return cont(maybeoperatorNoComma); }\n }\n function maybelabel(type) {\n if (type == \":\") return cont(poplex, statement);\n return pass(maybeoperatorComma, expect(\";\"), poplex);\n }\n function property(type) {\n if (type == \"variable\") {cx.marked = \"property\"; return cont();}\n }\n function objprop(type, value) {\n if (type == \"async\") {\n cx.marked = \"property\";\n return cont(objprop);\n } else if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n if (value == \"get\" || value == \"set\") return cont(getterSetter);\n var m // Work around fat-arrow-detection complication for detecting typescript typed arrow params\n if (isTS && cx.state.fatArrowAt == cx.stream.start && (m = cx.stream.match(/^\\s*:\\s*/, false)))\n cx.state.fatArrowAt = cx.stream.pos + m[0].length\n return cont(afterprop);\n } else if (type == \"number\" || type == \"string\") {\n cx.marked = jsonldMode ? \"property\" : (cx.style + \" property\");\n return cont(afterprop);\n } else if (type == \"jsonld-keyword\") {\n return cont(afterprop);\n } else if (isTS && isModifier(value)) {\n cx.marked = \"keyword\"\n return cont(objprop)\n } else if (type == \"[\") {\n return cont(expression, maybetype, expect(\"]\"), afterprop);\n } else if (type == \"spread\") {\n return cont(expressionNoComma, afterprop);\n } else if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(objprop);\n } else if (type == \":\") {\n return pass(afterprop)\n }\n }\n function getterSetter(type) {\n if (type != \"variable\") return pass(afterprop);\n cx.marked = \"property\";\n return cont(functiondef);\n }\n function afterprop(type) {\n if (type == \":\") return cont(expressionNoComma);\n if (type == \"(\") return pass(functiondef);\n }\n function commasep(what, end, sep) {\n function proceed(type, value) {\n if (sep ? sep.indexOf(type) > -1 : type == \",\") {\n var lex = cx.state.lexical;\n if (lex.info == \"call\") lex.pos = (lex.pos || 0) + 1;\n return cont(function(type, value) {\n if (type == end || value == end) return pass()\n return pass(what)\n }, proceed);\n }\n if (type == end || value == end) return cont();\n if (sep && sep.indexOf(\";\") > -1) return pass(what)\n return cont(expect(end));\n }\n return function(type, value) {\n if (type == end || value == end) return cont();\n return pass(what, proceed);\n };\n }\n function contCommasep(what, end, info) {\n for (var i = 3; i < arguments.length; i++)\n cx.cc.push(arguments[i]);\n return cont(pushlex(end, info), commasep(what, end), poplex);\n }\n function block(type) {\n if (type == \"}\") return cont();\n return pass(statement, block);\n }\n function maybetype(type, value) {\n if (isTS) {\n if (type == \":\") return cont(typeexpr);\n if (value == \"?\") return cont(maybetype);\n }\n }\n function maybetypeOrIn(type, value) {\n if (isTS && (type == \":\" || value == \"in\")) return cont(typeexpr)\n }\n function mayberettype(type) {\n if (isTS && type == \":\") {\n if (cx.stream.match(/^\\s*\\w+\\s+is\\b/, false)) return cont(expression, isKW, typeexpr)\n else return cont(typeexpr)\n }\n }\n function isKW(_, value) {\n if (value == \"is\") {\n cx.marked = \"keyword\"\n return cont()\n }\n }\n function typeexpr(type, value) {\n if (value == \"keyof\" || value == \"typeof\" || value == \"infer\" || value == \"readonly\") {\n cx.marked = \"keyword\"\n return cont(value == \"typeof\" ? expressionNoComma : typeexpr)\n }\n if (type == \"variable\" || value == \"void\") {\n cx.marked = \"type\"\n return cont(afterType)\n }\n if (value == \"|\" || value == \"&\") return cont(typeexpr)\n if (type == \"string\" || type == \"number\" || type == \"atom\") return cont(afterType);\n if (type == \"[\") return cont(pushlex(\"]\"), commasep(typeexpr, \"]\", \",\"), poplex, afterType)\n if (type == \"{\") return cont(pushlex(\"}\"), typeprops, poplex, afterType)\n if (type == \"(\") return cont(commasep(typearg, \")\"), maybeReturnType, afterType)\n if (type == \"<\") return cont(commasep(typeexpr, \">\"), typeexpr)\n if (type == \"quasi\") { return pass(quasiType, afterType); }\n }\n function maybeReturnType(type) {\n if (type == \"=>\") return cont(typeexpr)\n }\n function typeprops(type) {\n if (type.match(/[\\}\\)\\]]/)) return cont()\n if (type == \",\" || type == \";\") return cont(typeprops)\n return pass(typeprop, typeprops)\n }\n function typeprop(type, value) {\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\"\n return cont(typeprop)\n } else if (value == \"?\" || type == \"number\" || type == \"string\") {\n return cont(typeprop)\n } else if (type == \":\") {\n return cont(typeexpr)\n } else if (type == \"[\") {\n return cont(expect(\"variable\"), maybetypeOrIn, expect(\"]\"), typeprop)\n } else if (type == \"(\") {\n return pass(functiondecl, typeprop)\n } else if (!type.match(/[;\\}\\)\\],]/)) {\n return cont()\n }\n }\n function quasiType(type, value) {\n if (type != \"quasi\") return pass();\n if (value.slice(value.length - 2) != \"${\") return cont(quasiType);\n return cont(typeexpr, continueQuasiType);\n }\n function continueQuasiType(type) {\n if (type == \"}\") {\n cx.marked = \"string-2\";\n cx.state.tokenize = tokenQuasi;\n return cont(quasiType);\n }\n }\n function typearg(type, value) {\n if (type == \"variable\" && cx.stream.match(/^\\s*[?:]/, false) || value == \"?\") return cont(typearg)\n if (type == \":\") return cont(typeexpr)\n if (type == \"spread\") return cont(typearg)\n return pass(typeexpr)\n }\n function afterType(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n if (value == \"|\" || type == \".\" || value == \"&\") return cont(typeexpr)\n if (type == \"[\") return cont(typeexpr, expect(\"]\"), afterType)\n if (value == \"extends\" || value == \"implements\") { cx.marked = \"keyword\"; return cont(typeexpr) }\n if (value == \"?\") return cont(typeexpr, expect(\":\"), typeexpr)\n }\n function maybeTypeArgs(_, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeexpr, \">\"), poplex, afterType)\n }\n function typeparam() {\n return pass(typeexpr, maybeTypeDefault)\n }\n function maybeTypeDefault(_, value) {\n if (value == \"=\") return cont(typeexpr)\n }\n function vardef(_, value) {\n if (value == \"enum\") {cx.marked = \"keyword\"; return cont(enumdef)}\n return pass(pattern, maybetype, maybeAssign, vardefCont);\n }\n function pattern(type, value) {\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(pattern) }\n if (type == \"variable\") { register(value); return cont(); }\n if (type == \"spread\") return cont(pattern);\n if (type == \"[\") return contCommasep(eltpattern, \"]\");\n if (type == \"{\") return contCommasep(proppattern, \"}\");\n }\n function proppattern(type, value) {\n if (type == \"variable\" && !cx.stream.match(/^\\s*:/, false)) {\n register(value);\n return cont(maybeAssign);\n }\n if (type == \"variable\") cx.marked = \"property\";\n if (type == \"spread\") return cont(pattern);\n if (type == \"}\") return pass();\n if (type == \"[\") return cont(expression, expect(']'), expect(':'), proppattern);\n return cont(expect(\":\"), pattern, maybeAssign);\n }\n function eltpattern() {\n return pass(pattern, maybeAssign)\n }\n function maybeAssign(_type, value) {\n if (value == \"=\") return cont(expressionNoComma);\n }\n function vardefCont(type) {\n if (type == \",\") return cont(vardef);\n }\n function maybeelse(type, value) {\n if (type == \"keyword b\" && value == \"else\") return cont(pushlex(\"form\", \"else\"), statement, poplex);\n }\n function forspec(type, value) {\n if (value == \"await\") return cont(forspec);\n if (type == \"(\") return cont(pushlex(\")\"), forspec1, poplex);\n }\n function forspec1(type) {\n if (type == \"var\") return cont(vardef, forspec2);\n if (type == \"variable\") return cont(forspec2);\n return pass(forspec2)\n }\n function forspec2(type, value) {\n if (type == \")\") return cont()\n if (type == \";\") return cont(forspec2)\n if (value == \"in\" || value == \"of\") { cx.marked = \"keyword\"; return cont(expression, forspec2) }\n return pass(expression, forspec2)\n }\n function functiondef(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondef);}\n if (type == \"variable\") {register(value); return cont(functiondef);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, statement, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondef)\n }\n function functiondecl(type, value) {\n if (value == \"*\") {cx.marked = \"keyword\"; return cont(functiondecl);}\n if (type == \"variable\") {register(value); return cont(functiondecl);}\n if (type == \"(\") return cont(pushcontext, pushlex(\")\"), commasep(funarg, \")\"), poplex, mayberettype, popcontext);\n if (isTS && value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, functiondecl)\n }\n function typename(type, value) {\n if (type == \"keyword\" || type == \"variable\") {\n cx.marked = \"type\"\n return cont(typename)\n } else if (value == \"<\") {\n return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex)\n }\n }\n function funarg(type, value) {\n if (value == \"@\") cont(expression, funarg)\n if (type == \"spread\") return cont(funarg);\n if (isTS && isModifier(value)) { cx.marked = \"keyword\"; return cont(funarg); }\n if (isTS && type == \"this\") return cont(maybetype, maybeAssign)\n return pass(pattern, maybetype, maybeAssign);\n }\n function classExpression(type, value) {\n // Class expressions may have an optional name.\n if (type == \"variable\") return className(type, value);\n return classNameAfter(type, value);\n }\n function className(type, value) {\n if (type == \"variable\") {register(value); return cont(classNameAfter);}\n }\n function classNameAfter(type, value) {\n if (value == \"<\") return cont(pushlex(\">\"), commasep(typeparam, \">\"), poplex, classNameAfter)\n if (value == \"extends\" || value == \"implements\" || (isTS && type == \",\")) {\n if (value == \"implements\") cx.marked = \"keyword\";\n return cont(isTS ? typeexpr : expression, classNameAfter);\n }\n if (type == \"{\") return cont(pushlex(\"}\"), classBody, poplex);\n }\n function classBody(type, value) {\n if (type == \"async\" ||\n (type == \"variable\" &&\n (value == \"static\" || value == \"get\" || value == \"set\" || (isTS && isModifier(value))) &&\n cx.stream.match(/^\\s+[\\w$\\xa1-\\uffff]/, false))) {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (type == \"variable\" || cx.style == \"keyword\") {\n cx.marked = \"property\";\n return cont(classfield, classBody);\n }\n if (type == \"number\" || type == \"string\") return cont(classfield, classBody);\n if (type == \"[\")\n return cont(expression, maybetype, expect(\"]\"), classfield, classBody)\n if (value == \"*\") {\n cx.marked = \"keyword\";\n return cont(classBody);\n }\n if (isTS && type == \"(\") return pass(functiondecl, classBody)\n if (type == \";\" || type == \",\") return cont(classBody);\n if (type == \"}\") return cont();\n if (value == \"@\") return cont(expression, classBody)\n }\n function classfield(type, value) {\n if (value == \"!\") return cont(classfield)\n if (value == \"?\") return cont(classfield)\n if (type == \":\") return cont(typeexpr, maybeAssign)\n if (value == \"=\") return cont(expressionNoComma)\n var context = cx.state.lexical.prev, isInterface = context && context.info == \"interface\"\n return pass(isInterface ? functiondecl : functiondef)\n }\n function afterExport(type, value) {\n if (value == \"*\") { cx.marked = \"keyword\"; return cont(maybeFrom, expect(\";\")); }\n if (value == \"default\") { cx.marked = \"keyword\"; return cont(expression, expect(\";\")); }\n if (type == \"{\") return cont(commasep(exportField, \"}\"), maybeFrom, expect(\";\"));\n return pass(statement);\n }\n function exportField(type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(expect(\"variable\")); }\n if (type == \"variable\") return pass(expressionNoComma, exportField);\n }\n function afterImport(type) {\n if (type == \"string\") return cont();\n if (type == \"(\") return pass(expression);\n if (type == \".\") return pass(maybeoperatorComma);\n return pass(importSpec, maybeMoreImports, maybeFrom);\n }\n function importSpec(type, value) {\n if (type == \"{\") return contCommasep(importSpec, \"}\");\n if (type == \"variable\") register(value);\n if (value == \"*\") cx.marked = \"keyword\";\n return cont(maybeAs);\n }\n function maybeMoreImports(type) {\n if (type == \",\") return cont(importSpec, maybeMoreImports)\n }\n function maybeAs(_type, value) {\n if (value == \"as\") { cx.marked = \"keyword\"; return cont(importSpec); }\n }\n function maybeFrom(_type, value) {\n if (value == \"from\") { cx.marked = \"keyword\"; return cont(expression); }\n }\n function arrayLiteral(type) {\n if (type == \"]\") return cont();\n return pass(commasep(expressionNoComma, \"]\"));\n }\n function enumdef() {\n return pass(pushlex(\"form\"), pattern, expect(\"{\"), pushlex(\"}\"), commasep(enummember, \"}\"), poplex, poplex)\n }\n function enummember() {\n return pass(pattern, maybeAssign);\n }\n\n function isContinuedStatement(state, textAfter) {\n return state.lastType == \"operator\" || state.lastType == \",\" ||\n isOperatorChar.test(textAfter.charAt(0)) ||\n /[,.]/.test(textAfter.charAt(0));\n }\n\n function expressionAllowed(stream, state, backUp) {\n return state.tokenize == tokenBase &&\n /^(?:operator|sof|keyword [bcd]|case|new|export|default|spread|[\\[{}\\(,;:]|=>)$/.test(state.lastType) ||\n (state.lastType == \"quasi\" && /\\{\\s*$/.test(stream.string.slice(0, stream.pos - (backUp || 0))))\n }\n\n // Interface\n\n return {\n startState: function(basecolumn) {\n var state = {\n tokenize: tokenBase,\n lastType: \"sof\",\n cc: [],\n lexical: new JSLexical((basecolumn || 0) - indentUnit, 0, \"block\", false),\n localVars: parserConfig.localVars,\n context: parserConfig.localVars && new Context(null, null, false),\n indented: basecolumn || 0\n };\n if (parserConfig.globalVars && typeof parserConfig.globalVars == \"object\")\n state.globalVars = parserConfig.globalVars;\n return state;\n },\n\n token: function(stream, state) {\n if (stream.sol()) {\n if (!state.lexical.hasOwnProperty(\"align\"))\n state.lexical.align = false;\n state.indented = stream.indentation();\n findFatArrow(stream, state);\n }\n if (state.tokenize != tokenComment && stream.eatSpace()) return null;\n var style = state.tokenize(stream, state);\n if (type == \"comment\") return style;\n state.lastType = type == \"operator\" && (content == \"++\" || content == \"--\") ? \"incdec\" : type;\n return parseJS(state, style, type, content, stream);\n },\n\n indent: function(state, textAfter) {\n if (state.tokenize == tokenComment || state.tokenize == tokenQuasi) return CodeMirror.Pass;\n if (state.tokenize != tokenBase) return 0;\n var firstChar = textAfter && textAfter.charAt(0), lexical = state.lexical, top\n // Kludge to prevent 'maybelse' from blocking lexical scope pops\n if (!/^\\s*else\\b/.test(textAfter)) for (var i = state.cc.length - 1; i >= 0; --i) {\n var c = state.cc[i];\n if (c == poplex) lexical = lexical.prev;\n else if (c != maybeelse && c != popcontext) break;\n }\n while ((lexical.type == \"stat\" || lexical.type == \"form\") &&\n (firstChar == \"}\" || ((top = state.cc[state.cc.length - 1]) &&\n (top == maybeoperatorComma || top == maybeoperatorNoComma) &&\n !/^[,\\.=+\\-*:?[\\(]/.test(textAfter))))\n lexical = lexical.prev;\n if (statementIndent && lexical.type == \")\" && lexical.prev.type == \"stat\")\n lexical = lexical.prev;\n var type = lexical.type, closing = firstChar == type;\n\n if (type == \"vardef\") return lexical.indented + (state.lastType == \"operator\" || state.lastType == \",\" ? lexical.info.length + 1 : 0);\n else if (type == \"form\" && firstChar == \"{\") return lexical.indented;\n else if (type == \"form\") return lexical.indented + indentUnit;\n else if (type == \"stat\")\n return lexical.indented + (isContinuedStatement(state, textAfter) ? statementIndent || indentUnit : 0);\n else if (lexical.info == \"switch\" && !closing && parserConfig.doubleIndentSwitch != false)\n return lexical.indented + (/^(?:case|default)\\b/.test(textAfter) ? indentUnit : 2 * indentUnit);\n else if (lexical.align) return lexical.column + (closing ? 0 : 1);\n else return lexical.indented + (closing ? 0 : indentUnit);\n },\n\n electricInput: /^\\s*(?:case .*?:|default:|\\{|\\})$/,\n blockCommentStart: jsonMode ? null : \"/*\",\n blockCommentEnd: jsonMode ? null : \"*/\",\n blockCommentContinue: jsonMode ? null : \" * \",\n lineComment: jsonMode ? null : \"//\",\n fold: \"brace\",\n closeBrackets: \"()[]{}''\\\"\\\"``\",\n\n helperType: jsonMode ? \"json\" : \"javascript\",\n jsonldMode: jsonldMode,\n jsonMode: jsonMode,\n\n expressionAllowed: expressionAllowed,\n\n skipExpression: function(state) {\n parseJS(state, \"atom\", \"atom\", \"true\", new CodeMirror.StringStream(\"\", 2, null))\n }\n };\n});\n\nCodeMirror.registerHelper(\"wordChars\", \"javascript\", /[\\w$]/);\n\nCodeMirror.defineMIME(\"text/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"text/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/x-javascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/ecmascript\", \"javascript\");\nCodeMirror.defineMIME(\"application/json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/x-json\", { name: \"javascript\", json: true });\nCodeMirror.defineMIME(\"application/manifest+json\", { name: \"javascript\", json: true })\nCodeMirror.defineMIME(\"application/ld+json\", { name: \"javascript\", jsonld: true });\nCodeMirror.defineMIME(\"text/typescript\", { name: \"javascript\", typescript: true });\nCodeMirror.defineMIME(\"application/typescript\", { name: \"javascript\", typescript: true });\n\n});\n"],"names":["CodeMirror","require$$0","defineMode","config","parserConfig","type","content","indentUnit","statementIndent","jsonldMode","jsonld","jsonMode","json","trackScope","isTS","typescript","wordRE","wordCharacters","keywords","kw","style","__name","A","B","C","D","operator","atom","if","while","with","else","do","try","finally","return","break","continue","new","delete","void","throw","debugger","var","const","let","function","catch","for","switch","case","default","in","typeof","instanceof","true","false","null","undefined","NaN","Infinity","this","class","super","yield","export","import","extends","await","isOperatorChar","isJsonldKeyword","readRegexp","stream","next","escaped","inSet","ret","tp","cont","tokenBase","state","ch","tokenize","tokenString","match","test","eat","tokenComment","skipToEnd","expressionAllowed","current","tokenQuasi","peek","eatWhile","string","slice","start","lexical","word","lastType","propertyIsEnumerable","quote","maybeEnd","brackets","findFatArrow","fatArrowAt","arrow","indexOf","m","exec","index","depth","sawSomething","pos","charAt","bracket","atomicTypes","number","variable","regexp","JSLexical","indented","column","align","prev","info","inScope","varname","v","localVars","name","cx","context","vars","parseJS","cc","marked","hasOwnProperty","length","pop","expression","statement","lex","pass","i","arguments","push","apply","inList","list","register","block","newContext","registerVarScoped","Var","globalVars","inner","Context","isModifier","defaultVars","pushcontext","pushblockcontext","popcontext","pushlex","result","f","indent","outer","poplex","expect","wanted","exp","e","value","vardef","parenExpr","maybeexpression","maybeelse","functiondef","forspec","className","enumdef","typename","typeexpr","pattern","maybelabel","maybeCatchBinding","afterExport","afterImport","funarg","expressionInner","expressionNoComma","noComma","body","arrowBodyNoComma","arrowBody","commasep","maybeop","maybeoperatorNoComma","maybeoperatorComma","classExpression","arrayLiteral","contCommasep","objprop","quasi","maybeTarget","me","expr","property","backUp","continueQuasi","targetNoComma","target","maybeTypeArgs","_","getterSetter","afterprop","maybetype","what","end","sep","proceed","maybetypeOrIn","mayberettype","isKW","afterType","typeprops","typearg","maybeReturnType","quasiType","typeprop","functiondecl","continueQuasiType","typeparam","maybeTypeDefault","maybeAssign","vardefCont","eltpattern","proppattern","_type","forspec1","forspec2","classNameAfter","classBody","classfield","maybeFrom","exportField","importSpec","maybeMoreImports","maybeAs","enummember","isContinuedStatement","textAfter","startState","basecolumn","token","sol","indentation","eatSpace","Pass","top","firstChar","c","closing","doubleIndentSwitch","electricInput","blockCommentStart","blockCommentEnd","blockCommentContinue","lineComment","fold","closeBrackets","helperType","skipExpression","StringStream","registerHelper","defineMIME"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/168.5772bc38.chunk.js b/serv/web/build/static/js/168.5772bc38.chunk.js deleted file mode 100644 index 24c97fcd..00000000 --- a/serv/web/build/static/js/168.5772bc38.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[168,889],{889:function(e,t,n){n.r(t),n.d(t,{C:function(){return o},c:function(){return u}});var r=n(8308);function i(e,t){for(var n=function(){var n=t[r];if("string"!=typeof n&&!Array.isArray(n)){var i=function(t){if("default"!==t&&!(t in e)){var r=Object.getOwnPropertyDescriptor(n,t);r&&Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:function(){return n[t]}})}};for(var a in n)i(a)}},r=0;r=0;i--)t(n[i])}(0,Object.defineProperty)(r,"name",{value:"forEachState",configurable:!0})},3168:function(e,t,n){n.r(t);var r=n(889),i=n(2572),a=n(7382),o=n(2269),u=(n(8308),Object.defineProperty),l=function(e,t){return u(e,"name",{value:t,configurable:!0})};function f(e,t,n){var r=c(n,p(t.string));if(r){var i=null!==t.type&&/"|\w/.test(t.string[0])?t.start:t.end;return{list:r,from:{line:e.line,ch:i},to:{line:e.line,ch:t.end}}}}function c(e,t){return t?s(s(e.map((function(e){return{proximity:y(p(e.text),t),entry:e}})),(function(e){return e.proximity<=2})),(function(e){return!e.entry.isDeprecated})).sort((function(e,t){return(e.entry.isDeprecated?1:0)-(t.entry.isDeprecated?1:0)||e.proximity-t.proximity||e.entry.text.length-t.entry.text.length})).map((function(e){return e.entry})):s(e,(function(e){return!e.isDeprecated}))}function s(e,t){var n=e.filter(t);return 0===n.length?e:n}function p(e){return e.toLowerCase().replaceAll(/\W/g,"")}function y(e,t){var n=d(t,e);return e.length>t.length&&(n-=e.length-t.length-1,n+=0===e.indexOf(t)?0:.5),n}function d(e,t){var n,r,i=[],a=e.length,o=t.length;for(n=0;n<=a;n++)i[n]=[n];for(r=1;r<=o;r++)i[0][r]=r;for(n=1;n<=a;n++)for(r=1;r<=o;r++){var u=e[n-1]===t[r-1]?0:1;i[n][r]=Math.min(i[n-1][r]+1,i[n][r-1]+1,i[n-1][r-1]+u),n>1&&r>1&&e[n-1]===t[r-2]&&e[n-2]===t[r-1]&&(i[n][r]=Math.min(i[n][r],i[n-2][r-2]+u))}return i[a][o]}function v(e,t,n){var r="Invalid"===t.state.kind?t.state.prevState:t.state,o=r.kind,u=r.step;if("Document"===o&&0===u)return f(e,t,[{text:"{"}]);var l=n.variableToType;if(l){var c=g(l,t.state);if("Document"===o||"Variable"===o&&0===u)return f(e,t,Object.keys(l).map((function(e){return{text:'"'.concat(e,'": '),type:l[e]}})));if(("ObjectValue"===o||"ObjectField"===o&&0===u)&&c.fields){var s=Object.keys(c.fields).map((function(e){return c.fields[e]}));return f(e,t,s.map((function(e){return{text:'"'.concat(e.name,'": '),type:e.type,description:e.description}})))}if("StringValue"===o||"NumberValue"===o||"BooleanValue"===o||"NullValue"===o||"ListValue"===o&&1===u||"ObjectField"===o&&2===u||"Variable"===o&&2===u){var p=c.type?(0,i.xC)(c.type):void 0;if(p instanceof i.sR)return f(e,t,[{text:"{"}]);if(p instanceof i.mR)return f(e,t,p.getValues().map((function(e){return{text:'"'.concat(e.name,'"'),type:p,description:e.description}})));if(p===a.EZ)return f(e,t,[{text:"true",type:a.EZ,description:"Not false."},{text:"false",type:a.EZ,description:"Not true."}])}}}function g(e,t){var n={type:null,fields:null};return(0,o.f)(t,(function(t){switch(t.kind){case"Variable":n.type=e[t.name];break;case"ListValue":var r=n.type?(0,i.tf)(n.type):void 0;n.type=r instanceof i.p2?r.ofType:null;break;case"ObjectValue":var a=n.type?(0,i.xC)(n.type):void 0;n.fields=a instanceof i.sR?a.getFields():null;break;case"ObjectField":var o=t.name&&n.fields?n.fields[t.name]:null;n.type=null==o?void 0:o.type}})),n}l(f,"hintList"),l(c,"filterAndSortList"),l(s,"filterNonEmpty"),l(p,"normalizeText"),l(y,"getProximity"),l(d,"lexicalDistance"),r.C.registerHelper("hint","graphql-variables",(function(e,t){var n=e.getCursor(),i=e.getTokenAt(n),a=v(n,i,t);return null!=a&&a.list&&a.list.length>0&&(a.from=r.C.Pos(a.from.line,a.from.ch),a.to=r.C.Pos(a.to.line,a.to.ch),r.C.signal(e,"hasCompletion",e,a,i)),a})),l(v,"getVariablesHint"),l(g,"getTypeInfo")}}]); -//# sourceMappingURL=168.5772bc38.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/168.5772bc38.chunk.js.map b/serv/web/build/static/js/168.5772bc38.chunk.js.map deleted file mode 100644 index 8216bbed..00000000 --- a/serv/web/build/static/js/168.5772bc38.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/168.5772bc38.chunk.js","mappings":"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","sources":["../node_modules/@graphiql/codemirror-graphql/esm/utils/forEachState.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/hintList.js","../node_modules/@graphiql/codemirror-graphql/esm/variables/hint.js"],"sourcesContent":["export default function forEachState(stack, fn) {\n const reverseStateStack = [];\n let state = stack;\n while (state === null || state === void 0 ? void 0 : state.kind) {\n reverseStateStack.push(state);\n state = state.prevState;\n }\n for (let i = reverseStateStack.length - 1; i >= 0; i--) {\n fn(reverseStateStack[i]);\n }\n}\n//# sourceMappingURL=forEachState.js.map","export default function hintList(cursor, token, list) {\n const hints = filterAndSortList(list, normalizeText(token.string));\n if (!hints) {\n return;\n }\n const tokenStart = token.type !== null && /\"|\\w/.test(token.string[0])\n ? token.start\n : token.end;\n return {\n list: hints,\n from: { line: cursor.line, ch: tokenStart },\n to: { line: cursor.line, ch: token.end },\n };\n}\nfunction filterAndSortList(list, text) {\n if (!text) {\n return filterNonEmpty(list, entry => !entry.isDeprecated);\n }\n const byProximity = list.map(entry => ({\n proximity: getProximity(normalizeText(entry.text), text),\n entry,\n }));\n const conciseMatches = filterNonEmpty(filterNonEmpty(byProximity, pair => pair.proximity <= 2), pair => !pair.entry.isDeprecated);\n const sortedMatches = conciseMatches.sort((a, b) => (a.entry.isDeprecated ? 1 : 0) - (b.entry.isDeprecated ? 1 : 0) ||\n a.proximity - b.proximity ||\n a.entry.text.length - b.entry.text.length);\n return sortedMatches.map(pair => pair.entry);\n}\nfunction filterNonEmpty(array, predicate) {\n const filtered = array.filter(predicate);\n return filtered.length === 0 ? array : filtered;\n}\nfunction normalizeText(text) {\n return text.toLowerCase().replaceAll(/\\W/g, '');\n}\nfunction getProximity(suggestion, text) {\n let proximity = lexicalDistance(text, suggestion);\n if (suggestion.length > text.length) {\n proximity -= suggestion.length - text.length - 1;\n proximity += suggestion.indexOf(text) === 0 ? 0 : 0.5;\n }\n return proximity;\n}\nfunction lexicalDistance(a, b) {\n let i;\n let j;\n const d = [];\n const aLength = a.length;\n const bLength = b.length;\n for (i = 0; i <= aLength; i++) {\n d[i] = [i];\n }\n for (j = 1; j <= bLength; j++) {\n d[0][j] = j;\n }\n for (i = 1; i <= aLength; i++) {\n for (j = 1; j <= bLength; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);\n }\n }\n }\n return d[aLength][bLength];\n}\n//# sourceMappingURL=hintList.js.map","import CodeMirror from 'codemirror';\nimport { getNullableType, getNamedType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLBoolean, } from 'graphql';\nimport forEachState from '../utils/forEachState';\nimport hintList from '../utils/hintList';\nCodeMirror.registerHelper('hint', 'graphql-variables', (editor, options) => {\n const cur = editor.getCursor();\n const token = editor.getTokenAt(cur);\n const results = getVariablesHint(cur, token, options);\n if ((results === null || results === void 0 ? void 0 : results.list) && results.list.length > 0) {\n results.from = CodeMirror.Pos(results.from.line, results.from.ch);\n results.to = CodeMirror.Pos(results.to.line, results.to.ch);\n CodeMirror.signal(editor, 'hasCompletion', editor, results, token);\n }\n return results;\n});\nfunction getVariablesHint(cur, token, options) {\n const state = token.state.kind === 'Invalid' ? token.state.prevState : token.state;\n const { kind, step } = state;\n if (kind === 'Document' && step === 0) {\n return hintList(cur, token, [{ text: '{' }]);\n }\n const { variableToType } = options;\n if (!variableToType) {\n return;\n }\n const typeInfo = getTypeInfo(variableToType, token.state);\n if (kind === 'Document' || (kind === 'Variable' && step === 0)) {\n const variableNames = Object.keys(variableToType);\n return hintList(cur, token, variableNames.map(name => ({\n text: `\"${name}\": `,\n type: variableToType[name],\n })));\n }\n if ((kind === 'ObjectValue' || (kind === 'ObjectField' && step === 0)) &&\n typeInfo.fields) {\n const inputFields = Object.keys(typeInfo.fields).map(fieldName => typeInfo.fields[fieldName]);\n return hintList(cur, token, inputFields.map(field => ({\n text: `\"${field.name}\": `,\n type: field.type,\n description: field.description,\n })));\n }\n if (kind === 'StringValue' ||\n kind === 'NumberValue' ||\n kind === 'BooleanValue' ||\n kind === 'NullValue' ||\n (kind === 'ListValue' && step === 1) ||\n (kind === 'ObjectField' && step === 2) ||\n (kind === 'Variable' && step === 2)) {\n const namedInputType = typeInfo.type\n ? getNamedType(typeInfo.type)\n : undefined;\n if (namedInputType instanceof GraphQLInputObjectType) {\n return hintList(cur, token, [{ text: '{' }]);\n }\n if (namedInputType instanceof GraphQLEnumType) {\n const values = namedInputType.getValues();\n return hintList(cur, token, values.map(value => ({\n text: `\"${value.name}\"`,\n type: namedInputType,\n description: value.description,\n })));\n }\n if (namedInputType === GraphQLBoolean) {\n return hintList(cur, token, [\n { text: 'true', type: GraphQLBoolean, description: 'Not false.' },\n { text: 'false', type: GraphQLBoolean, description: 'Not true.' },\n ]);\n }\n }\n}\nfunction getTypeInfo(variableToType, tokenState) {\n const info = {\n type: null,\n fields: null,\n };\n forEachState(tokenState, state => {\n switch (state.kind) {\n case 'Variable': {\n info.type = variableToType[state.name];\n break;\n }\n case 'ListValue': {\n const nullableType = info.type ? getNullableType(info.type) : undefined;\n info.type =\n nullableType instanceof GraphQLList ? nullableType.ofType : null;\n break;\n }\n case 'ObjectValue': {\n const objectType = info.type ? getNamedType(info.type) : undefined;\n info.fields =\n objectType instanceof GraphQLInputObjectType\n ? objectType.getFields()\n : null;\n break;\n }\n case 'ObjectField': {\n const objectField = state.name && info.fields ? info.fields[state.name] : null;\n info.type = objectField === null || objectField === void 0 ? void 0 : objectField.type;\n break;\n }\n }\n });\n return info;\n}\n//# sourceMappingURL=hint.js.map"],"names":["forEachState","stack","fn","reverseStateStack","state","kind","push","prevState","i","length","__name","hintList","cursor","token","list","hints","filterAndSortList","normalizeText","string","tokenStart","type","test","start","end","from","line","ch","to","text","filterNonEmpty","map","entry","proximity","getProximity","pair","isDeprecated","sort","a","b","array","predicate","filtered","filter","toLowerCase","replaceAll","suggestion","lexicalDistance","indexOf","j","d","aLength","bLength","cost","Math","min","getVariablesHint","cur","options","step","variableToType","typeInfo","getTypeInfo","Object","keys","name","fields","inputFields","fieldName","field","description","namedInputType","getNamedType","GraphQLInputObjectType","GraphQLEnumType","getValues","value","GraphQLBoolean","tokenState","info","f","nullableType","getNullableType","GraphQLList","ofType","objectType","getFields","objectField","CodeMirror","editor","getCursor","getTokenAt","results"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/168.86ac5987.chunk.js b/serv/web/build/static/js/168.86ac5987.chunk.js new file mode 100644 index 00000000..38ba0b87 --- /dev/null +++ b/serv/web/build/static/js/168.86ac5987.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[168,889],{889:(e,t,n)=>{n.r(t),n.d(t,{C:()=>l,c:()=>a});var r=n(8308);function i(e,t){for(var n=0;nr[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(i,"name",{value:"_mergeNamespaces",configurable:!0});var o=(0,r.r)();const l=(0,r.g)(o),a=i({__proto__:null,default:l},[o])},2269:(e,t,n)=>{n.d(t,{f:()=>r});function r(e,t){const n=[];let r=e;for(;null!=r&&r.kind;)n.push(r),r=r.prevState;for(let i=n.length-1;i>=0;i--)t(n[i])}(0,Object.defineProperty)(r,"name",{value:"forEachState",configurable:!0})},3168:(e,t,n)=>{n.r(t);var r=n(889),i=n(2572),o=n(7382),l=n(2269),a=(n(8308),Object.defineProperty),s=(e,t)=>a(e,"name",{value:t,configurable:!0});function c(e,t,n){const r=u(n,p(t.string));if(!r)return;const i=null!==t.type&&/"|\w/.test(t.string[0])?t.start:t.end;return{list:r,from:{line:e.line,ch:i},to:{line:e.line,ch:t.end}}}function u(e,t){if(!t)return f(e,(e=>!e.isDeprecated));return f(f(e.map((e=>({proximity:y(p(e.text),t),entry:e}))),(e=>e.proximity<=2)),(e=>!e.entry.isDeprecated)).sort(((e,t)=>(e.entry.isDeprecated?1:0)-(t.entry.isDeprecated?1:0)||e.proximity-t.proximity||e.entry.text.length-t.entry.text.length)).map((e=>e.entry))}function f(e,t){const n=e.filter(t);return 0===n.length?e:n}function p(e){return e.toLowerCase().replaceAll(/\W/g,"")}function y(e,t){let n=d(t,e);return e.length>t.length&&(n-=e.length-t.length-1,n+=0===e.indexOf(t)?0:.5),n}function d(e,t){let n,r;const i=[],o=e.length,l=t.length;for(n=0;n<=o;n++)i[n]=[n];for(r=1;r<=l;r++)i[0][r]=r;for(n=1;n<=o;n++)for(r=1;r<=l;r++){const o=e[n-1]===t[r-1]?0:1;i[n][r]=Math.min(i[n-1][r]+1,i[n][r-1]+1,i[n-1][r-1]+o),n>1&&r>1&&e[n-1]===t[r-2]&&e[n-2]===t[r-1]&&(i[n][r]=Math.min(i[n][r],i[n-2][r-2]+o))}return i[o][l]}function g(e,t,n){const r="Invalid"===t.state.kind?t.state.prevState:t.state,{kind:l,step:a}=r;if("Document"===l&&0===a)return c(e,t,[{text:"{"}]);const{variableToType:s}=n;if(!s)return;const u=m(s,t.state);if("Document"===l||"Variable"===l&&0===a){return c(e,t,Object.keys(s).map((e=>({text:'"'.concat(e,'": '),type:s[e]}))))}if(("ObjectValue"===l||"ObjectField"===l&&0===a)&&u.fields){return c(e,t,Object.keys(u.fields).map((e=>u.fields[e])).map((e=>({text:'"'.concat(e.name,'": '),type:e.type,description:e.description}))))}if("StringValue"===l||"NumberValue"===l||"BooleanValue"===l||"NullValue"===l||"ListValue"===l&&1===a||"ObjectField"===l&&2===a||"Variable"===l&&2===a){const n=u.type?(0,i.xC)(u.type):void 0;if(n instanceof i.sR)return c(e,t,[{text:"{"}]);if(n instanceof i.mR){return c(e,t,n.getValues().map((e=>({text:'"'.concat(e.name,'"'),type:n,description:e.description}))))}if(n===o.EZ)return c(e,t,[{text:"true",type:o.EZ,description:"Not false."},{text:"false",type:o.EZ,description:"Not true."}])}}function m(e,t){const n={type:null,fields:null};return(0,l.f)(t,(t=>{switch(t.kind){case"Variable":n.type=e[t.name];break;case"ListValue":{const e=n.type?(0,i.tf)(n.type):void 0;n.type=e instanceof i.p2?e.ofType:null;break}case"ObjectValue":{const e=n.type?(0,i.xC)(n.type):void 0;n.fields=e instanceof i.sR?e.getFields():null;break}case"ObjectField":{const e=t.name&&n.fields?n.fields[t.name]:null;n.type=null==e?void 0:e.type;break}}})),n}s(c,"hintList"),s(u,"filterAndSortList"),s(f,"filterNonEmpty"),s(p,"normalizeText"),s(y,"getProximity"),s(d,"lexicalDistance"),r.C.registerHelper("hint","graphql-variables",((e,t)=>{const n=e.getCursor(),i=e.getTokenAt(n),o=g(n,i,t);return null!=o&&o.list&&o.list.length>0&&(o.from=r.C.Pos(o.from.line,o.from.ch),o.to=r.C.Pos(o.to.line,o.to.ch),r.C.signal(e,"hasCompletion",e,o,i)),o})),s(g,"getVariablesHint"),s(m,"getTypeInfo")}}]); +//# sourceMappingURL=168.86ac5987.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/168.86ac5987.chunk.js.map b/serv/web/build/static/js/168.86ac5987.chunk.js.map new file mode 100644 index 00000000..a77e0270 --- /dev/null +++ b/serv/web/build/static/js/168.86ac5987.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/168.86ac5987.chunk.js","mappings":"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","sources":["../node_modules/@graphiql/codemirror-graphql/esm/utils/forEachState.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/hintList.js","../node_modules/@graphiql/codemirror-graphql/esm/variables/hint.js"],"sourcesContent":["export default function forEachState(stack, fn) {\n const reverseStateStack = [];\n let state = stack;\n while (state === null || state === void 0 ? void 0 : state.kind) {\n reverseStateStack.push(state);\n state = state.prevState;\n }\n for (let i = reverseStateStack.length - 1; i >= 0; i--) {\n fn(reverseStateStack[i]);\n }\n}\n//# sourceMappingURL=forEachState.js.map","export default function hintList(cursor, token, list) {\n const hints = filterAndSortList(list, normalizeText(token.string));\n if (!hints) {\n return;\n }\n const tokenStart = token.type !== null && /\"|\\w/.test(token.string[0])\n ? token.start\n : token.end;\n return {\n list: hints,\n from: { line: cursor.line, ch: tokenStart },\n to: { line: cursor.line, ch: token.end },\n };\n}\nfunction filterAndSortList(list, text) {\n if (!text) {\n return filterNonEmpty(list, entry => !entry.isDeprecated);\n }\n const byProximity = list.map(entry => ({\n proximity: getProximity(normalizeText(entry.text), text),\n entry,\n }));\n const conciseMatches = filterNonEmpty(filterNonEmpty(byProximity, pair => pair.proximity <= 2), pair => !pair.entry.isDeprecated);\n const sortedMatches = conciseMatches.sort((a, b) => (a.entry.isDeprecated ? 1 : 0) - (b.entry.isDeprecated ? 1 : 0) ||\n a.proximity - b.proximity ||\n a.entry.text.length - b.entry.text.length);\n return sortedMatches.map(pair => pair.entry);\n}\nfunction filterNonEmpty(array, predicate) {\n const filtered = array.filter(predicate);\n return filtered.length === 0 ? array : filtered;\n}\nfunction normalizeText(text) {\n return text.toLowerCase().replaceAll(/\\W/g, '');\n}\nfunction getProximity(suggestion, text) {\n let proximity = lexicalDistance(text, suggestion);\n if (suggestion.length > text.length) {\n proximity -= suggestion.length - text.length - 1;\n proximity += suggestion.indexOf(text) === 0 ? 0 : 0.5;\n }\n return proximity;\n}\nfunction lexicalDistance(a, b) {\n let i;\n let j;\n const d = [];\n const aLength = a.length;\n const bLength = b.length;\n for (i = 0; i <= aLength; i++) {\n d[i] = [i];\n }\n for (j = 1; j <= bLength; j++) {\n d[0][j] = j;\n }\n for (i = 1; i <= aLength; i++) {\n for (j = 1; j <= bLength; j++) {\n const cost = a[i - 1] === b[j - 1] ? 0 : 1;\n d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cost);\n if (i > 1 && j > 1 && a[i - 1] === b[j - 2] && a[i - 2] === b[j - 1]) {\n d[i][j] = Math.min(d[i][j], d[i - 2][j - 2] + cost);\n }\n }\n }\n return d[aLength][bLength];\n}\n//# sourceMappingURL=hintList.js.map","import CodeMirror from 'codemirror';\nimport { getNullableType, getNamedType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLBoolean, } from 'graphql';\nimport forEachState from '../utils/forEachState';\nimport hintList from '../utils/hintList';\nCodeMirror.registerHelper('hint', 'graphql-variables', (editor, options) => {\n const cur = editor.getCursor();\n const token = editor.getTokenAt(cur);\n const results = getVariablesHint(cur, token, options);\n if ((results === null || results === void 0 ? void 0 : results.list) && results.list.length > 0) {\n results.from = CodeMirror.Pos(results.from.line, results.from.ch);\n results.to = CodeMirror.Pos(results.to.line, results.to.ch);\n CodeMirror.signal(editor, 'hasCompletion', editor, results, token);\n }\n return results;\n});\nfunction getVariablesHint(cur, token, options) {\n const state = token.state.kind === 'Invalid' ? token.state.prevState : token.state;\n const { kind, step } = state;\n if (kind === 'Document' && step === 0) {\n return hintList(cur, token, [{ text: '{' }]);\n }\n const { variableToType } = options;\n if (!variableToType) {\n return;\n }\n const typeInfo = getTypeInfo(variableToType, token.state);\n if (kind === 'Document' || (kind === 'Variable' && step === 0)) {\n const variableNames = Object.keys(variableToType);\n return hintList(cur, token, variableNames.map(name => ({\n text: `\"${name}\": `,\n type: variableToType[name],\n })));\n }\n if ((kind === 'ObjectValue' || (kind === 'ObjectField' && step === 0)) &&\n typeInfo.fields) {\n const inputFields = Object.keys(typeInfo.fields).map(fieldName => typeInfo.fields[fieldName]);\n return hintList(cur, token, inputFields.map(field => ({\n text: `\"${field.name}\": `,\n type: field.type,\n description: field.description,\n })));\n }\n if (kind === 'StringValue' ||\n kind === 'NumberValue' ||\n kind === 'BooleanValue' ||\n kind === 'NullValue' ||\n (kind === 'ListValue' && step === 1) ||\n (kind === 'ObjectField' && step === 2) ||\n (kind === 'Variable' && step === 2)) {\n const namedInputType = typeInfo.type\n ? getNamedType(typeInfo.type)\n : undefined;\n if (namedInputType instanceof GraphQLInputObjectType) {\n return hintList(cur, token, [{ text: '{' }]);\n }\n if (namedInputType instanceof GraphQLEnumType) {\n const values = namedInputType.getValues();\n return hintList(cur, token, values.map(value => ({\n text: `\"${value.name}\"`,\n type: namedInputType,\n description: value.description,\n })));\n }\n if (namedInputType === GraphQLBoolean) {\n return hintList(cur, token, [\n { text: 'true', type: GraphQLBoolean, description: 'Not false.' },\n { text: 'false', type: GraphQLBoolean, description: 'Not true.' },\n ]);\n }\n }\n}\nfunction getTypeInfo(variableToType, tokenState) {\n const info = {\n type: null,\n fields: null,\n };\n forEachState(tokenState, state => {\n switch (state.kind) {\n case 'Variable': {\n info.type = variableToType[state.name];\n break;\n }\n case 'ListValue': {\n const nullableType = info.type ? getNullableType(info.type) : undefined;\n info.type =\n nullableType instanceof GraphQLList ? nullableType.ofType : null;\n break;\n }\n case 'ObjectValue': {\n const objectType = info.type ? getNamedType(info.type) : undefined;\n info.fields =\n objectType instanceof GraphQLInputObjectType\n ? objectType.getFields()\n : null;\n break;\n }\n case 'ObjectField': {\n const objectField = state.name && info.fields ? info.fields[state.name] : null;\n info.type = objectField === null || objectField === void 0 ? void 0 : objectField.type;\n break;\n }\n }\n });\n return info;\n}\n//# sourceMappingURL=hint.js.map"],"names":["s","e","a","o","t","kind","push","prevState","i","length","f","n","r","v","b","string","type","test","start","end","list","from","line","ch","to","d","l","isDeprecated","map","proximity","O","text","entry","sort","filter","toLowerCase","replaceAll","N","indexOf","p","Math","min","D","state","step","variableToType","M","Object","keys","concat","fields","name","description","h","g","T","getValues","m","y","j","V","L","ofType","getFields","c","u","registerHelper","getCursor","getTokenAt","Pos","signal"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/186.3ff7347c.chunk.js b/serv/web/build/static/js/186.3ff7347c.chunk.js deleted file mode 100644 index 453117e9..00000000 --- a/serv/web/build/static/js/186.3ff7347c.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[186,889],{889:function(e,o,t){t.r(o),t.d(o,{C:function(){return u},c:function(){return a}});var n=t(8308);function r(e,o){for(var t=function(){var t=o[n];if("string"!=typeof t&&!Array.isArray(t)){var r=function(o){if("default"!==o&&!(o in e)){var n=Object.getOwnPropertyDescriptor(t,o);n&&Object.defineProperty(e,o,n.get?n:{enumerable:!0,get:function(){return t[o]}})}};for(var i in t)r(i)}},n=0;nwindow.innerHeight-o.bottom-15&&o.top>window.innerHeight-o.bottom&&(s=o.top-m),s<0&&(s=o.bottom);var p,c=Math.max(0,window.innerWidth-f-15);c>o.left&&(c=o.left),r.style.opacity="1",r.style.top=s+"px",r.style.left=c+"px";var l=i((function(){clearTimeout(p)}),"onMouseOverPopup"),v=i((function(){clearTimeout(p),p=setTimeout(d,200)}),"onMouseOut"),d=i((function(){n.C.off(r,"mouseover",l),n.C.off(r,"mouseout",v),n.C.off(e.getWrapperElement(),"mouseout",v),r.style.opacity?(r.style.opacity="0",setTimeout((function(){r.parentNode&&r.remove()}),600)):r.parentNode&&r.remove()}),"hidePopup");n.C.on(r,"mouseover",l),n.C.on(r,"mouseout",v),n.C.on(e.getWrapperElement(),"mouseout",v)}n.C.defineOption("info",!1,(function(e,o,t){if(t&&t!==n.C.Init){var r=e.state.info.onMouseOver;n.C.off(e.getWrapperElement(),"mouseover",r),clearTimeout(e.state.info.hoverTimeout),delete e.state.info}if(o){var i=e.state.info=u(o);i.onMouseOver=f.bind(null,e),n.C.on(e.getWrapperElement(),"mouseover",i.onMouseOver)}})),i(u,"createState"),i(a,"getHoverTime"),i(f,"onMouseOver"),i(m,"onMouseHover"),i(s,"showPopup")}}]); -//# sourceMappingURL=186.3ff7347c.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/186.3ff7347c.chunk.js.map b/serv/web/build/static/js/186.3ff7347c.chunk.js.map deleted file mode 100644 index 49cfa970..00000000 --- a/serv/web/build/static/js/186.3ff7347c.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/186.3ff7347c.chunk.js","mappings":"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","sources":["../node_modules/@graphiql/codemirror-graphql/esm/utils/info-addon.js"],"sourcesContent":["import CodeMirror from 'codemirror';\nCodeMirror.defineOption('info', false, (cm, options, old) => {\n if (old && old !== CodeMirror.Init) {\n const oldOnMouseOver = cm.state.info.onMouseOver;\n CodeMirror.off(cm.getWrapperElement(), 'mouseover', oldOnMouseOver);\n clearTimeout(cm.state.info.hoverTimeout);\n delete cm.state.info;\n }\n if (options) {\n const state = (cm.state.info = createState(options));\n state.onMouseOver = onMouseOver.bind(null, cm);\n CodeMirror.on(cm.getWrapperElement(), 'mouseover', state.onMouseOver);\n }\n});\nfunction createState(options) {\n return {\n options: options instanceof Function\n ? { render: options }\n : options === true\n ? {}\n : options,\n };\n}\nfunction getHoverTime(cm) {\n const { options } = cm.state.info;\n return (options === null || options === void 0 ? void 0 : options.hoverTime) || 500;\n}\nfunction onMouseOver(cm, e) {\n const state = cm.state.info;\n const target = e.target || e.srcElement;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n if (target.nodeName !== 'SPAN' || state.hoverTimeout !== undefined) {\n return;\n }\n const box = target.getBoundingClientRect();\n const onMouseMove = function () {\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n };\n const onMouseOut = function () {\n CodeMirror.off(document, 'mousemove', onMouseMove);\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = undefined;\n };\n const onHover = function () {\n CodeMirror.off(document, 'mousemove', onMouseMove);\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n state.hoverTimeout = undefined;\n onMouseHover(cm, box);\n };\n const hoverTime = getHoverTime(cm);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n CodeMirror.on(document, 'mousemove', onMouseMove);\n CodeMirror.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n}\nfunction onMouseHover(cm, box) {\n const pos = cm.coordsChar({\n left: (box.left + box.right) / 2,\n top: (box.top + box.bottom) / 2,\n }, 'window');\n const state = cm.state.info;\n const { options } = state;\n const render = options.render || cm.getHelper(pos, 'info');\n if (render) {\n const token = cm.getTokenAt(pos, true);\n if (token) {\n const info = render(token, options, cm, pos);\n if (info) {\n showPopup(cm, box, info);\n }\n }\n }\n}\nfunction showPopup(cm, box, info) {\n const popup = document.createElement('div');\n popup.className = 'CodeMirror-info';\n popup.append(info);\n document.body.append(popup);\n const popupBox = popup.getBoundingClientRect();\n const popupStyle = window.getComputedStyle(popup);\n const popupWidth = popupBox.right -\n popupBox.left +\n parseFloat(popupStyle.marginLeft) +\n parseFloat(popupStyle.marginRight);\n const popupHeight = popupBox.bottom -\n popupBox.top +\n parseFloat(popupStyle.marginTop) +\n parseFloat(popupStyle.marginBottom);\n let topPos = box.bottom;\n if (popupHeight > window.innerHeight - box.bottom - 15 &&\n box.top > window.innerHeight - box.bottom) {\n topPos = box.top - popupHeight;\n }\n if (topPos < 0) {\n topPos = box.bottom;\n }\n let leftPos = Math.max(0, window.innerWidth - popupWidth - 15);\n if (leftPos > box.left) {\n leftPos = box.left;\n }\n popup.style.opacity = '1';\n popup.style.top = topPos + 'px';\n popup.style.left = leftPos + 'px';\n let popupTimeout;\n const onMouseOverPopup = function () {\n clearTimeout(popupTimeout);\n };\n const onMouseOut = function () {\n clearTimeout(popupTimeout);\n popupTimeout = setTimeout(hidePopup, 200);\n };\n const hidePopup = function () {\n CodeMirror.off(popup, 'mouseover', onMouseOverPopup);\n CodeMirror.off(popup, 'mouseout', onMouseOut);\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n if (popup.style.opacity) {\n popup.style.opacity = '0';\n setTimeout(() => {\n if (popup.parentNode) {\n popup.remove();\n }\n }, 600);\n }\n else if (popup.parentNode) {\n popup.remove();\n }\n };\n CodeMirror.on(popup, 'mouseover', onMouseOverPopup);\n CodeMirror.on(popup, 'mouseout', onMouseOut);\n CodeMirror.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n}\n//# sourceMappingURL=info-addon.js.map"],"names":["createState","options","Function","render","getHoverTime","cm","state","info","hoverTime","onMouseOver","e","target","srcElement","HTMLElement","nodeName","hoverTimeout","box","getBoundingClientRect","onMouseMove","clearTimeout","setTimeout","onHover","onMouseOut","CodeMirror","document","getWrapperElement","onMouseHover","pos","coordsChar","left","right","top","bottom","getHelper","token","getTokenAt","showPopup","popup","createElement","className","append","body","popupBox","popupStyle","window","getComputedStyle","popupWidth","parseFloat","marginLeft","marginRight","popupHeight","marginTop","marginBottom","topPos","innerHeight","popupTimeout","leftPos","Math","max","innerWidth","style","opacity","onMouseOverPopup","hidePopup","parentNode","remove","old","oldOnMouseOver","bind","__name"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/186.b9e615a3.chunk.js b/serv/web/build/static/js/186.b9e615a3.chunk.js new file mode 100644 index 00000000..04c81042 --- /dev/null +++ b/serv/web/build/static/js/186.b9e615a3.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[186,889],{889:(e,o,t)=>{t.r(o),t.d(o,{C:()=>u,c:()=>s});var n=t(8308);function r(e,o){for(var t=0;tn[o]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(r,"name",{value:"_mergeNamespaces",configurable:!0});var i=(0,n.r)();const u=(0,n.g)(i),s=r({__proto__:null,default:u},[i])},9186:(e,o,t)=>{t.r(o);var n=t(889),r=(t(8308),Object.defineProperty),i=(e,o)=>r(e,"name",{value:o,configurable:!0});function u(e){return{options:e instanceof Function?{render:e}:!0===e?{}:e}}function s(e){const{options:o}=e.state.info;return(null==o?void 0:o.hoverTime)||500}function m(e,o){const t=e.state.info,r=o.target||o.srcElement;if(!(r instanceof HTMLElement)||"SPAN"!==r.nodeName||void 0!==t.hoverTimeout)return;const u=r.getBoundingClientRect(),m=i((function(){clearTimeout(t.hoverTimeout),t.hoverTimeout=setTimeout(c,p)}),"onMouseMove"),f=i((function(){n.C.off(document,"mousemove",m),n.C.off(e.getWrapperElement(),"mouseout",f),clearTimeout(t.hoverTimeout),t.hoverTimeout=void 0}),"onMouseOut"),c=i((function(){n.C.off(document,"mousemove",m),n.C.off(e.getWrapperElement(),"mouseout",f),t.hoverTimeout=void 0,a(e,u)}),"onHover"),p=s(e);t.hoverTimeout=setTimeout(c,p),n.C.on(document,"mousemove",m),n.C.on(e.getWrapperElement(),"mouseout",f)}function a(e,o){const t=e.coordsChar({left:(o.left+o.right)/2,top:(o.top+o.bottom)/2},"window"),n=e.state.info,{options:r}=n,i=r.render||e.getHelper(t,"info");if(i){const n=e.getTokenAt(t,!0);if(n){const u=i(n,r,e,t);u&&f(e,o,u)}}}function f(e,o,t){const r=document.createElement("div");r.className="CodeMirror-info",r.append(t),document.body.append(r);const u=r.getBoundingClientRect(),s=window.getComputedStyle(r),m=u.right-u.left+parseFloat(s.marginLeft)+parseFloat(s.marginRight),a=u.bottom-u.top+parseFloat(s.marginTop)+parseFloat(s.marginBottom);let f=o.bottom;a>window.innerHeight-o.bottom-15&&o.top>window.innerHeight-o.bottom&&(f=o.top-a),f<0&&(f=o.bottom);let c,p=Math.max(0,window.innerWidth-m-15);p>o.left&&(p=o.left),r.style.opacity="1",r.style.top=f+"px",r.style.left=p+"px";const l=i((function(){clearTimeout(c)}),"onMouseOverPopup"),d=i((function(){clearTimeout(c),c=setTimeout(v,200)}),"onMouseOut"),v=i((function(){n.C.off(r,"mouseover",l),n.C.off(r,"mouseout",d),n.C.off(e.getWrapperElement(),"mouseout",d),r.style.opacity?(r.style.opacity="0",setTimeout((()=>{r.parentNode&&r.remove()}),600)):r.parentNode&&r.remove()}),"hidePopup");n.C.on(r,"mouseover",l),n.C.on(r,"mouseout",d),n.C.on(e.getWrapperElement(),"mouseout",d)}n.C.defineOption("info",!1,((e,o,t)=>{if(t&&t!==n.C.Init){const o=e.state.info.onMouseOver;n.C.off(e.getWrapperElement(),"mouseover",o),clearTimeout(e.state.info.hoverTimeout),delete e.state.info}if(o){const t=e.state.info=u(o);t.onMouseOver=m.bind(null,e),n.C.on(e.getWrapperElement(),"mouseover",t.onMouseOver)}})),i(u,"createState"),i(s,"getHoverTime"),i(m,"onMouseOver"),i(a,"onMouseHover"),i(f,"showPopup")}}]); +//# sourceMappingURL=186.b9e615a3.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/186.b9e615a3.chunk.js.map b/serv/web/build/static/js/186.b9e615a3.chunk.js.map new file mode 100644 index 00000000..9b9168c1 --- /dev/null +++ b/serv/web/build/static/js/186.b9e615a3.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/186.b9e615a3.chunk.js","mappings":"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","sources":["../node_modules/@graphiql/codemirror-graphql/esm/utils/info-addon.js"],"sourcesContent":["import CodeMirror from 'codemirror';\nCodeMirror.defineOption('info', false, (cm, options, old) => {\n if (old && old !== CodeMirror.Init) {\n const oldOnMouseOver = cm.state.info.onMouseOver;\n CodeMirror.off(cm.getWrapperElement(), 'mouseover', oldOnMouseOver);\n clearTimeout(cm.state.info.hoverTimeout);\n delete cm.state.info;\n }\n if (options) {\n const state = (cm.state.info = createState(options));\n state.onMouseOver = onMouseOver.bind(null, cm);\n CodeMirror.on(cm.getWrapperElement(), 'mouseover', state.onMouseOver);\n }\n});\nfunction createState(options) {\n return {\n options: options instanceof Function\n ? { render: options }\n : options === true\n ? {}\n : options,\n };\n}\nfunction getHoverTime(cm) {\n const { options } = cm.state.info;\n return (options === null || options === void 0 ? void 0 : options.hoverTime) || 500;\n}\nfunction onMouseOver(cm, e) {\n const state = cm.state.info;\n const target = e.target || e.srcElement;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n if (target.nodeName !== 'SPAN' || state.hoverTimeout !== undefined) {\n return;\n }\n const box = target.getBoundingClientRect();\n const onMouseMove = function () {\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n };\n const onMouseOut = function () {\n CodeMirror.off(document, 'mousemove', onMouseMove);\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = undefined;\n };\n const onHover = function () {\n CodeMirror.off(document, 'mousemove', onMouseMove);\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n state.hoverTimeout = undefined;\n onMouseHover(cm, box);\n };\n const hoverTime = getHoverTime(cm);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n CodeMirror.on(document, 'mousemove', onMouseMove);\n CodeMirror.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n}\nfunction onMouseHover(cm, box) {\n const pos = cm.coordsChar({\n left: (box.left + box.right) / 2,\n top: (box.top + box.bottom) / 2,\n }, 'window');\n const state = cm.state.info;\n const { options } = state;\n const render = options.render || cm.getHelper(pos, 'info');\n if (render) {\n const token = cm.getTokenAt(pos, true);\n if (token) {\n const info = render(token, options, cm, pos);\n if (info) {\n showPopup(cm, box, info);\n }\n }\n }\n}\nfunction showPopup(cm, box, info) {\n const popup = document.createElement('div');\n popup.className = 'CodeMirror-info';\n popup.append(info);\n document.body.append(popup);\n const popupBox = popup.getBoundingClientRect();\n const popupStyle = window.getComputedStyle(popup);\n const popupWidth = popupBox.right -\n popupBox.left +\n parseFloat(popupStyle.marginLeft) +\n parseFloat(popupStyle.marginRight);\n const popupHeight = popupBox.bottom -\n popupBox.top +\n parseFloat(popupStyle.marginTop) +\n parseFloat(popupStyle.marginBottom);\n let topPos = box.bottom;\n if (popupHeight > window.innerHeight - box.bottom - 15 &&\n box.top > window.innerHeight - box.bottom) {\n topPos = box.top - popupHeight;\n }\n if (topPos < 0) {\n topPos = box.bottom;\n }\n let leftPos = Math.max(0, window.innerWidth - popupWidth - 15);\n if (leftPos > box.left) {\n leftPos = box.left;\n }\n popup.style.opacity = '1';\n popup.style.top = topPos + 'px';\n popup.style.left = leftPos + 'px';\n let popupTimeout;\n const onMouseOverPopup = function () {\n clearTimeout(popupTimeout);\n };\n const onMouseOut = function () {\n clearTimeout(popupTimeout);\n popupTimeout = setTimeout(hidePopup, 200);\n };\n const hidePopup = function () {\n CodeMirror.off(popup, 'mouseover', onMouseOverPopup);\n CodeMirror.off(popup, 'mouseout', onMouseOut);\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n if (popup.style.opacity) {\n popup.style.opacity = '0';\n setTimeout(() => {\n if (popup.parentNode) {\n popup.remove();\n }\n }, 600);\n }\n else if (popup.parentNode) {\n popup.remove();\n }\n };\n CodeMirror.on(popup, 'mouseover', onMouseOverPopup);\n CodeMirror.on(popup, 'mouseout', onMouseOut);\n CodeMirror.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n}\n//# sourceMappingURL=info-addon.js.map"],"names":["T","e","options","Function","render","h","t","state","info","hoverTime","M","n","o","target","srcElement","HTMLElement","nodeName","hoverTimeout","s","getBoundingClientRect","u","r","clearTimeout","setTimeout","p","a","f","i","off","document","getWrapperElement","w","on","coordsChar","left","right","top","bottom","getHelper","getTokenAt","y","createElement","className","append","body","window","getComputedStyle","parseFloat","marginLeft","marginRight","marginTop","marginBottom","innerHeight","c","l","Math","max","innerWidth","style","opacity","d","m","v","parentNode","remove","defineOption","Init","onMouseOver","bind"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/237.ac97f124.chunk.js b/serv/web/build/static/js/237.ac97f124.chunk.js deleted file mode 100644 index 3a63a053..00000000 --- a/serv/web/build/static/js/237.ac97f124.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[237],{9237:function(t,e,i){i.r(e),i.d(e,{s:function(){return l}});var n=i(8308),o=Object.defineProperty,s=function(t,e){return o(t,"name",{value:e,configurable:!0})};function r(t,e){for(var i=function(){var i=e[n];if("string"!=typeof i&&!Array.isArray(i)){var o=function(e){if("default"!==e&&!(e in t)){var n=Object.getOwnPropertyDescriptor(i,e);n&&Object.defineProperty(t,e,n.get?n:{enumerable:!0,get:function(){return i[e]}})}};for(var s in i)o(s)}},n=0;n1)){if(this.somethingSelected()){if(!e.hint.supportsSelection)return;for(var o=0;of.clientHeight+1;if(setTimeout((function(){N=r.getScrollInfo()})),P.bottom-M>0){var E=P.bottom-P.top;if(w.top-(w.bottom-P.top)-E>0)f.style.top=(A=w.top-E-O)+"px",C=!1;else if(E>M){f.style.height=M-5+"px",f.style.top=(A=w.bottom-P.top-O)+"px";var W=r.getCursor();o.from.ch!=W.ch&&(w=r.cursorCoords(W),f.style.left=(H=w.left-k)+"px",P=f.getBoundingClientRect())}}var R,B=P.right-F;if(I&&(B+=r.display.nativeBarWidth),B>0&&(P.right-P.left>F&&(f.style.width=F-5+"px",B-=P.right-P.left-F),f.style.left=(H=w.left-B-k)+"px"),I)for(var K=f.firstChild;K;K=K.nextSibling)K.style.paddingRight=r.display.nativeBarWidth+"px";r.addKeyMap(this.keyMap=a(n,{moveFocus:function(t,e){s.changeActive(s.selectedHint+t,e)},setFocus:function(t){s.changeActive(t)},menuSize:function(){return s.screenAmount()},length:p.length,close:function(){n.close()},pick:function(){s.pick()},data:o})),n.options.closeOnUnfocus&&(r.on("blur",this.onBlur=function(){R=setTimeout((function(){n.close()}),100)}),r.on("focus",this.onFocus=function(){clearTimeout(R)})),r.on("scroll",this.onScroll=function(){var t=r.getScrollInfo(),e=r.getWrapperElement().getBoundingClientRect();N||(N=r.getScrollInfo());var i=A+N.top-t.top,o=i-(u.pageYOffset||(c.documentElement||c.body).scrollTop);if(C||(o+=f.offsetHeight),o<=e.top||o>=e.bottom)return n.close();f.style.top=i+"px",f.style.left=H+N.left-t.left+"px"}),t.on(f,"dblclick",(function(t){var e=h(f,t.target||t.srcElement);e&&null!=e.hintId&&(s.changeActive(e.hintId),s.pick())})),t.on(f,"click",(function(t){var e=h(f,t.target||t.srcElement);e&&null!=e.hintId&&(s.changeActive(e.hintId),n.options.completeOnSingleClick&&s.pick())})),t.on(f,"mousedown",(function(){setTimeout((function(){r.focus()}),20)}));var L=this.getSelectedHintRange();return(0!==L.from||0!==L.to)&&this.scrollToActive(),t.signal(o,"select",p[this.selectedHint],f.childNodes[this.selectedHint]),!0}function f(t,e){if(!t.somethingSelected())return e;for(var i=[],n=0;n0?e(t):r(o+1)}))}s(r,"run"),r(0)}),"resolved");return r.async=!0,r.supportsSelection=!0,r}return(n=e.getHelper(e.getCursor(),"hintWords"))?function(e){return t.hint.fromList(e,{words:n})}:t.hint.anyword?function(e,i){return t.hint.anyword(e,i)}:function(){}}n.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.options.updateOnCursorActivity&&this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&t.signal(this.data,"close"),this.widget&&this.widget.close(),t.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(e,i){var n=e.list[i],o=this;this.cm.operation((function(){n.hint?n.hint(o.cm,e,n):o.cm.replaceRange(l(n),n.from||e.from,n.to||e.to,"complete"),t.signal(e,"pick",n),o.cm.scrollIntoView()})),this.options.closeOnPick&&this.close()},cursorActivity:function(){this.debounce&&(r(this.debounce),this.debounce=0);var t=this.startPos;this.data&&(t=this.data.from);var e=this.cm.getCursor(),i=this.cm.getLine(e.line);if(e.line!=this.startPos.line||i.length-e.ch!=this.startLen-this.startPos.ch||e.ch=this.data.list.length?e=n?this.data.list.length-1:0:e<0&&(e=n?0:this.data.list.length-1),this.selectedHint!=e){var o=this.hints.childNodes[this.selectedHint];o&&(o.className=o.className.replace(" "+i,""),o.removeAttribute("aria-selected")),(o=this.hints.childNodes[this.selectedHint=e]).className+=" "+i,o.setAttribute("aria-selected","true"),this.completion.cm.getInputField().setAttribute("aria-activedescendant",o.id),this.scrollToActive(),t.signal(this.data,"select",this.data.list[this.selectedHint],o)}},scrollToActive:function(){var t=this.getSelectedHintRange(),e=this.hints.childNodes[t.from],i=this.hints.childNodes[t.to],n=this.hints.firstChild;e.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=i.offsetTop+i.offsetHeight-this.hints.clientHeight+n.offsetTop)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1},getSelectedHintRange:function(){var t=this.completion.options.scrollMargin||0;return{from:Math.max(0,this.selectedHint-t),to:Math.min(this.data.list.length-1,this.selectedHint+t)}}},s(f,"applicableHelpers"),s(d,"fetchHints"),s(p,"resolveAutoHints"),t.registerHelper("hint","auto",{resolve:p}),t.registerHelper("hint","fromList",(function(e,i){var n,o=e.getCursor(),s=e.getTokenAt(o),r=t.Pos(o.line,s.start),c=o;s.start,]/,closeOnPick:!0,closeOnUnfocus:!0,updateOnCursorActivity:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null,paddingForScrollbar:!0,moveOnOverlap:!0};t.defineOption("hintOptions",null)}((0,n.r)());var c={},l=r({__proto__:null,default:(0,n.g)(c)},[c])}}]); -//# sourceMappingURL=237.ac97f124.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/237.ac97f124.chunk.js.map b/serv/web/build/static/js/237.ac97f124.chunk.js.map deleted file mode 100644 index 872cd4cd..00000000 --- a/serv/web/build/static/js/237.ac97f124.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/237.ac97f124.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/hint/show-hint.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// declare global: DOMRect\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n CodeMirror.defineExtension(\"closeHint\", function() {\n if (this.state.completionActive) this.state.completionActive.close()\n })\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n if (this.options.updateOnCursorActivity) {\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n if (this.options.updateOnCursorActivity) {\n this.cm.off(\"cursorActivity\", this.activityFunc);\n }\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i], self = this;\n this.cm.operation(function() {\n if (completion.hint)\n completion.hint(self.cm, data, completion);\n else\n self.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n self.cm.scrollIntoView();\n });\n if (this.options.closeOnPick) {\n this.close();\n }\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var identStart = this.startPos;\n if(this.data) {\n identStart = this.data.from;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < identStart.ch || this.cm.somethingSelected() ||\n (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function() {handle.moveFocus(-1);};\n baseMap[\"Ctrl-N\"] = function() {handle.moveFocus(1);};\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.id = \"cm-complete-\" + Math.floor(Math.random(1e6))\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n hints.setAttribute(\"role\", \"listbox\")\n hints.setAttribute(\"aria-expanded\", \"true\")\n hints.id = this.id\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (i == this.selectedHint) elt.setAttribute(\"aria-selected\", \"true\")\n elt.id = this.id + \"-\" + i\n elt.setAttribute(\"role\", \"option\")\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var container = completion.options.container || ownerDocument.body;\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n var offsetLeft = 0, offsetTop = 0;\n if (container !== ownerDocument.body) {\n // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n var offsetParent = isContainerPositioned ? container : container.offsetParent;\n var offsetParentPosition = offsetParent.getBoundingClientRect();\n var bodyPosition = ownerDocument.body.getBoundingClientRect();\n offsetLeft = (offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft);\n offsetTop = (offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop);\n }\n hints.style.left = (left - offsetLeft) + \"px\";\n hints.style.top = (top - offsetTop) + \"px\";\n\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n container.appendChild(hints);\n cm.getInputField().setAttribute(\"aria-autocomplete\", \"list\")\n cm.getInputField().setAttribute(\"aria-owns\", this.id)\n cm.getInputField().setAttribute(\"aria-activedescendant\", this.id + \"-\" + this.selectedHint)\n\n var box = completion.options.moveOnOverlap ? hints.getBoundingClientRect() : new DOMRect();\n var scrolls = completion.options.paddingForScrollbar ? hints.scrollHeight > hints.clientHeight + 1 : false;\n\n // Compute in the timeout to avoid reflow on init\n var startScroll;\n setTimeout(function() { startScroll = cm.getScrollInfo(); });\n\n var overlapY = box.bottom - winH;\n if (overlapY > 0) {\n var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n if (curTop - height > 0) { // Fits above cursor\n hints.style.top = (top = pos.top - height - offsetTop) + \"px\";\n below = false;\n } else if (height > winH) {\n hints.style.height = (winH - 5) + \"px\";\n hints.style.top = (top = pos.bottom - box.top - offsetTop) + \"px\";\n var cursor = cm.getCursor();\n if (data.from.ch != cursor.ch) {\n pos = cm.cursorCoords(cursor);\n hints.style.left = (left = pos.left - offsetLeft) + \"px\";\n box = hints.getBoundingClientRect();\n }\n }\n }\n var overlapX = box.right - winW;\n if (scrolls) overlapX += cm.display.nativeBarWidth;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = pos.left - overlapX - offsetLeft) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n if (!startScroll) startScroll = cm.getScrollInfo();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n // The first hint doesn't need to be scrolled to on init\n var selectedHintRange = this.getSelectedHintRange();\n if (selectedHintRange.from !== 0 || selectedHintRange.to !== 0) {\n this.scrollToActive();\n }\n\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n if (this.hints.parentNode) this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n var input = this.completion.cm.getInputField()\n input.removeAttribute(\"aria-activedescendant\")\n input.removeAttribute(\"aria-owns\")\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n if (node) {\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node.removeAttribute(\"aria-selected\")\n }\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n node.setAttribute(\"aria-selected\", \"true\")\n this.completion.cm.getInputField().setAttribute(\"aria-activedescendant\", node.id)\n this.scrollToActive()\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n scrollToActive: function() {\n var selectedHintRange = this.getSelectedHintRange();\n var node1 = this.hints.childNodes[selectedHintRange.from];\n var node2 = this.hints.childNodes[selectedHintRange.to];\n var firstNode = this.hints.firstChild;\n if (node1.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;\n else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n },\n\n getSelectedHintRange: function() {\n var margin = this.completion.options.scrollMargin || 0;\n return {\n from: Math.max(0, this.selectedHint - margin),\n to: Math.min(this.data.list.length - 1, this.selectedHint + margin),\n };\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start)\n } else {\n term = \"\"\n from = cur\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnPick: true,\n closeOnUnfocus: true,\n updateOnCursorActivity: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null,\n paddingForScrollbar: true,\n moveOnOverlap: true,\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n"],"names":["CodeMirror","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","Completion","cm","options","this","widget","debounce","tick","startPos","getCursor","startLen","getLine","line","length","getSelection","updateOnCursorActivity","self","on","activityFunc","cursorActivity","showHint","getHints","async","newOpts","hint","prop","defineExtension","parseOptions","selections","listSelections","somethingSelected","supportsSelection","i","head","anchor","state","completionActive","close","completion","signal","update","__name","requestAnimationFrame","window","fn","setTimeout","cancelAnimationFrame","clearTimeout","pos","editor","hintOptions","out","defaultOptions","resolve","getText","text","buildKeyMap","handle","baseMap","Up","moveFocus","Down","PageUp","menuSize","PageDown","Home","setFocus","End","Enter","pick","Tab","Esc","test","navigator","platform","custom","customKeys","ourMap","addBinding","key","val","bound","hasOwnProperty","extra","extraKeys","getHintElement","hintsElement","el","nodeName","toUpperCase","parentNode","Widget","data","id","Math","floor","random","picked","ownerDocument","getInputField","parentWindow","defaultView","hints","createElement","setAttribute","theme","className","selectedHint","completions","list","elt","appendChild","cur","render","createTextNode","displayText","hintId","container","body","cursorCoords","alignWithWord","from","left","top","bottom","below","offsetLeft","offsetTop","offsetParent","indexOf","getComputedStyle","position","offsetParentPosition","getBoundingClientRect","bodyPosition","scrollLeft","scrollTop","style","winW","innerWidth","max","offsetWidth","documentElement","winH","innerHeight","offsetHeight","startScroll","box","moveOnOverlap","DOMRect","scrolls","paddingForScrollbar","scrollHeight","clientHeight","getScrollInfo","height","cursor","ch","closingOnBlur","overlapX","right","display","nativeBarWidth","width","node","firstChild","nextSibling","paddingRight","addKeyMap","keyMap","n","avoidWrap","changeActive","screenAmount","closeOnUnfocus","onBlur","onFocus","onScroll","curScroll","getWrapperElement","newTop","point","pageYOffset","e","t","target","srcElement","completeOnSingleClick","focus","selectedHintRange","getSelectedHintRange","to","scrollToActive","childNodes","applicableHelpers","helpers","result","push","fetchHints","callback","then","resolveAutoHints","words","getHelpers","resolved","app","run","getHelper","fromList","anyword","prototype","active","off","operation","replaceRange","scrollIntoView","closeOnPick","identStart","closeCharacters","charAt","disable","first","myTick","finishUpdate","completeSingle","removeChild","removeKeyMap","input","removeAttribute","replace","node1","node2","firstNode","margin","scrollMargin","min","registerHelper","term","token","getTokenAt","Pos","start","string","substr","found","word","slice","commands","autocomplete","auto","defineOption","mod","require$$0"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/237.fff68a06.chunk.js b/serv/web/build/static/js/237.fff68a06.chunk.js new file mode 100644 index 00000000..891cfeaf --- /dev/null +++ b/serv/web/build/static/js/237.fff68a06.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[237],{9237:(t,e,i)=>{i.r(e),i.d(e,{s:()=>l});var n=i(8308),o=Object.defineProperty,s=(t,e)=>o(t,"name",{value:e,configurable:!0});function r(t,e){for(var i=0;in[e]})}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}s(r,"_mergeNamespaces");!function(t){var e="CodeMirror-hint",i="CodeMirror-hint-active";function n(t,e){if(this.cm=t,this.options=e,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length,this.options.updateOnCursorActivity){var i=this;t.on("cursorActivity",this.activityFunc=function(){i.cursorActivity()})}}t.showHint=function(t,e,i){if(!e)return t.showHint(i);i&&i.async&&(e.async=!0);var n={hint:e};if(i)for(var o in i)n[o]=i[o];return t.showHint(n)},t.defineExtension("showHint",(function(e){e=c(this,this.getCursor("start"),e);var i=this.listSelections();if(!(i.length>1)){if(this.somethingSelected()){if(!e.hint.supportsSelection)return;for(var o=0;of.clientHeight+1;if(setTimeout((function(){N=r.getScrollInfo()})),P.bottom-M>0){var E=P.bottom-P.top;if(w.top-(w.bottom-P.top)-E>0)f.style.top=(A=w.top-E-O)+"px",C=!1;else if(E>M){f.style.height=M-5+"px",f.style.top=(A=w.bottom-P.top-O)+"px";var W=r.getCursor();o.from.ch!=W.ch&&(w=r.cursorCoords(W),f.style.left=(H=w.left-k)+"px",P=f.getBoundingClientRect())}}var R,B=P.right-F;if(I&&(B+=r.display.nativeBarWidth),B>0&&(P.right-P.left>F&&(f.style.width=F-5+"px",B-=P.right-P.left-F),f.style.left=(H=w.left-B-k)+"px"),I)for(var K=f.firstChild;K;K=K.nextSibling)K.style.paddingRight=r.display.nativeBarWidth+"px";r.addKeyMap(this.keyMap=h(n,{moveFocus:function(t,e){s.changeActive(s.selectedHint+t,e)},setFocus:function(t){s.changeActive(t)},menuSize:function(){return s.screenAmount()},length:p.length,close:function(){n.close()},pick:function(){s.pick()},data:o})),n.options.closeOnUnfocus&&(r.on("blur",this.onBlur=function(){R=setTimeout((function(){n.close()}),100)}),r.on("focus",this.onFocus=function(){clearTimeout(R)})),r.on("scroll",this.onScroll=function(){var t=r.getScrollInfo(),e=r.getWrapperElement().getBoundingClientRect();N||(N=r.getScrollInfo());var i=A+N.top-t.top,o=i-(u.pageYOffset||(c.documentElement||c.body).scrollTop);if(C||(o+=f.offsetHeight),o<=e.top||o>=e.bottom)return n.close();f.style.top=i+"px",f.style.left=H+N.left-t.left+"px"}),t.on(f,"dblclick",(function(t){var e=a(f,t.target||t.srcElement);e&&null!=e.hintId&&(s.changeActive(e.hintId),s.pick())})),t.on(f,"click",(function(t){var e=a(f,t.target||t.srcElement);e&&null!=e.hintId&&(s.changeActive(e.hintId),n.options.completeOnSingleClick&&s.pick())})),t.on(f,"mousedown",(function(){setTimeout((function(){r.focus()}),20)}));var L=this.getSelectedHintRange();return(0!==L.from||0!==L.to)&&this.scrollToActive(),t.signal(o,"select",p[this.selectedHint],f.childNodes[this.selectedHint]),!0}function f(t,e){if(!t.somethingSelected())return e;for(var i=[],n=0;n0?e(t):r(o+1)}))}s(r,"run"),r(0)}),"resolved");return r.async=!0,r.supportsSelection=!0,r}return(n=e.getHelper(e.getCursor(),"hintWords"))?function(e){return t.hint.fromList(e,{words:n})}:t.hint.anyword?function(e,i){return t.hint.anyword(e,i)}:function(){}}n.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.options.updateOnCursorActivity&&this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&t.signal(this.data,"close"),this.widget&&this.widget.close(),t.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(e,i){var n=e.list[i],o=this;this.cm.operation((function(){n.hint?n.hint(o.cm,e,n):o.cm.replaceRange(l(n),n.from||e.from,n.to||e.to,"complete"),t.signal(e,"pick",n),o.cm.scrollIntoView()})),this.options.closeOnPick&&this.close()},cursorActivity:function(){this.debounce&&(r(this.debounce),this.debounce=0);var t=this.startPos;this.data&&(t=this.data.from);var e=this.cm.getCursor(),i=this.cm.getLine(e.line);if(e.line!=this.startPos.line||i.length-e.ch!=this.startLen-this.startPos.ch||e.ch=this.data.list.length?e=n?this.data.list.length-1:0:e<0&&(e=n?0:this.data.list.length-1),this.selectedHint!=e){var o=this.hints.childNodes[this.selectedHint];o&&(o.className=o.className.replace(" "+i,""),o.removeAttribute("aria-selected")),(o=this.hints.childNodes[this.selectedHint=e]).className+=" "+i,o.setAttribute("aria-selected","true"),this.completion.cm.getInputField().setAttribute("aria-activedescendant",o.id),this.scrollToActive(),t.signal(this.data,"select",this.data.list[this.selectedHint],o)}},scrollToActive:function(){var t=this.getSelectedHintRange(),e=this.hints.childNodes[t.from],i=this.hints.childNodes[t.to],n=this.hints.firstChild;e.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=i.offsetTop+i.offsetHeight-this.hints.clientHeight+n.offsetTop)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1},getSelectedHintRange:function(){var t=this.completion.options.scrollMargin||0;return{from:Math.max(0,this.selectedHint-t),to:Math.min(this.data.list.length-1,this.selectedHint+t)}}},s(f,"applicableHelpers"),s(d,"fetchHints"),s(p,"resolveAutoHints"),t.registerHelper("hint","auto",{resolve:p}),t.registerHelper("hint","fromList",(function(e,i){var n,o=e.getCursor(),s=e.getTokenAt(o),r=t.Pos(o.line,s.start),c=o;s.start,]/,closeOnPick:!0,closeOnUnfocus:!0,updateOnCursorActivity:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null,paddingForScrollbar:!0,moveOnOverlap:!0};t.defineOption("hintOptions",null)}((0,n.r)());var c={};const l=r({__proto__:null,default:(0,n.g)(c)},[c])}}]); +//# sourceMappingURL=237.fff68a06.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/237.fff68a06.chunk.js.map b/serv/web/build/static/js/237.fff68a06.chunk.js.map new file mode 100644 index 00000000..a09780dd --- /dev/null +++ b/serv/web/build/static/js/237.fff68a06.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/237.fff68a06.chunk.js","mappings":"yjBAYG,SAASA,GAGV,IAAIC,EAA4B,kBAC5BC,EAA4B,yBAsChC,SAASC,EAAWC,EAAIC,GAStB,GARAC,KAAKC,GAAKH,EACVE,KAAKE,QAAUH,EACfC,KAAKG,OAAS,KACdH,KAAKI,SAAW,EAChBJ,KAAKK,KAAO,EACZL,KAAKM,SAAWN,KAAKC,GAAGM,UAAU,SAClCP,KAAKQ,SAAWR,KAAKC,GAAGQ,QAAQT,KAAKM,SAASI,MAAMC,OAASX,KAAKC,GAAGW,eAAeD,OAEhFX,KAAKE,QAAQW,uBAAwB,CACvC,IAAIC,EAAOd,KACXF,EAAGiB,GAAG,iBAAkBf,KAAKgB,aAAe,WAAaF,EAAKG,gBAAiB,EAAE,CAEpF,CA/CDvB,EAAWwB,SAAW,SAASpB,EAAIC,EAAUe,GAC3C,IAAKf,EAAU,OAAOD,EAAGoB,SAASJ,GAC9BA,GAAWA,EAAQK,QAAOpB,EAASoB,OAAQ,GAC/C,IAAIC,EAAU,CAACC,KAAMtB,GACrB,GAAIe,EAAS,IAAK,IAAIQ,KAAQR,EAASM,EAAQE,GAAQR,EAAQQ,GAC/D,OAAOxB,EAAGoB,SAASE,EACvB,EAEE1B,EAAW6B,gBAAgB,YAAY,SAASzB,GAC9CA,EAAU0B,EAAaxB,KAAMA,KAAKO,UAAU,SAAUT,GACtD,IAAIC,EAAaC,KAAKyB,iBACtB,KAAI1B,EAAWY,OAAS,GAIxB,IAAIX,KAAK0B,oBAAqB,CAC5B,IAAK5B,EAAQuB,KAAKM,kBAAmB,OAErC,IAAK,IAAIb,EAAI,EAAGA,EAAIf,EAAWY,OAAQG,IACrC,GAAIf,EAAWe,GAAGc,KAAKlB,MAAQX,EAAWe,GAAGe,OAAOnB,KAAM,OAG1DV,KAAK8B,MAAMC,kBAAkB/B,KAAK8B,MAAMC,iBAAiBC,QAC7D,IAAIZ,EAAapB,KAAK8B,MAAMC,iBAAmB,IAAIlC,EAAWG,KAAMF,GAC/DsB,EAAWlB,QAAQmB,OAExB3B,EAAWuC,OAAOjC,KAAM,kBAAmBA,MAC3CoB,EAAWc,QAAO,GAAI,CAC1B,IAEExC,EAAW6B,gBAAgB,aAAa,WAClCvB,KAAK8B,MAAMC,kBAAkB/B,KAAK8B,MAAMC,iBAAiBC,OACjE,IAEWG,EAAAtC,EAAA,cAeT,IAAIuC,EAAwBC,OAAOC,uBAAyB,SAASxC,GACnE,OAAOyC,WAAWzC,EAAI,IAAK,GAC/B,EACM0C,EAAuBH,OAAOI,sBAAwBC,aAsF1D,SAASlB,EAAa1B,EAAIC,EAAKe,GAC7B,IAAIM,EAAStB,EAAGI,QAAQyC,YACpBrB,EAAM,CAAC,EACX,IAAK,IAAIsB,KAAQC,EAAgBvB,EAAIsB,GAAQC,EAAeD,GAC5D,GAAIxB,EAAQ,IAAK,IAAIwB,KAAQxB,OACN,IAAjBA,EAAOwB,KAAqBtB,EAAIsB,GAAQxB,EAAOwB,IACrD,GAAI9B,EAAS,IAAK,IAAI8B,KAAQ9B,OACN,IAAlBA,EAAQ8B,KAAqBtB,EAAIsB,GAAQ9B,EAAQ8B,IACvD,OAAItB,EAAID,KAAKyB,UAASxB,EAAID,KAAOC,EAAID,KAAKyB,QAAQhD,EAAIC,IAC/CuB,CACR,CAED,SAASyB,EAAQjD,GACf,MAAyB,iBAAdA,EAA+BA,EAC9BA,EAAWkD,IACxB,CAED,SAASC,EAAYnD,EAAYC,GAC/B,IAAIe,EAAU,CACZoC,GAAI,WAAYnD,EAAOoD,WAAW,EAAG,EACrCC,KAAM,WAAYrD,EAAOoD,UAAU,EAAG,EACtCE,OAAQ,WAAYtD,EAAOoD,UAA+B,EAApBpD,EAAOuD,YAAgB,EAAM,EACnEC,SAAU,WAAYxD,EAAOoD,UAAUpD,EAAOuD,WAAa,GAAG,EAAM,EACpEE,KAAM,WAAYzD,EAAO0D,SAAS,EAAG,EACrCC,IAAK,WAAY3D,EAAO0D,SAAS1D,EAAOY,OAAS,EAAG,EACpDgD,MAAO5D,EAAO6D,KACdC,IAAK9D,EAAO6D,KACZE,IAAK/D,EAAOiC,OAGJ,MAAM+B,KAAKC,UAAUC,YAG7BnD,EAAQ,UAAY,WAAYf,EAAOoD,WAAW,EAAG,EACrDrC,EAAQ,UAAY,WAAYf,EAAOoD,UAAU,EAAG,GAGtD,IAAI7B,EAASxB,EAAWI,QAAQgE,WAC5BtB,EAAStB,EAAS,CAAE,EAAGR,EAC3B,SAASqD,EAAWC,EAAKC,GACvB,IAAIC,EAEFA,EADgB,iBAAPD,EACDlC,GAAA,SAASoC,GAAM,OAAOF,EAAIE,EAAIxE,EAAM,GAApC,SAEDe,EAAQ0D,eAAeH,GACtBvD,EAAQuD,GAERA,EACVzB,EAAOwB,GAAOE,CACf,CACD,GAXSnC,EAAAgC,EAAA,cAWL7C,EACF,IAAK,IAAImD,KAAOnD,EAAYA,EAAOkD,eAAeC,IAChDN,EAAWM,EAAKnD,EAAOmD,IAC3B,IAAIC,EAAQ5E,EAAWI,QAAQyE,UAC/B,GAAID,EACF,IAAK,IAAID,KAAOC,EAAWA,EAAMF,eAAeC,IAC9CN,EAAWM,EAAKC,EAAMD,IAC1B,OAAO7B,CACR,CAED,SAASgC,EAAe9E,EAAcC,GACpC,KAAOA,GAAMA,GAAMD,GAAc,CAC/B,GAAkC,OAA9BC,EAAG8E,SAASC,eAA0B/E,EAAGgF,YAAcjF,EAAc,OAAOC,EAChFA,EAAKA,EAAGgF,UAAA,CAEX,CAED,SAASC,EAAOlF,EAAYC,GAC1BC,KAAKiF,GAAK,eAAiBC,KAAKC,MAAMD,KAAKE,OAAO,MAClDpF,KAAKqF,WAAavF,EAClBE,KAAKsF,KAAOvF,EACZC,KAAKuF,QAAS,EACd,IAAIzE,EAASd,KAAMoB,EAAKtB,EAAWG,GAC/BqB,EAAgBF,EAAGoE,gBAAgBC,cACnC7C,EAAetB,EAAcoE,aAAepE,EAAcqE,aAE1DxB,EAAQnE,KAAK4F,MAAQtE,EAAcuE,cAAc,MACrD1B,EAAM2B,aAAa,OAAQ,WAC3B3B,EAAM2B,aAAa,gBAAiB,QACpC3B,EAAMc,GAAKjF,KAAKiF,GAChB,IAAIR,EAAQ3E,EAAWG,GAAGC,QAAQ6F,MAClC5B,EAAM6B,UAAY,oBAAsBvB,EACxCzE,KAAKiG,aAAelG,EAAKkG,cAAgB,EAGzC,IAAK,IADDvB,EAAc3E,EAAKmG,KACd9B,EAAI,EAAGA,EAAIM,EAAY/D,SAAUyD,EAAG,CAC3C,IAAIC,EAAMF,EAAMgC,YAAY7E,EAAcuE,cAAc,OAAQvB,EAAMI,EAAYN,GAC9EG,EAAY5E,GAAsByE,GAAKpE,KAAKiG,aAAe,GAAK,IAAMrG,GACrD,MAAjB0E,EAAI0B,YAAmBzB,EAAYD,EAAI0B,UAAY,IAAMzB,GAC7DF,EAAI2B,UAAYzB,EACZH,GAAKpE,KAAKiG,cAAc5B,EAAIyB,aAAa,gBAAiB,QAC9DzB,EAAIY,GAAKjF,KAAKiF,GAAK,IAAMb,EACzBC,EAAIyB,aAAa,OAAQ,UACrBxB,EAAI8B,OAAQ9B,EAAI8B,OAAO/B,EAAKtE,EAAMuE,GACjCD,EAAI8B,YAAY7E,EAAc+E,eAAe/B,EAAIgC,aAAevD,EAAQuB,KAC7ED,EAAIkC,OAASnC,CAAA,CAGf,IAAIoC,EAAY1G,EAAWI,QAAQuG,WAAanF,EAAcoF,KAC1DC,EAAMvF,EAAGwF,aAAa9G,EAAWI,QAAQ2G,cAAgB9G,EAAK+G,KAAO,MACrEC,EAAOJ,EAAIK,KAAMC,EAAMN,EAAIO,OAAQC,GAAQ,EAC3CC,EAAa,EAAGC,EAAY,EAChC,GAAIb,IAAclF,EAAcoF,KAAM,CAEpC,IACIY,GAD0H,IAAlG,CAAC,WAAY,WAAY,SAASC,QAAQ3E,EAAa4E,iBAAiBhB,GAAWiB,UACpEjB,EAAYA,EAAUkB,aAC7DC,EAAuBL,EAAaM,wBACpCC,EAAevG,EAAcoF,KAAKkB,wBACtCR,EAAcO,EAAqBX,KAAOa,EAAab,KAAOM,EAAaQ,WAC3ET,EAAaM,EAAqBI,IAAMF,EAAaE,IAAMT,EAAaU,SAAA,CAE1E7D,EAAM8D,MAAMjB,KAAQD,EAAOK,EAAc,KACzCjD,EAAM8D,MAAMF,IAAOd,EAAMI,EAAa,KAGtC,IAAIa,EAAOtF,EAAauF,YAAcjD,KAAKkD,IAAI9G,EAAcoF,KAAK2B,YAAa/G,EAAcgH,gBAAgBD,aACzGE,EAAO3F,EAAa4F,aAAetD,KAAKkD,IAAI9G,EAAcoF,KAAK+B,aAAcnH,EAAcgH,gBAAgBG,cAC/GjC,EAAUL,YAAYhC,GACtB/C,EAAGoE,gBAAgBM,aAAa,oBAAqB,QACrD1E,EAAGoE,gBAAgBM,aAAa,YAAa9F,KAAKiF,IAClD7D,EAAGoE,gBAAgBM,aAAa,wBAAyB9F,KAAKiF,GAAK,IAAMjF,KAAKiG,cAE9E,IAIIyC,EAJAC,EAAM7I,EAAWI,QAAQ0I,cAAgBzE,EAAMyD,wBAA0B,IAAIiB,QAC7EC,IAAUhJ,EAAWI,QAAQ6I,qBAAsB5E,EAAM6E,aAAe7E,EAAM8E,aAAe,EAOjG,GAHA1G,YAAW,WAAamG,EAActH,EAAG8H,eAAgB,IAE1CP,EAAIzB,OAASqB,EACb,EAAG,CAChB,IAAIY,EAASR,EAAIzB,OAASyB,EAAIZ,IAC9B,GAD4CpB,EAAIoB,KAAOpB,EAAIO,OAASyB,EAAIZ,KAC3DoB,EAAS,EACpBhF,EAAM8D,MAAMF,KAAOd,EAAMN,EAAIoB,IAAMoB,EAAS9B,GAAa,KACzDF,GAAQ,UACCgC,EAASZ,EAAM,CACxBpE,EAAM8D,MAAMmB,OAAUb,EAAO,EAAK,KAClCpE,EAAM8D,MAAMF,KAAOd,EAAMN,EAAIO,OAASyB,EAAIZ,IAAMV,GAAa,KAC7D,IAAIgC,EAASjI,EAAGb,YACZR,EAAK+G,KAAKwC,IAAMD,EAAOC,KACzB3C,EAAMvF,EAAGwF,aAAayC,GACtBlF,EAAM8D,MAAMjB,MAAQD,EAAOJ,EAAIK,KAAOI,GAAc,KACpDuB,EAAMxE,EAAMyD,wB,EAIlB,IAuBM2B,EAvBFC,EAAWb,EAAIc,MAAQvB,EAS3B,GARIY,IAASU,GAAYpI,EAAGsI,QAAQC,gBAChCH,EAAW,IACTb,EAAIc,MAAQd,EAAI3B,KAAOkB,IACzB/D,EAAM8D,MAAM2B,MAAS1B,EAAO,EAAK,KACjCsB,GAAab,EAAIc,MAAQd,EAAI3B,KAAQkB,GAEvC/D,EAAM8D,MAAMjB,MAAQD,EAAOJ,EAAIK,KAAOwC,EAAWpC,GAAc,MAE7D0B,EAAS,IAAK,IAAIe,EAAO1F,EAAM2F,WAAYD,EAAMA,EAAOA,EAAKE,YAC/DF,EAAK5B,MAAM+B,aAAe5I,EAAGsI,QAAQC,eAAiB,KAExDvI,EAAG6I,UAAUjK,KAAKkK,OAASjH,EAAYnD,EAAY,CACjDqD,UAAW,SAASgH,EAAGC,GAAatJ,EAAOuJ,aAAavJ,EAAOmF,aAAekE,EAAGC,EAAa,EAC9F3G,SAAU,SAAS0G,GAAKrJ,EAAOuJ,aAAaF,EAAK,EACjD7G,SAAU,WAAa,OAAOxC,EAAOwJ,cAAiB,EACtD3J,OAAQ+D,EAAY/D,OACpBqB,MAAO,WAAalC,EAAWkC,OAAU,EACzC4B,KAAM,WAAa9C,EAAO8C,MAAS,EACnC0B,KAAMvF,KAGJD,EAAWI,QAAQqK,iBAErBnJ,EAAGL,GAAG,OAAQf,KAAKwK,OAAS,WAAajB,EAAgBhH,YAAW,WAAazC,EAAWkC,OAAU,GAAE,IAAK,GAC7GZ,EAAGL,GAAG,QAASf,KAAKyK,QAAU,WAAa/H,aAAa6G,EAAe,IAGzEnI,EAAGL,GAAG,SAAUf,KAAK0K,SAAW,WAC9B,IAAIP,EAAY/I,EAAG8H,gBAAiBkB,EAAShJ,EAAGuJ,oBAAoB/C,wBAC/Dc,IAAaA,EAActH,EAAG8H,iBACnC,IAAI0B,EAAS3D,EAAMyB,EAAYX,IAAMoC,EAAUpC,IAC3C8C,EAAQD,GAAUhI,EAAakI,cAAgBxJ,EAAcgH,iBAAmBhH,EAAcoF,MAAMsB,WAExG,GADKb,IAAO0D,GAAS1G,EAAMsE,cACvBoC,GAAST,EAAOrC,KAAO8C,GAAST,EAAOlD,OAAQ,OAAOpH,EAAWkC,QACrEmC,EAAM8D,MAAMF,IAAM6C,EAAS,KAC3BzG,EAAM8D,MAAMjB,KAAQD,EAAO2B,EAAY1B,KAAOmD,EAAUnD,KAAQ,IACtE,GAEItH,EAAWqB,GAAGoD,EAAO,YAAY,SAASgG,GACxC,IAAIC,EAAIxF,EAAeT,EAAOgG,EAAEY,QAAUZ,EAAEa,YACxCZ,GAAiB,MAAZA,EAAE7D,SAAiBzF,EAAOuJ,aAAaD,EAAE7D,QAASzF,EAAO8C,OACxE,IAEIlE,EAAWqB,GAAGoD,EAAO,SAAS,SAASgG,GACrC,IAAIC,EAAIxF,EAAeT,EAAOgG,EAAEY,QAAUZ,EAAEa,YACxCZ,GAAiB,MAAZA,EAAE7D,SACTzF,EAAOuJ,aAAaD,EAAE7D,QAClBzG,EAAWI,QAAQ+K,uBAAuBnK,EAAO8C,OAE7D,IAEIlE,EAAWqB,GAAGoD,EAAO,aAAa,WAChC5B,YAAW,WAAWnB,EAAG8J,OAAQ,GAAG,GAC1C,IAGI,IAAIC,EAAoBnL,KAAKoL,uBAC7B,OAA+B,IAA3BD,EAAkBrE,MAAuC,IAAzBqE,EAAkBE,KACpDrL,KAAKsL,iBAGP5L,EAAWuC,OAAOlC,EAAM,SAAU2E,EAAY1E,KAAKiG,cAAe9B,EAAMoH,WAAWvL,KAAKiG,gBACjF,CACR,CA0ED,SAASuF,EAAkB1L,EAAIC,GAC7B,IAAKD,EAAG4B,oBAAqB,OAAO3B,EAEpC,IAAK,IADDe,EAAS,GACJM,EAAI,EAAGA,EAAIrB,EAAQY,OAAQS,IAC9BrB,EAAQqB,GAAGO,mBAAmBb,EAAO2K,KAAK1L,EAAQqB,IACxD,OAAON,CACR,CAED,SAAS4K,EAAW5L,EAAMC,EAAIe,EAASM,GACrC,GAAItB,EAAKqB,MACPrB,EAAKC,EAAIqB,EAAUN,OACd,CACL,IAAIQ,EAASxB,EAAKC,EAAIe,GAClBQ,GAAUA,EAAOqK,KAAMrK,EAAOqK,KAAKvK,GAClCA,EAASE,EAAM,CAEvB,CAED,SAASsK,EAAiB9L,EAAIC,GAC5B,IAA0CqB,EAAtCN,EAAUhB,EAAG+L,WAAW9L,EAAK,QACjC,GAAIe,EAAQH,OAAQ,CAClB,IAAIW,EAAWa,GAAA,SAASS,EAAIuB,EAAUM,GACpC,IAAIC,EAAM8G,EAAkB5I,EAAI9B,GAChC,SAASsD,EAAIC,GACX,GAAIA,GAAKK,EAAI/D,OAAQ,OAAOwD,EAAS,MACrCuH,EAAWhH,EAAIL,GAAIzB,EAAI6B,GAAS,SAASH,GACnCA,GAAUA,EAAO4B,KAAKvF,OAAS,EAAGwD,EAASG,GAC1CF,EAAIC,EAAI,EACzB,GACS,CANQlC,EAAAiC,EAAA,OAOTA,EAAI,EACL,GAVc,YAWf,OAAA9C,EAASH,OAAQ,EACjBG,EAASK,mBAAoB,EACtBL,CAAA,CACF,OAAIF,EAAQtB,EAAGgM,UAAUhM,EAAGS,YAAa,cACvC,SAASqC,GAAM,OAAOlD,EAAW2B,KAAK0K,SAASnJ,EAAI,CAACoJ,MAAO5K,GAAS,EAClE1B,EAAW2B,KAAK4K,QAClB,SAASrJ,EAAIuB,GAAW,OAAOzE,EAAW2B,KAAK4K,QAAQrJ,EAAIuB,EAAU,EAErE,WAAa,CAEvB,CA1ZDtE,EAAWqM,UAAY,CACrBlK,MAAO,WACAhC,KAAKmM,WACVnM,KAAKC,GAAG6B,MAAMC,iBAAmB,KACjC/B,KAAKK,KAAO,KACRL,KAAKE,QAAQW,wBACfb,KAAKC,GAAGmM,IAAI,iBAAkBpM,KAAKgB,cAGjChB,KAAKG,QAAUH,KAAKsF,MAAM5F,EAAWuC,OAAOjC,KAAKsF,KAAM,SACvDtF,KAAKG,QAAQH,KAAKG,OAAO6B,QAC7BtC,EAAWuC,OAAOjC,KAAKC,GAAI,gBAAiBD,KAAKC,IAClD,EAEDkM,OAAQ,WACN,OAAOnM,KAAKC,GAAG6B,MAAMC,kBAAoB/B,IAC1C,EAED4D,KAAM,SAAS9D,EAAMC,GACnB,IAAIe,EAAahB,EAAKoG,KAAKnG,GAAIqB,EAAOpB,KACtCA,KAAKC,GAAGoM,WAAU,WACZvL,EAAWO,KACbP,EAAWO,KAAKD,EAAKnB,GAAIH,EAAMgB,GAE/BM,EAAKnB,GAAGqM,aAAavJ,EAAQjC,GAAaA,EAAWgG,MAAQhH,EAAKgH,KAC7ChG,EAAWuK,IAAMvL,EAAKuL,GAAI,YACjD3L,EAAWuC,OAAOnC,EAAM,OAAQgB,GAChCM,EAAKnB,GAAGsM,gBAChB,IACUvM,KAAKE,QAAQsM,aACfxM,KAAKgC,OAER,EAEDf,eAAgB,WACVjB,KAAKI,WACPoC,EAAqBxC,KAAKI,UAC1BJ,KAAKI,SAAW,GAGlB,IAAIN,EAAaE,KAAKM,SACnBN,KAAKsF,OACNxF,EAAaE,KAAKsF,KAAKwB,MAGzB,IAAI/G,EAAMC,KAAKC,GAAGM,YAAaO,EAAOd,KAAKC,GAAGQ,QAAQV,EAAIW,MAC1D,GAAIX,EAAIW,MAAQV,KAAKM,SAASI,MAAQI,EAAKH,OAASZ,EAAIuJ,IAAMtJ,KAAKQ,SAAWR,KAAKM,SAASgJ,IACxFvJ,EAAIuJ,GAAKxJ,EAAWwJ,IAAMtJ,KAAKC,GAAGyB,sBAChC3B,EAAIuJ,IAAMtJ,KAAKE,QAAQuM,gBAAgB1I,KAAKjD,EAAK4L,OAAO3M,EAAIuJ,GAAK,IACrEtJ,KAAKgC,YACA,CACL,IAAIZ,EAAOpB,KACXA,KAAKI,SAAWgC,GAAsB,WAAYhB,EAAKc,QAAS,IAC5DlC,KAAKG,QAAQH,KAAKG,OAAOwM,SAAO,CAEvC,EAEDzK,OAAQ,SAASpC,GACf,GAAiB,MAAbE,KAAKK,KACT,KAAIN,EAAOC,KAAMc,IAAWd,KAAKK,KACjCqL,EAAW1L,KAAKE,QAAQmB,KAAMrB,KAAKC,GAAID,KAAKE,SAAS,SAASkB,GACxDrB,EAAKM,MAAQS,GAAQf,EAAK6M,aAAaxL,EAAMtB,EACzD,GAAO,CACF,EAED8M,aAAc,SAAS9M,EAAMC,GACvBC,KAAKsF,MAAM5F,EAAWuC,OAAOjC,KAAKsF,KAAM,UAE5C,IAAIxE,EAAUd,KAAKG,QAAUH,KAAKG,OAAOoF,QAAYxF,GAASC,KAAKE,QAAQ2M,eACvE7M,KAAKG,QAAQH,KAAKG,OAAO6B,QAE7BhC,KAAKsF,KAAOxF,EAERA,GAAQA,EAAKoG,KAAKvF,SAChBG,GAA8B,GAApBhB,EAAKoG,KAAKvF,OACtBX,KAAK4D,KAAK9D,EAAM,IAEhBE,KAAKG,OAAS,IAAI6E,EAAOhF,KAAMF,GAC/BJ,EAAWuC,OAAOnC,EAAM,UAG7B,GAGMqC,EAAAX,EAAA,gBAYAW,EAAAY,EAAA,WAKAZ,EAAAc,EAAA,eA2CAd,EAAAyC,EAAA,kBAOAzC,EAAA6C,EAAA,UAiJTA,EAAOkH,UAAY,CACjBlK,MAAO,WACL,GAAIhC,KAAKqF,WAAWlF,QAAUH,KAC9B,CAAAA,KAAKqF,WAAWlF,OAAS,KACrBH,KAAK4F,MAAMb,YAAY/E,KAAK4F,MAAMb,WAAW+H,YAAY9M,KAAK4F,OAClE5F,KAAKqF,WAAWpF,GAAG8M,aAAa/M,KAAKkK,QACrC,IAAIpK,EAAQE,KAAKqF,WAAWpF,GAAGuF,gBAC/B1F,EAAMkN,gBAAgB,yBACtBlN,EAAMkN,gBAAgB,aAEtB,IAAIjN,EAAKC,KAAKqF,WAAWpF,GACrBD,KAAKqF,WAAWnF,QAAQqK,iBAC1BxK,EAAGqM,IAAI,OAAQpM,KAAKwK,QACpBzK,EAAGqM,IAAI,QAASpM,KAAKyK,UAEvB1K,EAAGqM,IAAI,SAAUpM,KAAK0K,SAAQ,CAC/B,EAEDiC,QAAS,WACP3M,KAAKqF,WAAWpF,GAAG8M,aAAa/M,KAAKkK,QACrC,IAAIpK,EAASE,KACbA,KAAKkK,OAAS,CAACvG,MAAO,WAAa7D,EAAOyF,QAAS,CAAK,GACxDvF,KAAKqF,WAAWpF,GAAGgK,UAAUjK,KAAKkK,OACnC,EAEDtG,KAAM,WACJ5D,KAAKqF,WAAWzB,KAAK5D,KAAKsF,KAAMtF,KAAKiG,aACtC,EAEDoE,aAAc,SAASvK,EAAGC,GAKxB,GAJID,GAAKE,KAAKsF,KAAKY,KAAKvF,OACtBb,EAAIC,EAAYC,KAAKsF,KAAKY,KAAKvF,OAAS,EAAI,EACrCb,EAAI,IACXA,EAAIC,EAAY,EAAKC,KAAKsF,KAAKY,KAAKvF,OAAS,GAC3CX,KAAKiG,cAAgBnG,EACzB,KAAIgB,EAAOd,KAAK4F,MAAM2F,WAAWvL,KAAKiG,cAClCnF,IACFA,EAAKkF,UAAYlF,EAAKkF,UAAUiH,QAAQ,IAAMrN,EAA2B,IACzEkB,EAAKkM,gBAAgB,mBAEvBlM,EAAOd,KAAK4F,MAAM2F,WAAWvL,KAAKiG,aAAenG,IAC5CkG,WAAa,IAAMpG,EACxBkB,EAAKgF,aAAa,gBAAiB,QACnC9F,KAAKqF,WAAWpF,GAAGuF,gBAAgBM,aAAa,wBAAyBhF,EAAKmE,IAC9EjF,KAAKsL,iBACL5L,EAAWuC,OAAOjC,KAAKsF,KAAM,SAAUtF,KAAKsF,KAAKY,KAAKlG,KAAKiG,cAAenF,EAAI,CAC/E,EAEDwK,eAAgB,WACd,IAAIxL,EAAoBE,KAAKoL,uBACzBrL,EAAQC,KAAK4F,MAAM2F,WAAWzL,EAAkBgH,MAChDhG,EAAQd,KAAK4F,MAAM2F,WAAWzL,EAAkBuL,IAChDjK,EAAYpB,KAAK4F,MAAMkE,WACvB/J,EAAMmN,UAAYlN,KAAK4F,MAAMoC,UAC/BhI,KAAK4F,MAAMoC,UAAYjI,EAAMmN,UAAY9L,EAAU8L,UAC5CpM,EAAMoM,UAAYpM,EAAM2H,aAAezI,KAAK4F,MAAMoC,UAAYhI,KAAK4F,MAAMqD,eAChFjJ,KAAK4F,MAAMoC,UAAYlH,EAAMoM,UAAYpM,EAAM2H,aAAezI,KAAK4F,MAAMqD,aAAe7H,EAAU8L,UACrG,EAED5C,aAAc,WACZ,OAAOpF,KAAKC,MAAMnF,KAAK4F,MAAMqD,aAAejJ,KAAK4F,MAAMkE,WAAWrB,eAAiB,CACpF,EAED2C,qBAAsB,WACpB,IAAItL,EAASE,KAAKqF,WAAWnF,QAAQiN,cAAgB,EACrD,MAAO,CACLrG,KAAM5B,KAAKkD,IAAI,EAAGpI,KAAKiG,aAAenG,GACtCuL,GAAInG,KAAKkI,IAAIpN,KAAKsF,KAAKY,KAAKvF,OAAS,EAAGX,KAAKiG,aAAenG,GAE/D,GAGMqC,EAAAqJ,EAAA,qBAQArJ,EAAAuJ,EAAA,cAUAvJ,EAAAyJ,EAAA,oBA0BTlM,EAAW2N,eAAe,OAAQ,OAAQ,CACxCvK,QAAS8I,IAGXlM,EAAW2N,eAAe,OAAQ,YAAY,SAASvN,EAAIC,GACzD,IACIuB,EADAR,EAAMhB,EAAGS,YAAaa,EAAQtB,EAAGwN,WAAWxM,GACtC8B,EAAOlD,EAAW6N,IAAIzM,EAAIJ,KAAMU,EAAMoM,OAAQrJ,EAAKrD,EACzDM,EAAMoM,MAAQ1M,EAAIwI,IAAM,KAAKvF,KAAK3C,EAAMqM,OAAOf,OAAO5L,EAAIwI,GAAKlI,EAAMoM,MAAQ,IAC/ElM,EAAOF,EAAMqM,OAAOC,OAAO,EAAG5M,EAAIwI,GAAKlI,EAAMoM,QAE7ClM,EAAO,GACPsB,EAAO9B,GAGT,IAAK,IADD2D,EAAQ,GACHC,EAAI,EAAGA,EAAI3E,EAAQiM,MAAMrL,OAAQ+D,IAAK,CAC7C,IAAIN,EAAOrE,EAAQiM,MAAMtH,GACrBN,EAAKuJ,MAAM,EAAGrM,EAAKX,SAAWW,GAChCmD,EAAMgH,KAAKrH,EAAI,CAGnB,GAAIK,EAAM9D,OAAQ,MAAO,CAACuF,KAAMzB,EAAOqC,KAAMlE,EAAMyI,GAAIlH,EAC3D,IAEEzE,EAAWkO,SAASC,aAAenO,EAAWwB,SAE9C,IAAI2B,EAAiB,CACnBxB,KAAM3B,EAAW2B,KAAKyM,KACtBjB,gBAAgB,EAChBhG,eAAe,EACf4F,gBAAiB,mBACjBD,aAAa,EACbjC,gBAAgB,EAChB1J,wBAAwB,EACxBoK,uBAAuB,EACvBxE,UAAW,KACXvC,WAAY,KACZS,UAAW,KACXoE,qBAAqB,EACrBH,eAAe,GAGjBlJ,EAAWqO,aAAa,cAAe,KACzC,CAzgBIrO,EAAIsO,EAAAA,EAAAA,M","sources":["../node_modules/node_modules/codemirror/addon/hint/show-hint.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// declare global: DOMRect\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n CodeMirror.defineExtension(\"closeHint\", function() {\n if (this.state.completionActive) this.state.completionActive.close()\n })\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n if (this.options.updateOnCursorActivity) {\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n if (this.options.updateOnCursorActivity) {\n this.cm.off(\"cursorActivity\", this.activityFunc);\n }\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i], self = this;\n this.cm.operation(function() {\n if (completion.hint)\n completion.hint(self.cm, data, completion);\n else\n self.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n self.cm.scrollIntoView();\n });\n if (this.options.closeOnPick) {\n this.close();\n }\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var identStart = this.startPos;\n if(this.data) {\n identStart = this.data.from;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < identStart.ch || this.cm.somethingSelected() ||\n (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function() {handle.moveFocus(-1);};\n baseMap[\"Ctrl-N\"] = function() {handle.moveFocus(1);};\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.id = \"cm-complete-\" + Math.floor(Math.random(1e6))\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n hints.setAttribute(\"role\", \"listbox\")\n hints.setAttribute(\"aria-expanded\", \"true\")\n hints.id = this.id\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (i == this.selectedHint) elt.setAttribute(\"aria-selected\", \"true\")\n elt.id = this.id + \"-\" + i\n elt.setAttribute(\"role\", \"option\")\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var container = completion.options.container || ownerDocument.body;\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n var offsetLeft = 0, offsetTop = 0;\n if (container !== ownerDocument.body) {\n // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n var offsetParent = isContainerPositioned ? container : container.offsetParent;\n var offsetParentPosition = offsetParent.getBoundingClientRect();\n var bodyPosition = ownerDocument.body.getBoundingClientRect();\n offsetLeft = (offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft);\n offsetTop = (offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop);\n }\n hints.style.left = (left - offsetLeft) + \"px\";\n hints.style.top = (top - offsetTop) + \"px\";\n\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n container.appendChild(hints);\n cm.getInputField().setAttribute(\"aria-autocomplete\", \"list\")\n cm.getInputField().setAttribute(\"aria-owns\", this.id)\n cm.getInputField().setAttribute(\"aria-activedescendant\", this.id + \"-\" + this.selectedHint)\n\n var box = completion.options.moveOnOverlap ? hints.getBoundingClientRect() : new DOMRect();\n var scrolls = completion.options.paddingForScrollbar ? hints.scrollHeight > hints.clientHeight + 1 : false;\n\n // Compute in the timeout to avoid reflow on init\n var startScroll;\n setTimeout(function() { startScroll = cm.getScrollInfo(); });\n\n var overlapY = box.bottom - winH;\n if (overlapY > 0) {\n var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n if (curTop - height > 0) { // Fits above cursor\n hints.style.top = (top = pos.top - height - offsetTop) + \"px\";\n below = false;\n } else if (height > winH) {\n hints.style.height = (winH - 5) + \"px\";\n hints.style.top = (top = pos.bottom - box.top - offsetTop) + \"px\";\n var cursor = cm.getCursor();\n if (data.from.ch != cursor.ch) {\n pos = cm.cursorCoords(cursor);\n hints.style.left = (left = pos.left - offsetLeft) + \"px\";\n box = hints.getBoundingClientRect();\n }\n }\n }\n var overlapX = box.right - winW;\n if (scrolls) overlapX += cm.display.nativeBarWidth;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = pos.left - overlapX - offsetLeft) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n if (!startScroll) startScroll = cm.getScrollInfo();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n // The first hint doesn't need to be scrolled to on init\n var selectedHintRange = this.getSelectedHintRange();\n if (selectedHintRange.from !== 0 || selectedHintRange.to !== 0) {\n this.scrollToActive();\n }\n\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n if (this.hints.parentNode) this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n var input = this.completion.cm.getInputField()\n input.removeAttribute(\"aria-activedescendant\")\n input.removeAttribute(\"aria-owns\")\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n if (node) {\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node.removeAttribute(\"aria-selected\")\n }\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n node.setAttribute(\"aria-selected\", \"true\")\n this.completion.cm.getInputField().setAttribute(\"aria-activedescendant\", node.id)\n this.scrollToActive()\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n scrollToActive: function() {\n var selectedHintRange = this.getSelectedHintRange();\n var node1 = this.hints.childNodes[selectedHintRange.from];\n var node2 = this.hints.childNodes[selectedHintRange.to];\n var firstNode = this.hints.firstChild;\n if (node1.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;\n else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n },\n\n getSelectedHintRange: function() {\n var margin = this.completion.options.scrollMargin || 0;\n return {\n from: Math.max(0, this.selectedHint - margin),\n to: Math.min(this.data.list.length - 1, this.selectedHint + margin),\n };\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start)\n } else {\n term = \"\"\n from = cur\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnPick: true,\n closeOnUnfocus: true,\n updateOnCursorActivity: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null,\n paddingForScrollbar: true,\n moveOnOverlap: true,\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n"],"names":["r","w","v","b","t","e","this","cm","options","widget","debounce","tick","startPos","getCursor","startLen","getLine","line","length","getSelection","updateOnCursorActivity","i","on","activityFunc","cursorActivity","showHint","async","n","hint","s","defineExtension","Z","listSelections","somethingSelected","supportsSelection","head","anchor","state","completionActive","close","signal","update","p","J","window","requestAnimationFrame","setTimeout","Q","cancelAnimationFrame","clearTimeout","hintOptions","c","D","resolve","_","text","tt","Up","moveFocus","Down","PageUp","menuSize","PageDown","Home","setFocus","End","Enter","pick","Tab","Esc","test","navigator","platform","customKeys","o","u","l","a","S","hasOwnProperty","f","h","extraKeys","B","nodeName","toUpperCase","parentNode","K","id","Math","floor","random","completion","data","picked","getInputField","ownerDocument","defaultView","parentWindow","hints","createElement","setAttribute","theme","className","selectedHint","list","appendChild","render","createTextNode","displayText","hintId","x","container","body","y","cursorCoords","alignWithWord","from","k","left","O","bottom","j","F","E","W","indexOf","getComputedStyle","position","offsetParent","M","getBoundingClientRect","z","scrollLeft","top","scrollTop","style","N","innerWidth","max","offsetWidth","documentElement","L","innerHeight","offsetHeight","T","m","moveOnOverlap","DOMRect","q","paddingForScrollbar","scrollHeight","clientHeight","getScrollInfo","P","height","V","ch","Y","C","right","display","nativeBarWidth","width","I","firstChild","nextSibling","paddingRight","addKeyMap","keyMap","d","g","changeActive","screenAmount","closeOnUnfocus","onBlur","onFocus","onScroll","getWrapperElement","X","R","pageYOffset","target","srcElement","completeOnSingleClick","focus","$","getSelectedHintRange","to","scrollToActive","childNodes","et","push","U","then","it","getHelpers","getHelper","fromList","words","anyword","prototype","active","off","operation","replaceRange","scrollIntoView","closeOnPick","closeCharacters","charAt","disable","finishUpdate","completeSingle","removeChild","removeKeyMap","removeAttribute","replace","offsetTop","scrollMargin","min","registerHelper","getTokenAt","Pos","start","string","substr","slice","commands","autocomplete","auto","defineOption","ct"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/248.04e18c19.chunk.js b/serv/web/build/static/js/248.04e18c19.chunk.js deleted file mode 100644 index 3968bd8c..00000000 --- a/serv/web/build/static/js/248.04e18c19.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[248,889],{889:function(e,r,n){n.r(r),n.d(r,{C:function(){return o},c:function(){return u}});var t=n(8308);function a(e,r){for(var n=function(){var n=r[t];if("string"!=typeof n&&!Array.isArray(n)){var a=function(r){if("default"!==r&&!(r in e)){var t=Object.getOwnPropertyDescriptor(n,r);t&&Object.defineProperty(e,r,t.get?t:{enumerable:!0,get:function(){return n[r]}})}};for(var i in n)a(i)}},t=0;t {\n const { schema, validationRules, externalFragments } = options;\n const rawResults = getDiagnostics(text, schema, validationRules, undefined, externalFragments);\n const results = rawResults.map(error => ({\n message: error.message,\n severity: error.severity ? SEVERITY[error.severity - 1] : SEVERITY[0],\n type: error.source ? TYPE[error.source] : undefined,\n from: CodeMirror.Pos(error.range.start.line, error.range.start.character),\n to: CodeMirror.Pos(error.range.end.line, error.range.end.character),\n }));\n return results;\n});\n//# sourceMappingURL=lint.js.map"],"names":["SEVERITY","TYPE","CodeMirror","text","options","schema","validationRules","externalFragments","getDiagnostics","map","e","error","message","severity","type","source","from","range","start","line","character","to","end"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/248.9c82ef95.chunk.js b/serv/web/build/static/js/248.9c82ef95.chunk.js new file mode 100644 index 00000000..19042518 --- /dev/null +++ b/serv/web/build/static/js/248.9c82ef95.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[248,889],{889:(e,r,t)=>{t.r(r),t.d(r,{C:()=>o,c:()=>s});var a=t(8308);function n(e,r){for(var t=0;ta[r]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(n,"name",{value:"_mergeNamespaces",configurable:!0});var i=(0,a.r)();const o=(0,a.g)(i),s=n({__proto__:null,default:o},[i])},4248:(e,r,t)=>{t.r(r);var a=t(889),n=t(4652);t(8308);const i=["error","warning","information","hint"],o={"GraphQL: Validation":"validation","GraphQL: Deprecation":"deprecation","GraphQL: Syntax":"syntax"};a.C.registerHelper("lint","graphql",((e,r)=>{const{schema:t,validationRules:s,externalFragments:c}=r;return(0,n.ge)(e,t,s,void 0,c).map((e=>({message:e.message,severity:e.severity?i[e.severity-1]:i[0],type:e.source?o[e.source]:void 0,from:a.C.Pos(e.range.start.line,e.range.start.character),to:a.C.Pos(e.range.end.line,e.range.end.character)})))}))}}]); +//# sourceMappingURL=248.9c82ef95.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/248.9c82ef95.chunk.js.map b/serv/web/build/static/js/248.9c82ef95.chunk.js.map new file mode 100644 index 00000000..60937b0b --- /dev/null +++ b/serv/web/build/static/js/248.9c82ef95.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/248.9c82ef95.chunk.js","mappings":"grBAEA,MAAMA,EAAW,CAAC,QAAS,UAAW,cAAe,QAC/CC,EAAO,CACT,sBAAuB,aACvB,uBAAwB,cACxB,kBAAmB,UAEvBC,EAAAA,EAAWC,eAAe,OAAQ,WAAW,CAACC,EAAMC,KAChD,MAAQC,OAAAC,EAAQC,gBAAAC,EAAiBC,kBAAAC,GAAsBN,EASvD,OARmBO,EAAAA,EAAAA,IAAeR,EAAMG,EAAQE,OAAiB,EAAWE,GACjDE,KAAIC,IAAA,CAC3BC,QAASD,EAAMC,QACfC,SAAUF,EAAME,SAAWhB,EAASc,EAAME,SAAW,GAAKhB,EAAS,GACnEiB,KAAMH,EAAMI,OAASjB,EAAKa,EAAMI,aAAU,EAC1CC,KAAMjB,EAAAA,EAAWkB,IAAIN,EAAMO,MAAMC,MAAMC,KAAMT,EAAMO,MAAMC,MAAME,WAC/DC,GAAIvB,EAAAA,EAAWkB,IAAIN,EAAMO,MAAMK,IAAIH,KAAMT,EAAMO,MAAMK,IAAIF,cAC1D,G","sources":["../node_modules/@graphiql/codemirror-graphql/esm/lint.js"],"sourcesContent":["import CodeMirror from 'codemirror';\nimport { getDiagnostics } from 'graphql-language-service';\nconst SEVERITY = ['error', 'warning', 'information', 'hint'];\nconst TYPE = {\n 'GraphQL: Validation': 'validation',\n 'GraphQL: Deprecation': 'deprecation',\n 'GraphQL: Syntax': 'syntax',\n};\nCodeMirror.registerHelper('lint', 'graphql', (text, options) => {\n const { schema, validationRules, externalFragments } = options;\n const rawResults = getDiagnostics(text, schema, validationRules, undefined, externalFragments);\n const results = rawResults.map(error => ({\n message: error.message,\n severity: error.severity ? SEVERITY[error.severity - 1] : SEVERITY[0],\n type: error.source ? TYPE[error.source] : undefined,\n from: CodeMirror.Pos(error.range.start.line, error.range.start.character),\n to: CodeMirror.Pos(error.range.end.line, error.range.end.character),\n }));\n return results;\n});\n//# sourceMappingURL=lint.js.map"],"names":["a","l","t","registerHelper","n","s","schema","i","validationRules","r","externalFragments","o","c","map","e","message","severity","type","source","from","Pos","range","start","line","character","to","end"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/27.934b5e6c.chunk.js b/serv/web/build/static/js/27.934b5e6c.chunk.js new file mode 100644 index 00000000..2d715108 --- /dev/null +++ b/serv/web/build/static/js/27.934b5e6c.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[27,889],{889:(e,n,t)=>{t.r(n),t.d(n,{C:()=>o,c:()=>c});var r=t(8308);function a(e,n){for(var t=0;tr[n]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(a,"name",{value:"_mergeNamespaces",configurable:!0});var i=(0,r.r)();const o=(0,r.g)(i),c=a({__proto__:null,default:o},[i])},2027:(e,n,t)=>{t.r(n);var r=t(889),a=t(2572),i=(t(8308),Object.defineProperty),o=(e,n)=>i(e,"name",{value:n,configurable:!0});function c(e){s=e,u=e.length,l=f=d=-1,j(),S();const n=m();return h("EOF"),n}let s,u,l,f,d,p,b;function m(){const e=l,n=[];if(h("{"),!N("}")){do{n.push(v())}while(N(","));h("}")}return{kind:"Object",start:e,end:d,members:n}}function v(){const e=l,n="String"===b?g():null;h("String"),h(":");const t=k();return{kind:"Member",start:e,end:d,key:n,value:t}}function y(){const e=l,n=[];if(h("["),!N("]")){do{n.push(k())}while(N(","));h("]")}return{kind:"Array",start:e,end:d,values:n}}function k(){switch(b){case"[":return y();case"{":return m();case"String":case"Number":case"Boolean":case"Null":const e=g();return S(),e}h("Value")}function g(){return{kind:b,start:l,end:f,value:JSON.parse(s.slice(l,f))}}function h(e){if(b===e)return void S();let n;if("EOF"===b)n="[end of file]";else if(f-l>1)n="`"+s.slice(l,f)+"`";else{const e=s.slice(l).match(/^.+?\b/);n="`"+(e?e[0]:s[l])+"`"}throw O("Expected ".concat(e," but found ").concat(n,"."))}o(c,"jsonParse"),o(m,"parseObj"),o(v,"parseMember"),o(y,"parseArr"),o(k,"parseVal"),o(g,"curToken"),o(h,"expect");class w extends Error{constructor(e,n){super(e),this.position=n}}function O(e){return new w(e,{start:l,end:f})}function N(e){if(b===e)return S(),!0}function j(){return f31;)if(92===p)switch(p=j(),p){case 34:case 47:case 92:case 98:case 102:case 110:case 114:case 116:j();break;case 117:j(),E(),E(),E(),E();break;default:throw O("Bad character escape sequence.")}else{if(f===u)throw O("Unterminated string.");j()}if(34!==p)throw O("Unterminated string.");j()}function E(){if(p>=48&&p<=57||p>=65&&p<=70||p>=97&&p<=102)return j();throw O("Expected hexadecimal digit.")}function F(){45===p&&j(),48===p?j():T(),46===p&&(j(),T()),(69===p||101===p)&&(p=j(),(43===p||45===p)&&j(),T())}function T(){if(p<48||p>57)throw O("Expected decimal digit.");do{j()}while(p>=48&&p<=57)}function A(e,n,t){var r;const a=[];for(const i of t.members)if(i){const t=null===(r=i.key)||void 0===r?void 0:r.value,o=n[t];if(o)for(const[n,r]of B(o,i.value))a.push(V(e,n,r));else a.push(V(e,i.key,'Variable "$'.concat(t,'" does not appear in any GraphQL query.')))}return a}function B(e,n){if(!e||!n)return[];if(e instanceof a.bM)return"Null"===n.kind?[[n,'Type "'.concat(e,'" is non-nullable and cannot be null.')]]:B(e.ofType,n);if("Null"===n.kind)return[];if(e instanceof a.p2){const t=e.ofType;if("Array"===n.kind){return C(n.values||[],(e=>B(t,e)))}return B(t,n)}if(e instanceof a.sR){if("Object"!==n.kind)return[[n,'Type "'.concat(e,'" must be an Object.')]];const t=Object.create(null),r=C(n.members,(n=>{var r;const a=null===(r=null==n?void 0:n.key)||void 0===r?void 0:r.value;t[a]=!0;const i=e.getFields()[a];if(!i)return[[n.key,'Type "'.concat(e,'" does not have a field "').concat(a,'".')]];return B(i?i.type:void 0,n.value)}));for(const i of Object.keys(e.getFields())){const o=e.getFields()[i];!t[i]&&o.type instanceof a.bM&&!o.defaultValue&&r.push([n,'Object of type "'.concat(e,'" is missing required field "').concat(i,'".')])}return r}return"Boolean"===e.name&&"Boolean"!==n.kind||"String"===e.name&&"String"!==n.kind||"ID"===e.name&&"Number"!==n.kind&&"String"!==n.kind||"Float"===e.name&&"Number"!==n.kind||"Int"===e.name&&("Number"!==n.kind||(0|n.value)!==n.value)||(e instanceof a.mR||e instanceof a.n2)&&("String"!==n.kind&&"Number"!==n.kind&&"Boolean"!==n.kind&&"Null"!==n.kind||_(e.parseValue(n.value)))?[[n,'Expected value of type "'.concat(e,'".')]]:[]}function V(e,n,t){return{message:t,severity:"error",type:"validation",from:e.posFromIndex(n.start),to:e.posFromIndex(n.end)}}function _(e){return null==e||e!==e}function C(e,n){return Array.prototype.concat.apply([],e.map(n))}o(w,"JSONSyntaxError"),o(O,"syntaxError"),o(N,"skip"),o(j,"ch"),o(S,"lex"),o(x,"readString"),o(E,"readHex"),o(F,"readNumber"),o(T,"readDigits"),r.C.registerHelper("lint","graphql-variables",((e,n,t)=>{if(!e)return[];let r;try{r=c(e)}catch(i){if(i instanceof w)return[V(t,i.position,i.message)];throw i}const{variableToType:a}=n;return a?A(t,a,r):[]})),o(A,"validateVariables"),o(B,"validateValue"),o(V,"lintError"),o(_,"isNullish"),o(C,"mapCat")}}]); +//# sourceMappingURL=27.934b5e6c.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/27.934b5e6c.chunk.js.map b/serv/web/build/static/js/27.934b5e6c.chunk.js.map new file mode 100644 index 00000000..d70464af --- /dev/null +++ b/serv/web/build/static/js/27.934b5e6c.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/27.934b5e6c.chunk.js","mappings":"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","sources":["../node_modules/@graphiql/codemirror-graphql/esm/utils/jsonParse.js","../node_modules/@graphiql/codemirror-graphql/esm/variables/lint.js"],"sourcesContent":["export default function jsonParse(str) {\n string = str;\n strLen = str.length;\n start = end = lastEnd = -1;\n ch();\n lex();\n const ast = parseObj();\n expect('EOF');\n return ast;\n}\nlet string;\nlet strLen;\nlet start;\nlet end;\nlet lastEnd;\nlet code;\nlet kind;\nfunction parseObj() {\n const nodeStart = start;\n const members = [];\n expect('{');\n if (!skip('}')) {\n do {\n members.push(parseMember());\n } while (skip(','));\n expect('}');\n }\n return {\n kind: 'Object',\n start: nodeStart,\n end: lastEnd,\n members,\n };\n}\nfunction parseMember() {\n const nodeStart = start;\n const key = kind === 'String' ? curToken() : null;\n expect('String');\n expect(':');\n const value = parseVal();\n return {\n kind: 'Member',\n start: nodeStart,\n end: lastEnd,\n key,\n value,\n };\n}\nfunction parseArr() {\n const nodeStart = start;\n const values = [];\n expect('[');\n if (!skip(']')) {\n do {\n values.push(parseVal());\n } while (skip(','));\n expect(']');\n }\n return {\n kind: 'Array',\n start: nodeStart,\n end: lastEnd,\n values,\n };\n}\nfunction parseVal() {\n switch (kind) {\n case '[':\n return parseArr();\n case '{':\n return parseObj();\n case 'String':\n case 'Number':\n case 'Boolean':\n case 'Null':\n const token = curToken();\n lex();\n return token;\n }\n expect('Value');\n}\nfunction curToken() {\n return { kind, start, end, value: JSON.parse(string.slice(start, end)) };\n}\nfunction expect(str) {\n if (kind === str) {\n lex();\n return;\n }\n let found;\n if (kind === 'EOF') {\n found = '[end of file]';\n }\n else if (end - start > 1) {\n found = '`' + string.slice(start, end) + '`';\n }\n else {\n const match = string.slice(start).match(/^.+?\\b/);\n found = '`' + (match ? match[0] : string[start]) + '`';\n }\n throw syntaxError(`Expected ${str} but found ${found}.`);\n}\nexport class JSONSyntaxError extends Error {\n constructor(message, position) {\n super(message);\n this.position = position;\n }\n}\nfunction syntaxError(message) {\n return new JSONSyntaxError(message, { start, end });\n}\nfunction skip(k) {\n if (kind === k) {\n lex();\n return true;\n }\n}\nfunction ch() {\n if (end < strLen) {\n end++;\n code = end === strLen ? 0 : string.charCodeAt(end);\n }\n return code;\n}\nfunction lex() {\n lastEnd = end;\n while (code === 9 || code === 10 || code === 13 || code === 32) {\n ch();\n }\n if (code === 0) {\n kind = 'EOF';\n return;\n }\n start = end;\n switch (code) {\n case 34:\n kind = 'String';\n return readString();\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n kind = 'Number';\n return readNumber();\n case 102:\n if (string.slice(start, start + 5) !== 'false') {\n break;\n }\n end += 4;\n ch();\n kind = 'Boolean';\n return;\n case 110:\n if (string.slice(start, start + 4) !== 'null') {\n break;\n }\n end += 3;\n ch();\n kind = 'Null';\n return;\n case 116:\n if (string.slice(start, start + 4) !== 'true') {\n break;\n }\n end += 3;\n ch();\n kind = 'Boolean';\n return;\n }\n kind = string[start];\n ch();\n}\nfunction readString() {\n ch();\n while (code !== 34 && code > 31) {\n if (code === 92) {\n code = ch();\n switch (code) {\n case 34:\n case 47:\n case 92:\n case 98:\n case 102:\n case 110:\n case 114:\n case 116:\n ch();\n break;\n case 117:\n ch();\n readHex();\n readHex();\n readHex();\n readHex();\n break;\n default:\n throw syntaxError('Bad character escape sequence.');\n }\n }\n else if (end === strLen) {\n throw syntaxError('Unterminated string.');\n }\n else {\n ch();\n }\n }\n if (code === 34) {\n ch();\n return;\n }\n throw syntaxError('Unterminated string.');\n}\nfunction readHex() {\n if ((code >= 48 && code <= 57) ||\n (code >= 65 && code <= 70) ||\n (code >= 97 && code <= 102)) {\n return ch();\n }\n throw syntaxError('Expected hexadecimal digit.');\n}\nfunction readNumber() {\n if (code === 45) {\n ch();\n }\n if (code === 48) {\n ch();\n }\n else {\n readDigits();\n }\n if (code === 46) {\n ch();\n readDigits();\n }\n if (code === 69 || code === 101) {\n code = ch();\n if (code === 43 || code === 45) {\n ch();\n }\n readDigits();\n }\n}\nfunction readDigits() {\n if (code < 48 || code > 57) {\n throw syntaxError('Expected decimal digit.');\n }\n do {\n ch();\n } while (code >= 48 && code <= 57);\n}\n//# sourceMappingURL=jsonParse.js.map","import CodeMirror from 'codemirror';\nimport { GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, GraphQLScalarType, } from 'graphql';\nimport jsonParse, { JSONSyntaxError, } from '../utils/jsonParse';\nCodeMirror.registerHelper('lint', 'graphql-variables', (text, options, editor) => {\n if (!text) {\n return [];\n }\n let ast;\n try {\n ast = jsonParse(text);\n }\n catch (error) {\n if (error instanceof JSONSyntaxError) {\n return [lintError(editor, error.position, error.message)];\n }\n throw error;\n }\n const { variableToType } = options;\n if (!variableToType) {\n return [];\n }\n return validateVariables(editor, variableToType, ast);\n});\nfunction validateVariables(editor, variableToType, variablesAST) {\n var _a;\n const errors = [];\n for (const member of variablesAST.members) {\n if (member) {\n const variableName = (_a = member.key) === null || _a === void 0 ? void 0 : _a.value;\n const type = variableToType[variableName];\n if (type) {\n for (const [node, message] of validateValue(type, member.value)) {\n errors.push(lintError(editor, node, message));\n }\n }\n else {\n errors.push(lintError(editor, member.key, `Variable \"$${variableName}\" does not appear in any GraphQL query.`));\n }\n }\n }\n return errors;\n}\nfunction validateValue(type, valueAST) {\n if (!type || !valueAST) {\n return [];\n }\n if (type instanceof GraphQLNonNull) {\n if (valueAST.kind === 'Null') {\n return [[valueAST, `Type \"${type}\" is non-nullable and cannot be null.`]];\n }\n return validateValue(type.ofType, valueAST);\n }\n if (valueAST.kind === 'Null') {\n return [];\n }\n if (type instanceof GraphQLList) {\n const itemType = type.ofType;\n if (valueAST.kind === 'Array') {\n const values = valueAST.values || [];\n return mapCat(values, item => validateValue(itemType, item));\n }\n return validateValue(itemType, valueAST);\n }\n if (type instanceof GraphQLInputObjectType) {\n if (valueAST.kind !== 'Object') {\n return [[valueAST, `Type \"${type}\" must be an Object.`]];\n }\n const providedFields = Object.create(null);\n const fieldErrors = mapCat(valueAST.members, member => {\n var _a;\n const fieldName = (_a = member === null || member === void 0 ? void 0 : member.key) === null || _a === void 0 ? void 0 : _a.value;\n providedFields[fieldName] = true;\n const inputField = type.getFields()[fieldName];\n if (!inputField) {\n return [\n [\n member.key,\n `Type \"${type}\" does not have a field \"${fieldName}\".`,\n ],\n ];\n }\n const fieldType = inputField ? inputField.type : undefined;\n return validateValue(fieldType, member.value);\n });\n for (const fieldName of Object.keys(type.getFields())) {\n const field = type.getFields()[fieldName];\n if (!providedFields[fieldName] &&\n field.type instanceof GraphQLNonNull &&\n !field.defaultValue) {\n fieldErrors.push([\n valueAST,\n `Object of type \"${type}\" is missing required field \"${fieldName}\".`,\n ]);\n }\n }\n return fieldErrors;\n }\n if ((type.name === 'Boolean' && valueAST.kind !== 'Boolean') ||\n (type.name === 'String' && valueAST.kind !== 'String') ||\n (type.name === 'ID' &&\n valueAST.kind !== 'Number' &&\n valueAST.kind !== 'String') ||\n (type.name === 'Float' && valueAST.kind !== 'Number') ||\n (type.name === 'Int' &&\n (valueAST.kind !== 'Number' || (valueAST.value | 0) !== valueAST.value))) {\n return [[valueAST, `Expected value of type \"${type}\".`]];\n }\n if ((type instanceof GraphQLEnumType || type instanceof GraphQLScalarType) &&\n ((valueAST.kind !== 'String' &&\n valueAST.kind !== 'Number' &&\n valueAST.kind !== 'Boolean' &&\n valueAST.kind !== 'Null') ||\n isNullish(type.parseValue(valueAST.value)))) {\n return [[valueAST, `Expected value of type \"${type}\".`]];\n }\n return [];\n}\nfunction lintError(editor, node, message) {\n return {\n message,\n severity: 'error',\n type: 'validation',\n from: editor.posFromIndex(node.start),\n to: editor.posFromIndex(node.end),\n };\n}\nfunction isNullish(value) {\n return value === null || value === undefined || value !== value;\n}\nfunction mapCat(array, mapper) {\n return Array.prototype.concat.apply([], array.map(mapper));\n}\n//# sourceMappingURL=lint.js.map"],"names":["H","e","d","w","length","s","u","g","o","x","n","B","p","r","f","E","push","U","kind","start","end","members","G","i","V","key","value","_","values","JSON","parse","slice","match","b","concat","t","F","Error","constructor","super","this","position","charCodeAt","J","P","N","O","z","l","a","c","m","h","y","Q","k","$","j","ofType","C","L","M","Object","create","getFields","type","keys","defaultValue","name","v","D","K","parseValue","message","severity","from","posFromIndex","to","Array","prototype","apply","map","q","registerHelper","variableToType"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/27.d21c7ff3.chunk.js b/serv/web/build/static/js/27.d21c7ff3.chunk.js deleted file mode 100644 index 083d2550..00000000 --- a/serv/web/build/static/js/27.d21c7ff3.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[27,889],{889:function(e,r,n){n.r(r),n.d(r,{C:function(){return c},c:function(){return u}});var t=n(8308);function a(e,r){for(var n=function(){var n=r[t];if("string"!=typeof n&&!Array.isArray(n)){var a=function(r){if("default"!==r&&!(r in e)){var t=Object.getOwnPropertyDescriptor(n,r);t&&Object.defineProperty(e,r,t.get?t:{enumerable:!0,get:function(){return n[r]}})}};for(var i in n)a(i)}},t=0;t1)r="`"+t.slice(i,c)+"`";else{var n=t.slice(i).match(/^.+?\b/);r="`"+(n?n[0]:t[i])+"`"}throw T("Expected ".concat(e," but found ").concat(r,"."))}B()}k(w,"jsonParse"),k(O,"parseObj"),k(N,"parseMember"),k(j,"parseArr"),k(S,"parseVal"),k(x,"curToken"),k(E,"expect");var F=function(e){(0,p.Z)(n,e);var r=(0,b.Z)(n);function n(e,t){var a;return(0,v.Z)(this,n),(a=r.call(this,e)).position=t,a}return(0,d.Z)(n)}((0,m.Z)(Error));function T(e){return new F(e,{start:i,end:c})}function Z(e){if(s===e)return B(),!0}function A(){return c31;)if(92===o)switch(o=A(),o){case 34:case 47:case 92:case 98:case 102:case 110:case 114:case 116:A();break;case 117:A(),_(),_(),_(),_();break;default:throw T("Bad character escape sequence.")}else{if(c===a)throw T("Unterminated string.");A()}if(34!==o)throw T("Unterminated string.");A()}function _(){if(o>=48&&o<=57||o>=65&&o<=70||o>=97&&o<=102)return A();throw T("Expected hexadecimal digit.")}function C(){45===o&&A(),48===o?A():P(),46===o&&(A(),P()),(69===o||101===o)&&((43===(o=A())||45===o)&&A(),P())}function P(){if(o<48||o>57)throw T("Expected decimal digit.");do{A()}while(o>=48&&o<=57)}function M(e,r,n){var t,a,i=[],c=(0,f.Z)(n.members);try{for(c.s();!(a=c.n()).done;){var u=a.value;if(u){var o=null===(t=u.key)||void 0===t?void 0:t.value,s=r[o];if(s){var d,v=(0,f.Z)(q(s,u.value));try{for(v.s();!(d=v.n()).done;){var p=(0,l.Z)(d.value,2),b=p[0],m=p[1];i.push(I(e,b,m))}}catch(y){v.e(y)}finally{v.f()}}else i.push(I(e,u.key,'Variable "$'.concat(o,'" does not appear in any GraphQL query.')))}}}catch(y){c.e(y)}finally{c.f()}return i}function q(e,r){if(!e||!r)return[];if(e instanceof h.bM)return"Null"===r.kind?[[r,'Type "'.concat(e,'" is non-nullable and cannot be null.')]]:q(e.ofType,r);if("Null"===r.kind)return[];if(e instanceof h.p2){var n=e.ofType;return"Array"===r.kind?H(r.values||[],(function(e){return q(n,e)})):q(n,r)}if(e instanceof h.sR){if("Object"!==r.kind)return[[r,'Type "'.concat(e,'" must be an Object.')]];for(var t=Object.create(null),a=H(r.members,(function(r){var n,a=null===(n=null==r?void 0:r.key)||void 0===n?void 0:n.value;t[a]=!0;var i=e.getFields()[a];return i?q(i?i.type:void 0,r.value):[[r.key,'Type "'.concat(e,'" does not have a field "').concat(a,'".')]]})),i=0,c=Object.keys(e.getFields());i 1) {\n found = '`' + string.slice(start, end) + '`';\n }\n else {\n const match = string.slice(start).match(/^.+?\\b/);\n found = '`' + (match ? match[0] : string[start]) + '`';\n }\n throw syntaxError(`Expected ${str} but found ${found}.`);\n}\nexport class JSONSyntaxError extends Error {\n constructor(message, position) {\n super(message);\n this.position = position;\n }\n}\nfunction syntaxError(message) {\n return new JSONSyntaxError(message, { start, end });\n}\nfunction skip(k) {\n if (kind === k) {\n lex();\n return true;\n }\n}\nfunction ch() {\n if (end < strLen) {\n end++;\n code = end === strLen ? 0 : string.charCodeAt(end);\n }\n return code;\n}\nfunction lex() {\n lastEnd = end;\n while (code === 9 || code === 10 || code === 13 || code === 32) {\n ch();\n }\n if (code === 0) {\n kind = 'EOF';\n return;\n }\n start = end;\n switch (code) {\n case 34:\n kind = 'String';\n return readString();\n case 45:\n case 48:\n case 49:\n case 50:\n case 51:\n case 52:\n case 53:\n case 54:\n case 55:\n case 56:\n case 57:\n kind = 'Number';\n return readNumber();\n case 102:\n if (string.slice(start, start + 5) !== 'false') {\n break;\n }\n end += 4;\n ch();\n kind = 'Boolean';\n return;\n case 110:\n if (string.slice(start, start + 4) !== 'null') {\n break;\n }\n end += 3;\n ch();\n kind = 'Null';\n return;\n case 116:\n if (string.slice(start, start + 4) !== 'true') {\n break;\n }\n end += 3;\n ch();\n kind = 'Boolean';\n return;\n }\n kind = string[start];\n ch();\n}\nfunction readString() {\n ch();\n while (code !== 34 && code > 31) {\n if (code === 92) {\n code = ch();\n switch (code) {\n case 34:\n case 47:\n case 92:\n case 98:\n case 102:\n case 110:\n case 114:\n case 116:\n ch();\n break;\n case 117:\n ch();\n readHex();\n readHex();\n readHex();\n readHex();\n break;\n default:\n throw syntaxError('Bad character escape sequence.');\n }\n }\n else if (end === strLen) {\n throw syntaxError('Unterminated string.');\n }\n else {\n ch();\n }\n }\n if (code === 34) {\n ch();\n return;\n }\n throw syntaxError('Unterminated string.');\n}\nfunction readHex() {\n if ((code >= 48 && code <= 57) ||\n (code >= 65 && code <= 70) ||\n (code >= 97 && code <= 102)) {\n return ch();\n }\n throw syntaxError('Expected hexadecimal digit.');\n}\nfunction readNumber() {\n if (code === 45) {\n ch();\n }\n if (code === 48) {\n ch();\n }\n else {\n readDigits();\n }\n if (code === 46) {\n ch();\n readDigits();\n }\n if (code === 69 || code === 101) {\n code = ch();\n if (code === 43 || code === 45) {\n ch();\n }\n readDigits();\n }\n}\nfunction readDigits() {\n if (code < 48 || code > 57) {\n throw syntaxError('Expected decimal digit.');\n }\n do {\n ch();\n } while (code >= 48 && code <= 57);\n}\n//# sourceMappingURL=jsonParse.js.map","import CodeMirror from 'codemirror';\nimport { GraphQLEnumType, GraphQLInputObjectType, GraphQLList, GraphQLNonNull, GraphQLScalarType, } from 'graphql';\nimport jsonParse, { JSONSyntaxError, } from '../utils/jsonParse';\nCodeMirror.registerHelper('lint', 'graphql-variables', (text, options, editor) => {\n if (!text) {\n return [];\n }\n let ast;\n try {\n ast = jsonParse(text);\n }\n catch (error) {\n if (error instanceof JSONSyntaxError) {\n return [lintError(editor, error.position, error.message)];\n }\n throw error;\n }\n const { variableToType } = options;\n if (!variableToType) {\n return [];\n }\n return validateVariables(editor, variableToType, ast);\n});\nfunction validateVariables(editor, variableToType, variablesAST) {\n var _a;\n const errors = [];\n for (const member of variablesAST.members) {\n if (member) {\n const variableName = (_a = member.key) === null || _a === void 0 ? void 0 : _a.value;\n const type = variableToType[variableName];\n if (type) {\n for (const [node, message] of validateValue(type, member.value)) {\n errors.push(lintError(editor, node, message));\n }\n }\n else {\n errors.push(lintError(editor, member.key, `Variable \"$${variableName}\" does not appear in any GraphQL query.`));\n }\n }\n }\n return errors;\n}\nfunction validateValue(type, valueAST) {\n if (!type || !valueAST) {\n return [];\n }\n if (type instanceof GraphQLNonNull) {\n if (valueAST.kind === 'Null') {\n return [[valueAST, `Type \"${type}\" is non-nullable and cannot be null.`]];\n }\n return validateValue(type.ofType, valueAST);\n }\n if (valueAST.kind === 'Null') {\n return [];\n }\n if (type instanceof GraphQLList) {\n const itemType = type.ofType;\n if (valueAST.kind === 'Array') {\n const values = valueAST.values || [];\n return mapCat(values, item => validateValue(itemType, item));\n }\n return validateValue(itemType, valueAST);\n }\n if (type instanceof GraphQLInputObjectType) {\n if (valueAST.kind !== 'Object') {\n return [[valueAST, `Type \"${type}\" must be an Object.`]];\n }\n const providedFields = Object.create(null);\n const fieldErrors = mapCat(valueAST.members, member => {\n var _a;\n const fieldName = (_a = member === null || member === void 0 ? void 0 : member.key) === null || _a === void 0 ? void 0 : _a.value;\n providedFields[fieldName] = true;\n const inputField = type.getFields()[fieldName];\n if (!inputField) {\n return [\n [\n member.key,\n `Type \"${type}\" does not have a field \"${fieldName}\".`,\n ],\n ];\n }\n const fieldType = inputField ? inputField.type : undefined;\n return validateValue(fieldType, member.value);\n });\n for (const fieldName of Object.keys(type.getFields())) {\n const field = type.getFields()[fieldName];\n if (!providedFields[fieldName] &&\n field.type instanceof GraphQLNonNull &&\n !field.defaultValue) {\n fieldErrors.push([\n valueAST,\n `Object of type \"${type}\" is missing required field \"${fieldName}\".`,\n ]);\n }\n }\n return fieldErrors;\n }\n if ((type.name === 'Boolean' && valueAST.kind !== 'Boolean') ||\n (type.name === 'String' && valueAST.kind !== 'String') ||\n (type.name === 'ID' &&\n valueAST.kind !== 'Number' &&\n valueAST.kind !== 'String') ||\n (type.name === 'Float' && valueAST.kind !== 'Number') ||\n (type.name === 'Int' &&\n (valueAST.kind !== 'Number' || (valueAST.value | 0) !== valueAST.value))) {\n return [[valueAST, `Expected value of type \"${type}\".`]];\n }\n if ((type instanceof GraphQLEnumType || type instanceof GraphQLScalarType) &&\n ((valueAST.kind !== 'String' &&\n valueAST.kind !== 'Number' &&\n valueAST.kind !== 'Boolean' &&\n valueAST.kind !== 'Null') ||\n isNullish(type.parseValue(valueAST.value)))) {\n return [[valueAST, `Expected value of type \"${type}\".`]];\n }\n return [];\n}\nfunction lintError(editor, node, message) {\n return {\n message,\n severity: 'error',\n type: 'validation',\n from: editor.posFromIndex(node.start),\n to: editor.posFromIndex(node.end),\n };\n}\nfunction isNullish(value) {\n return value === null || value === undefined || value !== value;\n}\nfunction mapCat(array, mapper) {\n return Array.prototype.concat.apply([], array.map(mapper));\n}\n//# sourceMappingURL=lint.js.map"],"names":["string","strLen","start","end","lastEnd","code","kind","jsonParse","str","length","ch","lex","ast","parseObj","nodeStart","members","expect","skip","push","parseMember","key","curToken","value","parseVal","parseArr","values","token","JSON","parse","slice","found","match","syntaxError","__name","JSONSyntaxError","message","position","Error","k","charCodeAt","readString","readNumber","readHex","readDigits","validateVariables","editor","variableToType","variablesAST","_a","errors","member","variableName","type","validateValue","node","lintError","valueAST","GraphQLNonNull","ofType","GraphQLList","itemType","mapCat","item","GraphQLInputObjectType","providedFields","Object","create","fieldErrors","fieldName","inputField","getFields","keys","field","defaultValue","name","GraphQLEnumType","GraphQLScalarType","isNullish","parseValue","severity","from","posFromIndex","to","array","mapper","Array","prototype","concat","apply","map","CodeMirror","text","options","error"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/271.1505a6a8.chunk.js b/serv/web/build/static/js/271.1505a6a8.chunk.js deleted file mode 100644 index 3211737b..00000000 --- a/serv/web/build/static/js/271.1505a6a8.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[271],{4497:function(e,n,o){o.d(n,{r:function(){return l}});var t,r=o(8308),i=Object.defineProperty,u=function(e,n){return i(e,"name",{value:n,configurable:!0})},a={exports:{}};function l(){return t||(t=1,function(e){function n(n,o,t){var r,i=n.getWrapperElement();return(r=i.appendChild(document.createElement("div"))).className=t?"CodeMirror-dialog CodeMirror-dialog-bottom":"CodeMirror-dialog CodeMirror-dialog-top","string"==typeof o?r.innerHTML=o:r.appendChild(o),e.addClass(i,"dialog-opened"),r}function o(e,n){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=n}u(n,"dialogDiv"),u(o,"closeNotification"),e.defineExtension("openDialog",(function(t,r,i){i||(i={}),o(this,null);var a=n(this,t,i.bottom),l=!1,s=this;function c(n){if("string"==typeof n)p.value=n;else{if(l)return;l=!0,e.rmClass(a.parentNode,"dialog-opened"),a.parentNode.removeChild(a),s.focus(),i.onClose&&i.onClose(a)}}u(c,"close");var f,p=a.getElementsByTagName("input")[0];return p?(p.focus(),i.value&&(p.value=i.value,!1!==i.selectValueOnOpen&&p.select()),i.onInput&&e.on(p,"input",(function(e){i.onInput(e,p.value,c)})),i.onKeyUp&&e.on(p,"keyup",(function(e){i.onKeyUp(e,p.value,c)})),e.on(p,"keydown",(function(n){i&&i.onKeyDown&&i.onKeyDown(n,p.value,c)||((27==n.keyCode||!1!==i.closeOnEnter&&13==n.keyCode)&&(p.blur(),e.e_stop(n),c()),13==n.keyCode&&r(p.value,n))})),!1!==i.closeOnBlur&&e.on(a,"focusout",(function(e){null!==e.relatedTarget&&c()}))):(f=a.getElementsByTagName("button")[0])&&(e.on(f,"click",(function(){c(),s.focus()})),!1!==i.closeOnBlur&&e.on(f,"blur",c),f.focus()),c})),e.defineExtension("openConfirm",(function(t,r,i){o(this,null);var a=n(this,t,i&&i.bottom),l=a.getElementsByTagName("button"),s=!1,c=this,f=1;function p(){s||(s=!0,e.rmClass(a.parentNode,"dialog-opened"),a.parentNode.removeChild(a),c.focus())}u(p,"close"),l[0].focus();for(var d=0;d '+e.phrase("(Use line:column or scroll% syntax)")+""}function t(e,n){var o=Number(n);return/^[-+]/.test(n)?e.getCursor().line+o:o-1}e.defineOption("search",{bottom:!1}),u(n,"dialog"),u(o,"getJumpDialog"),u(t,"interpretLine"),e.commands.jumpToLine=function(e){var r=e.getCursor();n(e,o(e),e.phrase("Jump to line:"),r.line+1+":"+r.ch,(function(n){var o;if(n)if(o=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(n))e.setCursor(t(e,o[1]),Number(o[2]));else if(o=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(n)){var i=Math.round(e.lineCount()*Number(o[1])/100);/^[-+]/.test(o[1])&&(i=r.line+i+1),e.setCursor(i-1,r.ch)}else(o=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(n))&&e.setCursor(t(e,o[1]),r.ch)}))},e.keyMap.default["Alt-G"]="jumpToLine"}((0,t.r)(),(0,r.r)());var l={},s=a({__proto__:null,default:(0,t.g)(l)},[l])}}]); -//# sourceMappingURL=271.1505a6a8.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/271.1505a6a8.chunk.js.map b/serv/web/build/static/js/271.1505a6a8.chunk.js.map deleted file mode 100644 index 3f22dd3f..00000000 --- a/serv/web/build/static/js/271.1505a6a8.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/271.1505a6a8.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/dialog/dialog.js","../node_modules/node_modules/codemirror/addon/search/jump-to-line.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n function dialogDiv(cm, template, bottom) {\n var wrap = cm.getWrapperElement();\n var dialog;\n dialog = wrap.appendChild(document.createElement(\"div\"));\n if (bottom)\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n else\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n if (typeof template == \"string\") {\n dialog.innerHTML = template;\n } else { // Assuming it's a detached DOM element.\n dialog.appendChild(template);\n }\n CodeMirror.addClass(wrap, 'dialog-opened');\n return dialog;\n }\n\n function closeNotification(cm, newVal) {\n if (cm.state.currentNotificationClose)\n cm.state.currentNotificationClose();\n cm.state.currentNotificationClose = newVal;\n }\n\n CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n if (!options) options = {};\n\n closeNotification(this, null);\n\n var dialog = dialogDiv(this, template, options.bottom);\n var closed = false, me = this;\n function close(newVal) {\n if (typeof newVal == 'string') {\n inp.value = newVal;\n } else {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n\n if (options.onClose) options.onClose(dialog);\n }\n }\n\n var inp = dialog.getElementsByTagName(\"input\")[0], button;\n if (inp) {\n inp.focus();\n\n if (options.value) {\n inp.value = options.value;\n if (options.selectValueOnOpen !== false) {\n inp.select();\n }\n }\n\n if (options.onInput)\n CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n if (options.onKeyUp)\n CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n CodeMirror.on(inp, \"keydown\", function(e) {\n if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n inp.blur();\n CodeMirror.e_stop(e);\n close();\n }\n if (e.keyCode == 13) callback(inp.value, e);\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(dialog, \"focusout\", function (evt) {\n if (evt.relatedTarget !== null) close();\n });\n } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n CodeMirror.on(button, \"click\", function() {\n close();\n me.focus();\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n button.focus();\n }\n return close;\n });\n\n CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n closeNotification(this, null);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var buttons = dialog.getElementsByTagName(\"button\");\n var closed = false, me = this, blurring = 1;\n function close() {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n }\n buttons[0].focus();\n for (var i = 0; i < buttons.length; ++i) {\n var b = buttons[i];\n (function(callback) {\n CodeMirror.on(b, \"click\", function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n if (callback) callback(me);\n });\n })(callbacks[i]);\n CodeMirror.on(b, \"blur\", function() {\n --blurring;\n setTimeout(function() { if (blurring <= 0) close(); }, 200);\n });\n CodeMirror.on(b, \"focus\", function() { ++blurring; });\n }\n });\n\n /*\n * openNotification\n * Opens a notification, that can be closed with an optional timer\n * (default 5000ms timer) and always closes on click.\n *\n * If a notification is opened while another is opened, it will close the\n * currently opened one and open the new one immediately.\n */\n CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n closeNotification(this, close);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var closed = false, doneTimer;\n var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n function close() {\n if (closed) return;\n closed = true;\n clearTimeout(doneTimer);\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n }\n\n CodeMirror.on(dialog, 'click', function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n });\n\n if (duration)\n doneTimer = setTimeout(close, duration);\n\n return close;\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Defines jumpToLine command. Uses dialog.js if present.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../dialog/dialog\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../dialog/dialog\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n // default search panel location\n CodeMirror.defineOption(\"search\", {bottom: false});\n\n function dialog(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true, bottom: cm.options.search.bottom});\n else f(prompt(shortText, deflt));\n }\n\n function getJumpDialog(cm) {\n return cm.phrase(\"Jump to line:\") + ' ' + cm.phrase(\"(Use line:column or scroll% syntax)\") + '';\n }\n\n function interpretLine(cm, string) {\n var num = Number(string)\n if (/^[-+]/.test(string)) return cm.getCursor().line + num\n else return num - 1\n }\n\n CodeMirror.commands.jumpToLine = function(cm) {\n var cur = cm.getCursor();\n dialog(cm, getJumpDialog(cm), cm.phrase(\"Jump to line:\"), (cur.line + 1) + \":\" + cur.ch, function(posStr) {\n if (!posStr) return;\n\n var match;\n if (match = /^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(posStr)) {\n cm.setCursor(interpretLine(cm, match[1]), Number(match[2]))\n } else if (match = /^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(posStr)) {\n var line = Math.round(cm.lineCount() * Number(match[1]) / 100);\n if (/^[-+]/.test(match[1])) line = cur.line + line + 1;\n cm.setCursor(line - 1, cur.ch);\n } else if (match = /^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(posStr)) {\n cm.setCursor(interpretLine(cm, match[1]), cur.ch);\n }\n });\n };\n\n CodeMirror.keyMap[\"default\"][\"Alt-G\"] = \"jumpToLine\";\n});\n"],"names":["CodeMirror","dialogDiv","cm","template","bottom","dialog","wrap","getWrapperElement","appendChild","document","createElement","className","innerHTML","addClass","closeNotification","newVal","state","currentNotificationClose","__name","defineExtension","callback","options","this","closed","me","close","inp","value","rmClass","parentNode","removeChild","focus","onClose","button","getElementsByTagName","selectValueOnOpen","select","onInput","on","e","onKeyUp","onKeyDown","keyCode","closeOnEnter","blur","e_stop","closeOnBlur","evt","relatedTarget","callbacks","buttons","blurring","i","length","b","e_preventDefault","setTimeout","doneTimer","duration","clearTimeout","mod","require$$0","text","shortText","deflt","f","openDialog","search","prompt","getJumpDialog","phrase","interpretLine","string","num","Number","test","getCursor","line","defineOption","commands","jumpToLine","cur","ch","posStr","match","exec","setCursor","Math","round","lineCount","keyMap","default","require$$1"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/271.cd762814.chunk.js b/serv/web/build/static/js/271.cd762814.chunk.js new file mode 100644 index 00000000..142bb657 --- /dev/null +++ b/serv/web/build/static/js/271.cd762814.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[271],{4497:(e,o,n)=>{n.d(o,{r:()=>a});var t,r=n(8308),i=Object.defineProperty,u=(e,o)=>i(e,"name",{value:o,configurable:!0}),s={exports:{}};function a(){return t||(t=1,function(e){function o(o,n,t){var r,i=o.getWrapperElement();return(r=i.appendChild(document.createElement("div"))).className=t?"CodeMirror-dialog CodeMirror-dialog-bottom":"CodeMirror-dialog CodeMirror-dialog-top","string"==typeof n?r.innerHTML=n:r.appendChild(n),e.addClass(i,"dialog-opened"),r}function n(e,o){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=o}u(o,"dialogDiv"),u(n,"closeNotification"),e.defineExtension("openDialog",(function(t,r,i){i||(i={}),n(this,null);var s=o(this,t,i.bottom),a=!1,l=this;function c(o){if("string"==typeof o)p.value=o;else{if(a)return;a=!0,e.rmClass(s.parentNode,"dialog-opened"),s.parentNode.removeChild(s),l.focus(),i.onClose&&i.onClose(s)}}u(c,"close");var f,p=s.getElementsByTagName("input")[0];return p?(p.focus(),i.value&&(p.value=i.value,!1!==i.selectValueOnOpen&&p.select()),i.onInput&&e.on(p,"input",(function(e){i.onInput(e,p.value,c)})),i.onKeyUp&&e.on(p,"keyup",(function(e){i.onKeyUp(e,p.value,c)})),e.on(p,"keydown",(function(o){i&&i.onKeyDown&&i.onKeyDown(o,p.value,c)||((27==o.keyCode||!1!==i.closeOnEnter&&13==o.keyCode)&&(p.blur(),e.e_stop(o),c()),13==o.keyCode&&r(p.value,o))})),!1!==i.closeOnBlur&&e.on(s,"focusout",(function(e){null!==e.relatedTarget&&c()}))):(f=s.getElementsByTagName("button")[0])&&(e.on(f,"click",(function(){c(),l.focus()})),!1!==i.closeOnBlur&&e.on(f,"blur",c),f.focus()),c})),e.defineExtension("openConfirm",(function(t,r,i){n(this,null);var s=o(this,t,i&&i.bottom),a=s.getElementsByTagName("button"),l=!1,c=this,f=1;function p(){l||(l=!0,e.rmClass(s.parentNode,"dialog-opened"),s.parentNode.removeChild(s),c.focus())}u(p,"close"),a[0].focus();for(var d=0;d{n.r(o),n.d(o,{j:()=>l});var t=n(8308),r=n(4497),i=Object.defineProperty,u=(e,o)=>i(e,"name",{value:o,configurable:!0});function s(e,o){for(var n=0;nt[o]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}u(s,"_mergeNamespaces");!function(e){function o(e,o,n,t,r){e.openDialog?e.openDialog(o,r,{value:t,selectValueOnOpen:!0,bottom:e.options.search.bottom}):r(prompt(n,t))}function n(e){return e.phrase("Jump to line:")+' '+e.phrase("(Use line:column or scroll% syntax)")+""}function t(e,o){var n=Number(o);return/^[-+]/.test(o)?e.getCursor().line+n:n-1}e.defineOption("search",{bottom:!1}),u(o,"dialog"),u(n,"getJumpDialog"),u(t,"interpretLine"),e.commands.jumpToLine=function(e){var r=e.getCursor();o(e,n(e),e.phrase("Jump to line:"),r.line+1+":"+r.ch,(function(o){var n;if(o)if(n=/^\s*([\+\-]?\d+)\s*\:\s*(\d+)\s*$/.exec(o))e.setCursor(t(e,n[1]),Number(n[2]));else if(n=/^\s*([\+\-]?\d+(\.\d+)?)\%\s*/.exec(o)){var i=Math.round(e.lineCount()*Number(n[1])/100);/^[-+]/.test(n[1])&&(i=r.line+i+1),e.setCursor(i-1,r.ch)}else(n=/^\s*\:?\s*([\+\-]?\d+)\s*/.exec(o))&&e.setCursor(t(e,n[1]),r.ch)}))},e.keyMap.default["Alt-G"]="jumpToLine"}((0,t.r)(),(0,r.r)());var a={};const l=s({__proto__:null,default:(0,t.g)(a)},[a])}}]); +//# sourceMappingURL=271.cd762814.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/271.cd762814.chunk.js.map b/serv/web/build/static/js/271.cd762814.chunk.js.map new file mode 100644 index 00000000..89133948 --- /dev/null +++ b/serv/web/build/static/js/271.cd762814.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/271.cd762814.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/dialog/dialog.js","../node_modules/node_modules/codemirror/addon/search/jump-to-line.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n function dialogDiv(cm, template, bottom) {\n var wrap = cm.getWrapperElement();\n var dialog;\n dialog = wrap.appendChild(document.createElement(\"div\"));\n if (bottom)\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n else\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n if (typeof template == \"string\") {\n dialog.innerHTML = template;\n } else { // Assuming it's a detached DOM element.\n dialog.appendChild(template);\n }\n CodeMirror.addClass(wrap, 'dialog-opened');\n return dialog;\n }\n\n function closeNotification(cm, newVal) {\n if (cm.state.currentNotificationClose)\n cm.state.currentNotificationClose();\n cm.state.currentNotificationClose = newVal;\n }\n\n CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n if (!options) options = {};\n\n closeNotification(this, null);\n\n var dialog = dialogDiv(this, template, options.bottom);\n var closed = false, me = this;\n function close(newVal) {\n if (typeof newVal == 'string') {\n inp.value = newVal;\n } else {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n\n if (options.onClose) options.onClose(dialog);\n }\n }\n\n var inp = dialog.getElementsByTagName(\"input\")[0], button;\n if (inp) {\n inp.focus();\n\n if (options.value) {\n inp.value = options.value;\n if (options.selectValueOnOpen !== false) {\n inp.select();\n }\n }\n\n if (options.onInput)\n CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n if (options.onKeyUp)\n CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n CodeMirror.on(inp, \"keydown\", function(e) {\n if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n inp.blur();\n CodeMirror.e_stop(e);\n close();\n }\n if (e.keyCode == 13) callback(inp.value, e);\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(dialog, \"focusout\", function (evt) {\n if (evt.relatedTarget !== null) close();\n });\n } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n CodeMirror.on(button, \"click\", function() {\n close();\n me.focus();\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n button.focus();\n }\n return close;\n });\n\n CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n closeNotification(this, null);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var buttons = dialog.getElementsByTagName(\"button\");\n var closed = false, me = this, blurring = 1;\n function close() {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n }\n buttons[0].focus();\n for (var i = 0; i < buttons.length; ++i) {\n var b = buttons[i];\n (function(callback) {\n CodeMirror.on(b, \"click\", function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n if (callback) callback(me);\n });\n })(callbacks[i]);\n CodeMirror.on(b, \"blur\", function() {\n --blurring;\n setTimeout(function() { if (blurring <= 0) close(); }, 200);\n });\n CodeMirror.on(b, \"focus\", function() { ++blurring; });\n }\n });\n\n /*\n * openNotification\n * Opens a notification, that can be closed with an optional timer\n * (default 5000ms timer) and always closes on click.\n *\n * If a notification is opened while another is opened, it will close the\n * currently opened one and open the new one immediately.\n */\n CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n closeNotification(this, close);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var closed = false, doneTimer;\n var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n function close() {\n if (closed) return;\n closed = true;\n clearTimeout(doneTimer);\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n }\n\n CodeMirror.on(dialog, 'click', function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n });\n\n if (duration)\n doneTimer = setTimeout(close, duration);\n\n return close;\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Defines jumpToLine command. Uses dialog.js if present.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"../dialog/dialog\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"../dialog/dialog\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n // default search panel location\n CodeMirror.defineOption(\"search\", {bottom: false});\n\n function dialog(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true, bottom: cm.options.search.bottom});\n else f(prompt(shortText, deflt));\n }\n\n function getJumpDialog(cm) {\n return cm.phrase(\"Jump to line:\") + ' ' + cm.phrase(\"(Use line:column or scroll% syntax)\") + '';\n }\n\n function interpretLine(cm, string) {\n var num = Number(string)\n if (/^[-+]/.test(string)) return cm.getCursor().line + num\n else return num - 1\n }\n\n CodeMirror.commands.jumpToLine = function(cm) {\n var cur = cm.getCursor();\n dialog(cm, getJumpDialog(cm), cm.phrase(\"Jump to line:\"), (cur.line + 1) + \":\" + cur.ch, function(posStr) {\n if (!posStr) return;\n\n var match;\n if (match = /^\\s*([\\+\\-]?\\d+)\\s*\\:\\s*(\\d+)\\s*$/.exec(posStr)) {\n cm.setCursor(interpretLine(cm, match[1]), Number(match[2]))\n } else if (match = /^\\s*([\\+\\-]?\\d+(\\.\\d+)?)\\%\\s*/.exec(posStr)) {\n var line = Math.round(cm.lineCount() * Number(match[1]) / 100);\n if (/^[-+]/.test(match[1])) line = cur.line + line + 1;\n cm.setCursor(line - 1, cur.ch);\n } else if (match = /^\\s*\\:?\\s*([\\+\\-]?\\d+)\\s*/.exec(posStr)) {\n cm.setCursor(interpretLine(cm, match[1]), cur.ch);\n }\n });\n };\n\n CodeMirror.keyMap[\"default\"][\"Alt-G\"] = \"jumpToLine\";\n});\n"],"names":["n","d","o","f","e","l","u","getWrapperElement","appendChild","document","createElement","className","innerHTML","addClass","v","state","currentNotificationClose","r","defineExtension","this","bottom","c","i","t","a","value","rmClass","parentNode","removeChild","focus","onClose","s","getElementsByTagName","selectValueOnOpen","select","onInput","on","onKeyUp","onKeyDown","keyCode","closeOnEnter","blur","e_stop","closeOnBlur","relatedTarget","length","g","N","b","e_preventDefault","setTimeout","duration","clearTimeout","T","h","exports","openDialog","options","search","prompt","phrase","Number","test","getCursor","line","defineOption","commands","jumpToLine","ch","exec","setCursor","Math","round","lineCount","keyMap","default"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/284.139fb87e.chunk.js b/serv/web/build/static/js/284.139fb87e.chunk.js deleted file mode 100644 index 5034283a..00000000 --- a/serv/web/build/static/js/284.139fb87e.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[284],{8284:function(e,o,t){t.r(o),t.d(o,{f:function(){return c}});var n=t(8308),r=Object.defineProperty,i=function(e,o){return r(e,"name",{value:o,configurable:!0})};function f(e,o){for(var t=function(){var t=o[n];if("string"!=typeof t&&!Array.isArray(t)){var r=function(o){if("default"!==o&&!(o in e)){var n=Object.getOwnPropertyDescriptor(t,o);n&&Object.defineProperty(e,o,n.get?n:{enumerable:!0,get:function(){return t[o]}})}};for(var i in t)r(i)}},n=0;no.firstLine();)n=e.Pos(n.line-1,0),c=d(!1);if(c&&!c.cleared&&"unfold"!==a){var s=t(o,f,c);e.on(s,"mousedown",(function(o){p.clear(),e.e_preventDefault(o)}));var p=o.markText(c.from,c.to,{replacedWith:s,clearOnEnter:r(o,f,"clearOnEnter"),__isFold:!0});p.on("clear",(function(t,n){e.signal(o,"unfold",o,t,n)})),e.signal(o,"fold",o,c.from,c.to)}}function t(e,o,t){var n=r(e,o,"widget");if("function"==typeof n&&(n=n(t.from,t.to)),"string"==typeof n){var i=document.createTextNode(n);(n=document.createElement("span")).appendChild(i),n.className="CodeMirror-foldmarker"}else n&&(n=n.cloneNode(!0));return n}i(o,"doFold"),i(t,"makeWidget"),e.newFoldFunction=function(e,t){return function(n,r){o(n,r,{rangeFinder:e,widget:t})}},e.defineExtension("foldCode",(function(e,t,n){o(this,e,t,n)})),e.defineExtension("isFolded",(function(e){for(var o=this.findMarksAt(e),t=0;t=u){if(s&&l&&s.test(l.className))return;n=f(i.indicatorOpen)}}!n&&!l||e.setGutterMarker(t,i.gutter,n)}))}function l(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}function u(e){var o=e.getViewport(),t=e.state.foldGutter;t&&(e.operation((function(){a(e,o.from,o.to)})),t.from=o.from,t.to=o.to)}function d(e,t,n){var i=e.state.foldGutter;if(i){var f=i.options;if(n==f.gutter){var a=r(e,t);a?a.clear():e.foldCode(o(t,0),f)}}}function c(e){var o=e.state.foldGutter;if(o){var t=o.options;o.from=o.to=0,clearTimeout(o.changeUpdate),o.changeUpdate=setTimeout((function(){u(e)}),t.foldOnChangeTimeSpan||600)}}function s(e){var o=e.state.foldGutter;if(o){var t=o.options;clearTimeout(o.changeUpdate),o.changeUpdate=setTimeout((function(){var t=e.getViewport();o.from==o.to||t.from-o.to>20||o.from-t.to>20?u(e):e.operation((function(){t.fromo.to&&(a(e,o.to,t.to),o.to=t.to)}))}),t.updateViewportTimeSpan||400)}}function p(e,o){var t=e.state.foldGutter;if(t){var n=o.line;n>=t.from&&n cm.firstLine()) {\n pos = CodeMirror.Pos(pos.line - 1, 0);\n range = getRange(false);\n }\n if (!range || range.cleared || force === \"unfold\") return;\n\n var myWidget = makeWidget(cm, options, range);\n CodeMirror.on(myWidget, \"mousedown\", function(e) {\n myRange.clear();\n CodeMirror.e_preventDefault(e);\n });\n var myRange = cm.markText(range.from, range.to, {\n replacedWith: myWidget,\n clearOnEnter: getOption(cm, options, \"clearOnEnter\"),\n __isFold: true\n });\n myRange.on(\"clear\", function(from, to) {\n CodeMirror.signal(cm, \"unfold\", cm, from, to);\n });\n CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n }\n\n function makeWidget(cm, options, range) {\n var widget = getOption(cm, options, \"widget\");\n\n if (typeof widget == \"function\") {\n widget = widget(range.from, range.to);\n }\n\n if (typeof widget == \"string\") {\n var text = document.createTextNode(widget);\n widget = document.createElement(\"span\");\n widget.appendChild(text);\n widget.className = \"CodeMirror-foldmarker\";\n } else if (widget) {\n widget = widget.cloneNode(true)\n }\n return widget;\n }\n\n // Clumsy backwards-compatible interface\n CodeMirror.newFoldFunction = function(rangeFinder, widget) {\n return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); };\n };\n\n // New-style interface\n CodeMirror.defineExtension(\"foldCode\", function(pos, options, force) {\n doFold(this, pos, options, force);\n });\n\n CodeMirror.defineExtension(\"isFolded\", function(pos) {\n var marks = this.findMarksAt(pos);\n for (var i = 0; i < marks.length; ++i)\n if (marks[i].__isFold) return true;\n });\n\n CodeMirror.commands.toggleFold = function(cm) {\n cm.foldCode(cm.getCursor());\n };\n CodeMirror.commands.fold = function(cm) {\n cm.foldCode(cm.getCursor(), null, \"fold\");\n };\n CodeMirror.commands.unfold = function(cm) {\n cm.foldCode(cm.getCursor(), { scanUp: false }, \"unfold\");\n };\n CodeMirror.commands.foldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), { scanUp: false }, \"fold\");\n });\n };\n CodeMirror.commands.unfoldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), { scanUp: false }, \"unfold\");\n });\n };\n\n CodeMirror.registerHelper(\"fold\", \"combine\", function() {\n var funcs = Array.prototype.slice.call(arguments, 0);\n return function(cm, start) {\n for (var i = 0; i < funcs.length; ++i) {\n var found = funcs[i](cm, start);\n if (found) return found;\n }\n };\n });\n\n CodeMirror.registerHelper(\"fold\", \"auto\", function(cm, start) {\n var helpers = cm.getHelpers(start, \"fold\");\n for (var i = 0; i < helpers.length; i++) {\n var cur = helpers[i](cm, start);\n if (cur) return cur;\n }\n });\n\n var defaultOptions = {\n rangeFinder: CodeMirror.fold.auto,\n widget: \"\\u2194\",\n minFoldSize: 0,\n scanUp: false,\n clearOnEnter: true\n };\n\n CodeMirror.defineOption(\"foldOptions\", null);\n\n function getOption(cm, options, name) {\n if (options && options[name] !== undefined)\n return options[name];\n var editorOptions = cm.options.foldOptions;\n if (editorOptions && editorOptions[name] !== undefined)\n return editorOptions[name];\n return defaultOptions[name];\n }\n\n CodeMirror.defineExtension(\"foldOption\", function(options, name) {\n return getOption(this, options, name);\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./foldcode\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./foldcode\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"foldGutter\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.clearGutter(cm.state.foldGutter.options.gutter);\n cm.state.foldGutter = null;\n cm.off(\"gutterClick\", onGutterClick);\n cm.off(\"changes\", onChange);\n cm.off(\"viewportChange\", onViewportChange);\n cm.off(\"fold\", onFold);\n cm.off(\"unfold\", onFold);\n cm.off(\"swapDoc\", onChange);\n }\n if (val) {\n cm.state.foldGutter = new State(parseOptions(val));\n updateInViewport(cm);\n cm.on(\"gutterClick\", onGutterClick);\n cm.on(\"changes\", onChange);\n cm.on(\"viewportChange\", onViewportChange);\n cm.on(\"fold\", onFold);\n cm.on(\"unfold\", onFold);\n cm.on(\"swapDoc\", onChange);\n }\n });\n\n var Pos = CodeMirror.Pos;\n\n function State(options) {\n this.options = options;\n this.from = this.to = 0;\n }\n\n function parseOptions(opts) {\n if (opts === true) opts = {};\n if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n return opts;\n }\n\n function isFolded(cm, line) {\n var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold) {\n var fromPos = marks[i].find(-1);\n if (fromPos && fromPos.line === line)\n return marks[i];\n }\n }\n }\n\n function marker(spec) {\n if (typeof spec == \"string\") {\n var elt = document.createElement(\"div\");\n elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n return elt;\n } else {\n return spec.cloneNode(true);\n }\n }\n\n function updateFoldInfo(cm, from, to) {\n var opts = cm.state.foldGutter.options, cur = from - 1;\n var minSize = cm.foldOption(opts, \"minFoldSize\");\n var func = cm.foldOption(opts, \"rangeFinder\");\n // we can reuse the built-in indicator element if its className matches the new state\n var clsFolded = typeof opts.indicatorFolded == \"string\" && classTest(opts.indicatorFolded);\n var clsOpen = typeof opts.indicatorOpen == \"string\" && classTest(opts.indicatorOpen);\n cm.eachLine(from, to, function(line) {\n ++cur;\n var mark = null;\n var old = line.gutterMarkers;\n if (old) old = old[opts.gutter];\n if (isFolded(cm, cur)) {\n if (clsFolded && old && clsFolded.test(old.className)) return;\n mark = marker(opts.indicatorFolded);\n } else {\n var pos = Pos(cur, 0);\n var range = func && func(cm, pos);\n if (range && range.to.line - range.from.line >= minSize) {\n if (clsOpen && old && clsOpen.test(old.className)) return;\n mark = marker(opts.indicatorOpen);\n }\n }\n if (!mark && !old) return;\n cm.setGutterMarker(line, opts.gutter, mark);\n });\n }\n\n // copied from CodeMirror/src/util/dom.js\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n function updateInViewport(cm) {\n var vp = cm.getViewport(), state = cm.state.foldGutter;\n if (!state) return;\n cm.operation(function() {\n updateFoldInfo(cm, vp.from, vp.to);\n });\n state.from = vp.from; state.to = vp.to;\n }\n\n function onGutterClick(cm, line, gutter) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n if (gutter != opts.gutter) return;\n var folded = isFolded(cm, line);\n if (folded) folded.clear();\n else cm.foldCode(Pos(line, 0), opts);\n }\n\n function onChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n state.from = state.to = 0;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600);\n }\n\n function onViewportChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() {\n var vp = cm.getViewport();\n if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n updateInViewport(cm);\n } else {\n cm.operation(function() {\n if (vp.from < state.from) {\n updateFoldInfo(cm, vp.from, state.from);\n state.from = vp.from;\n }\n if (vp.to > state.to) {\n updateFoldInfo(cm, state.to, vp.to);\n state.to = vp.to;\n }\n });\n }\n }, opts.updateViewportTimeSpan || 400);\n }\n\n function onFold(cm, from) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var line = from.line;\n if (line >= state.from && line < state.to)\n updateFoldInfo(cm, line, line + 1);\n }\n});\n"],"names":["CodeMirror","doFold","cm","pos","options","force","call","finder","getOption","Pos","minSize","getRange","allowFolded","range","to","line","from","marks","findMarksAt","i","length","__isFold","cleared","clear","__name","firstLine","myWidget","makeWidget","on","e","myRange","e_preventDefault","markText","replacedWith","clearOnEnter","signal","widget","text","document","createTextNode","createElement","appendChild","className","cloneNode","newFoldFunction","rangeFinder","defineExtension","this","commands","toggleFold","foldCode","getCursor","fold","unfold","scanUp","foldAll","operation","lastLine","unfoldAll","registerHelper","funcs","Array","prototype","slice","arguments","start","found","helpers","getHelpers","cur","defaultOptions","auto","minFoldSize","name","editorOptions","foldOptions","defineOption","mod","require$$0","val","old","Init","clearGutter","state","foldGutter","gutter","off","onGutterClick","onChange","onViewportChange","onFold","State","parseOptions","updateInViewport","opts","indicatorOpen","indicatorFolded","isFolded","findMarks","fromPos","find","marker","spec","elt","updateFoldInfo","foldOption","func","clsFolded","classTest","clsOpen","eachLine","mark","gutterMarkers","test","setGutterMarker","cls","RegExp","vp","getViewport","folded","clearTimeout","changeUpdate","setTimeout","foldOnChangeTimeSpan","updateViewportTimeSpan","require$$1"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/284.5fa6686a.chunk.js b/serv/web/build/static/js/284.5fa6686a.chunk.js new file mode 100644 index 00000000..f2cbfa34 --- /dev/null +++ b/serv/web/build/static/js/284.5fa6686a.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[284],{8284:(e,o,t)=>{t.r(o),t.d(o,{f:()=>c});var n=t(8308),r=Object.defineProperty,i=(e,o)=>r(e,"name",{value:o,configurable:!0});function f(e,o){for(var t=0;tn[o]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}i(f,"_mergeNamespaces");var a,l={exports:{}};function d(){return a||(a=1,function(e){function o(o,n,f,a){if(f&&f.call){var l=f;f=null}else l=r(o,f,"rangeFinder");"number"==typeof n&&(n=e.Pos(n,0));var d=r(o,f,"minFoldSize");function u(e){var t=l(o,n);if(!t||t.to.line-t.from.lineo.firstLine();)n=e.Pos(n.line-1,0),c=u(!1);if(c&&!c.cleared&&"unfold"!==a){var s=t(o,f,c);e.on(s,"mousedown",(function(o){p.clear(),e.e_preventDefault(o)}));var p=o.markText(c.from,c.to,{replacedWith:s,clearOnEnter:r(o,f,"clearOnEnter"),__isFold:!0});p.on("clear",(function(t,n){e.signal(o,"unfold",o,t,n)})),e.signal(o,"fold",o,c.from,c.to)}}function t(e,o,t){var n=r(e,o,"widget");if("function"==typeof n&&(n=n(t.from,t.to)),"string"==typeof n){var i=document.createTextNode(n);(n=document.createElement("span")).appendChild(i),n.className="CodeMirror-foldmarker"}else n&&(n=n.cloneNode(!0));return n}i(o,"doFold"),i(t,"makeWidget"),e.newFoldFunction=function(e,t){return function(n,r){o(n,r,{rangeFinder:e,widget:t})}},e.defineExtension("foldCode",(function(e,t,n){o(this,e,t,n)})),e.defineExtension("isFolded",(function(e){for(var o=this.findMarksAt(e),t=0;t=d){if(s&&l&&s.test(l.className))return;n=f(i.indicatorOpen)}}!n&&!l||e.setGutterMarker(t,i.gutter,n)}))}function l(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}function d(e){var o=e.getViewport(),t=e.state.foldGutter;t&&(e.operation((function(){a(e,o.from,o.to)})),t.from=o.from,t.to=o.to)}function u(e,t,n){var i=e.state.foldGutter;if(i){var f=i.options;if(n==f.gutter){var a=r(e,t);a?a.clear():e.foldCode(o(t,0),f)}}}function c(e){var o=e.state.foldGutter;if(o){var t=o.options;o.from=o.to=0,clearTimeout(o.changeUpdate),o.changeUpdate=setTimeout((function(){d(e)}),t.foldOnChangeTimeSpan||600)}}function s(e){var o=e.state.foldGutter;if(o){var t=o.options;clearTimeout(o.changeUpdate),o.changeUpdate=setTimeout((function(){var t=e.getViewport();o.from==o.to||t.from-o.to>20||o.from-t.to>20?d(e):e.operation((function(){t.fromo.to&&(a(e,o.to,t.to),o.to=t.to)}))}),t.updateViewportTimeSpan||400)}}function p(e,o){var t=e.state.foldGutter;if(t){var n=o.line;n>=t.from&&n cm.firstLine()) {\n pos = CodeMirror.Pos(pos.line - 1, 0);\n range = getRange(false);\n }\n if (!range || range.cleared || force === \"unfold\") return;\n\n var myWidget = makeWidget(cm, options, range);\n CodeMirror.on(myWidget, \"mousedown\", function(e) {\n myRange.clear();\n CodeMirror.e_preventDefault(e);\n });\n var myRange = cm.markText(range.from, range.to, {\n replacedWith: myWidget,\n clearOnEnter: getOption(cm, options, \"clearOnEnter\"),\n __isFold: true\n });\n myRange.on(\"clear\", function(from, to) {\n CodeMirror.signal(cm, \"unfold\", cm, from, to);\n });\n CodeMirror.signal(cm, \"fold\", cm, range.from, range.to);\n }\n\n function makeWidget(cm, options, range) {\n var widget = getOption(cm, options, \"widget\");\n\n if (typeof widget == \"function\") {\n widget = widget(range.from, range.to);\n }\n\n if (typeof widget == \"string\") {\n var text = document.createTextNode(widget);\n widget = document.createElement(\"span\");\n widget.appendChild(text);\n widget.className = \"CodeMirror-foldmarker\";\n } else if (widget) {\n widget = widget.cloneNode(true)\n }\n return widget;\n }\n\n // Clumsy backwards-compatible interface\n CodeMirror.newFoldFunction = function(rangeFinder, widget) {\n return function(cm, pos) { doFold(cm, pos, {rangeFinder: rangeFinder, widget: widget}); };\n };\n\n // New-style interface\n CodeMirror.defineExtension(\"foldCode\", function(pos, options, force) {\n doFold(this, pos, options, force);\n });\n\n CodeMirror.defineExtension(\"isFolded\", function(pos) {\n var marks = this.findMarksAt(pos);\n for (var i = 0; i < marks.length; ++i)\n if (marks[i].__isFold) return true;\n });\n\n CodeMirror.commands.toggleFold = function(cm) {\n cm.foldCode(cm.getCursor());\n };\n CodeMirror.commands.fold = function(cm) {\n cm.foldCode(cm.getCursor(), null, \"fold\");\n };\n CodeMirror.commands.unfold = function(cm) {\n cm.foldCode(cm.getCursor(), { scanUp: false }, \"unfold\");\n };\n CodeMirror.commands.foldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), { scanUp: false }, \"fold\");\n });\n };\n CodeMirror.commands.unfoldAll = function(cm) {\n cm.operation(function() {\n for (var i = cm.firstLine(), e = cm.lastLine(); i <= e; i++)\n cm.foldCode(CodeMirror.Pos(i, 0), { scanUp: false }, \"unfold\");\n });\n };\n\n CodeMirror.registerHelper(\"fold\", \"combine\", function() {\n var funcs = Array.prototype.slice.call(arguments, 0);\n return function(cm, start) {\n for (var i = 0; i < funcs.length; ++i) {\n var found = funcs[i](cm, start);\n if (found) return found;\n }\n };\n });\n\n CodeMirror.registerHelper(\"fold\", \"auto\", function(cm, start) {\n var helpers = cm.getHelpers(start, \"fold\");\n for (var i = 0; i < helpers.length; i++) {\n var cur = helpers[i](cm, start);\n if (cur) return cur;\n }\n });\n\n var defaultOptions = {\n rangeFinder: CodeMirror.fold.auto,\n widget: \"\\u2194\",\n minFoldSize: 0,\n scanUp: false,\n clearOnEnter: true\n };\n\n CodeMirror.defineOption(\"foldOptions\", null);\n\n function getOption(cm, options, name) {\n if (options && options[name] !== undefined)\n return options[name];\n var editorOptions = cm.options.foldOptions;\n if (editorOptions && editorOptions[name] !== undefined)\n return editorOptions[name];\n return defaultOptions[name];\n }\n\n CodeMirror.defineExtension(\"foldOption\", function(options, name) {\n return getOption(this, options, name);\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./foldcode\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./foldcode\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n CodeMirror.defineOption(\"foldGutter\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.clearGutter(cm.state.foldGutter.options.gutter);\n cm.state.foldGutter = null;\n cm.off(\"gutterClick\", onGutterClick);\n cm.off(\"changes\", onChange);\n cm.off(\"viewportChange\", onViewportChange);\n cm.off(\"fold\", onFold);\n cm.off(\"unfold\", onFold);\n cm.off(\"swapDoc\", onChange);\n }\n if (val) {\n cm.state.foldGutter = new State(parseOptions(val));\n updateInViewport(cm);\n cm.on(\"gutterClick\", onGutterClick);\n cm.on(\"changes\", onChange);\n cm.on(\"viewportChange\", onViewportChange);\n cm.on(\"fold\", onFold);\n cm.on(\"unfold\", onFold);\n cm.on(\"swapDoc\", onChange);\n }\n });\n\n var Pos = CodeMirror.Pos;\n\n function State(options) {\n this.options = options;\n this.from = this.to = 0;\n }\n\n function parseOptions(opts) {\n if (opts === true) opts = {};\n if (opts.gutter == null) opts.gutter = \"CodeMirror-foldgutter\";\n if (opts.indicatorOpen == null) opts.indicatorOpen = \"CodeMirror-foldgutter-open\";\n if (opts.indicatorFolded == null) opts.indicatorFolded = \"CodeMirror-foldgutter-folded\";\n return opts;\n }\n\n function isFolded(cm, line) {\n var marks = cm.findMarks(Pos(line, 0), Pos(line + 1, 0));\n for (var i = 0; i < marks.length; ++i) {\n if (marks[i].__isFold) {\n var fromPos = marks[i].find(-1);\n if (fromPos && fromPos.line === line)\n return marks[i];\n }\n }\n }\n\n function marker(spec) {\n if (typeof spec == \"string\") {\n var elt = document.createElement(\"div\");\n elt.className = spec + \" CodeMirror-guttermarker-subtle\";\n return elt;\n } else {\n return spec.cloneNode(true);\n }\n }\n\n function updateFoldInfo(cm, from, to) {\n var opts = cm.state.foldGutter.options, cur = from - 1;\n var minSize = cm.foldOption(opts, \"minFoldSize\");\n var func = cm.foldOption(opts, \"rangeFinder\");\n // we can reuse the built-in indicator element if its className matches the new state\n var clsFolded = typeof opts.indicatorFolded == \"string\" && classTest(opts.indicatorFolded);\n var clsOpen = typeof opts.indicatorOpen == \"string\" && classTest(opts.indicatorOpen);\n cm.eachLine(from, to, function(line) {\n ++cur;\n var mark = null;\n var old = line.gutterMarkers;\n if (old) old = old[opts.gutter];\n if (isFolded(cm, cur)) {\n if (clsFolded && old && clsFolded.test(old.className)) return;\n mark = marker(opts.indicatorFolded);\n } else {\n var pos = Pos(cur, 0);\n var range = func && func(cm, pos);\n if (range && range.to.line - range.from.line >= minSize) {\n if (clsOpen && old && clsOpen.test(old.className)) return;\n mark = marker(opts.indicatorOpen);\n }\n }\n if (!mark && !old) return;\n cm.setGutterMarker(line, opts.gutter, mark);\n });\n }\n\n // copied from CodeMirror/src/util/dom.js\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n function updateInViewport(cm) {\n var vp = cm.getViewport(), state = cm.state.foldGutter;\n if (!state) return;\n cm.operation(function() {\n updateFoldInfo(cm, vp.from, vp.to);\n });\n state.from = vp.from; state.to = vp.to;\n }\n\n function onGutterClick(cm, line, gutter) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n if (gutter != opts.gutter) return;\n var folded = isFolded(cm, line);\n if (folded) folded.clear();\n else cm.foldCode(Pos(line, 0), opts);\n }\n\n function onChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n state.from = state.to = 0;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() { updateInViewport(cm); }, opts.foldOnChangeTimeSpan || 600);\n }\n\n function onViewportChange(cm) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var opts = state.options;\n clearTimeout(state.changeUpdate);\n state.changeUpdate = setTimeout(function() {\n var vp = cm.getViewport();\n if (state.from == state.to || vp.from - state.to > 20 || state.from - vp.to > 20) {\n updateInViewport(cm);\n } else {\n cm.operation(function() {\n if (vp.from < state.from) {\n updateFoldInfo(cm, vp.from, state.from);\n state.from = vp.from;\n }\n if (vp.to > state.to) {\n updateFoldInfo(cm, state.to, vp.to);\n state.to = vp.to;\n }\n });\n }\n }, opts.updateViewportTimeSpan || 400);\n }\n\n function onFold(cm, from) {\n var state = cm.state.foldGutter;\n if (!state) return;\n var line = from.line;\n if (line >= state.from && line < state.to)\n updateFoldInfo(cm, line, line + 1);\n }\n});\n"],"names":["i","s","e","o","f","a","call","g","v","Pos","y","x","l","r","to","line","from","c","findMarksAt","h","length","__isFold","cleared","clear","u","d","firstLine","t","p","on","n","e_preventDefault","markText","replacedWith","clearOnEnter","signal","document","createTextNode","createElement","appendChild","className","cloneNode","newFoldFunction","rangeFinder","widget","defineExtension","this","commands","toggleFold","foldCode","getCursor","fold","unfold","scanUp","foldAll","operation","lastLine","unfoldAll","registerHelper","Array","prototype","slice","arguments","getHelpers","w","auto","minFoldSize","options","foldOptions","defineOption","N","b","exports","Init","clearGutter","state","foldGutter","gutter","off","indicatorOpen","indicatorFolded","findMarks","find","foldOption","G","E","S","eachLine","T","_","F","gutterMarkers","test","A","m","setGutterMarker","RegExp","getViewport","clearTimeout","changeUpdate","setTimeout","foldOnChangeTimeSpan","updateViewportTimeSpan","V"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/301.5d98e8dc.chunk.js b/serv/web/build/static/js/301.5d98e8dc.chunk.js deleted file mode 100644 index 1d697418..00000000 --- a/serv/web/build/static/js/301.5d98e8dc.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[301],{6301:function(t,e,r){r.r(e),r.d(e,{m:function(){return o}});var n=r(8308),a=r(2704);function c(t,e){for(var r=function(){var r=e[n];if("string"!=typeof r&&!Array.isArray(r)){var a=function(e){if("default"!==e&&!(e in t)){var n=Object.getOwnPropertyDescriptor(r,e);n&&Object.defineProperty(t,e,n.get?n:{enumerable:!0,get:function(){return r[e]}})}};for(var c in r)a(c)}},n=0;n",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function a(t){return t&&t.bracketRegex||/[(){}[\]]/}function c(t,e,c){var i=t.getLineHandle(e.line),u=e.ch-1,l=c&&c.afterCursor;null==l&&(l=/(^| )cm-fat-cursor($| )/.test(t.getWrapperElement().className));var s=a(c),h=!l&&u>=0&&s.test(i.text.charAt(u))&&n[i.text.charAt(u)]||s.test(i.text.charAt(u+1))&&n[i.text.charAt(++u)];if(!h)return null;var f=">"==h.charAt(1)?1:-1;if(c&&c.strict&&f>0!=(u==e.ch))return null;var g=t.getTokenTypeAt(r(e.line,u+1)),m=o(t,r(e.line,u+(f>0?1:0)),f,g,c);return null==m?null:{from:r(e.line,u),to:m&&m.pos,match:m&&m.ch==h.charAt(0),forward:f>0}}function o(t,e,c,i,o){for(var u=o&&o.maxScanLineLength||1e4,l=o&&o.maxScanLines||1e3,s=[],h=a(o),f=c>0?Math.min(e.line+l,t.lastLine()+1):Math.max(t.firstLine()-1,e.line-l),g=e.line;g!=f;g+=c){var m=t.getLine(g);if(m){var d=c>0?0:m.length-1,k=c>0?m.length:-1;if(!(m.length>u))for(g==e.line&&(d=e.ch-(c<0?1:0));d!=k;d+=c){var p=m.charAt(d);if(h.test(p)&&(void 0===i||(t.getTokenTypeAt(r(g,d+1))||"")==(i||""))){var v=n[p];if(v&&">"==v.charAt(1)==c>0)s.push(p);else{if(!s.length)return{pos:r(g,d),ch:p};s.pop()}}}}}return g-c!=(c>0?t.lastLine():t.firstLine())&&null}function u(t,n,a){for(var o=t.state.matchBrackets.maxHighlightLineLength||1e3,u=a&&a.highlightNonMatching,l=[],s=t.listSelections(),h=0;h\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\", \"<\": \">>\", \">\": \"<<\"};\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor\n if (afterCursor == null)\n afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n var re = bracketRegex(config)\n\n // A cursor is defined as between two characters, but in in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) ||\n re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = bracketRegex(config)\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined ||\n (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && (match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets)\n cm.off(\"blur\", clearHighlighted)\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets)\n cm.on(\"blur\", clearHighlighted)\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig){\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {strict: true} : null\n } else {\n oldConfig.strict = config\n config = oldConfig\n }\n }\n return findMatchingBracket(this, pos, config)\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n"],"names":["CodeMirror","ie_lt8","test","navigator","userAgent","document","documentMode","Pos","matching","bracketRegex","config","findMatchingBracket","cm","where","line","getLineHandle","pos","ch","afterCursor","getWrapperElement","className","re","match","text","charAt","dir","strict","style","getTokenTypeAt","found","scanForBracket","from","to","forward","maxScanLen","maxScanLineLength","maxScanLines","stack","lineEnd","Math","min","lastLine","max","firstLine","lineNo","getLine","length","end","push","pop","matchBrackets","autoclear","maxHighlightLen","state","maxHighlightLineLength","highlightNonMatching","marks","ranges","listSelections","i","empty","head","markText","focused","focus","clear","f","operation","setTimeout","doMatchBrackets","currentlyHighlighted","clearHighlighted","__name","defineOption","val","old","Init","off","on","defineExtension","this","oldConfig","mod","require$$0"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/301.9d02ae8f.chunk.js b/serv/web/build/static/js/301.9d02ae8f.chunk.js new file mode 100644 index 00000000..6d338db2 --- /dev/null +++ b/serv/web/build/static/js/301.9d02ae8f.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[301],{6301:(t,e,r)=>{r.r(e),r.d(e,{m:()=>o});var n=r(8308),a=r(2704);function c(t,e){for(var r=0;rn[e]})}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(c,"name",{value:"_mergeNamespaces",configurable:!0});var i=(0,a.r)();const o=c({__proto__:null,default:(0,n.g)(i)},[i])},2704:(t,e,r)=>{r.d(e,{r:()=>s});var n,a=r(8308),c=Object.defineProperty,i=(t,e)=>c(t,"name",{value:e,configurable:!0}),o={exports:{}};function s(){return n||(n=1,function(t){var e=/MSIE \d/.test(navigator.userAgent)&&(null==document.documentMode||document.documentMode<8),r=t.Pos,n={"(":")>",")":"(<","[":"]>","]":"[<","{":"}>","}":"{<","<":">>",">":"<<"};function a(t){return t&&t.bracketRegex||/[(){}[\]]/}function c(t,e,c){var i=t.getLineHandle(e.line),s=e.ch-1,l=c&&c.afterCursor;null==l&&(l=/(^| )cm-fat-cursor($| )/.test(t.getWrapperElement().className));var h=a(c),u=!l&&s>=0&&h.test(i.text.charAt(s))&&n[i.text.charAt(s)]||h.test(i.text.charAt(s+1))&&n[i.text.charAt(++s)];if(!u)return null;var f=">"==u.charAt(1)?1:-1;if(c&&c.strict&&f>0!=(s==e.ch))return null;var g=t.getTokenTypeAt(r(e.line,s+1)),m=o(t,r(e.line,s+(f>0?1:0)),f,g,c);return null==m?null:{from:r(e.line,s),to:m&&m.pos,match:m&&m.ch==u.charAt(0),forward:f>0}}function o(t,e,c,i,o){for(var s=o&&o.maxScanLineLength||1e4,l=o&&o.maxScanLines||1e3,h=[],u=a(o),f=c>0?Math.min(e.line+l,t.lastLine()+1):Math.max(t.firstLine()-1,e.line-l),g=e.line;g!=f;g+=c){var m=t.getLine(g);if(m){var d=c>0?0:m.length-1,k=c>0?m.length:-1;if(!(m.length>s))for(g==e.line&&(d=e.ch-(c<0?1:0));d!=k;d+=c){var p=m.charAt(d);if(u.test(p)&&(void 0===i||(t.getTokenTypeAt(r(g,d+1))||"")==(i||""))){var v=n[p];if(v&&">"==v.charAt(1)==c>0)h.push(p);else{if(!h.length)return{pos:r(g,d),ch:p};h.pop()}}}}}return g-c!=(c>0?t.lastLine():t.firstLine())&&null}function s(t,n,a){for(var o=t.state.matchBrackets.maxHighlightLineLength||1e3,s=a&&a.highlightNonMatching,l=[],h=t.listSelections(),u=0;u\", \")\": \"(<\", \"[\": \"]>\", \"]\": \"[<\", \"{\": \"}>\", \"}\": \"{<\", \"<\": \">>\", \">\": \"<<\"};\n\n function bracketRegex(config) {\n return config && config.bracketRegex || /[(){}[\\]]/\n }\n\n function findMatchingBracket(cm, where, config) {\n var line = cm.getLineHandle(where.line), pos = where.ch - 1;\n var afterCursor = config && config.afterCursor\n if (afterCursor == null)\n afterCursor = /(^| )cm-fat-cursor($| )/.test(cm.getWrapperElement().className)\n var re = bracketRegex(config)\n\n // A cursor is defined as between two characters, but in in vim command mode\n // (i.e. not insert mode), the cursor is visually represented as a\n // highlighted box on top of the 2nd character. Otherwise, we allow matches\n // from before or after the cursor.\n var match = (!afterCursor && pos >= 0 && re.test(line.text.charAt(pos)) && matching[line.text.charAt(pos)]) ||\n re.test(line.text.charAt(pos + 1)) && matching[line.text.charAt(++pos)];\n if (!match) return null;\n var dir = match.charAt(1) == \">\" ? 1 : -1;\n if (config && config.strict && (dir > 0) != (pos == where.ch)) return null;\n var style = cm.getTokenTypeAt(Pos(where.line, pos + 1));\n\n var found = scanForBracket(cm, Pos(where.line, pos + (dir > 0 ? 1 : 0)), dir, style, config);\n if (found == null) return null;\n return {from: Pos(where.line, pos), to: found && found.pos,\n match: found && found.ch == match.charAt(0), forward: dir > 0};\n }\n\n // bracketRegex is used to specify which type of bracket to scan\n // should be a regexp, e.g. /[[\\]]/\n //\n // Note: If \"where\" is on an open bracket, then this bracket is ignored.\n //\n // Returns false when no bracket was found, null when it reached\n // maxScanLines and gave up\n function scanForBracket(cm, where, dir, style, config) {\n var maxScanLen = (config && config.maxScanLineLength) || 10000;\n var maxScanLines = (config && config.maxScanLines) || 1000;\n\n var stack = [];\n var re = bracketRegex(config)\n var lineEnd = dir > 0 ? Math.min(where.line + maxScanLines, cm.lastLine() + 1)\n : Math.max(cm.firstLine() - 1, where.line - maxScanLines);\n for (var lineNo = where.line; lineNo != lineEnd; lineNo += dir) {\n var line = cm.getLine(lineNo);\n if (!line) continue;\n var pos = dir > 0 ? 0 : line.length - 1, end = dir > 0 ? line.length : -1;\n if (line.length > maxScanLen) continue;\n if (lineNo == where.line) pos = where.ch - (dir < 0 ? 1 : 0);\n for (; pos != end; pos += dir) {\n var ch = line.charAt(pos);\n if (re.test(ch) && (style === undefined ||\n (cm.getTokenTypeAt(Pos(lineNo, pos + 1)) || \"\") == (style || \"\"))) {\n var match = matching[ch];\n if (match && (match.charAt(1) == \">\") == (dir > 0)) stack.push(ch);\n else if (!stack.length) return {pos: Pos(lineNo, pos), ch: ch};\n else stack.pop();\n }\n }\n }\n return lineNo - dir == (dir > 0 ? cm.lastLine() : cm.firstLine()) ? false : null;\n }\n\n function matchBrackets(cm, autoclear, config) {\n // Disable brace matching in long lines, since it'll cause hugely slow updates\n var maxHighlightLen = cm.state.matchBrackets.maxHighlightLineLength || 1000,\n highlightNonMatching = config && config.highlightNonMatching;\n var marks = [], ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var match = ranges[i].empty() && findMatchingBracket(cm, ranges[i].head, config);\n if (match && (match.match || highlightNonMatching !== false) && cm.getLine(match.from.line).length <= maxHighlightLen) {\n var style = match.match ? \"CodeMirror-matchingbracket\" : \"CodeMirror-nonmatchingbracket\";\n marks.push(cm.markText(match.from, Pos(match.from.line, match.from.ch + 1), {className: style}));\n if (match.to && cm.getLine(match.to.line).length <= maxHighlightLen)\n marks.push(cm.markText(match.to, Pos(match.to.line, match.to.ch + 1), {className: style}));\n }\n }\n\n if (marks.length) {\n // Kludge to work around the IE bug from issue #1193, where text\n // input stops going to the textarea whenever this fires.\n if (ie_lt8 && cm.state.focused) cm.focus();\n\n var clear = function() {\n cm.operation(function() {\n for (var i = 0; i < marks.length; i++) marks[i].clear();\n });\n };\n if (autoclear) setTimeout(clear, 800);\n else return clear;\n }\n }\n\n function doMatchBrackets(cm) {\n cm.operation(function() {\n if (cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n cm.state.matchBrackets.currentlyHighlighted = matchBrackets(cm, false, cm.state.matchBrackets);\n });\n }\n\n function clearHighlighted(cm) {\n if (cm.state.matchBrackets && cm.state.matchBrackets.currentlyHighlighted) {\n cm.state.matchBrackets.currentlyHighlighted();\n cm.state.matchBrackets.currentlyHighlighted = null;\n }\n }\n\n CodeMirror.defineOption(\"matchBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.off(\"cursorActivity\", doMatchBrackets);\n cm.off(\"focus\", doMatchBrackets)\n cm.off(\"blur\", clearHighlighted)\n clearHighlighted(cm);\n }\n if (val) {\n cm.state.matchBrackets = typeof val == \"object\" ? val : {};\n cm.on(\"cursorActivity\", doMatchBrackets);\n cm.on(\"focus\", doMatchBrackets)\n cm.on(\"blur\", clearHighlighted)\n }\n });\n\n CodeMirror.defineExtension(\"matchBrackets\", function() {matchBrackets(this, true);});\n CodeMirror.defineExtension(\"findMatchingBracket\", function(pos, config, oldConfig){\n // Backwards-compatibility kludge\n if (oldConfig || typeof config == \"boolean\") {\n if (!oldConfig) {\n config = config ? {strict: true} : null\n } else {\n oldConfig.strict = config\n config = oldConfig\n }\n }\n return findMatchingBracket(this, pos, config)\n });\n CodeMirror.defineExtension(\"scanForBracket\", function(pos, dir, style, config){\n return scanForBracket(this, pos, dir, style, config);\n });\n});\n"],"names":["o","S","test","navigator","userAgent","document","documentMode","g","Pos","p","A","t","bracketRegex","b","r","e","i","getLineHandle","line","n","ch","l","afterCursor","getWrapperElement","className","h","u","text","charAt","a","strict","k","getTokenTypeAt","s","H","from","to","pos","match","forward","maxScanLineLength","maxScanLines","Math","min","lastLine","max","firstLine","c","getLine","v","length","q","d","m","push","pop","M","state","matchBrackets","maxHighlightLineLength","highlightNonMatching","listSelections","empty","head","markText","focused","focus","f","operation","clear","setTimeout","x","currentlyHighlighted","B","defineOption","Init","off","on","defineExtension","this","F","T","exports"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/308.5daf2292.chunk.js b/serv/web/build/static/js/308.5daf2292.chunk.js new file mode 100644 index 00000000..325e6750 --- /dev/null +++ b/serv/web/build/static/js/308.5daf2292.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[308],{8308:(e,t,r)=>{r.d(t,{g:()=>o,r:()=>s});var n=Object.defineProperty,i=(e,t)=>n(e,"name",{value:t,configurable:!0});typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof r.g<"u"?r.g:typeof self<"u"&&self;function o(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}i(o,"getDefaultExportFromCjs");var l,a={exports:{}};function s(){return l||(l=1,a.exports=function(){var e=navigator.userAgent,t=navigator.platform,r=/gecko\/\d/i.test(e),n=/MSIE \d/.test(e),o=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),l=/Edge\/(\d+)/.exec(e),a=n||o||l,s=a&&(n?document.documentMode||6:+(l||o)[1]),u=!l&&/WebKit\//.test(e),c=u&&/Qt\/\d+\.\d+/.test(e),h=!l&&/Chrome\//.test(e),d=/Opera\//.test(e),f=/Apple Computer/.test(navigator.vendor),p=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),g=/PhantomJS/.test(e),v=f&&(/Mobile\/\w+/.test(e)||navigator.maxTouchPoints>2),m=/Android/.test(e),y=v||m||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),b=v||/Mac/.test(t),w=/\bCrOS\b/.test(e),x=/win/i.test(t),C=d&&e.match(/Version\/(\d*\.\d*)/);C&&(C=Number(C[1])),C&&C>=15&&(d=!1,u=!0);var S=b&&(c||d&&(null==C||C<12.11)),L=r||a&&s>=9;function k(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}i(k,"classTest");var T,M=i((function(e,t){var r=e.className,n=k(t).exec(r);if(n){var i=r.slice(n.index+n[0].length);e.className=r.slice(0,n.index)+(i?n[1]+i:"")}}),"rmClass");function N(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function O(e,t){return N(e).appendChild(t)}function A(e,t,r,n){var i=document.createElement(e);if(r&&(i.className=r),n&&(i.style.cssText=n),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o=t)return l+(t-o);l+=a-o,l+=r-l%r,o=a+1}}v?E=i((function(e){e.selectionStart=0,e.selectionEnd=e.value.length}),"selectInput"):a&&(E=i((function(e){try{e.select()}catch{}}),"selectInput")),i(I,"bind"),i(R,"copyObj"),i(B,"countColumn");var z=i((function(){this.id=null,this.f=null,this.time=0,this.handler=I(this.onTimeout,this)}),"Delayed");function G(e,t){for(var r=0;r=t)return n+Math.min(l,t-i);if(i+=o-n,n=o+1,(i+=r-i%r)>=t)return n}}i(X,"findColumn");var Y=[""];function $(e){for(;Y.length<=e;)Y.push(q(Y)+" ");return Y[e]}function q(e){return e[e.length-1]}function Z(e,t){for(var r=[],n=0;n"\x80"&&(e.toUpperCase()!=e.toLowerCase()||te.test(e))}function ne(e,t){return t?!!(t.source.indexOf("\\w")>-1&&re(e))||t.test(e):re(e)}function ie(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}i(re,"isWordCharBasic"),i(ne,"isWordChar"),i(ie,"isEmpty");var oe=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function le(e){return e.charCodeAt(0)>=768&&oe.test(e)}function ae(e,t,r){for(;(r<0?t>0:tr?-1:1;;){if(t==r)return t;var i=(t+r)/2,o=n<0?Math.ceil(i):Math.floor(i);if(o==t)return e(o)?t:r;e(o)?r=o:t=o+n}}function ue(e,t,r,n){if(!e)return n(t,r,"ltr",0);for(var i=!1,o=0;ot||t==r&&l.to==t)&&(n(Math.max(l.from,t),Math.min(l.to,r),1==l.level?"rtl":"ltr",o),i=!0)}i||n(t,r,"ltr")}i(le,"isExtendingChar"),i(ae,"skipExtendingChars"),i(se,"findFirst"),i(ue,"iterateBidiSections");var ce=null;function he(e,t,r){var n,i;ce=null;for(var o=0;ot)return o;l.to==t&&(l.from!=l.to&&"before"==r?i=o:ce=o),l.from==t&&(l.from!=l.to&&"before"!=r?i=o:ce=o)}return null!==(n=i)&&void 0!==n?n:ce}i(he,"getBidiPartAt");var de=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function r(r){return r<=247?e.charAt(r):1424<=r&&r<=1524?"R":1536<=r&&r<=1785?t.charAt(r-1536):1774<=r&&r<=2220?"r":8192<=r&&r<=8203?"w":8204==r?"b":"L"}i(r,"charType");var n=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,o=/[stwN]/,l=/[LRr]/,a=/[Lb1n]/,s=/[1n]/;function u(e,t,r){this.level=e,this.from=t,this.to=r}return i(u,"BidiSpan"),function(e,t){var i="ltr"==t?"L":"R";if(0==e.length||"ltr"==t&&!n.test(e))return!1;for(var c=e.length,h=[],d=0;d-1&&(n[t]=i.slice(0,o).concat(i.slice(o+1)))}}}function ye(e,t){var r=ve(e,t);if(r.length)for(var n=Array.prototype.slice.call(arguments,2),i=0;i0}function Ce(e){e.prototype.on=function(e,t){ge(this,e,t)},e.prototype.off=function(e,t){me(this,e,t)}}function Se(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function Le(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function ke(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function Te(e){Se(e),Le(e)}function Me(e){return e.target||e.srcElement}function Ne(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),b&&e.ctrlKey&&1==t&&(t=3),t}i(ve,"getHandlers"),i(me,"off"),i(ye,"signal"),i(be,"signalDOMEvent"),i(we,"signalCursorActivity"),i(xe,"hasHandler"),i(Ce,"eventMixin"),i(Se,"e_preventDefault"),i(Le,"e_stopPropagation"),i(ke,"e_defaultPrevented"),i(Te,"e_stop"),i(Me,"e_target"),i(Ne,"e_button");var Oe,Ae,De=function(){if(a&&s<9)return!1;var e=A("div");return"draggable"in e||"dragDrop"in e}();function We(e){if(null==Oe){var t=A("span","\u200b");O(e,A("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(Oe=t.offsetWidth<=1&&t.offsetHeight>2&&!(a&&s<8))}var r=Oe?A("span","\u200b"):A("span","\xa0",null,"display: inline-block; width: 1px; margin-right: -1px");return r.setAttribute("cm-text",""),r}function He(e){if(null!=Ae)return Ae;var t=O(e,document.createTextNode("A\u062eA")),r=T(t,0,1).getBoundingClientRect(),n=T(t,1,2).getBoundingClientRect();return N(e),!(!r||r.left==r.right)&&(Ae=n.right-r.right<3)}i(We,"zeroWidthElement"),i(He,"hasBadBidiRects");var Fe=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,r=[],n=e.length;t<=n;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),l=o.indexOf("\r");-1!=l?(r.push(o.slice(0,l)),t+=l+1):(r.push(o),t=i+1)}return r}:function(e){return e.split(/\r\n?|\n/)},Pe=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch{return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch{}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},Ee=function(){var e=A("div");return"oncopy"in e||(e.setAttribute("oncopy","return;"),"function"==typeof e.oncopy)}(),Ie=null;function Re(e){if(null!=Ie)return Ie;var t=O(e,A("span","x")),r=t.getBoundingClientRect(),n=T(t,0,1).getBoundingClientRect();return Ie=Math.abs(r.left-n.left)>1}i(Re,"hasBadZoomedRects");var Be={},ze={};function Ge(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),Be[e]=t}function Ue(e,t){ze[e]=t}function Ve(e){if("string"==typeof e&&ze.hasOwnProperty(e))e=ze[e];else if(e&&"string"==typeof e.name&&ze.hasOwnProperty(e.name)){var t=ze[e.name];"string"==typeof t&&(t={name:t}),(e=ee(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return Ve("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return Ve("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function Ke(e,t){t=Ve(t);var r=Be[t.name];if(!r)return Ke(e,"text/plain");var n=r(e,t);if(je.hasOwnProperty(t.name)){var i=je[t.name];for(var o in i)i.hasOwnProperty(o)&&(n.hasOwnProperty(o)&&(n["_"+o]=n[o]),n[o]=i[o])}if(n.name=t.name,t.helperType&&(n.helperType=t.helperType),t.modeProps)for(var l in t.modeProps)n[l]=t.modeProps[l];return n}i(Ge,"defineMode"),i(Ue,"defineMIME"),i(Ve,"resolveMode"),i(Ke,"getMode");var je={};function _e(e,t){R(t,je.hasOwnProperty(e)?je[e]:je[e]={})}function Xe(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var r={};for(var n in t){var i=t[n];i instanceof Array&&(i=i.concat([])),r[n]=i}return r}function Ye(e,t){for(var r;e.innerMode&&(r=e.innerMode(t))&&r.mode!=e;)t=r.state,e=r.mode;return r||{mode:e,state:t}}function $e(e,t,r){return!e.startState||e.startState(t,r)}i(_e,"extendMode"),i(Xe,"copyState"),i(Ye,"innerMode"),i($e,"startState");var qe=i((function(e,t,r){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=r}),"StringStream");function Ze(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var r=e;!r.lines;)for(var n=0;;++n){var i=r.children[n],o=i.chunkSize();if(t=e.first&&tr?ot(r,Ze(e,r).text.length):ft(t,Ze(e,t.line).text.length)}function ft(e,t){var r=e.ch;return null==r||r>t?ot(e.line,t):r<0?ot(e.line,0):e}function pt(e,t){for(var r=[],n=0;n=this.string.length},qe.prototype.sol=function(){return this.pos==this.lineStart},qe.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},qe.prototype.next=function(){if(this.post},qe.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},qe.prototype.skipToEnd=function(){this.pos=this.string.length},qe.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},qe.prototype.backUp=function(e){this.pos-=e},qe.prototype.column=function(){return this.lastColumnPos0?null:(n&&!1!==t&&(this.pos+=n[0].length),n)}var o=i((function(e){return r?e.toLowerCase():e}),"cased");if(o(this.string.substr(this.pos,e.length))==o(e))return!1!==t&&(this.pos+=e.length),!0},qe.prototype.current=function(){return this.string.slice(this.start,this.pos)},qe.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},qe.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},qe.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)},i(Ze,"getLine"),i(Qe,"getBetween"),i(Je,"getLines"),i(et,"updateLineHeight"),i(tt,"lineNo"),i(rt,"lineAtHeight"),i(nt,"isLine"),i(it,"lineNumberFor"),i(ot,"Pos"),i(lt,"cmp"),i(at,"equalCursorPos"),i(st,"copyPos"),i(ut,"maxPos"),i(ct,"minPos"),i(ht,"clipLine"),i(dt,"clipPos"),i(ft,"clipToLen"),i(pt,"clipPosArray");var gt=i((function(e,t){this.state=e,this.lookAhead=t}),"SavedContext"),vt=i((function(e,t,r,n){this.state=t,this.doc=e,this.line=r,this.maxLookAhead=n||0,this.baseTokens=null,this.baseTokenPos=1}),"Context");function mt(e,t,r,n){var o=[e.state.modeGen],l={};Tt(e,t.text,e.doc.mode,r,(function(e,t){return o.push(e,t)}),l,n);for(var a=r.state,s=i((function(n){r.baseTokens=o;var i=e.state.overlays[n],s=1,u=0;r.state=!0,Tt(e,t.text,i.mode,r,(function(e,t){for(var r=s;ue&&o.splice(s,1,e,o[s+1],n),s+=2,u=Math.min(e,n)}if(t)if(i.opaque)o.splice(r,s-r,e,"overlay "+t),s=r+2;else for(;re.options.maxHighlightLength&&Xe(e.doc.mode,n.state),o=mt(e,t,n);i&&(n.state=i),t.stateAfter=n.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),r===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function bt(e,t,r){var n=e.doc,i=e.display;if(!n.mode.startState)return new vt(n,!0,t);var o=Mt(e,t,r),l=o>n.first&&Ze(n,o-1).stateAfter,a=l?vt.fromSaved(n,l,o):new vt(n,$e(n.mode),o);return n.iter(o,t,(function(r){wt(e,r.text,a);var n=a.line;r.stateAfter=n==t-1||n%5==0||n>=i.viewFrom&&nt.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}vt.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},vt.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},vt.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},vt.fromSaved=function(e,t,r){return t instanceof gt?new vt(e,Xe(e.mode,t.state),r,t.lookAhead):new vt(e,Xe(e.mode,t),r)},vt.prototype.save=function(e){var t=!1!==e?Xe(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new gt(t,this.maxLookAhead):t},i(mt,"highlightLine"),i(yt,"getLineStyles"),i(bt,"getContextBefore"),i(wt,"processLine"),i(xt,"callBlankLine"),i(Ct,"readToken");var St=i((function(e,t,r){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=r}),"Token");function Lt(e,t,r,n){var i,o,l=e.doc,a=l.mode,s=Ze(l,(t=dt(l,t)).line),u=bt(e,t.line,r),c=new qe(s.text,e.options.tabSize,u);for(n&&(o=[]);(n||c.pose.options.maxHighlightLength?(a=!1,l&&wt(e,t,n,h.pos),h.pos=t.length,s=null):s=kt(Ct(r,h,n.state,d),o),d){var f=d[0].name;f&&(s="m-"+(s?f+" "+s:f))}if(!a||c!=s){for(;ul;--a){if(a<=o.first)return o.first;var s=Ze(o,a-1),u=s.stateAfter;if(u&&(!r||a+(u instanceof gt?u.lookAhead:0)<=o.modeFrontier))return a;var c=B(s.text,null,e.options.tabSize);(null==i||n>c)&&(i=a-1,n=c)}return i}function Nt(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontierr;n--){var i=Ze(e,n).stateAfter;if(i&&(!(i instanceof gt)||n+i.lookAhead=t:o.to>t);(n||(n=[])).push(new Ht(l,o.from,a?null:o.to))}}return n}function Rt(e,t,r){var n;if(e)for(var i=0;i=t:o.to>t)||o.from==t&&"bookmark"==l.type&&(!r||o.marker.insertLeft)){var a=null==o.from||(l.inclusiveLeft?o.from<=t:o.from0&&a)for(var b=0;b0)){var c=[s,1],h=lt(u.from,a.from),d=lt(u.to,a.to);(h<0||!l.inclusiveLeft&&!h)&&c.push({from:u.from,to:a.from}),(d>0||!l.inclusiveRight&&!d)&&c.push({from:a.to,to:u.to}),i.splice.apply(i,c),s+=c.length-3}}return i}function Ut(e){var t=e.markedSpans;if(t){for(var r=0;rt)&&(!r||_t(r,o.marker)<0)&&(r=o.marker)}return r}function Zt(e,t,r,n,i){var o=Ze(e,t),l=At&&o.markedSpans;if(l)for(var a=0;a=0&&h<=0||c<=0&&h>=0)&&(c<=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?lt(u.to,r)>=0:lt(u.to,r)>0)||c>=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?lt(u.from,n)<=0:lt(u.from,n)<0)))return!0}}}function Qt(e){for(var t;t=Yt(e);)e=t.find(-1,!0).line;return e}function Jt(e){for(var t;t=$t(e);)e=t.find(1,!0).line;return e}function er(e){for(var t,r;t=$t(e);)e=t.find(1,!0).line,(r||(r=[])).push(e);return r}function tr(e,t){var r=Ze(e,t),n=Qt(r);return r==n?t:tt(n)}function rr(e,t){if(t>e.lastLine())return t;var r,n=Ze(e,t);if(!nr(e,n))return t;for(;r=$t(n);)n=r.find(1,!0).line;return tt(n)+1}function nr(e,t){var r=At&&t.markedSpans;if(r)for(var n=void 0,i=0;it.maxLineLength&&(t.maxLineLength=r,t.maxLine=e)}))}i(Dt,"seeReadOnlySpans"),i(Wt,"seeCollapsedSpans"),i(Ht,"MarkedSpan"),i(Ft,"getMarkedSpanFor"),i(Pt,"removeMarkedSpan"),i(Et,"addMarkedSpan"),i(It,"markedSpansBefore"),i(Rt,"markedSpansAfter"),i(Bt,"stretchSpansOverChange"),i(zt,"clearEmptySpans"),i(Gt,"removeReadOnlyRanges"),i(Ut,"detachMarkedSpans"),i(Vt,"attachMarkedSpans"),i(Kt,"extraLeft"),i(jt,"extraRight"),i(_t,"compareCollapsedMarkers"),i(Xt,"collapsedSpanAtSide"),i(Yt,"collapsedSpanAtStart"),i($t,"collapsedSpanAtEnd"),i(qt,"collapsedSpanAround"),i(Zt,"conflictingCollapsedRange"),i(Qt,"visualLine"),i(Jt,"visualLineEnd"),i(er,"visualLineContinued"),i(tr,"visualLineNo"),i(rr,"visualLineEndNo"),i(nr,"lineIsHidden"),i(ir,"lineIsHiddenInner"),i(or,"heightAtLine"),i(lr,"lineLength"),i(ar,"findMaxLine");var sr=i((function(e,t,r){this.text=e,Vt(this,t),this.height=r?r(this):1}),"Line");function ur(e,t,r,n){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),null!=e.order&&(e.order=null),Ut(e),Vt(e,r);var i=n?n(e):1;i!=e.height&&et(e,i)}function cr(e){e.parent=null,Ut(e)}sr.prototype.lineNo=function(){return tt(this)},Ce(sr),i(ur,"updateLine"),i(cr,"cleanUpLine");var hr={},dr={};function fr(e,t){if(!e||/^\s*$/.test(e))return null;var r=t.addModeClass?dr:hr;return r[e]||(r[e]=e.replace(/\S+/g,"cm-$&"))}function pr(e,t){var r=D("span",null,null,u?"padding-right: .1px":null),n={pre:D("pre",[r],"CodeMirror-line"),content:r,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,l=void 0;n.pos=0,n.addToken=vr,He(e.display.measure)&&(l=fe(o,e.doc.direction))&&(n.addToken=yr(n.addToken,l)),n.map=[],wr(o,n,yt(e,o,t!=e.display.externalMeasured&&tt(o))),o.styleClasses&&(o.styleClasses.bgClass&&(n.bgClass=P(o.styleClasses.bgClass,n.bgClass||"")),o.styleClasses.textClass&&(n.textClass=P(o.styleClasses.textClass,n.textClass||""))),0==n.map.length&&n.map.push(0,0,n.content.appendChild(We(e.display.measure))),0==i?(t.measure.map=n.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(n.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(u){var a=n.content.lastChild;(/\bcm-tab\b/.test(a.className)||a.querySelector&&a.querySelector(".cm-tab"))&&(n.content.className="cm-tab-wrap-hack")}return ye(e,"renderLine",e,t.line,n.pre),n.pre.className&&(n.textClass=P(n.pre.className,n.textClass||"")),n}function gr(e){var t=A("span","\u2022","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function vr(e,t,r,n,i,o,l){if(t){var u,c=e.splitSpaces?mr(t,e.trailingSpace):t,h=e.cm.state.specialChars,d=!1;if(h.test(t)){u=document.createDocumentFragment();for(var f=0;;){h.lastIndex=f;var p=h.exec(t),g=p?p.index-f:t.length-f;if(g){var v=document.createTextNode(c.slice(f,f+g));a&&s<9?u.appendChild(A("span",[v])):u.appendChild(v),e.map.push(e.pos,e.pos+g,v),e.col+=g,e.pos+=g}if(!p)break;f+=g+1;var m=void 0;if("\t"==p[0]){var y=e.cm.options.tabSize,b=y-e.col%y;(m=u.appendChild(A("span",$(b),"cm-tab"))).setAttribute("role","presentation"),m.setAttribute("cm-text","\t"),e.col+=b}else"\r"==p[0]||"\n"==p[0]?((m=u.appendChild(A("span","\r"==p[0]?"\u240d":"\u2424","cm-invalidchar"))).setAttribute("cm-text",p[0]),e.col+=1):((m=e.cm.options.specialCharPlaceholder(p[0])).setAttribute("cm-text",p[0]),a&&s<9?u.appendChild(A("span",[m])):u.appendChild(m),e.col+=1);e.map.push(e.pos,e.pos+1,m),e.pos++}}else e.col+=t.length,u=document.createTextNode(c),e.map.push(e.pos,e.pos+t.length,u),a&&s<9&&(d=!0),e.pos+=t.length;if(e.trailingSpace=32==c.charCodeAt(t.length-1),r||n||i||d||o||l){var w=r||"";n&&(w+=n),i&&(w+=i);var x=A("span",[u],w,o);if(l)for(var C in l)l.hasOwnProperty(C)&&"style"!=C&&"class"!=C&&x.setAttribute(C,l[C]);return e.content.appendChild(x)}e.content.appendChild(u)}}function mr(e,t){if(e.length>1&&!/ /.test(e))return e;for(var r=t,n="",i=0;iu&&h.from<=u);d++);if(h.to>=c)return e(r,n,i,o,l,a,s);e(r,n.slice(0,h.to-u),i,o,null,a,s),o=null,n=n.slice(h.to-u),u=h.to}}}function br(e,t,r,n){var i=!n&&r.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!n&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",r.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function wr(e,t,r){var n=e.markedSpans,i=e.text,o=0;if(n)for(var l,a,s,u,c,h,d,f=i.length,p=0,g=1,v="",m=0;;){if(m==p){s=u=c=a="",d=null,h=null,m=1/0;for(var y=[],b=void 0,w=0;wp||C.collapsed&&x.to==p&&x.from==p)){if(null!=x.to&&x.to!=p&&m>x.to&&(m=x.to,u=""),C.className&&(s+=" "+C.className),C.css&&(a=(a?a+";":"")+C.css),C.startStyle&&x.from==p&&(c+=" "+C.startStyle),C.endStyle&&x.to==m&&(b||(b=[])).push(C.endStyle,x.to),C.title&&((d||(d={})).title=C.title),C.attributes)for(var S in C.attributes)(d||(d={}))[S]=C.attributes[S];C.collapsed&&(!h||_t(h.marker,C)<0)&&(h=x)}else x.from>p&&m>x.from&&(m=x.from)}if(b)for(var L=0;L=f)break;for(var T=Math.min(f,m);;){if(v){var M=p+v.length;if(!h){var N=M>T?v.slice(0,T-p):v;t.addToken(t,N,l?l+s:s,c,p+N.length==m?u:"",a,d)}if(M>=T){v=v.slice(T-p),p=T;break}p=M,c=""}v=i.slice(o,o=r[g++]),l=fr(r[g++],t.cm.options)}}else for(var O=1;O2&&o.push((s.bottom+u.top)/2-r.top)}}o.push(r.bottom-r.top)}}function Zr(e,t,r){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};if(e.rest){for(var n=0;nr)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}}function Qr(e,t){var r=tt(t=Qt(t)),n=e.display.externalMeasured=new xr(e.doc,t,r);n.lineN=r;var i=n.built=pr(e,n);return n.text=i.pre,O(e.display.lineMeasure,i.pre),n}function Jr(e,t,r,n){return rn(e,tn(e,t),r,n)}function en(e,t){if(t>=e.display.viewFrom&&t=r.lineN&&tt)&&(i=(o=s-a)-1,t>=s&&(l="right")),null!=i){if(n=e[u+2],a==s&&r==(n.insertLeft?"left":"right")&&(l=r),"left"==r&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)n=e[2+(u-=3)],l="left";if("right"==r&&i==s-a)for(;u=0&&(r=e[i]).left==r.right;i--);return r}function sn(e,t,r,n){var i,o=ln(t.map,r,n),l=o.node,u=o.start,c=o.end,h=o.collapse;if(3==l.nodeType){for(var d=0;d<4;d++){for(;u&&le(t.line.text.charAt(o.coverStart+u));)--u;for(;o.coverStart+c0&&(h=n="right"),i=e.options.lineWrapping&&(f=l.getClientRects()).length>1?f["right"==n?f.length-1:0]:l.getBoundingClientRect()}if(a&&s<9&&!u&&(!i||!i.left&&!i.right)){var p=l.parentNode.getClientRects()[0];i=p?{left:p.left,right:p.left+An(e.display),top:p.top,bottom:p.bottom}:on}for(var g=i.top-t.rect.top,v=i.bottom-t.rect.top,m=(g+v)/2,y=t.view.measure.heights,b=0;b=n.text.length?(u=n.text.length,c="before"):u<=0&&(u=0,c="after"),!s)return a("before"==c?u-1:u,"before"==c);function h(e,t,r){return a(r?e-1:e,1==s[t].level!=r)}i(h,"getBidi");var d=he(s,u,c),f=ce,p=h(u,d,"before"==c);return null!=f&&(p.other=h(u,f,"before"!=c)),p}function wn(e,t){var r=0;t=dt(e.doc,t),e.options.lineWrapping||(r=An(e.display)*t.ch);var n=Ze(e.doc,t.line),i=or(n)+Kr(e.display);return{left:r,right:r,top:i,bottom:i+n.height}}function xn(e,t,r,n,i){var o=ot(e,t,r);return o.xRel=i,n&&(o.outside=n),o}function Cn(e,t,r){var n=e.doc;if((r+=e.display.viewOffset)<0)return xn(n.first,0,null,-1,-1);var i=rt(n,r),o=n.first+n.size-1;if(i>o)return xn(n.first+n.size-1,Ze(n,o).text.length,null,1,1);t<0&&(t=0);for(var l=Ze(n,i);;){var a=Tn(e,l,i,t,r),s=qt(l,a.ch+(a.xRel>0||a.outside>0?1:0));if(!s)return a;var u=s.find(1);if(u.line==i)return u;l=Ze(n,i=u.line)}}function Sn(e,t,r,n){n-=gn(t);var i=t.text.length,o=se((function(t){return rn(e,r,t-1).bottom<=n}),i,0);return{begin:o,end:i=se((function(t){return rn(e,r,t).top>n}),o,i)}}function Ln(e,t,r,n){return r||(r=tn(e,t)),Sn(e,t,r,vn(e,t,rn(e,r,n),"line").top)}function kn(e,t,r,n){return!(e.bottom<=r)&&(e.top>r||(n?e.left:e.right)>t)}function Tn(e,t,r,n,i){i-=or(t);var o=tn(e,t),l=gn(t),a=0,s=t.text.length,u=!0,c=fe(t,e.doc.direction);if(c){var h=(e.options.lineWrapping?Nn:Mn)(e,t,r,o,c,n,i);a=(u=1!=h.level)?h.from:h.to-1,s=u?h.to:h.from-1}var d,f,p=null,g=null,v=se((function(t){var r=rn(e,o,t);return r.top+=l,r.bottom+=l,!!kn(r,n,i,!1)&&(r.top<=i&&r.left<=n&&(p=t,g=r),!0)}),a,s),m=!1;if(g){var y=n-g.left=w.bottom?1:0}return xn(r,v=ae(t.text,v,1),f,m,n-d)}function Mn(e,t,r,n,i,o,l){var a=se((function(a){var s=i[a],u=1!=s.level;return kn(bn(e,ot(r,u?s.to:s.from,u?"before":"after"),"line",t,n),o,l,!0)}),0,i.length-1),s=i[a];if(a>0){var u=1!=s.level,c=bn(e,ot(r,u?s.from:s.to,u?"after":"before"),"line",t,n);kn(c,o,l,!0)&&c.top>l&&(s=i[a-1])}return s}function Nn(e,t,r,n,i,o,l){var a=Sn(e,t,n,l),s=a.begin,u=a.end;/\s/.test(t.text.charAt(u-1))&&u--;for(var c=null,h=null,d=0;d=u||f.to<=s)){var p=rn(e,n,1!=f.level?Math.min(u,f.to)-1:Math.max(s,f.from)).right,g=pg)&&(c=f,h=g)}}return c||(c=i[i.length-1]),c.fromu&&(c={from:c.from,to:u,level:c.level}),c}function On(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==nn){nn=A("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)nn.appendChild(document.createTextNode("x")),nn.appendChild(A("br"));nn.appendChild(document.createTextNode("x"))}O(e.measure,nn);var r=nn.offsetHeight/50;return r>3&&(e.cachedTextHeight=r),N(e.measure),r||1}function An(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=A("span","xxxxxxxxxx"),r=A("pre",[t],"CodeMirror-line-like");O(e.measure,r);var n=t.getBoundingClientRect(),i=(n.right-n.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function Dn(e){for(var t=e.display,r={},n={},i=t.gutters.clientLeft,o=t.gutters.firstChild,l=0;o;o=o.nextSibling,++l){var a=e.display.gutterSpecs[l].className;r[a]=o.offsetLeft+o.clientLeft+i,n[a]=o.clientWidth}return{fixedPos:Wn(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:r,gutterWidth:n,wrapperWidth:t.wrapper.clientWidth}}function Wn(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function Hn(e){var t=On(e.display),r=e.options.lineWrapping,n=r&&Math.max(5,e.display.scroller.clientWidth/An(e.display)-3);return function(i){if(nr(e.doc,i))return 0;var o=0;if(i.widgets)for(var l=0;l0&&(s=Ze(e.doc,u.line).text).length==u.ch){var c=B(s,s.length,e.options.tabSize)-s.length;u=ot(u.line,Math.max(0,Math.round((o-_r(e.display).left)/An(e.display))-c))}return u}function En(e,t){if(t>=e.display.viewTo||(t-=e.display.viewFrom)<0)return null;for(var r=e.display.view,n=0;nt)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)At&&tr(e.doc,t)i.viewFrom?Bn(e):(i.viewFrom+=n,i.viewTo+=n);else if(t<=i.viewFrom&&r>=i.viewTo)Bn(e);else if(t<=i.viewFrom){var o=zn(e,r,r+n,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=n):Bn(e)}else if(r>=i.viewTo){var l=zn(e,t,t,-1);l?(i.view=i.view.slice(0,l.index),i.viewTo=l.lineN):Bn(e)}else{var a=zn(e,t,t,-1),s=zn(e,r,r+n,1);a&&s?(i.view=i.view.slice(0,a.index).concat(Cr(e,a.lineN,s.lineN)).concat(i.view.slice(s.index)),i.viewTo+=n):Bn(e)}var u=i.externalMeasured;u&&(r=i.lineN&&t=n.viewTo)){var o=n.view[En(e,t)];if(null!=o.node){var l=o.changes||(o.changes=[]);-1==G(l,r)&&l.push(r)}}}function Bn(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function zn(e,t,r,n){var i,o=En(e,t),l=e.display.view;if(!At||r==e.doc.first+e.doc.size)return{index:o,lineN:r};for(var a=e.display.viewFrom,s=0;s0){if(o==l.length-1)return null;i=a+l[o].size-t,o++}else i=a-t;t+=i,r+=i}for(;tr(e.doc,r)!=r;){if(o==(n<0?0:l.length-1))return null;r+=n*l[o-(n<0?1:0)].size,o+=n}return{index:o,lineN:r}}function Gn(e,t,r){var n=e.display;0==n.view.length||t>=n.viewTo||r<=n.viewFrom?(n.view=Cr(e,t,r),n.viewFrom=t):(n.viewFrom>t?n.view=Cr(e,t,n.viewFrom).concat(n.view):n.viewFromr&&(n.view=n.view.slice(0,En(e,r)))),n.viewTo=r}function Un(e){for(var t=e.display.view,r=0,n=0;n=e.display.viewTo||s.to().line0?l:e.defaultCharWidth())+"px"}if(n.other){var a=r.appendChild(A("div","\xa0","CodeMirror-cursor CodeMirror-secondarycursor"));a.style.display="",a.style.left=n.other.left+"px",a.style.top=n.other.top+"px",a.style.height=.85*(n.other.bottom-n.other.top)+"px"}}function _n(e,t){return e.top-t.top||e.left-t.left}function Xn(e,t,r){var n=e.display,o=e.doc,l=document.createDocumentFragment(),a=_r(e.display),s=a.left,u=Math.max(n.sizerWidth,Yr(e)-n.sizer.offsetLeft)-a.right,c="ltr"==o.direction;function h(e,t,r,n){t<0&&(t=0),t=Math.round(t),n=Math.round(n),l.appendChild(A("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px;\n top: "+t+"px; width: "+(null!==r&&void 0!==r?r:u-e)+"px;\n height: "+(n-t)+"px"))}function d(t,r,n){var l,a,d=Ze(o,t),f=d.text.length;function p(r,n){return yn(e,ot(t,r),"div",d,n)}function g(t,r,n){var i=Ln(e,d,null,t),o="ltr"==r==("after"==n)?"left":"right";return p("after"==n?i.begin:i.end-(/\s/.test(d.text.charAt(i.end-1))?2:1),o)[o]}i(p,"coords"),i(g,"wrapX");var v=fe(d,o.direction);return ue(v,r||0,null!==n&&void 0!==n?n:f,(function(e,t,i,o){var d="ltr"==i,m=p(e,d?"left":"right"),y=p(t-1,d?"right":"left"),b=null==r&&0==e,w=null==n&&t==f,x=0==o,C=!v||o==v.length-1;if(y.top-m.top<=3){var S=(c?w:b)&&C,L=(c?b:w)&&x?s:(d?m:y).left,k=S?u:(d?y:m).right;h(L,m.top,k-L,m.bottom)}else{var T,M,N,O;d?(T=c&&b&&x?s:m.left,M=c?u:g(e,i,"before"),N=c?s:g(t,i,"after"),O=c&&w&&C?u:y.right):(T=c?g(e,i,"before"):s,M=!c&&b&&x?u:m.right,N=!c&&w&&C?s:y.left,O=c?g(t,i,"after"):u),h(T,m.top,M-T,m.bottom),m.bottom0?t.blinker=setInterval((function(){e.hasFocus()||Qn(e),t.cursorDiv.style.visibility=(r=!r)?"":"hidden"}),e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function $n(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||Zn(e))}function qn(e){e.state.delayingBlurEvent=!0,setTimeout((function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&Qn(e))}),100)}function Zn(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(ye(e,"focus",e,t),e.state.focused=!0,F(e.display.wrapper,"CodeMirror-focused"),!e.curOp&&e.display.selForContextMenu!=e.doc.sel&&(e.display.input.reset(),u&&setTimeout((function(){return e.display.input.reset(!0)}),20)),e.display.input.receivedFocus()),Yn(e))}function Qn(e,t){e.state.delayingBlurEvent||(e.state.focused&&(ye(e,"blur",e,t),e.state.focused=!1,M(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout((function(){e.state.focused||(e.display.shift=!1)}),150))}function Jn(e){for(var t=e.display,r=t.lineDiv.offsetTop,n=Math.max(0,t.scroller.getBoundingClientRect().top),i=t.lineDiv.getBoundingClientRect().top,o=0,l=0;l.005||g<-.005)&&(ie.display.sizerWidth){var m=Math.ceil(d/An(e.display));m>e.display.maxLineLength&&(e.display.maxLineLength=m,e.display.maxLine=u.line,e.display.maxLineChanged=!0)}}}Math.abs(o)>2&&(t.scroller.scrollTop+=o)}function ei(e){if(e.widgets)for(var t=0;t=l&&(o=rt(t,or(Ze(t,s))-e.wrapper.clientHeight),l=s)}return{from:o,to:Math.max(l,o+1)}}function ri(e,t){if(!be(e,"scrollCursorIntoView")){var r=e.display,n=r.sizer.getBoundingClientRect(),i=null;if(t.top+n.top<0?i=!0:t.bottom+n.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!g){var o=A("div","\u200b",null,"position: absolute;\n top: "+(t.top-r.viewOffset-Kr(e.display))+"px;\n height: "+(t.bottom-t.top+Xr(e)+r.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}function ni(e,t,r,n){var i;null==n&&(n=0),!e.options.lineWrapping&&t==r&&(r="before"==t.sticky?ot(t.line,t.ch+1,"before"):t,t=t.ch?ot(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t);for(var o=0;o<5;o++){var l=!1,a=bn(e,t),s=r&&r!=t?bn(e,r):a,u=oi(e,i={left:Math.min(a.left,s.left),top:Math.min(a.top,s.top)-n,right:Math.max(a.left,s.left),bottom:Math.max(a.bottom,s.bottom)+n}),c=e.doc.scrollTop,h=e.doc.scrollLeft;if(null!=u.scrollTop&&(di(e,u.scrollTop),Math.abs(e.doc.scrollTop-c)>1&&(l=!0)),null!=u.scrollLeft&&(pi(e,u.scrollLeft),Math.abs(e.doc.scrollLeft-h)>1&&(l=!0)),!l)break}return i}function ii(e,t){var r=oi(e,t);null!=r.scrollTop&&di(e,r.scrollTop),null!=r.scrollLeft&&pi(e,r.scrollLeft)}function oi(e,t){var r=e.display,n=On(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:r.scroller.scrollTop,o=$r(e),l={};t.bottom-t.top>o&&(t.bottom=t.top+o);var a=e.doc.height+jr(r),s=t.topa-n;if(t.topi+o){var c=Math.min(t.top,(u?a:t.bottom)-o);c!=i&&(l.scrollTop=c)}var h=e.options.fixedGutter?0:r.gutters.offsetWidth,d=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:r.scroller.scrollLeft-h,f=Yr(e)-r.gutters.offsetWidth,p=t.right-t.left>f;return p&&(t.right=t.left+f),t.left<10?l.scrollLeft=0:t.leftf+d-3&&(l.scrollLeft=t.right+(p?0:10)-f),l}function li(e,t){null!=t&&(ci(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function ai(e){ci(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function si(e,t,r){(null!=t||null!=r)&&ci(e),null!=t&&(e.curOp.scrollLeft=t),null!=r&&(e.curOp.scrollTop=r)}function ui(e,t){ci(e),e.curOp.scrollToPos=t}function ci(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,hi(e,wn(e,t.from),wn(e,t.to),t.margin))}function hi(e,t,r,n){var i=oi(e,{left:Math.min(t.left,r.left),top:Math.min(t.top,r.top)-n,right:Math.max(t.right,r.right),bottom:Math.max(t.bottom,r.bottom)+n});si(e,i.scrollLeft,i.scrollTop)}function di(e,t){Math.abs(e.doc.scrollTop-t)<2||(r||Vi(e,{top:t}),fi(e,t,!0),r&&Vi(e),Pi(e,100))}function fi(e,t,r){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),(e.display.scroller.scrollTop!=t||r)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function pi(e,t,r,n){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),(!(r?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)||n)&&(e.doc.scrollLeft=t,Xi(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function gi(e){var t=e.display,r=t.gutters.offsetWidth,n=Math.round(e.doc.height+jr(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?r:0,docHeight:n,scrollHeight:n+Xr(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:r}}i(ln,"nodeAndOffsetInLineMap"),i(an,"getUsefulRect"),i(sn,"measureCharInner"),i(un,"maybeUpdateRectForZooming"),i(cn,"clearLineMeasurementCacheFor"),i(hn,"clearLineMeasurementCache"),i(dn,"clearCaches"),i(fn,"pageScrollX"),i(pn,"pageScrollY"),i(gn,"widgetTopHeight"),i(vn,"intoCoordSystem"),i(mn,"fromCoordSystem"),i(yn,"charCoords"),i(bn,"cursorCoords"),i(wn,"estimateCoords"),i(xn,"PosWithInfo"),i(Cn,"coordsChar"),i(Sn,"wrappedLineExtent"),i(Ln,"wrappedLineExtentChar"),i(kn,"boxIsAfter"),i(Tn,"coordsCharInner"),i(Mn,"coordsBidiPart"),i(Nn,"coordsBidiPartWrapped"),i(On,"textHeight"),i(An,"charWidth"),i(Dn,"getDimensions"),i(Wn,"compensateForHScroll"),i(Hn,"estimateHeight"),i(Fn,"estimateLineHeights"),i(Pn,"posFromMouse"),i(En,"findViewIndex"),i(In,"regChange"),i(Rn,"regLineChange"),i(Bn,"resetView"),i(zn,"viewCuttingPoint"),i(Gn,"adjustView"),i(Un,"countDirtyView"),i(Vn,"updateSelection"),i(Kn,"prepareSelection"),i(jn,"drawSelectionCursor"),i(_n,"cmpCoords"),i(Xn,"drawSelectionRange"),i(Yn,"restartBlink"),i($n,"ensureFocus"),i(qn,"delayBlurEvent"),i(Zn,"onFocus"),i(Qn,"onBlur"),i(Jn,"updateHeightsInViewport"),i(ei,"updateWidgetHeight"),i(ti,"visibleLines"),i(ri,"maybeScrollWindow"),i(ni,"scrollPosIntoView"),i(ii,"scrollIntoView"),i(oi,"calculateScrollPos"),i(li,"addToScrollTop"),i(ai,"ensureCursorVisible"),i(si,"scrollToCoords"),i(ui,"scrollToRange"),i(ci,"resolveScrollToPos"),i(hi,"scrollToCoordsRange"),i(di,"updateScrollTop"),i(fi,"setScrollTop"),i(pi,"setScrollLeft"),i(gi,"measureForScrollbars");var vi=i((function(e,t,r){this.cm=r;var n=this.vert=A("div",[A("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=A("div",[A("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");n.tabIndex=i.tabIndex=-1,e(n),e(i),ge(n,"scroll",(function(){n.clientHeight&&t(n.scrollTop,"vertical")})),ge(i,"scroll",(function(){i.clientWidth&&t(i.scrollLeft,"horizontal")})),this.checkedZeroWidth=!1,a&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")}),"NativeScrollbars");vi.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,r=e.scrollHeight>e.clientHeight+1,n=e.nativeBarWidth;if(r){this.vert.style.display="block",this.vert.style.bottom=t?n+"px":"0";var i=e.viewHeight-(t?n:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=r?n+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(r?n:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==n&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:r?n:0,bottom:t?n:0}},vi.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},vi.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},vi.prototype.zeroWidthHack=function(){var e=b&&!p?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new z,this.disableVert=new z},vi.prototype.enableZeroWidthBar=function(e,t,r){function n(){var i=e.getBoundingClientRect();("vert"==r?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=e?e.style.pointerEvents="none":t.set(1e3,n)}e.style.pointerEvents="auto",i(n,"maybeDisable"),t.set(1e3,n)},vi.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var mi=i((function(){}),"NullScrollbars");function yi(e,t){t||(t=gi(e));var r=e.display.barWidth,n=e.display.barHeight;bi(e,t);for(var i=0;i<4&&r!=e.display.barWidth||n!=e.display.barHeight;i++)r!=e.display.barWidth&&e.options.lineWrapping&&Jn(e),bi(e,gi(e)),r=e.display.barWidth,n=e.display.barHeight}function bi(e,t){var r=e.display,n=r.scrollbars.update(t);r.sizer.style.paddingRight=(r.barWidth=n.right)+"px",r.sizer.style.paddingBottom=(r.barHeight=n.bottom)+"px",r.heightForcer.style.borderBottom=n.bottom+"px solid transparent",n.right&&n.bottom?(r.scrollbarFiller.style.display="block",r.scrollbarFiller.style.height=n.bottom+"px",r.scrollbarFiller.style.width=n.right+"px"):r.scrollbarFiller.style.display="",n.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(r.gutterFiller.style.display="block",r.gutterFiller.style.height=n.bottom+"px",r.gutterFiller.style.width=t.gutterWidth+"px"):r.gutterFiller.style.display=""}mi.prototype.update=function(){return{bottom:0,right:0}},mi.prototype.setScrollLeft=function(){},mi.prototype.setScrollTop=function(){},mi.prototype.clear=function(){},i(yi,"updateScrollbars"),i(bi,"updateScrollbarsInner");var wi={native:vi,null:mi};function xi(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&M(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new wi[e.options.scrollbarStyle]((function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),ge(t,"mousedown",(function(){e.state.focused&&setTimeout((function(){return e.display.input.focus()}),0)})),t.setAttribute("cm-not-content","true")}),(function(t,r){"horizontal"==r?pi(e,t):di(e,t)}),e),e.display.scrollbars.addClass&&F(e.display.wrapper,e.display.scrollbars.addClass)}i(xi,"initScrollbars");var Ci=0;function Si(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Ci,markArrays:null},Lr(e.curOp)}function Li(e){var t=e.curOp;t&&Tr(t,(function(e){for(var t=0;t=r.viewTo)||r.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new Ii(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Mi(e){e.updatedDisplay=e.mustUpdate&&Gi(e.cm,e.update)}function Ni(e){var t=e.cm,r=t.display;e.updatedDisplay&&Jn(t),e.barMeasure=gi(t),r.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=Jr(t,r.maxLine,r.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(r.scroller.clientWidth,r.sizer.offsetLeft+e.adjustWidthTo+Xr(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,r.sizer.offsetLeft+e.adjustWidthTo-Yr(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=r.input.prepareSelection())}function Oi(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft=e.display.viewTo)){var r=+new Date+e.options.workTime,n=bt(e,t.highlightFrontier),i=[];t.iter(n.line,Math.min(t.first+t.size,e.display.viewTo+500),(function(o){if(n.line>=e.display.viewFrom){var l=o.styles,a=o.text.length>e.options.maxHighlightLength?Xe(t.mode,n.state):null,s=mt(e,o,n,!0);a&&(n.state=a),o.styles=s.styles;var u=o.styleClasses,c=s.classes;c?o.styleClasses=c:u&&(o.styleClasses=null);for(var h=!l||l.length!=o.styles.length||u!=c&&(!u||!c||u.bgClass!=c.bgClass||u.textClass!=c.textClass),d=0;!h&&dr)return Pi(e,e.options.workDelay),!0})),t.highlightFrontier=n.line,t.modeFrontier=Math.max(t.modeFrontier,n.line),i.length&&Di(e,(function(){for(var t=0;t=r.viewFrom&&t.visible.to<=r.viewTo&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo)&&r.renderedView==r.view&&0==Un(e))return!1;Yi(e)&&(Bn(e),t.dims=Dn(e));var i=n.first+n.size,o=Math.max(t.visible.from-e.options.viewportMargin,n.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);r.viewFroml&&r.viewTo-l<20&&(l=Math.min(i,r.viewTo)),At&&(o=tr(e.doc,o),l=rr(e.doc,l));var a=o!=r.viewFrom||l!=r.viewTo||r.lastWrapHeight!=t.wrapperHeight||r.lastWrapWidth!=t.wrapperWidth;Gn(e,o,l),r.viewOffset=or(Ze(e.doc,r.viewFrom)),e.display.mover.style.top=r.viewOffset+"px";var s=Un(e);if(!a&&0==s&&!t.force&&r.renderedView==r.view&&(null==r.updateLineNumbers||r.updateLineNumbers>=r.viewTo))return!1;var u=Bi(e);return s>4&&(r.lineDiv.style.display="none"),Ki(e,r.updateLineNumbers,t.dims),s>4&&(r.lineDiv.style.display=""),r.renderedView=r.view,zi(u),N(r.cursorDiv),N(r.selectionDiv),r.gutters.style.height=r.sizer.style.minHeight=0,a&&(r.lastWrapHeight=t.wrapperHeight,r.lastWrapWidth=t.wrapperWidth,Pi(e,400)),r.updateLineNumbers=null,!0}function Ui(e,t){for(var r=t.viewport,n=!0;;n=!1){if(n&&e.options.lineWrapping&&t.oldDisplayWidth!=Yr(e))n&&(t.visible=ti(e.display,e.doc,r));else if(r&&null!=r.top&&(r={top:Math.min(e.doc.height+jr(e.display)-$r(e),r.top)}),t.visible=ti(e.display,e.doc,r),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break;if(!Gi(e,t))break;Jn(e);var i=gi(e);Vn(e),yi(e,i),_i(e,i),t.force=!1}t.signal(e,"update",e),(e.display.viewFrom!=e.display.reportedViewFrom||e.display.viewTo!=e.display.reportedViewTo)&&(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Vi(e,t){var r=new Ii(e,t);if(Gi(e,r)){Jn(e),Ui(e,r);var n=gi(e);Vn(e),yi(e,n),_i(e,n),r.finish()}}function Ki(e,t,r){var n=e.display,o=e.options.lineNumbers,l=n.lineDiv,a=l.firstChild;function s(t){var r=t.nextSibling;return u&&b&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),r}i(s,"rm");for(var c=n.view,h=n.viewFrom,d=0;d-1&&(p=!1),Ar(e,f,h,r)),p&&(N(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(it(e.options,h)))),a=f.node.nextSibling}else{var g=Rr(e,f,h,r);l.insertBefore(g,a)}h+=f.size}for(;a;)a=s(a)}function ji(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",Nr(e,"gutterChanged",e)}function _i(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Xr(e)+"px"}function Xi(e){var t=e.display,r=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var n=Wn(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=n+"px",l=0;ls.clientWidth,h=s.scrollHeight>s.clientHeight;if(i&&c||o&&h){if(o&&b&&u)e:for(var f=t.target,p=a.view;f!=s;f=f.parentNode)for(var g=0;g=0&<(e,n.to())<=0)return r}return-1};var oo=i((function(e,t){this.anchor=e,this.head=t}),"Range");function lo(e,t,r){var n=e&&e.options.selectionsMayTouch,i=t[r];t.sort((function(e,t){return lt(e.from(),t.from())})),r=G(t,i);for(var o=1;o0:s>=0){var u=ct(a.from(),l.from()),c=ut(a.to(),l.to()),h=a.empty()?l.from()==l.head:a.from()==a.head;o<=r&&--r,t.splice(--o,2,new oo(h?c:u,h?u:c))}}return new io(t,r)}function ao(e,t){return new io([new oo(e,t||e)],0)}function so(e){return e.text?ot(e.from.line+e.text.length-1,q(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function uo(e,t){if(lt(e,t.from)<0)return e;if(lt(e,t.to)<=0)return so(t);var r=e.line+t.text.length-(t.to.line-t.from.line)-1,n=e.ch;return e.line==t.to.line&&(n+=so(t).ch-t.to.ch),ot(r,n)}function co(e,t){for(var r=[],n=0;n1&&e.remove(s.line+1,g-1),e.insert(s.line+1,y)}Nr(e,"change",e,t)}function yo(e,t,r){function n(e,i,o){if(e.linked)for(var l=0;l1&&!e.done[e.done.length-2].ranges?(e.done.pop(),q(e.done)):void 0}function To(e,t,r,n){var i=e.history;i.undone.length=0;var o,l,a=+new Date;if((i.lastOp==n||i.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&i.lastModTime>a-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(o=ko(i,i.lastOp==n)))l=q(o.changes),0==lt(t.from,t.to)&&0==lt(t.from,l.to)?l.to=so(t):o.changes.push(So(e,t));else{var s=q(i.done);for((!s||!s.ranges)&&Oo(e.sel,i.done),o={changes:[So(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(r),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=a,i.lastOp=i.lastSelOp=n,i.lastOrigin=i.lastSelOrigin=t.origin,l||ye(e,"historyAdded")}function Mo(e,t,r,n){var i=t.charAt(0);return"*"==i||"+"==i&&r.ranges.length==n.ranges.length&&r.somethingSelected()==n.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function No(e,t,r,n){var i=e.history,o=n&&n.origin;r==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||Mo(e,o,q(i.done),t))?i.done[i.done.length-1]=t:Oo(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=r,n&&!1!==n.clearRedo&&Lo(i.undone)}function Oo(e,t){var r=q(t);r&&r.ranges&&r.equals(e)||t.push(e)}function Ao(e,t,r,n){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,r),Math.min(e.first+e.size,n),(function(r){r.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=r.markedSpans),++o}))}function Do(e){if(!e)return null;for(var t,r=0;r-1&&(q(a)[h]=u[h],delete u[h])}}}return n}function Po(e,t,r,n){if(n){var i=e.anchor;if(r){var o=lt(t,i)<0;o!=lt(r,i)<0?(i=t,t=r):o!=lt(t,r)<0&&(t=r)}return new oo(i,t)}return new oo(r||t,t)}function Eo(e,t,r,n,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),Uo(e,new io([Po(e.sel.primary(),t,r,i)],0),n)}function Io(e,t,r){for(var n=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o=t.ch:a.to>t.ch))){if(i&&(ye(s,"beforeCursorEnter"),s.explicitlyCleared)){if(o.markedSpans){--l;continue}break}if(!s.atomic)continue;if(r){var h=s.find(n<0?1:-1),d=void 0;if((n<0?c:u)&&(h=$o(e,h,-n,h&&h.line==t.line?o:null)),h&&h.line==t.line&&(d=lt(h,r))&&(n<0?d<0:d>0))return Xo(e,h,t,n,i)}var f=s.find(n<0?-1:1);return(n<0?u:c)&&(f=$o(e,f,n,f.line==t.line?o:null)),f?Xo(e,f,t,n,i):null}}return t}function Yo(e,t,r,n,i){var o=n||1;return Xo(e,t,r,o,i)||!i&&Xo(e,t,r,o,!0)||Xo(e,t,r,-o,i)||!i&&Xo(e,t,r,-o,!0)||(e.cantEdit=!0,ot(e.first,0))}function $o(e,t,r,n){return r<0&&0==t.ch?t.line>e.first?dt(e,ot(t.line-1)):null:r>0&&t.ch==(n||Ze(e,t.line)).text.length?t.line=0;--i)Jo(e,{from:n[i].from,to:n[i].to,text:i?[""]:t.text,origin:t.origin});else Jo(e,t)}}function Jo(e,t){if(1!=t.text.length||""!=t.text[0]||0!=lt(t.from,t.to)){var r=co(e,t);To(e,t,r,e.cm?e.cm.curOp.id:NaN),rl(e,t,r,Bt(e,t));var n=[];yo(e,(function(e,r){!r&&-1==G(n,e.history)&&(al(e.history,t),n.push(e.history)),rl(e,t,null,Bt(e,t))}))}}function el(e,t,r){var n=e.cm&&e.cm.state.suppressEdits;if(!n||r){for(var o,l=e.history,a=e.sel,s="undo"==t?l.done:l.undone,u="undo"==t?l.undone:l.done,c=0;c=0;--p){var g=f(p);if(g)return g.v}}}}function tl(e,t){if(0!=t&&(e.first+=t,e.sel=new io(Z(e.sel.ranges,(function(e){return new oo(ot(e.anchor.line+t,e.anchor.ch),ot(e.head.line+t,e.head.ch))})),e.sel.primIndex),e.cm)){In(e.cm,e.first,e.first-t,t);for(var r=e.cm.display,n=r.viewFrom;ne.lastLine())){if(t.from.lineo&&(t={from:t.from,to:ot(o,Ze(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Qe(e,t.from,t.to),r||(r=co(e,t)),e.cm?nl(e.cm,t,n):mo(e,t,n),Vo(e,r,K),e.cantEdit&&Yo(e,ot(e.firstLine(),0))&&(e.cantEdit=!1)}}function nl(e,t,r){var n=e.doc,i=e.display,o=t.from,l=t.to,a=!1,s=o.line;e.options.lineWrapping||(s=tt(Qt(Ze(n,o.line))),n.iter(s,l.line+1,(function(e){if(e==i.maxLine)return a=!0,!0}))),n.sel.contains(t.from,t.to)>-1&&we(e),mo(n,t,r,Hn(e)),e.options.lineWrapping||(n.iter(s,o.line+t.text.length,(function(e){var t=lr(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,a=!1)})),a&&(e.curOp.updateMaxLine=!0)),Nt(n,o.line),Pi(e,400);var u=t.text.length-(l.line-o.line)-1;t.full?In(e):o.line!=l.line||1!=t.text.length||vo(e.doc,t)?In(e,o.line,l.line+1,u):Rn(e,o.line,"text");var c=xe(e,"changes"),h=xe(e,"change");if(h||c){var d={from:o,to:l,text:t.text,removed:t.removed,origin:t.origin};h&&Nr(e,"change",e,d),c&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(d)}e.display.selForContextMenu=null}function il(e,t,r,n,i){var o;n||(n=r),lt(n,r)<0&&(r=(o=[n,r])[0],n=o[1]),"string"==typeof t&&(t=e.splitLines(t)),Qo(e,{from:r,to:n,text:t,origin:i})}function ol(e,t,r,n){r1||!(this.children[0]instanceof ul))){var a=[];this.collapse(a),this.children=[new ul(a)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var l=i.lines.length%25+25,a=l;a10);e.parent.maybeSpill()}},iterN:function(e,t,r){for(var n=0;n0||0==l&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=D("span",[o.replacedWith],"CodeMirror-widget"),n.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),n.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Zt(e,t.line,t,r,o)||t.line!=r.line&&Zt(e,r.line,t,r,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");Wt()}o.addToHistory&&To(e,{from:t,to:r,origin:"markText"},e.sel,NaN);var a,s=t.line,u=e.cm;if(e.iter(s,r.line+1,(function(n){u&&o.collapsed&&!u.options.lineWrapping&&Qt(n)==u.display.maxLine&&(a=!0),o.collapsed&&s!=t.line&&et(n,0),Et(n,new Ht(o,s==t.line?t.ch:null,s==r.line?r.ch:null),e.cm&&e.cm.curOp),++s})),o.collapsed&&e.iter(t.line,r.line+1,(function(t){nr(e,t)&&et(t,0)})),o.clearOnEnter&&ge(o,"beforeCursorEnter",(function(){return o.clear()})),o.readOnly&&(Dt(),(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++pl,o.atomic=!0),u){if(a&&(u.curOp.updateMaxLine=!0),o.collapsed)In(u,t.line,r.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var c=t.line;c<=r.line;c++)Rn(u,c,"text");o.atomic&&jo(u.doc),Nr(u,"markerAdded",u,o)}return o}gl.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&Si(e),xe(this,"clear")){var r=this.find();r&&Nr(this,"clear",r.from,r.to)}for(var n=null,i=null,o=0;oe.display.maxLineLength&&(e.display.maxLine=u,e.display.maxLineLength=c,e.display.maxLineChanged=!0)}null!=n&&e&&this.collapsed&&In(e,n,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&jo(e.doc)),e&&Nr(e,"markerCleared",e,this,n,i),t&&Li(e),this.parent&&this.parent.clear()}},gl.prototype.find=function(e,t){null==e&&"bookmark"==this.type&&(e=1);for(var r,n,i=0;i=0;s--)Qo(this,n[s]);a?Go(this,a):this.cm&&ai(this.cm)})),undo:Fi((function(){el(this,"undo")})),redo:Fi((function(){el(this,"redo")})),undoSelection:Fi((function(){el(this,"undo",!0)})),redoSelection:Fi((function(){el(this,"redo",!0)})),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,r=0,n=0;n=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,r){e=dt(this,e),t=dt(this,t);var n=[],i=e.line;return this.iter(e.line,t.line+1,(function(o){var l=o.markedSpans;if(l)for(var a=0;a=s.to||null==s.from&&i!=e.line||null!=s.from&&i==t.line&&s.from>=t.ch)&&(!r||r(s.marker))&&n.push(s.marker.parent||s.marker)}++i})),n},getAllMarks:function(){var e=[];return this.iter((function(t){var r=t.markedSpans;if(r)for(var n=0;ne)return t=e,!0;e-=o,++r})),dt(this,ot(r,t))},indexFromPos:function(e){var t=(e=dt(this,e)).ch;if(e.linet&&(t=e.from),null!=e.to&&e.to-1)return t.state.draggingText(e),void setTimeout((function(){return t.display.input.focus()}),20);try{var d=e.dataTransfer.getData("Text");if(d){var f;if(t.state.draggingText&&!t.state.draggingText.copy&&(f=t.listSelections()),Vo(t.doc,ao(r,r)),f)for(var p=0;p=0;t--)il(e.doc,"",n[t].from,n[t].to,"+delete");ai(e)}))}function Xl(e,t,r){var n=ae(e.text,t+r,r);return n<0||n>e.text.length?null:n}function Yl(e,t,r){var n=Xl(e,t.ch,r);return null==n?null:new ot(t.line,n,r<0?"after":"before")}function $l(e,t,r,n,i){if(e){"rtl"==t.doc.direction&&(i=-i);var o=fe(r,t.doc.direction);if(o){var l,a=i<0?q(o):o[0],s=i<0==(1==a.level)?"after":"before";if(a.level>0||"rtl"==t.doc.direction){var u=tn(t,r);l=i<0?r.text.length-1:0;var c=rn(t,u,l).top;l=se((function(e){return rn(t,u,e).top==c}),i<0==(1==a.level)?a.from:a.to-1,l),"before"==s&&(l=Xl(r,l,1))}else l=i<0?a.to:a.from;return new ot(n,l,s)}}return new ot(n,i<0?r.text.length:0,i<0?"before":"after")}function ql(e,t,r,n){var o=fe(t,e.doc.direction);if(!o)return Yl(t,r,n);r.ch>=t.text.length?(r.ch=t.text.length,r.sticky="before"):r.ch<=0&&(r.ch=0,r.sticky="after");var l=he(o,r.ch,r.sticky),a=o[l];if("ltr"==e.doc.direction&&a.level%2==0&&(n>0?a.to>r.ch:a.from=a.from&&f>=h.begin)){var p=d?"before":"after";return new ot(r.line,f,p)}}var g=i((function(e,t,n){for(var l=i((function(e,t){return t?new ot(r.line,u(e,1),"before"):new ot(r.line,e,"after")}),"getRes");e>=0&&e0==(1!=a.level),c=s?n.begin:u(n.end,-1);if(a.from<=c&&c0?h.end:u(h.begin,-1);return null==m||n>0&&m==t.text.length||!(v=g(n>0?0:o.length-1,n,c(m)))?null:v}Rl.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Rl.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Rl.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Rl.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Rl.default=b?Rl.macDefault:Rl.pcDefault,i(Bl,"normalizeKeyName"),i(zl,"normalizeKeyMap"),i(Gl,"lookupKey"),i(Ul,"isModifierKey"),i(Vl,"addModifierNames"),i(Kl,"keyName"),i(jl,"getKeyMap"),i(_l,"deleteNearSelection"),i(Xl,"moveCharLogically"),i(Yl,"moveLogically"),i($l,"endOfLine"),i(ql,"moveVisually");var Zl={selectAll:qo,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),K)},killLine:function(e){return _l(e,(function(t){if(t.empty()){var r=Ze(e.doc,t.head.line).text.length;return t.head.ch==r&&t.head.line0)i=new ot(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),ot(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var l=Ze(e.doc,i.line-1).text;l&&(i=new ot(i.line,1),e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+l.charAt(l.length-1),ot(i.line-1,l.length-1),i,"+transpose"))}r.push(new oo(i,i))}e.setSelections(r)}))},newlineAndIndent:function(e){return Di(e,(function(){for(var t=e.listSelections(),r=t.length-1;r>=0;r--)e.replaceRange(e.doc.lineSeparator(),t[r].anchor,t[r].head,"+input");t=e.listSelections();for(var n=0;n-1&&(lt((i=l.ranges[i]).from(),t)<0||t.xRel>0)&&(lt(i.to(),t)>0||t.xRel<0)?Ca(e,n,t,o):La(e,n,t,o)}function Ca(e,t,r,n){var o=e.display,l=!1,c=Wi(e,(function(t){u&&(o.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:qn(e)),me(o.wrapper.ownerDocument,"mouseup",c),me(o.wrapper.ownerDocument,"mousemove",h),me(o.scroller,"dragstart",d),me(o.scroller,"drop",c),l||(Se(t),n.addNew||Eo(e.doc,r,null,null,n.extend),u&&!f||a&&9==s?setTimeout((function(){o.wrapper.ownerDocument.body.focus({preventScroll:!0}),o.input.focus()}),20):o.input.focus())})),h=i((function(e){l=l||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10}),"mouseMove"),d=i((function(){return l=!0}),"dragStart");u&&(o.scroller.draggable=!0),e.state.draggingText=c,c.copy=!n.moveOnDrag,ge(o.wrapper.ownerDocument,"mouseup",c),ge(o.wrapper.ownerDocument,"mousemove",h),ge(o.scroller,"dragstart",d),ge(o.scroller,"drop",c),e.state.delayingBlurEvent=!0,setTimeout((function(){return o.input.focus()}),20),o.scroller.dragDrop&&o.scroller.dragDrop()}function Sa(e,t,r){if("char"==r)return new oo(t,t);if("word"==r)return e.findWordAt(t);if("line"==r)return new oo(ot(t.line,0),dt(e.doc,ot(t.line+1,0)));var n=r(e,t);return new oo(n.from,n.to)}function La(e,t,r,n){a&&qn(e);var o=e.display,l=e.doc;Se(t);var s,u,c=l.sel,h=c.ranges;if(n.addNew&&!n.extend?(u=l.sel.contains(r),s=u>-1?h[u]:new oo(r,r)):(s=l.sel.primary(),u=l.sel.primIndex),"rectangle"==n.unit)n.addNew||(s=new oo(r,r)),r=Pn(e,t,!0,!0),u=-1;else{var d=Sa(e,r,n.unit);s=n.extend?Po(s,d.anchor,d.head,n.extend):d}n.addNew?-1==u?(u=h.length,Uo(l,lo(e,h.concat([s]),u),{scroll:!1,origin:"*mouse"})):h.length>1&&h[u].empty()&&"char"==n.unit&&!n.extend?(Uo(l,lo(e,h.slice(0,u).concat(h.slice(u+1)),0),{scroll:!1,origin:"*mouse"}),c=l.sel):Ro(l,u,s,j):(u=0,Uo(l,new io([s],0),j),c=l.sel);var f=r;function p(t){if(0!=lt(f,t))if(f=t,"rectangle"==n.unit){for(var i=[],o=e.options.tabSize,a=B(Ze(l,r.line).text,r.ch,o),h=B(Ze(l,t.line).text,t.ch,o),d=Math.min(a,h),p=Math.max(a,h),g=Math.min(r.line,t.line),v=Math.min(e.lastLine(),Math.max(r.line,t.line));g<=v;g++){var m=Ze(l,g).text,y=X(m,d,o);d==p?i.push(new oo(ot(g,y),ot(g,y))):m.length>y&&i.push(new oo(ot(g,y),ot(g,X(m,p,o))))}i.length||i.push(new oo(r,r)),Uo(l,lo(e,c.ranges.slice(0,u).concat(i),u),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b,w=s,x=Sa(e,t,n.unit),C=w.anchor;lt(x.anchor,C)>0?(b=x.head,C=ct(w.from(),x.anchor)):(b=x.anchor,C=ut(w.to(),x.head));var S=c.ranges.slice(0);S[u]=ka(e,new oo(dt(l,C),b)),Uo(l,lo(e,S,u),j)}}i(p,"extendTo");var g=o.wrapper.getBoundingClientRect(),v=0;function m(t){var r=++v,i=Pn(e,t,!0,"rectangle"==n.unit);if(i)if(0!=lt(i,f)){e.curOp.focus=H(),p(i);var a=ti(o,l);(i.line>=a.to||i.lineg.bottom?20:0;s&&setTimeout(Wi(e,(function(){v==r&&(o.scroller.scrollTop+=s,m(t))})),50)}}function y(t){e.state.selectingText=!1,v=1/0,t&&(Se(t),o.input.focus()),me(o.wrapper.ownerDocument,"mousemove",b),me(o.wrapper.ownerDocument,"mouseup",w),l.history.lastSelOrigin=null}i(m,"extend"),i(y,"done");var b=Wi(e,(function(e){0!==e.buttons&&Ne(e)?m(e):y(e)})),w=Wi(e,y);e.state.selectingText=w,ge(o.wrapper.ownerDocument,"mousemove",b),ge(o.wrapper.ownerDocument,"mouseup",w)}function ka(e,t){var r=t.anchor,n=t.head,i=Ze(e.doc,r.line);if(0==lt(r,n)&&r.sticky==n.sticky)return t;var o=fe(i);if(!o)return t;var l=he(o,r.ch,r.sticky),a=o[l];if(a.from!=r.ch&&a.to!=r.ch)return t;var s,u=l+(a.from==r.ch==(1!=a.level)?0:1);if(0==u||u==o.length)return t;if(n.line!=r.line)s=(n.line-r.line)*("ltr"==e.doc.direction?1:-1)>0;else{var c=he(o,n.ch,n.sticky),h=c-l||(n.ch-r.ch)*(1==a.level?-1:1);s=c==u-1||c==u?h<0:h>0}var d=o[u+(s?-1:0)],f=s==(1==d.level),p=f?d.from:d.to,g=f?"after":"before";return r.ch==p&&r.sticky==g?t:new oo(new ot(r.line,p,g),n)}function Ta(e,t,r,n){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch{return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;n&&Se(t);var l=e.display,a=l.lineDiv.getBoundingClientRect();if(o>a.bottom||!xe(e,r))return ke(t);o-=a.top-l.viewOffset;for(var s=0;s=i)return ye(e,r,e,rt(e.doc,o),e.display.gutterSpecs[s].className,t),ke(t)}}function Ma(e,t){return Ta(e,t,"gutterClick",!0)}function Na(e,t){Vr(e.display,t)||Oa(e,t)||be(e,t,"contextmenu")||L||e.display.input.onContextMenu(t)}function Oa(e,t){return!!xe(e,"gutterContextMenu")&&Ta(e,t,"gutterContextMenu",!1)}function Aa(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),dn(e)}va.prototype.compare=function(e,t,r){return this.time+ga>e&&0==lt(t,this.pos)&&r==this.button},i(ma,"clickRepeat"),i(ya,"onMouseDown"),i(ba,"handleMappedButton"),i(wa,"configureMouse"),i(xa,"leftButtonDown"),i(Ca,"leftButtonStartDrag"),i(Sa,"rangeForUnit"),i(La,"leftButtonSelect"),i(ka,"bidiSimplify"),i(Ta,"gutterEvent"),i(Ma,"clickInGutter"),i(Na,"onContextMenu"),i(Oa,"contextMenuInGutter"),i(Aa,"themeChanged");var Da={toString:function(){return"CodeMirror.Init"}},Wa={},Ha={};function Fa(e){var t=e.optionHandlers;function r(r,n,i,o){e.defaults[r]=n,i&&(t[r]=o?function(e,t,r){r!=Da&&i(e,t,r)}:i)}i(r,"option"),e.defineOption=r,e.Init=Da,r("value","",(function(e,t){return e.setValue(t)}),!0),r("mode",null,(function(e,t){e.doc.modeOption=t,po(e)}),!0),r("indentUnit",2,po,!0),r("indentWithTabs",!1),r("smartIndent",!0),r("tabSize",4,(function(e){go(e),dn(e),In(e)}),!0),r("lineSeparator",null,(function(e,t){if(e.doc.lineSep=t,t){var r=[],n=e.doc.first;e.doc.iter((function(e){for(var i=0;;){var o=e.text.indexOf(t,i);if(-1==o)break;i=o+t.length,r.push(ot(n,o))}n++}));for(var i=r.length-1;i>=0;i--)il(e.doc,t,r[i],ot(r[i].line,r[i].ch+t.length))}})),r("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,(function(e,t,r){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),r!=Da&&e.refresh()})),r("specialCharPlaceholder",gr,(function(e){return e.refresh()}),!0),r("electricChars",!0),r("inputStyle",y?"contenteditable":"textarea",(function(){throw new Error("inputStyle can not (yet) be changed in a running editor")}),!0),r("spellcheck",!1,(function(e,t){return e.getInputField().spellcheck=t}),!0),r("autocorrect",!1,(function(e,t){return e.getInputField().autocorrect=t}),!0),r("autocapitalize",!1,(function(e,t){return e.getInputField().autocapitalize=t}),!0),r("rtlMoveVisually",!x),r("wholeLineUpdateBefore",!0),r("theme","default",(function(e){Aa(e),Zi(e)}),!0),r("keyMap","default",(function(e,t,r){var n=jl(t),i=r!=Da&&jl(r);i&&i.detach&&i.detach(e,n),n.attach&&n.attach(e,i||null)})),r("extraKeys",null),r("configureMouse",null),r("lineWrapping",!1,Ea,!0),r("gutters",[],(function(e,t){e.display.gutterSpecs=$i(t,e.options.lineNumbers),Zi(e)}),!0),r("fixedGutter",!0,(function(e,t){e.display.gutters.style.left=t?Wn(e.display)+"px":"0",e.refresh()}),!0),r("coverGutterNextToScrollbar",!1,(function(e){return yi(e)}),!0),r("scrollbarStyle","native",(function(e){xi(e),yi(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)}),!0),r("lineNumbers",!1,(function(e,t){e.display.gutterSpecs=$i(e.options.gutters,t),Zi(e)}),!0),r("firstLineNumber",1,Zi,!0),r("lineNumberFormatter",(function(e){return e}),Zi,!0),r("showCursorWhenSelecting",!1,Vn,!0),r("resetSelectionOnContextMenu",!0),r("lineWiseCopyCut",!0),r("pasteLinesPerSelection",!0),r("selectionsMayTouch",!1),r("readOnly",!1,(function(e,t){"nocursor"==t&&(Qn(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)})),r("screenReaderLabel",null,(function(e,t){t=""===t?null:t,e.display.input.screenReaderLabelChanged(t)})),r("disableInput",!1,(function(e,t){t||e.display.input.reset()}),!0),r("dragDrop",!0,Pa),r("allowDropFileTypes",null),r("cursorBlinkRate",530),r("cursorScrollMargin",0),r("cursorHeight",1,Vn,!0),r("singleCursorHeightPerLine",!0,Vn,!0),r("workTime",100),r("workDelay",100),r("flattenSpans",!0,go,!0),r("addModeClass",!1,go,!0),r("pollInterval",100),r("undoDepth",200,(function(e,t){return e.doc.history.undoDepth=t})),r("historyEventDelay",1250),r("viewportMargin",10,(function(e){return e.refresh()}),!0),r("maxHighlightLength",1e4,go,!0),r("moveInputWithCursor",!0,(function(e,t){t||e.display.input.resetPosition()})),r("tabindex",null,(function(e,t){return e.display.input.getField().tabIndex=t||""})),r("autofocus",null),r("direction","ltr",(function(e,t){return e.doc.setDirection(t)}),!0),r("phrases",null)}function Pa(e,t,r){if(!t!=!(r&&r!=Da)){var n=e.display.dragFunctions,i=t?ge:me;i(e.display.scroller,"dragstart",n.start),i(e.display.scroller,"dragenter",n.enter),i(e.display.scroller,"dragover",n.over),i(e.display.scroller,"dragleave",n.leave),i(e.display.scroller,"drop",n.drop)}}function Ea(e){e.options.lineWrapping?(F(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(M(e.display.wrapper,"CodeMirror-wrap"),ar(e)),Fn(e),In(e),dn(e),setTimeout((function(){return yi(e)}),100)}function Ia(e,t){var r=this;if(!(this instanceof Ia))return new Ia(e,t);this.options=t=t?R(t):{},R(Wa,t,!1);var n=t.value;"string"==typeof n?n=new Sl(n,t.mode,null,t.lineSeparator,t.direction):t.mode&&(n.modeOption=t.mode),this.doc=n;var i=new Ia.inputStyles[t.inputStyle](this),o=this.display=new Qi(e,n,i,t);for(var l in o.wrapper.CodeMirror=this,Aa(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),xi(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new z,keySeq:null,specialChars:null},t.autofocus&&!y&&o.input.focus(),a&&s<11&&setTimeout((function(){return r.display.input.reset(!0)}),20),Ra(this),Dl(),Si(this),this.curOp.forceUpdate=!0,bo(this,n),t.autofocus&&!y||this.hasFocus()?setTimeout((function(){r.hasFocus()&&!r.state.focused&&Zn(r)}),20):Qn(this),Ha)Ha.hasOwnProperty(l)&&Ha[l](this,t[l],Da);Yi(this),t.finishInit&&t.finishInit(this);for(var c=0;c400}i(o,"finishTouch"),i(l,"isMouseLikeTouchEvent"),i(u,"farAway"),ge(t.scroller,"touchstart",(function(i){if(!be(e,i)&&!l(i)&&!Ma(e,i)){t.input.ensurePolled(),clearTimeout(r);var o=+new Date;t.activeTouch={start:o,moved:!1,prev:o-n.end<=300?n:null},1==i.touches.length&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}})),ge(t.scroller,"touchmove",(function(){t.activeTouch&&(t.activeTouch.moved=!0)})),ge(t.scroller,"touchend",(function(r){var n=t.activeTouch;if(n&&!Vr(t,r)&&null!=n.left&&!n.moved&&new Date-n.start<300){var i,l=e.coordsChar(t.activeTouch,"page");i=!n.prev||u(n,n.prev)?new oo(l,l):!n.prev.prev||u(n,n.prev.prev)?e.findWordAt(l):new oo(ot(l.line,0),dt(e.doc,ot(l.line+1,0))),e.setSelection(i.anchor,i.head),e.focus(),Se(r)}o()})),ge(t.scroller,"touchcancel",o),ge(t.scroller,"scroll",(function(){t.scroller.clientHeight&&(di(e,t.scroller.scrollTop),pi(e,t.scroller.scrollLeft,!0),ye(e,"scroll",e))})),ge(t.scroller,"mousewheel",(function(t){return no(e,t)})),ge(t.scroller,"DOMMouseScroll",(function(t){return no(e,t)})),ge(t.wrapper,"scroll",(function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0})),t.dragFunctions={enter:function(t){be(e,t)||Te(t)},over:function(t){be(e,t)||(Ml(e,t),Te(t))},start:function(t){return Tl(e,t)},drop:Wi(e,kl),leave:function(t){be(e,t)||Nl(e)}};var c=t.input.getField();ge(c,"keyup",(function(t){return ha.call(e,t)})),ge(c,"keydown",Wi(e,ua)),ge(c,"keypress",Wi(e,da)),ge(c,"focus",(function(t){return Zn(e,t)})),ge(c,"blur",(function(t){return Qn(e,t)}))}i(Fa,"defineOptions"),i(Pa,"dragDropChanged"),i(Ea,"wrappingChanged"),i(Ia,"CodeMirror"),Ia.defaults=Wa,Ia.optionHandlers=Ha,i(Ra,"registerEventHandlers");var Ba=[];function za(e,t,r,n){var i,o=e.doc;null==r&&(r="add"),"smart"==r&&(o.mode.indent?i=bt(e,t).state:r="prev");var l=e.options.tabSize,a=Ze(o,t),s=B(a.text,null,l);a.stateAfter&&(a.stateAfter=null);var u,c=a.text.match(/^\s*/)[0];if(n||/\S/.test(a.text)){if("smart"==r&&((u=o.mode.indent(i,a.text.slice(c.length),a.text))==V||u>150)){if(!n)return;r="prev"}}else u=0,r="not";"prev"==r?u=t>o.first?B(Ze(o,t-1).text,null,l):0:"add"==r?u=s+e.options.indentUnit:"subtract"==r?u=s-e.options.indentUnit:"number"==typeof r&&(u=s+r),u=Math.max(0,u);var h="",d=0;if(e.options.indentWithTabs)for(var f=Math.floor(u/l);f;--f)d+=l,h+="\t";if(dl,s=Fe(t),u=null;if(a&&n.ranges.length>1)if(Ga&&Ga.text.join("\n")==t){if(n.ranges.length%Ga.text.length==0){u=[];for(var c=0;c=0;d--){var f=n.ranges[d],p=f.from(),g=f.to();f.empty()&&(r&&r>0?p=ot(p.line,p.ch-r):e.state.overwrite&&!a?g=ot(g.line,Math.min(Ze(o,g.line).text.length,g.ch+q(s).length)):a&&Ga&&Ga.lineWise&&Ga.text.join("\n")==s.join("\n")&&(p=g=ot(p.line,0)));var v={from:p,to:g,text:u?u[d%u.length]:s,origin:i||(a?"paste":e.state.cutIncoming>l?"cut":"+input")};Qo(e.doc,v),Nr(e,"inputRead",e,v)}t&&!a&&ja(e,t),ai(e),e.curOp.updateInput<2&&(e.curOp.updateInput=h),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function Ka(e,t){var r=e.clipboardData&&e.clipboardData.getData("Text");if(r)return e.preventDefault(),!t.isReadOnly()&&!t.options.disableInput&&Di(t,(function(){return Va(t,r,0,null,"paste")})),!0}function ja(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var r=e.doc.sel,n=r.ranges.length-1;n>=0;n--){var i=r.ranges[n];if(!(i.head.ch>100||n&&r.ranges[n-1].head.line==i.head.line)){var o=e.getModeAt(i.head),l=!1;if(o.electricChars){for(var a=0;a-1){l=za(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(Ze(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=za(e,i.head.line,"smart"));l&&Nr(e,"electricInput",e,i.head.line)}}}function _a(e){for(var t=[],r=[],n=0;nr&&(za(this,i.head.line,e,!0),r=i.head.line,n==this.doc.sel.primIndex&&ai(this));else{var o=i.from(),l=i.to(),a=Math.max(r,o.line);r=Math.min(this.lastLine(),l.line-(l.ch?0:1))+1;for(var s=a;s0&&Ro(this.doc,n,new oo(o,u[n].to()),K)}}})),getTokenAt:function(e,t){return Lt(this,e,t)},getLineTokens:function(e,t){return Lt(this,ot(e),t,!0)},getTokenTypeAt:function(e){e=dt(this.doc,e);var t,r=yt(this,Ze(this.doc,e.line)),n=0,i=(r.length-1)/2,o=e.ch;if(0==o)t=r[2];else for(;;){var l=n+i>>1;if((l?r[2*l-1]:0)>=o)i=l;else{if(!(r[2*l+1]o&&(e=o,i=!0),n=Ze(this.doc,e)}else n=e;return vn(this,n,{top:0,left:0},t||"page",r||i).top+(i?this.doc.height-or(n):0)},defaultTextHeight:function(){return On(this.display)},defaultCharWidth:function(){return An(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,r,n,i){var o=this.display,l=(e=bn(this,dt(this.doc,e))).bottom,a=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),o.sizer.appendChild(t),"over"==n)l=e.top;else if("above"==n||"near"==n){var s=Math.max(o.wrapper.clientHeight,this.doc.height),u=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);("above"==n||e.bottom+t.offsetHeight>s)&&e.top>t.offsetHeight?l=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=s&&(l=e.bottom),a+t.offsetWidth>u&&(a=u-t.offsetWidth)}t.style.top=l+"px",t.style.left=t.style.right="","right"==i?(a=o.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?a=0:"middle"==i&&(a=(o.sizer.clientWidth-t.offsetWidth)/2),t.style.left=a+"px"),r&&ii(this,{left:a,top:l,right:a+t.offsetWidth,bottom:l+t.offsetHeight})},triggerOnKeyDown:Hi(ua),triggerOnKeyPress:Hi(da),triggerOnKeyUp:ha,triggerOnMouseDown:Hi(ya),execCommand:function(e){if(Zl.hasOwnProperty(e))return Zl[e].call(null,this)},triggerElectric:Hi((function(e){ja(this,e)})),findPosH:function(e,t,r,n){var i=1;t<0&&(i=-1,t=-t);for(var o=dt(this.doc,e),l=0;l0&&l(t.charAt(r-1));)--r;for(;n.5||this.options.lineWrapping)&&Fn(this),ye(this,"refresh",this)})),swapDoc:Hi((function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),bo(this,e),dn(this),this.display.input.reset(),si(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,Nr(this,"swapDoc",this,t),t})),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Ce(e),e.registerHelper=function(t,n,i){r.hasOwnProperty(t)||(r[t]=e[t]={_global:[]}),r[t][n]=i},e.registerGlobalHelper=function(t,n,i,o){e.registerHelper(t,n,o),r[t]._global.push({pred:i,val:o})}}function qa(e,t,r,n,o){var l=t,a=r,s=Ze(e,t.line),u=o&&"rtl"==e.direction?-r:r;function c(){var r=t.line+u;return!(r=e.first+e.size)&&(t=new ot(r,t.ch,t.sticky),s=Ze(e,r))}function h(i){var l;if("codepoint"==n){var a=s.text.charCodeAt(t.ch+(r>0?0:-1));if(isNaN(a))l=null;else{var h=r>0?a>=55296&&a<56320:a>=56320&&a<57343;l=new ot(t.line,Math.max(0,Math.min(s.text.length,t.ch+r*(h?2:1))),-r)}}else l=o?ql(e.cm,s,t,r):Yl(s,t,r);if(null==l){if(i||!c())return!1;t=$l(o,e.cm,s,t.line,u)}else t=l;return!0}if(i(c,"findNextLine"),i(h,"moveOnce"),"char"==n||"codepoint"==n)h();else if("column"==n)h(!0);else if("word"==n||"group"==n)for(var d=null,f="group"==n,p=e.cm&&e.cm.getHelper(t,"wordChars"),g=!0;!(r<0)||h(!g);g=!1){var v=s.text.charAt(t.ch)||"\n",m=ne(v,p)?"w":f&&"\n"==v?"n":!f||/\s/.test(v)?null:"p";if(f&&!g&&!m&&(m="s"),d&&d!=m){r<0&&(r=1,h(),t.sticky="after");break}if(m&&(d=m),r>0&&!h(!g))break}var y=Yo(e,t,l,a,!0);return at(l,y)&&(y.hitSide=!0),y}function Za(e,t,r,n){var i,o,l=e.doc,a=t.left;if("page"==n){var s=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),u=Math.max(s-.5*On(e.display),3);i=(r>0?t.bottom:t.top)+r*u}else"line"==n&&(i=r>0?t.bottom+3:t.top-3);for(;(o=Cn(e,a,i)).outside;){if(r<0?i<=0:i>=l.height){o.hitSide=!0;break}i+=5*r}return o}i(Ua,"setLastCopied"),i(Va,"applyTextInput"),i(Ka,"handlePaste"),i(ja,"triggerElectric"),i(_a,"copyableRanges"),i(Xa,"disableBrowserMagic"),i(Ya,"hiddenTextarea"),i($a,"addEditorMethods"),i(qa,"findPosH"),i(Za,"findPosV");var Qa=i((function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new z,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null}),"ContentEditableInput");function Ja(e,t){var r=en(e,t.line);if(!r||r.hidden)return null;var n=Ze(e.doc,t.line),i=Zr(r,n,t.line),o=fe(n,e.doc.direction),l="left";o&&(l=he(o,t.ch)%2?"right":"left");var a=ln(i.map,t.ch,l);return a.offset="right"==a.collapse?a.end:a.start,a}function es(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}function ts(e,t){return t&&(e.bad=!0),e}function rs(e,t,r,n,o){var l="",a=!1,s=e.doc.lineSeparator(),u=!1;function c(e){return function(t){return t.id==e}}function h(){a&&(l+=s,u&&(l+=s),a=u=!1)}function d(e){e&&(h(),l+=e)}function f(t){if(1==t.nodeType){var r=t.getAttribute("cm-text");if(r)return void d(r);var i,l=t.getAttribute("cm-marker");if(l){var p=e.findMarks(ot(n,0),ot(o+1,0),c(+l));return void(p.length&&(i=p[0].find(0))&&d(Qe(e.doc,i.from,i.to).join(s)))}if("false"==t.getAttribute("contenteditable"))return;var g=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(!/^br$/i.test(t.nodeName)&&0==t.textContent.length)return;g&&h();for(var v=0;v=t.display.viewTo||o.line=t.display.viewFrom&&Ja(t,i)||{node:s[0].measure.map[2],offset:0},c=o.linen.firstLine()&&(l=ot(l.line-1,Ze(n.doc,l.line-1).length)),a.ch==Ze(n.doc,a.line).text.length&&a.linei.viewTo-1)return!1;l.line==i.viewFrom||0==(e=En(n,l.line))?(t=tt(i.view[0].line),r=i.view[0].node):(t=tt(i.view[e].line),r=i.view[e-1].node.nextSibling);var s,u,c=En(n,a.line);if(c==i.view.length-1?(s=i.viewTo-1,u=i.lineDiv.lastChild):(s=tt(i.view[c+1].line)-1,u=i.view[c+1].node.previousSibling),!r)return!1;for(var h=n.doc.splitLines(rs(n,r,u,t,s)),d=Qe(n.doc,ot(t,0),ot(s,Ze(n.doc,s).text.length));h.length>1&&d.length>1;)if(q(h)==q(d))h.pop(),d.pop(),s--;else{if(h[0]!=d[0])break;h.shift(),d.shift(),t++}for(var f=0,p=0,g=h[0],v=d[0],m=Math.min(g.length,v.length);fl.ch&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)f--,p++;h[h.length-1]=y.slice(0,y.length-p).replace(/^\u200b+/,""),h[0]=h[0].slice(f).replace(/\u200b+$/,"");var x=ot(t,f),C=ot(s,d.length?q(d).length-p:0);return h.length>1||h[0]||lt(x,C)?(il(n.doc,h,x,C,"+input"),!0):void 0},Qa.prototype.ensurePolled=function(){this.forceCompositionEnd()},Qa.prototype.reset=function(){this.forceCompositionEnd()},Qa.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Qa.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout((function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()}),80))},Qa.prototype.updateFromDOM=function(){var e=this;(this.cm.isReadOnly()||!this.pollContent())&&Di(this.cm,(function(){return In(e.cm)}))},Qa.prototype.setUneditable=function(e){e.contentEditable="false"},Qa.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||Wi(this.cm,Va)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Qa.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},Qa.prototype.onContextMenu=function(){},Qa.prototype.resetPosition=function(){},Qa.prototype.needsContentAttribute=!0,i(Ja,"posToDOM"),i(es,"isInGutter"),i(ts,"badPos"),i(rs,"domTextBetween"),i(ns,"domToPos"),i(is,"locateNodeInLineView");var os=i((function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new z,this.hasSelection=!1,this.composing=null}),"TextareaInput");function ls(e,t){if((t=t?R(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var r=H();t.autofocus=r==e||null!=e.getAttribute("autofocus")&&r==document.body}function n(){e.value=s.getValue()}var o;if(i(n,"save"),e.form&&(ge(e.form,"submit",n),!t.leaveSubmitMethodAlone)){var l=e.form;o=l.submit;try{var a=l.submit=function(){n(),l.submit=o,l.submit(),l.submit=a}}catch{}}t.finishInit=function(r){r.save=n,r.getTextArea=function(){return e},r.toTextArea=function(){r.toTextArea=isNaN,n(),e.parentNode.removeChild(r.getWrapperElement()),e.style.display="",e.form&&(me(e.form,"submit",n),!t.leaveSubmitMethodAlone&&"function"==typeof e.form.submit&&(e.form.submit=o))}},e.style.display="none";var s=Ia((function(t){return e.parentNode.insertBefore(t,e.nextSibling)}),t);return s}function as(e){e.off=me,e.on=ge,e.wheelEventPixels=ro,e.Doc=Sl,e.splitLines=Fe,e.countColumn=B,e.findColumn=X,e.isWordChar=re,e.Pass=V,e.signal=ye,e.Line=sr,e.changeEnd=so,e.scrollbarModel=wi,e.Pos=ot,e.cmpPos=lt,e.modes=Be,e.mimeModes=ze,e.resolveMode=Ve,e.getMode=Ke,e.modeExtensions=je,e.extendMode=_e,e.copyState=Xe,e.startState=$e,e.innerMode=Ye,e.commands=Zl,e.keyMap=Rl,e.keyName=Kl,e.isModifierKey=Ul,e.lookupKey=Gl,e.normalizeKeyMap=zl,e.StringStream=qe,e.SharedTextMarker=ml,e.TextMarker=gl,e.LineWidget=hl,e.e_preventDefault=Se,e.e_stopPropagation=Le,e.e_stop=Te,e.addClass=F,e.contains=W,e.rmClass=M,e.keyNames=Fl}os.prototype.init=function(e){var t=this,r=this,n=this.cm;this.createField(e);var o=this.textarea;function l(e){if(!be(n,e)){if(n.somethingSelected())Ua({lineWise:!1,text:n.getSelections()});else{if(!n.options.lineWiseCopyCut)return;var t=_a(n);Ua({lineWise:!0,text:t.text}),"cut"==e.type?n.setSelections(t.ranges,null,K):(r.prevInput="",o.value=t.text.join("\n"),E(o))}"cut"==e.type&&(n.state.cutIncoming=+new Date)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),v&&(o.style.width="0px"),ge(o,"input",(function(){a&&s>=9&&t.hasSelection&&(t.hasSelection=null),r.poll()})),ge(o,"paste",(function(e){be(n,e)||Ka(e,n)||(n.state.pasteIncoming=+new Date,r.fastPoll())})),i(l,"prepareCopyCut"),ge(o,"cut",l),ge(o,"copy",l),ge(e.scroller,"paste",(function(t){if(!Vr(e,t)&&!be(n,t)){if(!o.dispatchEvent)return n.state.pasteIncoming=+new Date,void r.focus();var i=new Event("paste");i.clipboardData=t.clipboardData,o.dispatchEvent(i)}})),ge(e.lineSpace,"selectstart",(function(t){Vr(e,t)||Se(t)})),ge(o,"compositionstart",(function(){var e=n.getCursor("from");r.composing&&r.composing.range.clear(),r.composing={start:e,range:n.markText(e,n.getCursor("to"),{className:"CodeMirror-composing"})}})),ge(o,"compositionend",(function(){r.composing&&(r.poll(),r.composing.range.clear(),r.composing=null)}))},os.prototype.createField=function(e){this.wrapper=Ya(),this.textarea=this.wrapper.firstChild},os.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},os.prototype.prepareSelection=function(){var e=this.cm,t=e.display,r=e.doc,n=Kn(e);if(e.options.moveInputWithCursor){var i=bn(e,r.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),l=t.lineDiv.getBoundingClientRect();n.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+l.top-o.top)),n.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+l.left-o.left))}return n},os.prototype.showSelection=function(e){var t=this.cm.display;O(t.cursorDiv,e.cursors),O(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},os.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var r=t.getSelection();this.textarea.value=r,t.state.focused&&E(this.textarea),a&&s>=9&&(this.hasSelection=r)}else e||(this.prevInput=this.textarea.value="",a&&s>=9&&(this.hasSelection=null))}},os.prototype.getField=function(){return this.textarea},os.prototype.supportsTouch=function(){return!1},os.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!y||H()!=this.textarea))try{this.textarea.focus()}catch{}},os.prototype.blur=function(){this.textarea.blur()},os.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},os.prototype.receivedFocus=function(){this.slowPoll()},os.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,(function(){e.poll(),e.cm.state.focused&&e.slowPoll()}))},os.prototype.fastPoll=function(){var e=!1,t=this;function r(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,r))}t.pollingFast=!0,i(r,"p"),t.polling.set(20,r)},os.prototype.poll=function(){var e=this,t=this.cm,r=this.textarea,n=this.prevInput;if(this.contextMenuPending||!t.state.focused||Pe(r)&&!n&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=r.value;if(i==n&&!t.somethingSelected())return!1;if(a&&s>=9&&this.hasSelection===i||b&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203==o&&!n&&(n="\u200b"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var l=0,u=Math.min(n.length,i.length);l1e3||i.indexOf("\n")>-1?r.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))})),!0},os.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},os.prototype.onKeyPress=function(){a&&s>=9&&(this.hasSelection=null),this.fastPoll()},os.prototype.onContextMenu=function(e){var t=this,r=t.cm,n=r.display,o=t.textarea;t.contextMenuPending&&t.contextMenuPending();var l=Pn(r,e),c=n.scroller.scrollTop;if(l&&!d){r.options.resetSelectionOnContextMenu&&-1==r.doc.sel.contains(l)&&Wi(r,Uo)(r.doc,ao(l),K);var h,f=o.style.cssText,p=t.wrapper.style.cssText,g=t.wrapper.offsetParent.getBoundingClientRect();if(t.wrapper.style.cssText="position: static",o.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-g.top-5)+"px; left: "+(e.clientX-g.left-5)+"px;\n z-index: 1000; background: "+(a?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",u&&(h=window.scrollY),n.input.focus(),u&&window.scrollTo(null,h),n.input.reset(),r.somethingSelected()||(o.value=t.prevInput=" "),t.contextMenuPending=y,n.selForContextMenu=r.doc.sel,clearTimeout(n.detectingSelectAll),i(m,"prepareSelectAllHack"),i(y,"rehide"),a&&s>=9&&m(),L){Te(e);var v=i((function(){me(window,"mouseup",v),setTimeout(y,20)}),"mouseup");ge(window,"mouseup",v)}else setTimeout(y,50)}function m(){if(null!=o.selectionStart){var e=r.somethingSelected(),i="\u200b"+(e?o.value:"");o.value="\u21da",o.value=i,t.prevInput=e?"":"\u200b",o.selectionStart=1,o.selectionEnd=i.length,n.selForContextMenu=r.doc.sel}}function y(){if(t.contextMenuPending==y&&(t.contextMenuPending=!1,t.wrapper.style.cssText=p,o.style.cssText=f,a&&s<9&&n.scrollbars.setScrollTop(n.scroller.scrollTop=c),null!=o.selectionStart)){(!a||a&&s<9)&&m();var e=0,l=i((function(){n.selForContextMenu==r.doc.sel&&0==o.selectionStart&&o.selectionEnd>0&&"\u200b"==t.prevInput?Wi(r,qo)(r):e++<10?n.detectingSelectAll=setTimeout(l,500):(n.selForContextMenu=null,n.input.reset())}),"poll");n.detectingSelectAll=setTimeout(l,200)}}},os.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e,this.textarea.readOnly=!!e},os.prototype.setUneditable=function(){},os.prototype.needsContentAttribute=!1,i(ls,"fromTextArea"),i(as,"addLegacyProps"),Fa(Ia),$a(Ia);var ss="iter insert remove copy getEditor constructor".split(" ");for(var us in Sl.prototype)Sl.prototype.hasOwnProperty(us)&&G(ss,us)<0&&(Ia.prototype[us]=function(e){return function(){return e.apply(this.doc,arguments)}}(Sl.prototype[us]));return Ce(Sl),Ia.inputStyles={textarea:os,contenteditable:Qa},Ia.defineMode=function(e){!Ia.defaults.mode&&"null"!=e&&(Ia.defaults.mode=e),Ge.apply(this,arguments)},Ia.defineMIME=Ue,Ia.defineMode("null",(function(){return{token:function(e){return e.skipToEnd()}}})),Ia.defineMIME("text/plain","null"),Ia.defineExtension=function(e,t){Ia.prototype[e]=t},Ia.defineDocExtension=function(e,t){Sl.prototype[e]=t},Ia.fromTextArea=ls,as(Ia),Ia.version="5.65.3",Ia}()),a.exports}i(s,"requireCodemirror")}}]); +//# sourceMappingURL=308.5daf2292.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/308.5daf2292.chunk.js.map b/serv/web/build/static/js/308.5daf2292.chunk.js.map new file mode 100644 index 00000000..1a2cbfc2 --- /dev/null +++ b/serv/web/build/static/js/308.5daf2292.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/308.5daf2292.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/lib/codemirror.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput)\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.3\";\n\n return CodeMirror;\n\n})));\n"],"names":["exports","ie","navigator","userAgent","Lr","platform","Fe","test","Nn","An","exec","kr","O","I","document","documentMode","ne","_o","Tr","we","Mr","vendor","Xo","Yo","Ut","maxTouchPoints","Dr","Kt","me","qo","Zo","et","match","Number","On","ci","mt","e","RegExp","u","rt","tt","t","i","className","r","n","slice","index","length","Ue","childNodes","removeChild","firstChild","ve","appendChild","T","createElement","style","cssText","createTextNode","l","bt","setAttribute","Ke","nodeType","parentNode","contains","host","be","activeElement","body","shadowRoot","it","di","split","createRange","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","_t","select","pi","Array","prototype","call","arguments","apply","nt","hasOwnProperty","xe","search","o","a","indexOf","selectionStart","selectionEnd","value","_e","this","id","f","time","handler","onTimeout","ee","Date","setTimeout","set","clearTimeout","Wn","Nr","toString","Me","scroll","vi","origin","Xt","gi","Math","min","Ar","yi","push","H","Or","Qo","splice","Hn","Fn","Object","create","Jo","mi","toUpperCase","toLowerCase","Wr","source","Pn","jo","bi","charCodeAt","En","charAt","Yt","ceil","floor","Vo","from","to","max","level","qt","Zt","_r2","$o","s","h","c","p","d","v","g","m","b","C","x","w","k","L","A","E","j","B","pe","fe","_","he","$","Y","X","z","zt","$e","We","re","V","kn","Ge","gt","yt","oe","Gt","unshift","reverse","Pe","order","text","In","M","addEventListener","attachEvent","_handlers","concat","xi","ge","removeEventListener","detachEvent","U","q","type","preventDefault","defaultPrevented","Ci","codemirrorIgnore","Rn","cursorActivity","curOp","cursorActivityHandlers","Ce","xt","on","off","ae","returnValue","Bn","stopPropagation","cancelBubble","Qt","wi","target","srcElement","zn","which","button","ctrlKey","Si","Li","ea","ta","offsetHeight","offsetWidth","ra","getBoundingClientRect","left","right","ki","ia","window","getSelection","ownerDocument","selection","parentElement","compareEndPoints","na","oncopy","Ti","la","abs","Mi","Ct","oa","dependencies","aa","Hr","name","Di","wt","helperType","modeProps","sa","lt","copyState","Ni","innerMode","mode","state","Gn","startState","K","pos","start","string","tabSize","lastColumnPos","lastColumnValue","lineStart","lineOracle","S","first","size","Error","lines","children","chunkSize","ot","line","iter","ch","Ai","De","height","parent","F","at","Jt","Oi","String","lineNumberFormatter","firstLineNumber","y","sticky","D","Wi","Hi","Fr","Pr","Un","N","ua","Kn","eol","sol","peek","next","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","substr","current","hideFirstChars","lookAhead","baseToken","Er","Ne","doc","maxLookAhead","baseTokens","baseTokenPos","_n","modeGen","Jn","overlays","opaque","styles","classes","bgClass","textClass","Xn","jt","options","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","display","fa","fromSaved","Fi","viewFrom","viewTo","nextLine","Yn","Pi","blankLine","token","getLine","replace","qn","end","Zn","Qn","flattenSpans","addModeClass","ha","jn","Ee","ca","da","Ir","marker","Vt","pa","va","WeakSet","markedSpans","has","add","attachLine","ga","inclusiveLeft","insertLeft","inclusiveRight","ya","Ei","full","Vn","clearWhenEmpty","ma","readOnly","find","$n","detachLine","el","Rr","Br","Ii","tl","collapsed","rl","zr","ba","il","Se","xa","Ca","Ri","nl","lastLine","Xe","widgetNode","Bi","Ie","Gr","zi","maxLine","maxLineLength","maxLineChanged","St","wa","Sa","lineNo","La","ka","ll","ol","pre","content","col","cm","trailingSpace","splitSpaces","getOption","measure","rest","addToken","Ma","direction","Na","map","Aa","externalMeasured","cache","maps","caches","lastChild","querySelector","Ta","title","Da","specialChars","createDocumentFragment","lastIndex","specialCharPlaceholder","al","input","needsContentAttribute","setUneditable","css","startStyle","endStyle","attributes","sl","node","hidden","Ur","Lt","Oa","ops","ownsGroup","delayedCallbacks","Wa","cursorActivityCalled","Ha","$t","Z","Fa","ul","changes","Ea","hl","Gi","Ia","er","replaceChild","zIndex","Pa","background","insertBefore","fl","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","lineNumber","gutterLeft","lineNumInnerWidth","gutterSpecs","gutterWidth","alignable","nextSibling","cl","Ra","dl","widgets","handleMouseEvents","Ba","above","noHScroll","wrapperWidth","coverGutter","paddingLeft","width","position","marginLeft","tr","gutters","wrapper","clientWidth","Re","getAttribute","sizer","mover","Kr","lineSpace","offsetTop","Ui","pl","cachedPaddingH","getComputedStyle","currentStyle","parseInt","paddingRight","isNaN","Ae","nativeBarWidth","st","scroller","barWidth","Ki","clientHeight","barHeight","za","lineWrapping","heights","getClientRects","bottom","top","vl","before","Ga","lineN","lineMeasure","gl","Oe","kt","_i","view","ht","Qi","forceUpdate","rect","hasHeights","Ka","bogus","rtop","rbottom","ut","yl","ml","coverStart","coverEnd","Ua","_a","Mt","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","logicalYDPI","deviceYDPI","bl","xl","externalMeasure","rr","cachedCharWidth","cachedTextHeight","lineNumChars","Cl","pageXOffset","documentElement","scrollLeft","wl","marginTop","pageYOffset","scrollTop","Xi","_r","viewOffset","Sl","Xr","Le","other","Ll","Yi","xRel","outside","qi","Xa","kl","begin","Tl","Zi","qa","Ya","Tt","clientLeft","offsetLeft","Ji","Ml","ji","ft","clientX","clientY","round","se","updateLineNumbers","viewChanged","qe","Yr","Ye","Za","Dl","ir","showSelection","prepareSelection","Nl","cursors","$customCursor","sel","ranges","primIndex","empty","Vi","showCursorWhenSelecting","head","Qa","cursorHeight","getWrapperElement","defaultCharWidth","qr","sizerWidth","ce","Tn","$i","focused","clearInterval","blinker","cursorDiv","visibility","cursorBlinkRate","setInterval","hasFocus","Dt","Al","focus","tn","en","delayingBlurEvent","draggingText","selForContextMenu","reset","receivedFocus","shift","Zr","lineDiv","Ol","Qr","ensure","Ja","innerHeight","scrollIntoView","ja","rn","lr","ct","Va","nn","Jr","Nt","getCursor","scrollToPos","margin","cursorScrollMargin","nr","$a","Wl","Hl","sr","scrollHeight","scrollbars","setScrollTop","scrollWidth","Rl","setScrollLeft","or","viewHeight","viewWidth","barLeft","docHeight","dt","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","update","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","elementFromPoint","clear","ar","At","Fl","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","Pl","native","null","El","addClass","scrollbarStyle","es","pt","startHeight","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","markArrays","vt","ts","rs","is","ns","ls","os","ss","mustUpdate","jr","updatedDisplay","ln","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","sn","Il","wheelStartX","wheelStartY","forceScroll","maybeHiddenMarkers","maybeUnhiddenMarkers","finish","de","Q","le","J","highlight","as","workTime","workDelay","viewport","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","force","dims","events","scrollbarsClipped","marginBottom","borderRightWidth","us","activeElt","anchorNode","extend","anchorOffset","focusNode","focusOffset","fs","nodeName","removeAllRanges","addRange","renderedView","Bl","viewportMargin","lastWrapHeight","lastWrapWidth","hs","selectionDiv","signal","reportedViewFrom","reportedViewTo","currentWheelTarget","an","alignWidgets","lineGutter","lineNumWidth","un","zl","ur","cs","draggable","wheelDX","wheelDY","activeTouch","init","Vr","Be","Gl","wheelDeltaX","wheelDeltaY","detail","axis","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","ds","Ul","deltaMode","deltaX","deltaY","ye","primary","equals","anchor","deepCopy","W","somethingSelected","ke","selectionsMayTouch","sort","Ze","Qe","Kl","fn","_l","ps","hn","modeOption","fr","Xl","wholeLineUpdateBefore","cn","insert","remove","Je","linked","sharedHist","Yl","ql","vs","$r","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","dn","Jl","Zl","pop","gs","Ql","history","historyEventDelay","ei","ys","ms","clearRedo","bs","explicitlyCleared","xs","jl","Ot","pn","ti","te","Vl","vn","$l","Cs","eo","ri","NaN","bias","io","ro","ii","Wt","selectLeft","selectRight","atomic","no","cantEdit","lo","setSelection","firstLine","oo","canceled","cancel","Ht","suppressEdits","ao","hr","ho","ni","so","removed","ws","Ft","splitLines","uo","fo","copied","cr","dr","pr","removeInner","insertInner","iterN","maybeSpill","vr","co","Ss","insertAt","changed","po","je","Pt","shared","Ls","replacedWith","addToHistory","clearOnEnter","clearHistory","gr","markers","cloneNode","isParent","vo","findMarks","clipPos","ks","Ts","Ms","ue","cleanGeneration","lineSep","constructor","getValue","join","lineSeparator","setValue","replaceRange","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelection","extendSelections","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","replaceSelections","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","isClean","getHistory","setHistory","setGutterMarker","clearGutter","lineInfo","handle","addLineClass","removeLineClass","addLineWidget","removeLineWidget","markText","setBookmark","widget","findMarksAt","getAllMarks","posFromIndex","indexFromPos","copy","linkedDoc","unlinkDoc","R","iterLinkedDocs","getMode","getEditor","setDirection","eachLine","go","Ds","yo","dataTransfer","files","isReadOnly","FileReader","File","filter","allowDropFileTypes","onerror","onload","result","readAsText","getData","Ns","setData","effectAllowed","setDragImage","src","_top","As","dragCursor","mo","getElementsByClassName","CodeMirror","operation","bo","Os","Ws","Hs","setSize","Ve","yr","li","fromCharCode","mr","ze","Fs","Ps","Et","oi","fallthrough","xo","keyCode","Co","altKey","metaKey","shiftKey","wo","char","altGraphKey","code","It","gn","yn","mn","Es","basic","Left","Right","Up","Down","End","Home","PageUp","PageDown","Delete","Backspace","Tab","Enter","Insert","Esc","pcDefault","emacsy","macDefault","default","br","selectAll","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","charCoords","coordsChar","delWrappedLineRight","goDocStart","goDocEnd","goLineStart","So","goLineStartSmart","Lo","goLineEnd","Is","goLineRight","cursorCoords","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","defaultTab","execCommand","transposeChars","newlineAndIndent","indentLine","openLine","toggleOverwrite","ai","ensurePolled","Rs","keyMaps","extraKeys","keyMap","Bs","xr","keySeq","ko","To","motion","zs","bn","Mo","getField","Gs","Do","No","charCode","onKeyPress","Cr","wr","Us","xn","Ks","compare","Ao","supportsTouch","Cn","selectingText","_s","Ys","onContextMenu","Xs","unit","addNew","moveOnDrag","dragDrop","qs","Zs","preventScroll","Oo","findWordAt","Qs","buttons","Wo","touches","Ho","Js","Fo","theme","Rt","Po","si","js","optionHandlers","defaults","defineOption","Init","refresh","getInputField","spellcheck","autocorrect","autocapitalize","detach","attach","$s","blur","readOnlyChanged","screenReaderLabelChanged","Vs","resetPosition","dragFunctions","enter","over","leave","drop","inputStyles","inputStyle","overwrite","pasteIncoming","cutIncoming","autofocus","eu","finishInit","wn","textRendering","radiusX","radiusY","moved","prev","pageX","pageY","Sr","indent","indentUnit","indentWithTabs","defineInitHook","Te","ui","Sn","pasteLinesPerSelection","lineWise","Io","Eo","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","Ro","Bo","zo","border","tu","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","priority","removeOverlay","getTokenAt","getLineTokens","getTokenTypeAt","getHelper","getHelpers","_global","pred","val","getStateAfter","_r3","lineAtHeight","heightAtLine","defaultTextHeight","getViewport","addWidget","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","triggerElectric","findPosH","Ln","hitSide","rtlMoveVisually","findPosV","Go","goalColumn","scrollTo","getScrollInfo","startOperation","endOperation","swapDoc","phrase","phrases","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","P","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","Uo","offset","ru","Bt","bad","iu","textContent","nodeValue","fi","nu","previousSibling","div","lineWiseCopyCut","clearData","showPrimarySelection","contentEditable","updateFromDOM","data","readFromDOMSoon","forceCompositionEnd","removeAttribute","showMultipleSelections","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","pollSelection","pollInterval","pollContent","G","prevInput","pollingFast","hasSelection","lu","tabindex","placeholder","form","leaveSubmitMethodAlone","submit","getTextArea","toTextArea","ou","wheelEventPixels","Doc","countColumn","findColumn","isWordChar","Pass","Line","changeEnd","scrollbarModel","Pos","cmpPos","modes","mimeModes","resolveMode","modeExtensions","extendMode","commands","keyName","isModifierKey","lookupKey","normalizeKeyMap","StringStream","SharedTextMarker","TextMarker","LineWidget","e_preventDefault","e_stopPropagation","e_stop","rmClass","keyNames","createField","textarea","poll","fastPoll","dispatchEvent","Event","range","moveInputWithCursor","teTop","teLeft","contextMenuPending","slowPoll","resetSelectionOnContextMenu","offsetParent","scrollY","detectingSelectAll","disabled","au","hi","contenteditable","defineMode","defineMIME","defineExtension","defineDocExtension","fromTextArea","version"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/308.d593a087.chunk.js b/serv/web/build/static/js/308.d593a087.chunk.js deleted file mode 100644 index e2db2913..00000000 --- a/serv/web/build/static/js/308.d593a087.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[308],{8308:function(e,t,n){n.d(t,{g:function(){return o},r:function(){return s}});var r=Object.defineProperty,i=function(e,t){return r(e,"name",{value:t,configurable:!0})};typeof globalThis<"u"?globalThis:typeof window<"u"?window:typeof n.g<"u"?n.g:typeof self<"u"&&self;function o(e){return e&&e.__esModule&&Object.prototype.hasOwnProperty.call(e,"default")?e.default:e}i(o,"getDefaultExportFromCjs");var l,a={exports:{}};function s(){return l||(l=1,a.exports=function(){var e=navigator.userAgent,t=navigator.platform,n=/gecko\/\d/i.test(e),r=/MSIE \d/.test(e),o=/Trident\/(?:[7-9]|\d{2,})\..*rv:(\d+)/.exec(e),l=/Edge\/(\d+)/.exec(e),a=r||o||l,s=a&&(r?document.documentMode||6:+(l||o)[1]),u=!l&&/WebKit\//.test(e),c=u&&/Qt\/\d+\.\d+/.test(e),h=!l&&/Chrome\//.test(e),d=/Opera\//.test(e),f=/Apple Computer/.test(navigator.vendor),p=/Mac OS X 1\d\D([8-9]|\d\d)\D/.test(e),g=/PhantomJS/.test(e),v=f&&(/Mobile\/\w+/.test(e)||navigator.maxTouchPoints>2),m=/Android/.test(e),y=v||m||/webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(e),b=v||/Mac/.test(t),w=/\bCrOS\b/.test(e),x=/win/i.test(t),C=d&&e.match(/Version\/(\d*\.\d*)/);C&&(C=Number(C[1])),C&&C>=15&&(d=!1,u=!0);var S=b&&(c||d&&(null==C||C<12.11)),L=n||a&&s>=9;function k(e){return new RegExp("(^|\\s)"+e+"(?:$|\\s)\\s*")}i(k,"classTest");var T,M=i((function(e,t){var n=e.className,r=k(t).exec(n);if(r){var i=n.slice(r.index+r[0].length);e.className=n.slice(0,r.index)+(i?r[1]+i:"")}}),"rmClass");function N(e){for(var t=e.childNodes.length;t>0;--t)e.removeChild(e.firstChild);return e}function O(e,t){return N(e).appendChild(t)}function A(e,t,n,r){var i=document.createElement(e);if(n&&(i.className=n),r&&(i.style.cssText=r),"string"==typeof t)i.appendChild(document.createTextNode(t));else if(t)for(var o=0;o=t)return l+(t-o);l+=a-o,l+=n-l%n,o=a+1}}v?E=i((function(e){e.selectionStart=0,e.selectionEnd=e.value.length}),"selectInput"):a&&(E=i((function(e){try{e.select()}catch(t){}}),"selectInput")),i(I,"bind"),i(R,"copyObj"),i(B,"countColumn");var z=i((function(){this.id=null,this.f=null,this.time=0,this.handler=I(this.onTimeout,this)}),"Delayed");function G(e,t){for(var n=0;n=t)return r+Math.min(l,t-i);if(i+=o-r,r=o+1,(i+=n-i%n)>=t)return r}}i(X,"findColumn");var Y=[""];function $(e){for(;Y.length<=e;)Y.push(q(Y)+" ");return Y[e]}function q(e){return e[e.length-1]}function Z(e,t){for(var n=[],r=0;r"\x80"&&(e.toUpperCase()!=e.toLowerCase()||te.test(e))}function re(e,t){return t?!!(t.source.indexOf("\\w")>-1&&ne(e))||t.test(e):ne(e)}function ie(e){for(var t in e)if(e.hasOwnProperty(t)&&e[t])return!1;return!0}i(ne,"isWordCharBasic"),i(re,"isWordChar"),i(ie,"isEmpty");var oe=/[\u0300-\u036f\u0483-\u0489\u0591-\u05bd\u05bf\u05c1\u05c2\u05c4\u05c5\u05c7\u0610-\u061a\u064b-\u065e\u0670\u06d6-\u06dc\u06de-\u06e4\u06e7\u06e8\u06ea-\u06ed\u0711\u0730-\u074a\u07a6-\u07b0\u07eb-\u07f3\u0816-\u0819\u081b-\u0823\u0825-\u0827\u0829-\u082d\u0900-\u0902\u093c\u0941-\u0948\u094d\u0951-\u0955\u0962\u0963\u0981\u09bc\u09be\u09c1-\u09c4\u09cd\u09d7\u09e2\u09e3\u0a01\u0a02\u0a3c\u0a41\u0a42\u0a47\u0a48\u0a4b-\u0a4d\u0a51\u0a70\u0a71\u0a75\u0a81\u0a82\u0abc\u0ac1-\u0ac5\u0ac7\u0ac8\u0acd\u0ae2\u0ae3\u0b01\u0b3c\u0b3e\u0b3f\u0b41-\u0b44\u0b4d\u0b56\u0b57\u0b62\u0b63\u0b82\u0bbe\u0bc0\u0bcd\u0bd7\u0c3e-\u0c40\u0c46-\u0c48\u0c4a-\u0c4d\u0c55\u0c56\u0c62\u0c63\u0cbc\u0cbf\u0cc2\u0cc6\u0ccc\u0ccd\u0cd5\u0cd6\u0ce2\u0ce3\u0d3e\u0d41-\u0d44\u0d4d\u0d57\u0d62\u0d63\u0dca\u0dcf\u0dd2-\u0dd4\u0dd6\u0ddf\u0e31\u0e34-\u0e3a\u0e47-\u0e4e\u0eb1\u0eb4-\u0eb9\u0ebb\u0ebc\u0ec8-\u0ecd\u0f18\u0f19\u0f35\u0f37\u0f39\u0f71-\u0f7e\u0f80-\u0f84\u0f86\u0f87\u0f90-\u0f97\u0f99-\u0fbc\u0fc6\u102d-\u1030\u1032-\u1037\u1039\u103a\u103d\u103e\u1058\u1059\u105e-\u1060\u1071-\u1074\u1082\u1085\u1086\u108d\u109d\u135f\u1712-\u1714\u1732-\u1734\u1752\u1753\u1772\u1773\u17b7-\u17bd\u17c6\u17c9-\u17d3\u17dd\u180b-\u180d\u18a9\u1920-\u1922\u1927\u1928\u1932\u1939-\u193b\u1a17\u1a18\u1a56\u1a58-\u1a5e\u1a60\u1a62\u1a65-\u1a6c\u1a73-\u1a7c\u1a7f\u1b00-\u1b03\u1b34\u1b36-\u1b3a\u1b3c\u1b42\u1b6b-\u1b73\u1b80\u1b81\u1ba2-\u1ba5\u1ba8\u1ba9\u1c2c-\u1c33\u1c36\u1c37\u1cd0-\u1cd2\u1cd4-\u1ce0\u1ce2-\u1ce8\u1ced\u1dc0-\u1de6\u1dfd-\u1dff\u200c\u200d\u20d0-\u20f0\u2cef-\u2cf1\u2de0-\u2dff\u302a-\u302f\u3099\u309a\ua66f-\ua672\ua67c\ua67d\ua6f0\ua6f1\ua802\ua806\ua80b\ua825\ua826\ua8c4\ua8e0-\ua8f1\ua926-\ua92d\ua947-\ua951\ua980-\ua982\ua9b3\ua9b6-\ua9b9\ua9bc\uaa29-\uaa2e\uaa31\uaa32\uaa35\uaa36\uaa43\uaa4c\uaab0\uaab2-\uaab4\uaab7\uaab8\uaabe\uaabf\uaac1\uabe5\uabe8\uabed\udc00-\udfff\ufb1e\ufe00-\ufe0f\ufe20-\ufe26\uff9e\uff9f]/;function le(e){return e.charCodeAt(0)>=768&&oe.test(e)}function ae(e,t,n){for(;(n<0?t>0:tn?-1:1;;){if(t==n)return t;var i=(t+n)/2,o=r<0?Math.ceil(i):Math.floor(i);if(o==t)return e(o)?t:n;e(o)?n=o:t=o+r}}function ue(e,t,n,r){if(!e)return r(t,n,"ltr",0);for(var i=!1,o=0;ot||t==n&&l.to==t)&&(r(Math.max(l.from,t),Math.min(l.to,n),1==l.level?"rtl":"ltr",o),i=!0)}i||r(t,n,"ltr")}i(le,"isExtendingChar"),i(ae,"skipExtendingChars"),i(se,"findFirst"),i(ue,"iterateBidiSections");var ce=null;function he(e,t,n){var r,i;ce=null;for(var o=0;ot)return o;l.to==t&&(l.from!=l.to&&"before"==n?i=o:ce=o),l.from==t&&(l.from!=l.to&&"before"!=n?i=o:ce=o)}return null!==(r=i)&&void 0!==r?r:ce}i(he,"getBidiPartAt");var de=function(){var e="bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN",t="nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111";function n(n){return n<=247?e.charAt(n):1424<=n&&n<=1524?"R":1536<=n&&n<=1785?t.charAt(n-1536):1774<=n&&n<=2220?"r":8192<=n&&n<=8203?"w":8204==n?"b":"L"}i(n,"charType");var r=/[\u0590-\u05f4\u0600-\u06ff\u0700-\u08ac]/,o=/[stwN]/,l=/[LRr]/,a=/[Lb1n]/,s=/[1n]/;function u(e,t,n){this.level=e,this.from=t,this.to=n}return i(u,"BidiSpan"),function(e,t){var i="ltr"==t?"L":"R";if(0==e.length||"ltr"==t&&!r.test(e))return!1;for(var c=e.length,h=[],d=0;d-1&&(r[t]=i.slice(0,o).concat(i.slice(o+1)))}}}function ye(e,t){var n=ve(e,t);if(n.length)for(var r=Array.prototype.slice.call(arguments,2),i=0;i0}function Ce(e){e.prototype.on=function(e,t){ge(this,e,t)},e.prototype.off=function(e,t){me(this,e,t)}}function Se(e){e.preventDefault?e.preventDefault():e.returnValue=!1}function Le(e){e.stopPropagation?e.stopPropagation():e.cancelBubble=!0}function ke(e){return null!=e.defaultPrevented?e.defaultPrevented:0==e.returnValue}function Te(e){Se(e),Le(e)}function Me(e){return e.target||e.srcElement}function Ne(e){var t=e.which;return null==t&&(1&e.button?t=1:2&e.button?t=3:4&e.button&&(t=2)),b&&e.ctrlKey&&1==t&&(t=3),t}i(ve,"getHandlers"),i(me,"off"),i(ye,"signal"),i(be,"signalDOMEvent"),i(we,"signalCursorActivity"),i(xe,"hasHandler"),i(Ce,"eventMixin"),i(Se,"e_preventDefault"),i(Le,"e_stopPropagation"),i(ke,"e_defaultPrevented"),i(Te,"e_stop"),i(Me,"e_target"),i(Ne,"e_button");var Oe,Ae,De=function(){if(a&&s<9)return!1;var e=A("div");return"draggable"in e||"dragDrop"in e}();function We(e){if(null==Oe){var t=A("span","\u200b");O(e,A("span",[t,document.createTextNode("x")])),0!=e.firstChild.offsetHeight&&(Oe=t.offsetWidth<=1&&t.offsetHeight>2&&!(a&&s<8))}var n=Oe?A("span","\u200b"):A("span","\xa0",null,"display: inline-block; width: 1px; margin-right: -1px");return n.setAttribute("cm-text",""),n}function He(e){if(null!=Ae)return Ae;var t=O(e,document.createTextNode("A\u062eA")),n=T(t,0,1).getBoundingClientRect(),r=T(t,1,2).getBoundingClientRect();return N(e),!(!n||n.left==n.right)&&(Ae=r.right-n.right<3)}i(We,"zeroWidthElement"),i(He,"hasBadBidiRects");var Fe=3!="\n\nb".split(/\n/).length?function(e){for(var t=0,n=[],r=e.length;t<=r;){var i=e.indexOf("\n",t);-1==i&&(i=e.length);var o=e.slice(t,"\r"==e.charAt(i-1)?i-1:i),l=o.indexOf("\r");-1!=l?(n.push(o.slice(0,l)),t+=l+1):(n.push(o),t=i+1)}return n}:function(e){return e.split(/\r\n?|\n/)},Pe=window.getSelection?function(e){try{return e.selectionStart!=e.selectionEnd}catch(t){return!1}}:function(e){var t;try{t=e.ownerDocument.selection.createRange()}catch(n){}return!(!t||t.parentElement()!=e)&&0!=t.compareEndPoints("StartToEnd",t)},Ee=function(){var e=A("div");return"oncopy"in e||(e.setAttribute("oncopy","return;"),"function"==typeof e.oncopy)}(),Ie=null;function Re(e){if(null!=Ie)return Ie;var t=O(e,A("span","x")),n=t.getBoundingClientRect(),r=T(t,0,1).getBoundingClientRect();return Ie=Math.abs(n.left-r.left)>1}i(Re,"hasBadZoomedRects");var Be={},ze={};function Ge(e,t){arguments.length>2&&(t.dependencies=Array.prototype.slice.call(arguments,2)),Be[e]=t}function Ue(e,t){ze[e]=t}function Ve(e){if("string"==typeof e&&ze.hasOwnProperty(e))e=ze[e];else if(e&&"string"==typeof e.name&&ze.hasOwnProperty(e.name)){var t=ze[e.name];"string"==typeof t&&(t={name:t}),(e=ee(t,e)).name=t.name}else{if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+xml$/.test(e))return Ve("application/xml");if("string"==typeof e&&/^[\w\-]+\/[\w\-]+\+json$/.test(e))return Ve("application/json")}return"string"==typeof e?{name:e}:e||{name:"null"}}function Ke(e,t){t=Ve(t);var n=Be[t.name];if(!n)return Ke(e,"text/plain");var r=n(e,t);if(je.hasOwnProperty(t.name)){var i=je[t.name];for(var o in i)i.hasOwnProperty(o)&&(r.hasOwnProperty(o)&&(r["_"+o]=r[o]),r[o]=i[o])}if(r.name=t.name,t.helperType&&(r.helperType=t.helperType),t.modeProps)for(var l in t.modeProps)r[l]=t.modeProps[l];return r}i(Ge,"defineMode"),i(Ue,"defineMIME"),i(Ve,"resolveMode"),i(Ke,"getMode");var je={};function _e(e,t){R(t,je.hasOwnProperty(e)?je[e]:je[e]={})}function Xe(e,t){if(!0===t)return t;if(e.copyState)return e.copyState(t);var n={};for(var r in t){var i=t[r];i instanceof Array&&(i=i.concat([])),n[r]=i}return n}function Ye(e,t){for(var n;e.innerMode&&(n=e.innerMode(t))&&n.mode!=e;)t=n.state,e=n.mode;return n||{mode:e,state:t}}function $e(e,t,n){return!e.startState||e.startState(t,n)}i(_e,"extendMode"),i(Xe,"copyState"),i(Ye,"innerMode"),i($e,"startState");var qe=i((function(e,t,n){this.pos=this.start=0,this.string=e,this.tabSize=t||8,this.lastColumnPos=this.lastColumnValue=0,this.lineStart=0,this.lineOracle=n}),"StringStream");function Ze(e,t){if((t-=e.first)<0||t>=e.size)throw new Error("There is no line "+(t+e.first)+" in the document.");for(var n=e;!n.lines;)for(var r=0;;++r){var i=n.children[r],o=i.chunkSize();if(t=e.first&&tn?ot(n,Ze(e,n).text.length):ft(t,Ze(e,t.line).text.length)}function ft(e,t){var n=e.ch;return null==n||n>t?ot(e.line,t):n<0?ot(e.line,0):e}function pt(e,t){for(var n=[],r=0;r=this.string.length},qe.prototype.sol=function(){return this.pos==this.lineStart},qe.prototype.peek=function(){return this.string.charAt(this.pos)||void 0},qe.prototype.next=function(){if(this.post},qe.prototype.eatSpace=function(){for(var e=this.pos;/[\s\u00a0]/.test(this.string.charAt(this.pos));)++this.pos;return this.pos>e},qe.prototype.skipToEnd=function(){this.pos=this.string.length},qe.prototype.skipTo=function(e){var t=this.string.indexOf(e,this.pos);if(t>-1)return this.pos=t,!0},qe.prototype.backUp=function(e){this.pos-=e},qe.prototype.column=function(){return this.lastColumnPos0?null:(r&&!1!==t&&(this.pos+=r[0].length),r)}var o=i((function(e){return n?e.toLowerCase():e}),"cased");if(o(this.string.substr(this.pos,e.length))==o(e))return!1!==t&&(this.pos+=e.length),!0},qe.prototype.current=function(){return this.string.slice(this.start,this.pos)},qe.prototype.hideFirstChars=function(e,t){this.lineStart+=e;try{return t()}finally{this.lineStart-=e}},qe.prototype.lookAhead=function(e){var t=this.lineOracle;return t&&t.lookAhead(e)},qe.prototype.baseToken=function(){var e=this.lineOracle;return e&&e.baseToken(this.pos)},i(Ze,"getLine"),i(Qe,"getBetween"),i(Je,"getLines"),i(et,"updateLineHeight"),i(tt,"lineNo"),i(nt,"lineAtHeight"),i(rt,"isLine"),i(it,"lineNumberFor"),i(ot,"Pos"),i(lt,"cmp"),i(at,"equalCursorPos"),i(st,"copyPos"),i(ut,"maxPos"),i(ct,"minPos"),i(ht,"clipLine"),i(dt,"clipPos"),i(ft,"clipToLen"),i(pt,"clipPosArray");var gt=i((function(e,t){this.state=e,this.lookAhead=t}),"SavedContext"),vt=i((function(e,t,n,r){this.state=t,this.doc=e,this.line=n,this.maxLookAhead=r||0,this.baseTokens=null,this.baseTokenPos=1}),"Context");function mt(e,t,n,r){var o=[e.state.modeGen],l={};Tt(e,t.text,e.doc.mode,n,(function(e,t){return o.push(e,t)}),l,r);for(var a=n.state,s=i((function(r){n.baseTokens=o;var i=e.state.overlays[r],s=1,u=0;n.state=!0,Tt(e,t.text,i.mode,n,(function(e,t){for(var n=s;ue&&o.splice(s,1,e,o[s+1],r),s+=2,u=Math.min(e,r)}if(t)if(i.opaque)o.splice(n,s-n,e,"overlay "+t),s=n+2;else for(;ne.options.maxHighlightLength&&Xe(e.doc.mode,r.state),o=mt(e,t,r);i&&(r.state=i),t.stateAfter=r.save(!i),t.styles=o.styles,o.classes?t.styleClasses=o.classes:t.styleClasses&&(t.styleClasses=null),n===e.doc.highlightFrontier&&(e.doc.modeFrontier=Math.max(e.doc.modeFrontier,++e.doc.highlightFrontier))}return t.styles}function bt(e,t,n){var r=e.doc,i=e.display;if(!r.mode.startState)return new vt(r,!0,t);var o=Mt(e,t,n),l=o>r.first&&Ze(r,o-1).stateAfter,a=l?vt.fromSaved(r,l,o):new vt(r,$e(r.mode),o);return r.iter(o,t,(function(n){wt(e,n.text,a);var r=a.line;n.stateAfter=r==t-1||r%5==0||r>=i.viewFrom&&rt.start)return o}throw new Error("Mode "+e.name+" failed to advance stream.")}vt.prototype.lookAhead=function(e){var t=this.doc.getLine(this.line+e);return null!=t&&e>this.maxLookAhead&&(this.maxLookAhead=e),t},vt.prototype.baseToken=function(e){if(!this.baseTokens)return null;for(;this.baseTokens[this.baseTokenPos]<=e;)this.baseTokenPos+=2;var t=this.baseTokens[this.baseTokenPos+1];return{type:t&&t.replace(/( |^)overlay .*/,""),size:this.baseTokens[this.baseTokenPos]-e}},vt.prototype.nextLine=function(){this.line++,this.maxLookAhead>0&&this.maxLookAhead--},vt.fromSaved=function(e,t,n){return t instanceof gt?new vt(e,Xe(e.mode,t.state),n,t.lookAhead):new vt(e,Xe(e.mode,t),n)},vt.prototype.save=function(e){var t=!1!==e?Xe(this.doc.mode,this.state):this.state;return this.maxLookAhead>0?new gt(t,this.maxLookAhead):t},i(mt,"highlightLine"),i(yt,"getLineStyles"),i(bt,"getContextBefore"),i(wt,"processLine"),i(xt,"callBlankLine"),i(Ct,"readToken");var St=i((function(e,t,n){this.start=e.start,this.end=e.pos,this.string=e.current(),this.type=t||null,this.state=n}),"Token");function Lt(e,t,n,r){var i,o,l=e.doc,a=l.mode,s=Ze(l,(t=dt(l,t)).line),u=bt(e,t.line,n),c=new qe(s.text,e.options.tabSize,u);for(r&&(o=[]);(r||c.pose.options.maxHighlightLength?(a=!1,l&&wt(e,t,r,h.pos),h.pos=t.length,s=null):s=kt(Ct(n,h,r.state,d),o),d){var f=d[0].name;f&&(s="m-"+(s?f+" "+s:f))}if(!a||c!=s){for(;ul;--a){if(a<=o.first)return o.first;var s=Ze(o,a-1),u=s.stateAfter;if(u&&(!n||a+(u instanceof gt?u.lookAhead:0)<=o.modeFrontier))return a;var c=B(s.text,null,e.options.tabSize);(null==i||r>c)&&(i=a-1,r=c)}return i}function Nt(e,t){if(e.modeFrontier=Math.min(e.modeFrontier,t),!(e.highlightFrontiern;r--){var i=Ze(e,r).stateAfter;if(i&&(!(i instanceof gt)||r+i.lookAhead=t:o.to>t);(r||(r=[])).push(new Ht(l,o.from,a?null:o.to))}}return r}function Rt(e,t,n){var r;if(e)for(var i=0;i=t:o.to>t)||o.from==t&&"bookmark"==l.type&&(!n||o.marker.insertLeft)){var a=null==o.from||(l.inclusiveLeft?o.from<=t:o.from0&&a)for(var b=0;b0)){var c=[s,1],h=lt(u.from,a.from),d=lt(u.to,a.to);(h<0||!l.inclusiveLeft&&!h)&&c.push({from:u.from,to:a.from}),(d>0||!l.inclusiveRight&&!d)&&c.push({from:a.to,to:u.to}),i.splice.apply(i,c),s+=c.length-3}}return i}function Ut(e){var t=e.markedSpans;if(t){for(var n=0;nt)&&(!n||_t(n,o.marker)<0)&&(n=o.marker)}return n}function Zt(e,t,n,r,i){var o=Ze(e,t),l=At&&o.markedSpans;if(l)for(var a=0;a=0&&h<=0||c<=0&&h>=0)&&(c<=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?lt(u.to,n)>=0:lt(u.to,n)>0)||c>=0&&(s.marker.inclusiveRight&&i.inclusiveLeft?lt(u.from,r)<=0:lt(u.from,r)<0)))return!0}}}function Qt(e){for(var t;t=Yt(e);)e=t.find(-1,!0).line;return e}function Jt(e){for(var t;t=$t(e);)e=t.find(1,!0).line;return e}function en(e){for(var t,n;t=$t(e);)e=t.find(1,!0).line,(n||(n=[])).push(e);return n}function tn(e,t){var n=Ze(e,t),r=Qt(n);return n==r?t:tt(r)}function nn(e,t){if(t>e.lastLine())return t;var n,r=Ze(e,t);if(!rn(e,r))return t;for(;n=$t(r);)r=n.find(1,!0).line;return tt(r)+1}function rn(e,t){var n=At&&t.markedSpans;if(n)for(var r=void 0,i=0;it.maxLineLength&&(t.maxLineLength=n,t.maxLine=e)}))}i(Dt,"seeReadOnlySpans"),i(Wt,"seeCollapsedSpans"),i(Ht,"MarkedSpan"),i(Ft,"getMarkedSpanFor"),i(Pt,"removeMarkedSpan"),i(Et,"addMarkedSpan"),i(It,"markedSpansBefore"),i(Rt,"markedSpansAfter"),i(Bt,"stretchSpansOverChange"),i(zt,"clearEmptySpans"),i(Gt,"removeReadOnlyRanges"),i(Ut,"detachMarkedSpans"),i(Vt,"attachMarkedSpans"),i(Kt,"extraLeft"),i(jt,"extraRight"),i(_t,"compareCollapsedMarkers"),i(Xt,"collapsedSpanAtSide"),i(Yt,"collapsedSpanAtStart"),i($t,"collapsedSpanAtEnd"),i(qt,"collapsedSpanAround"),i(Zt,"conflictingCollapsedRange"),i(Qt,"visualLine"),i(Jt,"visualLineEnd"),i(en,"visualLineContinued"),i(tn,"visualLineNo"),i(nn,"visualLineEndNo"),i(rn,"lineIsHidden"),i(on,"lineIsHiddenInner"),i(ln,"heightAtLine"),i(an,"lineLength"),i(sn,"findMaxLine");var un=i((function(e,t,n){this.text=e,Vt(this,t),this.height=n?n(this):1}),"Line");function cn(e,t,n,r){e.text=t,e.stateAfter&&(e.stateAfter=null),e.styles&&(e.styles=null),null!=e.order&&(e.order=null),Ut(e),Vt(e,n);var i=r?r(e):1;i!=e.height&&et(e,i)}function hn(e){e.parent=null,Ut(e)}un.prototype.lineNo=function(){return tt(this)},Ce(un),i(cn,"updateLine"),i(hn,"cleanUpLine");var dn={},fn={};function pn(e,t){if(!e||/^\s*$/.test(e))return null;var n=t.addModeClass?fn:dn;return n[e]||(n[e]=e.replace(/\S+/g,"cm-$&"))}function gn(e,t){var n=D("span",null,null,u?"padding-right: .1px":null),r={pre:D("pre",[n],"CodeMirror-line"),content:n,col:0,pos:0,cm:e,trailingSpace:!1,splitSpaces:e.getOption("lineWrapping")};t.measure={};for(var i=0;i<=(t.rest?t.rest.length:0);i++){var o=i?t.rest[i-1]:t.line,l=void 0;r.pos=0,r.addToken=mn,He(e.display.measure)&&(l=fe(o,e.doc.direction))&&(r.addToken=bn(r.addToken,l)),r.map=[],xn(o,r,yt(e,o,t!=e.display.externalMeasured&&tt(o))),o.styleClasses&&(o.styleClasses.bgClass&&(r.bgClass=P(o.styleClasses.bgClass,r.bgClass||"")),o.styleClasses.textClass&&(r.textClass=P(o.styleClasses.textClass,r.textClass||""))),0==r.map.length&&r.map.push(0,0,r.content.appendChild(We(e.display.measure))),0==i?(t.measure.map=r.map,t.measure.cache={}):((t.measure.maps||(t.measure.maps=[])).push(r.map),(t.measure.caches||(t.measure.caches=[])).push({}))}if(u){var a=r.content.lastChild;(/\bcm-tab\b/.test(a.className)||a.querySelector&&a.querySelector(".cm-tab"))&&(r.content.className="cm-tab-wrap-hack")}return ye(e,"renderLine",e,t.line,r.pre),r.pre.className&&(r.textClass=P(r.pre.className,r.textClass||"")),r}function vn(e){var t=A("span","\u2022","cm-invalidchar");return t.title="\\u"+e.charCodeAt(0).toString(16),t.setAttribute("aria-label",t.title),t}function mn(e,t,n,r,i,o,l){if(t){var u,c=e.splitSpaces?yn(t,e.trailingSpace):t,h=e.cm.state.specialChars,d=!1;if(h.test(t)){u=document.createDocumentFragment();for(var f=0;;){h.lastIndex=f;var p=h.exec(t),g=p?p.index-f:t.length-f;if(g){var v=document.createTextNode(c.slice(f,f+g));a&&s<9?u.appendChild(A("span",[v])):u.appendChild(v),e.map.push(e.pos,e.pos+g,v),e.col+=g,e.pos+=g}if(!p)break;f+=g+1;var m=void 0;if("\t"==p[0]){var y=e.cm.options.tabSize,b=y-e.col%y;(m=u.appendChild(A("span",$(b),"cm-tab"))).setAttribute("role","presentation"),m.setAttribute("cm-text","\t"),e.col+=b}else"\r"==p[0]||"\n"==p[0]?((m=u.appendChild(A("span","\r"==p[0]?"\u240d":"\u2424","cm-invalidchar"))).setAttribute("cm-text",p[0]),e.col+=1):((m=e.cm.options.specialCharPlaceholder(p[0])).setAttribute("cm-text",p[0]),a&&s<9?u.appendChild(A("span",[m])):u.appendChild(m),e.col+=1);e.map.push(e.pos,e.pos+1,m),e.pos++}}else e.col+=t.length,u=document.createTextNode(c),e.map.push(e.pos,e.pos+t.length,u),a&&s<9&&(d=!0),e.pos+=t.length;if(e.trailingSpace=32==c.charCodeAt(t.length-1),n||r||i||d||o||l){var w=n||"";r&&(w+=r),i&&(w+=i);var x=A("span",[u],w,o);if(l)for(var C in l)l.hasOwnProperty(C)&&"style"!=C&&"class"!=C&&x.setAttribute(C,l[C]);return e.content.appendChild(x)}e.content.appendChild(u)}}function yn(e,t){if(e.length>1&&!/ /.test(e))return e;for(var n=t,r="",i=0;iu&&h.from<=u);d++);if(h.to>=c)return e(n,r,i,o,l,a,s);e(n,r.slice(0,h.to-u),i,o,null,a,s),o=null,r=r.slice(h.to-u),u=h.to}}}function wn(e,t,n,r){var i=!r&&n.widgetNode;i&&e.map.push(e.pos,e.pos+t,i),!r&&e.cm.display.input.needsContentAttribute&&(i||(i=e.content.appendChild(document.createElement("span"))),i.setAttribute("cm-marker",n.id)),i&&(e.cm.display.input.setUneditable(i),e.content.appendChild(i)),e.pos+=t,e.trailingSpace=!1}function xn(e,t,n){var r=e.markedSpans,i=e.text,o=0;if(r)for(var l,a,s,u,c,h,d,f=i.length,p=0,g=1,v="",m=0;;){if(m==p){s=u=c=a="",d=null,h=null,m=1/0;for(var y=[],b=void 0,w=0;wp||C.collapsed&&x.to==p&&x.from==p)){if(null!=x.to&&x.to!=p&&m>x.to&&(m=x.to,u=""),C.className&&(s+=" "+C.className),C.css&&(a=(a?a+";":"")+C.css),C.startStyle&&x.from==p&&(c+=" "+C.startStyle),C.endStyle&&x.to==m&&(b||(b=[])).push(C.endStyle,x.to),C.title&&((d||(d={})).title=C.title),C.attributes)for(var S in C.attributes)(d||(d={}))[S]=C.attributes[S];C.collapsed&&(!h||_t(h.marker,C)<0)&&(h=x)}else x.from>p&&m>x.from&&(m=x.from)}if(b)for(var L=0;L=f)break;for(var T=Math.min(f,m);;){if(v){var M=p+v.length;if(!h){var N=M>T?v.slice(0,T-p):v;t.addToken(t,N,l?l+s:s,c,p+N.length==m?u:"",a,d)}if(M>=T){v=v.slice(T-p),p=T;break}p=M,c=""}v=i.slice(o,o=n[g++]),l=pn(n[g++],t.cm.options)}}else for(var O=1;O2&&o.push((s.bottom+u.top)/2-n.top)}}o.push(n.bottom-n.top)}}function Qn(e,t,n){if(e.line==t)return{map:e.measure.map,cache:e.measure.cache};if(e.rest){for(var r=0;rn)return{map:e.measure.maps[i],cache:e.measure.caches[i],before:!0}}}function Jn(e,t){var n=tt(t=Qt(t)),r=e.display.externalMeasured=new Cn(e.doc,t,n);r.lineN=n;var i=r.built=gn(e,r);return r.text=i.pre,O(e.display.lineMeasure,i.pre),r}function er(e,t,n,r){return rr(e,nr(e,t),n,r)}function tr(e,t){if(t>=e.display.viewFrom&&t=n.lineN&&tt)&&(i=(o=s-a)-1,t>=s&&(l="right")),null!=i){if(r=e[u+2],a==s&&n==(r.insertLeft?"left":"right")&&(l=n),"left"==n&&0==i)for(;u&&e[u-2]==e[u-3]&&e[u-1].insertLeft;)r=e[2+(u-=3)],l="left";if("right"==n&&i==s-a)for(;u=0&&(n=e[i]).left==n.right;i--);return n}function sr(e,t,n,r){var i,o=lr(t.map,n,r),l=o.node,u=o.start,c=o.end,h=o.collapse;if(3==l.nodeType){for(var d=0;d<4;d++){for(;u&&le(t.line.text.charAt(o.coverStart+u));)--u;for(;o.coverStart+c0&&(h=r="right"),i=e.options.lineWrapping&&(f=l.getClientRects()).length>1?f["right"==r?f.length-1:0]:l.getBoundingClientRect()}if(a&&s<9&&!u&&(!i||!i.left&&!i.right)){var p=l.parentNode.getClientRects()[0];i=p?{left:p.left,right:p.left+Ar(e.display),top:p.top,bottom:p.bottom}:or}for(var g=i.top-t.rect.top,v=i.bottom-t.rect.top,m=(g+v)/2,y=t.view.measure.heights,b=0;b=r.text.length?(u=r.text.length,c="before"):u<=0&&(u=0,c="after"),!s)return a("before"==c?u-1:u,"before"==c);function h(e,t,n){return a(n?e-1:e,1==s[t].level!=n)}i(h,"getBidi");var d=he(s,u,c),f=ce,p=h(u,d,"before"==c);return null!=f&&(p.other=h(u,f,"before"!=c)),p}function wr(e,t){var n=0;t=dt(e.doc,t),e.options.lineWrapping||(n=Ar(e.display)*t.ch);var r=Ze(e.doc,t.line),i=ln(r)+jn(e.display);return{left:n,right:n,top:i,bottom:i+r.height}}function xr(e,t,n,r,i){var o=ot(e,t,n);return o.xRel=i,r&&(o.outside=r),o}function Cr(e,t,n){var r=e.doc;if((n+=e.display.viewOffset)<0)return xr(r.first,0,null,-1,-1);var i=nt(r,n),o=r.first+r.size-1;if(i>o)return xr(r.first+r.size-1,Ze(r,o).text.length,null,1,1);t<0&&(t=0);for(var l=Ze(r,i);;){var a=Tr(e,l,i,t,n),s=qt(l,a.ch+(a.xRel>0||a.outside>0?1:0));if(!s)return a;var u=s.find(1);if(u.line==i)return u;l=Ze(r,i=u.line)}}function Sr(e,t,n,r){r-=gr(t);var i=t.text.length,o=se((function(t){return rr(e,n,t-1).bottom<=r}),i,0);return{begin:o,end:i=se((function(t){return rr(e,n,t).top>r}),o,i)}}function Lr(e,t,n,r){return n||(n=nr(e,t)),Sr(e,t,n,vr(e,t,rr(e,n,r),"line").top)}function kr(e,t,n,r){return!(e.bottom<=n)&&(e.top>n||(r?e.left:e.right)>t)}function Tr(e,t,n,r,i){i-=ln(t);var o=nr(e,t),l=gr(t),a=0,s=t.text.length,u=!0,c=fe(t,e.doc.direction);if(c){var h=(e.options.lineWrapping?Nr:Mr)(e,t,n,o,c,r,i);a=(u=1!=h.level)?h.from:h.to-1,s=u?h.to:h.from-1}var d,f,p=null,g=null,v=se((function(t){var n=rr(e,o,t);return n.top+=l,n.bottom+=l,!!kr(n,r,i,!1)&&(n.top<=i&&n.left<=r&&(p=t,g=n),!0)}),a,s),m=!1;if(g){var y=r-g.left=w.bottom?1:0}return xr(n,v=ae(t.text,v,1),f,m,r-d)}function Mr(e,t,n,r,i,o,l){var a=se((function(a){var s=i[a],u=1!=s.level;return kr(br(e,ot(n,u?s.to:s.from,u?"before":"after"),"line",t,r),o,l,!0)}),0,i.length-1),s=i[a];if(a>0){var u=1!=s.level,c=br(e,ot(n,u?s.from:s.to,u?"after":"before"),"line",t,r);kr(c,o,l,!0)&&c.top>l&&(s=i[a-1])}return s}function Nr(e,t,n,r,i,o,l){var a=Sr(e,t,r,l),s=a.begin,u=a.end;/\s/.test(t.text.charAt(u-1))&&u--;for(var c=null,h=null,d=0;d=u||f.to<=s)){var p=rr(e,r,1!=f.level?Math.min(u,f.to)-1:Math.max(s,f.from)).right,g=pg)&&(c=f,h=g)}}return c||(c=i[i.length-1]),c.fromu&&(c={from:c.from,to:u,level:c.level}),c}function Or(e){if(null!=e.cachedTextHeight)return e.cachedTextHeight;if(null==ir){ir=A("pre",null,"CodeMirror-line-like");for(var t=0;t<49;++t)ir.appendChild(document.createTextNode("x")),ir.appendChild(A("br"));ir.appendChild(document.createTextNode("x"))}O(e.measure,ir);var n=ir.offsetHeight/50;return n>3&&(e.cachedTextHeight=n),N(e.measure),n||1}function Ar(e){if(null!=e.cachedCharWidth)return e.cachedCharWidth;var t=A("span","xxxxxxxxxx"),n=A("pre",[t],"CodeMirror-line-like");O(e.measure,n);var r=t.getBoundingClientRect(),i=(r.right-r.left)/10;return i>2&&(e.cachedCharWidth=i),i||10}function Dr(e){for(var t=e.display,n={},r={},i=t.gutters.clientLeft,o=t.gutters.firstChild,l=0;o;o=o.nextSibling,++l){var a=e.display.gutterSpecs[l].className;n[a]=o.offsetLeft+o.clientLeft+i,r[a]=o.clientWidth}return{fixedPos:Wr(t),gutterTotalWidth:t.gutters.offsetWidth,gutterLeft:n,gutterWidth:r,wrapperWidth:t.wrapper.clientWidth}}function Wr(e){return e.scroller.getBoundingClientRect().left-e.sizer.getBoundingClientRect().left}function Hr(e){var t=Or(e.display),n=e.options.lineWrapping,r=n&&Math.max(5,e.display.scroller.clientWidth/Ar(e.display)-3);return function(i){if(rn(e.doc,i))return 0;var o=0;if(i.widgets)for(var l=0;l0&&(s=Ze(e.doc,u.line).text).length==u.ch){var c=B(s,s.length,e.options.tabSize)-s.length;u=ot(u.line,Math.max(0,Math.round((o-Xn(e.display).left)/Ar(e.display))-c))}return u}function Er(e,t){if(t>=e.display.viewTo||(t-=e.display.viewFrom)<0)return null;for(var n=e.display.view,r=0;rt)&&(i.updateLineNumbers=t),e.curOp.viewChanged=!0,t>=i.viewTo)At&&tn(e.doc,t)i.viewFrom?Br(e):(i.viewFrom+=r,i.viewTo+=r);else if(t<=i.viewFrom&&n>=i.viewTo)Br(e);else if(t<=i.viewFrom){var o=zr(e,n,n+r,1);o?(i.view=i.view.slice(o.index),i.viewFrom=o.lineN,i.viewTo+=r):Br(e)}else if(n>=i.viewTo){var l=zr(e,t,t,-1);l?(i.view=i.view.slice(0,l.index),i.viewTo=l.lineN):Br(e)}else{var a=zr(e,t,t,-1),s=zr(e,n,n+r,1);a&&s?(i.view=i.view.slice(0,a.index).concat(Sn(e,a.lineN,s.lineN)).concat(i.view.slice(s.index)),i.viewTo+=r):Br(e)}var u=i.externalMeasured;u&&(n=i.lineN&&t=r.viewTo)){var o=r.view[Er(e,t)];if(null!=o.node){var l=o.changes||(o.changes=[]);-1==G(l,n)&&l.push(n)}}}function Br(e){e.display.viewFrom=e.display.viewTo=e.doc.first,e.display.view=[],e.display.viewOffset=0}function zr(e,t,n,r){var i,o=Er(e,t),l=e.display.view;if(!At||n==e.doc.first+e.doc.size)return{index:o,lineN:n};for(var a=e.display.viewFrom,s=0;s0){if(o==l.length-1)return null;i=a+l[o].size-t,o++}else i=a-t;t+=i,n+=i}for(;tn(e.doc,n)!=n;){if(o==(r<0?0:l.length-1))return null;n+=r*l[o-(r<0?1:0)].size,o+=r}return{index:o,lineN:n}}function Gr(e,t,n){var r=e.display;0==r.view.length||t>=r.viewTo||n<=r.viewFrom?(r.view=Sn(e,t,n),r.viewFrom=t):(r.viewFrom>t?r.view=Sn(e,t,r.viewFrom).concat(r.view):r.viewFromn&&(r.view=r.view.slice(0,Er(e,n)))),r.viewTo=n}function Ur(e){for(var t=e.display.view,n=0,r=0;r=e.display.viewTo||s.to().line0?l:e.defaultCharWidth())+"px"}if(r.other){var a=n.appendChild(A("div","\xa0","CodeMirror-cursor CodeMirror-secondarycursor"));a.style.display="",a.style.left=r.other.left+"px",a.style.top=r.other.top+"px",a.style.height=.85*(r.other.bottom-r.other.top)+"px"}}function _r(e,t){return e.top-t.top||e.left-t.left}function Xr(e,t,n){var r=e.display,o=e.doc,l=document.createDocumentFragment(),a=Xn(e.display),s=a.left,u=Math.max(r.sizerWidth,$n(e)-r.sizer.offsetLeft)-a.right,c="ltr"==o.direction;function h(e,t,n,r){t<0&&(t=0),t=Math.round(t),r=Math.round(r),l.appendChild(A("div",null,"CodeMirror-selected","position: absolute; left: "+e+"px;\n top: "+t+"px; width: "+(null!==n&&void 0!==n?n:u-e)+"px;\n height: "+(r-t)+"px"))}function d(t,n,r){var l,a,d=Ze(o,t),f=d.text.length;function p(n,r){return yr(e,ot(t,n),"div",d,r)}function g(t,n,r){var i=Lr(e,d,null,t),o="ltr"==n==("after"==r)?"left":"right";return p("after"==r?i.begin:i.end-(/\s/.test(d.text.charAt(i.end-1))?2:1),o)[o]}i(p,"coords"),i(g,"wrapX");var v=fe(d,o.direction);return ue(v,n||0,null!==r&&void 0!==r?r:f,(function(e,t,i,o){var d="ltr"==i,m=p(e,d?"left":"right"),y=p(t-1,d?"right":"left"),b=null==n&&0==e,w=null==r&&t==f,x=0==o,C=!v||o==v.length-1;if(y.top-m.top<=3){var S=(c?w:b)&&C,L=(c?b:w)&&x?s:(d?m:y).left,k=S?u:(d?y:m).right;h(L,m.top,k-L,m.bottom)}else{var T,M,N,O;d?(T=c&&b&&x?s:m.left,M=c?u:g(e,i,"before"),N=c?s:g(t,i,"after"),O=c&&w&&C?u:y.right):(T=c?g(e,i,"before"):s,M=!c&&b&&x?u:m.right,N=!c&&w&&C?s:y.left,O=c?g(t,i,"after"):u),h(T,m.top,M-T,m.bottom),m.bottom0?t.blinker=setInterval((function(){e.hasFocus()||Qr(e),t.cursorDiv.style.visibility=(n=!n)?"":"hidden"}),e.options.cursorBlinkRate):e.options.cursorBlinkRate<0&&(t.cursorDiv.style.visibility="hidden")}}function $r(e){e.hasFocus()||(e.display.input.focus(),e.state.focused||Zr(e))}function qr(e){e.state.delayingBlurEvent=!0,setTimeout((function(){e.state.delayingBlurEvent&&(e.state.delayingBlurEvent=!1,e.state.focused&&Qr(e))}),100)}function Zr(e,t){e.state.delayingBlurEvent&&!e.state.draggingText&&(e.state.delayingBlurEvent=!1),"nocursor"!=e.options.readOnly&&(e.state.focused||(ye(e,"focus",e,t),e.state.focused=!0,F(e.display.wrapper,"CodeMirror-focused"),!e.curOp&&e.display.selForContextMenu!=e.doc.sel&&(e.display.input.reset(),u&&setTimeout((function(){return e.display.input.reset(!0)}),20)),e.display.input.receivedFocus()),Yr(e))}function Qr(e,t){e.state.delayingBlurEvent||(e.state.focused&&(ye(e,"blur",e,t),e.state.focused=!1,M(e.display.wrapper,"CodeMirror-focused")),clearInterval(e.display.blinker),setTimeout((function(){e.state.focused||(e.display.shift=!1)}),150))}function Jr(e){for(var t=e.display,n=t.lineDiv.offsetTop,r=Math.max(0,t.scroller.getBoundingClientRect().top),i=t.lineDiv.getBoundingClientRect().top,o=0,l=0;l.005||g<-.005)&&(ie.display.sizerWidth){var m=Math.ceil(d/Ar(e.display));m>e.display.maxLineLength&&(e.display.maxLineLength=m,e.display.maxLine=u.line,e.display.maxLineChanged=!0)}}}Math.abs(o)>2&&(t.scroller.scrollTop+=o)}function ei(e){if(e.widgets)for(var t=0;t=l&&(o=nt(t,ln(Ze(t,s))-e.wrapper.clientHeight),l=s)}return{from:o,to:Math.max(l,o+1)}}function ni(e,t){if(!be(e,"scrollCursorIntoView")){var n=e.display,r=n.sizer.getBoundingClientRect(),i=null;if(t.top+r.top<0?i=!0:t.bottom+r.top>(window.innerHeight||document.documentElement.clientHeight)&&(i=!1),null!=i&&!g){var o=A("div","\u200b",null,"position: absolute;\n top: "+(t.top-n.viewOffset-jn(e.display))+"px;\n height: "+(t.bottom-t.top+Yn(e)+n.barHeight)+"px;\n left: "+t.left+"px; width: "+Math.max(2,t.right-t.left)+"px;");e.display.lineSpace.appendChild(o),o.scrollIntoView(i),e.display.lineSpace.removeChild(o)}}}function ri(e,t,n,r){var i;null==r&&(r=0),!e.options.lineWrapping&&t==n&&(n="before"==t.sticky?ot(t.line,t.ch+1,"before"):t,t=t.ch?ot(t.line,"before"==t.sticky?t.ch-1:t.ch,"after"):t);for(var o=0;o<5;o++){var l=!1,a=br(e,t),s=n&&n!=t?br(e,n):a,u=oi(e,i={left:Math.min(a.left,s.left),top:Math.min(a.top,s.top)-r,right:Math.max(a.left,s.left),bottom:Math.max(a.bottom,s.bottom)+r}),c=e.doc.scrollTop,h=e.doc.scrollLeft;if(null!=u.scrollTop&&(di(e,u.scrollTop),Math.abs(e.doc.scrollTop-c)>1&&(l=!0)),null!=u.scrollLeft&&(pi(e,u.scrollLeft),Math.abs(e.doc.scrollLeft-h)>1&&(l=!0)),!l)break}return i}function ii(e,t){var n=oi(e,t);null!=n.scrollTop&&di(e,n.scrollTop),null!=n.scrollLeft&&pi(e,n.scrollLeft)}function oi(e,t){var n=e.display,r=Or(e.display);t.top<0&&(t.top=0);var i=e.curOp&&null!=e.curOp.scrollTop?e.curOp.scrollTop:n.scroller.scrollTop,o=qn(e),l={};t.bottom-t.top>o&&(t.bottom=t.top+o);var a=e.doc.height+_n(n),s=t.topa-r;if(t.topi+o){var c=Math.min(t.top,(u?a:t.bottom)-o);c!=i&&(l.scrollTop=c)}var h=e.options.fixedGutter?0:n.gutters.offsetWidth,d=e.curOp&&null!=e.curOp.scrollLeft?e.curOp.scrollLeft:n.scroller.scrollLeft-h,f=$n(e)-n.gutters.offsetWidth,p=t.right-t.left>f;return p&&(t.right=t.left+f),t.left<10?l.scrollLeft=0:t.leftf+d-3&&(l.scrollLeft=t.right+(p?0:10)-f),l}function li(e,t){null!=t&&(ci(e),e.curOp.scrollTop=(null==e.curOp.scrollTop?e.doc.scrollTop:e.curOp.scrollTop)+t)}function ai(e){ci(e);var t=e.getCursor();e.curOp.scrollToPos={from:t,to:t,margin:e.options.cursorScrollMargin}}function si(e,t,n){(null!=t||null!=n)&&ci(e),null!=t&&(e.curOp.scrollLeft=t),null!=n&&(e.curOp.scrollTop=n)}function ui(e,t){ci(e),e.curOp.scrollToPos=t}function ci(e){var t=e.curOp.scrollToPos;t&&(e.curOp.scrollToPos=null,hi(e,wr(e,t.from),wr(e,t.to),t.margin))}function hi(e,t,n,r){var i=oi(e,{left:Math.min(t.left,n.left),top:Math.min(t.top,n.top)-r,right:Math.max(t.right,n.right),bottom:Math.max(t.bottom,n.bottom)+r});si(e,i.scrollLeft,i.scrollTop)}function di(e,t){Math.abs(e.doc.scrollTop-t)<2||(n||Vi(e,{top:t}),fi(e,t,!0),n&&Vi(e),Pi(e,100))}function fi(e,t,n){t=Math.max(0,Math.min(e.display.scroller.scrollHeight-e.display.scroller.clientHeight,t)),(e.display.scroller.scrollTop!=t||n)&&(e.doc.scrollTop=t,e.display.scrollbars.setScrollTop(t),e.display.scroller.scrollTop!=t&&(e.display.scroller.scrollTop=t))}function pi(e,t,n,r){t=Math.max(0,Math.min(t,e.display.scroller.scrollWidth-e.display.scroller.clientWidth)),(!(n?t==e.doc.scrollLeft:Math.abs(e.doc.scrollLeft-t)<2)||r)&&(e.doc.scrollLeft=t,Xi(e),e.display.scroller.scrollLeft!=t&&(e.display.scroller.scrollLeft=t),e.display.scrollbars.setScrollLeft(t))}function gi(e){var t=e.display,n=t.gutters.offsetWidth,r=Math.round(e.doc.height+_n(e.display));return{clientHeight:t.scroller.clientHeight,viewHeight:t.wrapper.clientHeight,scrollWidth:t.scroller.scrollWidth,clientWidth:t.scroller.clientWidth,viewWidth:t.wrapper.clientWidth,barLeft:e.options.fixedGutter?n:0,docHeight:r,scrollHeight:r+Yn(e)+t.barHeight,nativeBarWidth:t.nativeBarWidth,gutterWidth:n}}i(lr,"nodeAndOffsetInLineMap"),i(ar,"getUsefulRect"),i(sr,"measureCharInner"),i(ur,"maybeUpdateRectForZooming"),i(cr,"clearLineMeasurementCacheFor"),i(hr,"clearLineMeasurementCache"),i(dr,"clearCaches"),i(fr,"pageScrollX"),i(pr,"pageScrollY"),i(gr,"widgetTopHeight"),i(vr,"intoCoordSystem"),i(mr,"fromCoordSystem"),i(yr,"charCoords"),i(br,"cursorCoords"),i(wr,"estimateCoords"),i(xr,"PosWithInfo"),i(Cr,"coordsChar"),i(Sr,"wrappedLineExtent"),i(Lr,"wrappedLineExtentChar"),i(kr,"boxIsAfter"),i(Tr,"coordsCharInner"),i(Mr,"coordsBidiPart"),i(Nr,"coordsBidiPartWrapped"),i(Or,"textHeight"),i(Ar,"charWidth"),i(Dr,"getDimensions"),i(Wr,"compensateForHScroll"),i(Hr,"estimateHeight"),i(Fr,"estimateLineHeights"),i(Pr,"posFromMouse"),i(Er,"findViewIndex"),i(Ir,"regChange"),i(Rr,"regLineChange"),i(Br,"resetView"),i(zr,"viewCuttingPoint"),i(Gr,"adjustView"),i(Ur,"countDirtyView"),i(Vr,"updateSelection"),i(Kr,"prepareSelection"),i(jr,"drawSelectionCursor"),i(_r,"cmpCoords"),i(Xr,"drawSelectionRange"),i(Yr,"restartBlink"),i($r,"ensureFocus"),i(qr,"delayBlurEvent"),i(Zr,"onFocus"),i(Qr,"onBlur"),i(Jr,"updateHeightsInViewport"),i(ei,"updateWidgetHeight"),i(ti,"visibleLines"),i(ni,"maybeScrollWindow"),i(ri,"scrollPosIntoView"),i(ii,"scrollIntoView"),i(oi,"calculateScrollPos"),i(li,"addToScrollTop"),i(ai,"ensureCursorVisible"),i(si,"scrollToCoords"),i(ui,"scrollToRange"),i(ci,"resolveScrollToPos"),i(hi,"scrollToCoordsRange"),i(di,"updateScrollTop"),i(fi,"setScrollTop"),i(pi,"setScrollLeft"),i(gi,"measureForScrollbars");var vi=i((function(e,t,n){this.cm=n;var r=this.vert=A("div",[A("div",null,null,"min-width: 1px")],"CodeMirror-vscrollbar"),i=this.horiz=A("div",[A("div",null,null,"height: 100%; min-height: 1px")],"CodeMirror-hscrollbar");r.tabIndex=i.tabIndex=-1,e(r),e(i),ge(r,"scroll",(function(){r.clientHeight&&t(r.scrollTop,"vertical")})),ge(i,"scroll",(function(){i.clientWidth&&t(i.scrollLeft,"horizontal")})),this.checkedZeroWidth=!1,a&&s<8&&(this.horiz.style.minHeight=this.vert.style.minWidth="18px")}),"NativeScrollbars");vi.prototype.update=function(e){var t=e.scrollWidth>e.clientWidth+1,n=e.scrollHeight>e.clientHeight+1,r=e.nativeBarWidth;if(n){this.vert.style.display="block",this.vert.style.bottom=t?r+"px":"0";var i=e.viewHeight-(t?r:0);this.vert.firstChild.style.height=Math.max(0,e.scrollHeight-e.clientHeight+i)+"px"}else this.vert.scrollTop=0,this.vert.style.display="",this.vert.firstChild.style.height="0";if(t){this.horiz.style.display="block",this.horiz.style.right=n?r+"px":"0",this.horiz.style.left=e.barLeft+"px";var o=e.viewWidth-e.barLeft-(n?r:0);this.horiz.firstChild.style.width=Math.max(0,e.scrollWidth-e.clientWidth+o)+"px"}else this.horiz.style.display="",this.horiz.firstChild.style.width="0";return!this.checkedZeroWidth&&e.clientHeight>0&&(0==r&&this.zeroWidthHack(),this.checkedZeroWidth=!0),{right:n?r:0,bottom:t?r:0}},vi.prototype.setScrollLeft=function(e){this.horiz.scrollLeft!=e&&(this.horiz.scrollLeft=e),this.disableHoriz&&this.enableZeroWidthBar(this.horiz,this.disableHoriz,"horiz")},vi.prototype.setScrollTop=function(e){this.vert.scrollTop!=e&&(this.vert.scrollTop=e),this.disableVert&&this.enableZeroWidthBar(this.vert,this.disableVert,"vert")},vi.prototype.zeroWidthHack=function(){var e=b&&!p?"12px":"18px";this.horiz.style.height=this.vert.style.width=e,this.horiz.style.pointerEvents=this.vert.style.pointerEvents="none",this.disableHoriz=new z,this.disableVert=new z},vi.prototype.enableZeroWidthBar=function(e,t,n){function r(){var i=e.getBoundingClientRect();("vert"==n?document.elementFromPoint(i.right-1,(i.top+i.bottom)/2):document.elementFromPoint((i.right+i.left)/2,i.bottom-1))!=e?e.style.pointerEvents="none":t.set(1e3,r)}e.style.pointerEvents="auto",i(r,"maybeDisable"),t.set(1e3,r)},vi.prototype.clear=function(){var e=this.horiz.parentNode;e.removeChild(this.horiz),e.removeChild(this.vert)};var mi=i((function(){}),"NullScrollbars");function yi(e,t){t||(t=gi(e));var n=e.display.barWidth,r=e.display.barHeight;bi(e,t);for(var i=0;i<4&&n!=e.display.barWidth||r!=e.display.barHeight;i++)n!=e.display.barWidth&&e.options.lineWrapping&&Jr(e),bi(e,gi(e)),n=e.display.barWidth,r=e.display.barHeight}function bi(e,t){var n=e.display,r=n.scrollbars.update(t);n.sizer.style.paddingRight=(n.barWidth=r.right)+"px",n.sizer.style.paddingBottom=(n.barHeight=r.bottom)+"px",n.heightForcer.style.borderBottom=r.bottom+"px solid transparent",r.right&&r.bottom?(n.scrollbarFiller.style.display="block",n.scrollbarFiller.style.height=r.bottom+"px",n.scrollbarFiller.style.width=r.right+"px"):n.scrollbarFiller.style.display="",r.bottom&&e.options.coverGutterNextToScrollbar&&e.options.fixedGutter?(n.gutterFiller.style.display="block",n.gutterFiller.style.height=r.bottom+"px",n.gutterFiller.style.width=t.gutterWidth+"px"):n.gutterFiller.style.display=""}mi.prototype.update=function(){return{bottom:0,right:0}},mi.prototype.setScrollLeft=function(){},mi.prototype.setScrollTop=function(){},mi.prototype.clear=function(){},i(yi,"updateScrollbars"),i(bi,"updateScrollbarsInner");var wi={native:vi,null:mi};function xi(e){e.display.scrollbars&&(e.display.scrollbars.clear(),e.display.scrollbars.addClass&&M(e.display.wrapper,e.display.scrollbars.addClass)),e.display.scrollbars=new wi[e.options.scrollbarStyle]((function(t){e.display.wrapper.insertBefore(t,e.display.scrollbarFiller),ge(t,"mousedown",(function(){e.state.focused&&setTimeout((function(){return e.display.input.focus()}),0)})),t.setAttribute("cm-not-content","true")}),(function(t,n){"horizontal"==n?pi(e,t):di(e,t)}),e),e.display.scrollbars.addClass&&F(e.display.wrapper,e.display.scrollbars.addClass)}i(xi,"initScrollbars");var Ci=0;function Si(e){e.curOp={cm:e,viewChanged:!1,startHeight:e.doc.height,forceUpdate:!1,updateInput:0,typing:!1,changeObjs:null,cursorActivityHandlers:null,cursorActivityCalled:0,selectionChanged:!1,updateMaxLine:!1,scrollLeft:null,scrollTop:null,scrollToPos:null,focus:!1,id:++Ci,markArrays:null},kn(e.curOp)}function Li(e){var t=e.curOp;t&&Mn(t,(function(e){for(var t=0;t=n.viewTo)||n.maxLineChanged&&t.options.lineWrapping,e.update=e.mustUpdate&&new Ii(t,e.mustUpdate&&{top:e.scrollTop,ensure:e.scrollToPos},e.forceUpdate)}function Mi(e){e.updatedDisplay=e.mustUpdate&&Gi(e.cm,e.update)}function Ni(e){var t=e.cm,n=t.display;e.updatedDisplay&&Jr(t),e.barMeasure=gi(t),n.maxLineChanged&&!t.options.lineWrapping&&(e.adjustWidthTo=er(t,n.maxLine,n.maxLine.text.length).left+3,t.display.sizerWidth=e.adjustWidthTo,e.barMeasure.scrollWidth=Math.max(n.scroller.clientWidth,n.sizer.offsetLeft+e.adjustWidthTo+Yn(t)+t.display.barWidth),e.maxScrollLeft=Math.max(0,n.sizer.offsetLeft+e.adjustWidthTo-$n(t))),(e.updatedDisplay||e.selectionChanged)&&(e.preparedSelection=n.input.prepareSelection())}function Oi(e){var t=e.cm;null!=e.adjustWidthTo&&(t.display.sizer.style.minWidth=e.adjustWidthTo+"px",e.maxScrollLeft=e.display.viewTo)){var n=+new Date+e.options.workTime,r=bt(e,t.highlightFrontier),i=[];t.iter(r.line,Math.min(t.first+t.size,e.display.viewTo+500),(function(o){if(r.line>=e.display.viewFrom){var l=o.styles,a=o.text.length>e.options.maxHighlightLength?Xe(t.mode,r.state):null,s=mt(e,o,r,!0);a&&(r.state=a),o.styles=s.styles;var u=o.styleClasses,c=s.classes;c?o.styleClasses=c:u&&(o.styleClasses=null);for(var h=!l||l.length!=o.styles.length||u!=c&&(!u||!c||u.bgClass!=c.bgClass||u.textClass!=c.textClass),d=0;!h&&dn)return Pi(e,e.options.workDelay),!0})),t.highlightFrontier=r.line,t.modeFrontier=Math.max(t.modeFrontier,r.line),i.length&&Di(e,(function(){for(var t=0;t=n.viewFrom&&t.visible.to<=n.viewTo&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo)&&n.renderedView==n.view&&0==Ur(e))return!1;Yi(e)&&(Br(e),t.dims=Dr(e));var i=r.first+r.size,o=Math.max(t.visible.from-e.options.viewportMargin,r.first),l=Math.min(i,t.visible.to+e.options.viewportMargin);n.viewFroml&&n.viewTo-l<20&&(l=Math.min(i,n.viewTo)),At&&(o=tn(e.doc,o),l=nn(e.doc,l));var a=o!=n.viewFrom||l!=n.viewTo||n.lastWrapHeight!=t.wrapperHeight||n.lastWrapWidth!=t.wrapperWidth;Gr(e,o,l),n.viewOffset=ln(Ze(e.doc,n.viewFrom)),e.display.mover.style.top=n.viewOffset+"px";var s=Ur(e);if(!a&&0==s&&!t.force&&n.renderedView==n.view&&(null==n.updateLineNumbers||n.updateLineNumbers>=n.viewTo))return!1;var u=Bi(e);return s>4&&(n.lineDiv.style.display="none"),Ki(e,n.updateLineNumbers,t.dims),s>4&&(n.lineDiv.style.display=""),n.renderedView=n.view,zi(u),N(n.cursorDiv),N(n.selectionDiv),n.gutters.style.height=n.sizer.style.minHeight=0,a&&(n.lastWrapHeight=t.wrapperHeight,n.lastWrapWidth=t.wrapperWidth,Pi(e,400)),n.updateLineNumbers=null,!0}function Ui(e,t){for(var n=t.viewport,r=!0;;r=!1){if(r&&e.options.lineWrapping&&t.oldDisplayWidth!=$n(e))r&&(t.visible=ti(e.display,e.doc,n));else if(n&&null!=n.top&&(n={top:Math.min(e.doc.height+_n(e.display)-qn(e),n.top)}),t.visible=ti(e.display,e.doc,n),t.visible.from>=e.display.viewFrom&&t.visible.to<=e.display.viewTo)break;if(!Gi(e,t))break;Jr(e);var i=gi(e);Vr(e),yi(e,i),_i(e,i),t.force=!1}t.signal(e,"update",e),(e.display.viewFrom!=e.display.reportedViewFrom||e.display.viewTo!=e.display.reportedViewTo)&&(t.signal(e,"viewportChange",e,e.display.viewFrom,e.display.viewTo),e.display.reportedViewFrom=e.display.viewFrom,e.display.reportedViewTo=e.display.viewTo)}function Vi(e,t){var n=new Ii(e,t);if(Gi(e,n)){Jr(e),Ui(e,n);var r=gi(e);Vr(e),yi(e,r),_i(e,r),n.finish()}}function Ki(e,t,n){var r=e.display,o=e.options.lineNumbers,l=r.lineDiv,a=l.firstChild;function s(t){var n=t.nextSibling;return u&&b&&e.display.currentWheelTarget==t?t.style.display="none":t.parentNode.removeChild(t),n}i(s,"rm");for(var c=r.view,h=r.viewFrom,d=0;d-1&&(p=!1),Dn(e,f,h,n)),p&&(N(f.lineNumber),f.lineNumber.appendChild(document.createTextNode(it(e.options,h)))),a=f.node.nextSibling}else{var g=Bn(e,f,h,n);l.insertBefore(g,a)}h+=f.size}for(;a;)a=s(a)}function ji(e){var t=e.gutters.offsetWidth;e.sizer.style.marginLeft=t+"px",On(e,"gutterChanged",e)}function _i(e,t){e.display.sizer.style.minHeight=t.docHeight+"px",e.display.heightForcer.style.top=t.docHeight+"px",e.display.gutters.style.height=t.docHeight+e.display.barHeight+Yn(e)+"px"}function Xi(e){var t=e.display,n=t.view;if(t.alignWidgets||t.gutters.firstChild&&e.options.fixedGutter){for(var r=Wr(t)-t.scroller.scrollLeft+e.doc.scrollLeft,i=t.gutters.offsetWidth,o=r+"px",l=0;ls.clientWidth,h=s.scrollHeight>s.clientHeight;if(i&&c||o&&h){if(o&&b&&u)e:for(var f=t.target,p=a.view;f!=s;f=f.parentNode)for(var g=0;g=0&<(e,r.to())<=0)return n}return-1};var oo=i((function(e,t){this.anchor=e,this.head=t}),"Range");function lo(e,t,n){var r=e&&e.options.selectionsMayTouch,i=t[n];t.sort((function(e,t){return lt(e.from(),t.from())})),n=G(t,i);for(var o=1;o0:s>=0){var u=ct(a.from(),l.from()),c=ut(a.to(),l.to()),h=a.empty()?l.from()==l.head:a.from()==a.head;o<=n&&--n,t.splice(--o,2,new oo(h?c:u,h?u:c))}}return new io(t,n)}function ao(e,t){return new io([new oo(e,t||e)],0)}function so(e){return e.text?ot(e.from.line+e.text.length-1,q(e.text).length+(1==e.text.length?e.from.ch:0)):e.to}function uo(e,t){if(lt(e,t.from)<0)return e;if(lt(e,t.to)<=0)return so(t);var n=e.line+t.text.length-(t.to.line-t.from.line)-1,r=e.ch;return e.line==t.to.line&&(r+=so(t).ch-t.to.ch),ot(n,r)}function co(e,t){for(var n=[],r=0;r1&&e.remove(s.line+1,g-1),e.insert(s.line+1,y)}On(e,"change",e,t)}function yo(e,t,n){function r(e,i,o){if(e.linked)for(var l=0;l1&&!e.done[e.done.length-2].ranges?(e.done.pop(),q(e.done)):void 0}function To(e,t,n,r){var i=e.history;i.undone.length=0;var o,l,a=+new Date;if((i.lastOp==r||i.lastOrigin==t.origin&&t.origin&&("+"==t.origin.charAt(0)&&i.lastModTime>a-(e.cm?e.cm.options.historyEventDelay:500)||"*"==t.origin.charAt(0)))&&(o=ko(i,i.lastOp==r)))l=q(o.changes),0==lt(t.from,t.to)&&0==lt(t.from,l.to)?l.to=so(t):o.changes.push(So(e,t));else{var s=q(i.done);for((!s||!s.ranges)&&Oo(e.sel,i.done),o={changes:[So(e,t)],generation:i.generation},i.done.push(o);i.done.length>i.undoDepth;)i.done.shift(),i.done[0].ranges||i.done.shift()}i.done.push(n),i.generation=++i.maxGeneration,i.lastModTime=i.lastSelTime=a,i.lastOp=i.lastSelOp=r,i.lastOrigin=i.lastSelOrigin=t.origin,l||ye(e,"historyAdded")}function Mo(e,t,n,r){var i=t.charAt(0);return"*"==i||"+"==i&&n.ranges.length==r.ranges.length&&n.somethingSelected()==r.somethingSelected()&&new Date-e.history.lastSelTime<=(e.cm?e.cm.options.historyEventDelay:500)}function No(e,t,n,r){var i=e.history,o=r&&r.origin;n==i.lastSelOp||o&&i.lastSelOrigin==o&&(i.lastModTime==i.lastSelTime&&i.lastOrigin==o||Mo(e,o,q(i.done),t))?i.done[i.done.length-1]=t:Oo(t,i.done),i.lastSelTime=+new Date,i.lastSelOrigin=o,i.lastSelOp=n,r&&!1!==r.clearRedo&&Lo(i.undone)}function Oo(e,t){var n=q(t);n&&n.ranges&&n.equals(e)||t.push(e)}function Ao(e,t,n,r){var i=t["spans_"+e.id],o=0;e.iter(Math.max(e.first,n),Math.min(e.first+e.size,r),(function(n){n.markedSpans&&((i||(i=t["spans_"+e.id]={}))[o]=n.markedSpans),++o}))}function Do(e){if(!e)return null;for(var t,n=0;n-1&&(q(a)[h]=u[h],delete u[h])}}}return r}function Po(e,t,n,r){if(r){var i=e.anchor;if(n){var o=lt(t,i)<0;o!=lt(n,i)<0?(i=t,t=n):o!=lt(t,n)<0&&(t=n)}return new oo(i,t)}return new oo(n||t,t)}function Eo(e,t,n,r,i){null==i&&(i=e.cm&&(e.cm.display.shift||e.extend)),Uo(e,new io([Po(e.sel.primary(),t,n,i)],0),r)}function Io(e,t,n){for(var r=[],i=e.cm&&(e.cm.display.shift||e.extend),o=0;o=t.ch:a.to>t.ch))){if(i&&(ye(s,"beforeCursorEnter"),s.explicitlyCleared)){if(o.markedSpans){--l;continue}break}if(!s.atomic)continue;if(n){var h=s.find(r<0?1:-1),d=void 0;if((r<0?c:u)&&(h=$o(e,h,-r,h&&h.line==t.line?o:null)),h&&h.line==t.line&&(d=lt(h,n))&&(r<0?d<0:d>0))return Xo(e,h,t,r,i)}var f=s.find(r<0?-1:1);return(r<0?u:c)&&(f=$o(e,f,r,f.line==t.line?o:null)),f?Xo(e,f,t,r,i):null}}return t}function Yo(e,t,n,r,i){var o=r||1;return Xo(e,t,n,o,i)||!i&&Xo(e,t,n,o,!0)||Xo(e,t,n,-o,i)||!i&&Xo(e,t,n,-o,!0)||(e.cantEdit=!0,ot(e.first,0))}function $o(e,t,n,r){return n<0&&0==t.ch?t.line>e.first?dt(e,ot(t.line-1)):null:n>0&&t.ch==(r||Ze(e,t.line)).text.length?t.line=0;--i)Jo(e,{from:r[i].from,to:r[i].to,text:i?[""]:t.text,origin:t.origin});else Jo(e,t)}}function Jo(e,t){if(1!=t.text.length||""!=t.text[0]||0!=lt(t.from,t.to)){var n=co(e,t);To(e,t,n,e.cm?e.cm.curOp.id:NaN),nl(e,t,n,Bt(e,t));var r=[];yo(e,(function(e,n){!n&&-1==G(r,e.history)&&(al(e.history,t),r.push(e.history)),nl(e,t,null,Bt(e,t))}))}}function el(e,t,n){var r=e.cm&&e.cm.state.suppressEdits;if(!r||n){for(var o,l=e.history,a=e.sel,s="undo"==t?l.done:l.undone,u="undo"==t?l.undone:l.done,c=0;c=0;--p){var g=f(p);if(g)return g.v}}}}function tl(e,t){if(0!=t&&(e.first+=t,e.sel=new io(Z(e.sel.ranges,(function(e){return new oo(ot(e.anchor.line+t,e.anchor.ch),ot(e.head.line+t,e.head.ch))})),e.sel.primIndex),e.cm)){Ir(e.cm,e.first,e.first-t,t);for(var n=e.cm.display,r=n.viewFrom;re.lastLine())){if(t.from.lineo&&(t={from:t.from,to:ot(o,Ze(e,o).text.length),text:[t.text[0]],origin:t.origin}),t.removed=Qe(e,t.from,t.to),n||(n=co(e,t)),e.cm?rl(e.cm,t,r):mo(e,t,r),Vo(e,n,K),e.cantEdit&&Yo(e,ot(e.firstLine(),0))&&(e.cantEdit=!1)}}function rl(e,t,n){var r=e.doc,i=e.display,o=t.from,l=t.to,a=!1,s=o.line;e.options.lineWrapping||(s=tt(Qt(Ze(r,o.line))),r.iter(s,l.line+1,(function(e){if(e==i.maxLine)return a=!0,!0}))),r.sel.contains(t.from,t.to)>-1&&we(e),mo(r,t,n,Hr(e)),e.options.lineWrapping||(r.iter(s,o.line+t.text.length,(function(e){var t=an(e);t>i.maxLineLength&&(i.maxLine=e,i.maxLineLength=t,i.maxLineChanged=!0,a=!1)})),a&&(e.curOp.updateMaxLine=!0)),Nt(r,o.line),Pi(e,400);var u=t.text.length-(l.line-o.line)-1;t.full?Ir(e):o.line!=l.line||1!=t.text.length||vo(e.doc,t)?Ir(e,o.line,l.line+1,u):Rr(e,o.line,"text");var c=xe(e,"changes"),h=xe(e,"change");if(h||c){var d={from:o,to:l,text:t.text,removed:t.removed,origin:t.origin};h&&On(e,"change",e,d),c&&(e.curOp.changeObjs||(e.curOp.changeObjs=[])).push(d)}e.display.selForContextMenu=null}function il(e,t,n,r,i){var o;r||(r=n),lt(r,n)<0&&(n=(o=[r,n])[0],r=o[1]),"string"==typeof t&&(t=e.splitLines(t)),Qo(e,{from:n,to:r,text:t,origin:i})}function ol(e,t,n,r){n1||!(this.children[0]instanceof ul))){var a=[];this.collapse(a),this.children=[new ul(a)],this.children[0].parent=this}},collapse:function(e){for(var t=0;t50){for(var l=i.lines.length%25+25,a=l;a10);e.parent.maybeSpill()}},iterN:function(e,t,n){for(var r=0;r0||0==l&&!1!==o.clearWhenEmpty)return o;if(o.replacedWith&&(o.collapsed=!0,o.widgetNode=D("span",[o.replacedWith],"CodeMirror-widget"),r.handleMouseEvents||o.widgetNode.setAttribute("cm-ignore-events","true"),r.insertLeft&&(o.widgetNode.insertLeft=!0)),o.collapsed){if(Zt(e,t.line,t,n,o)||t.line!=n.line&&Zt(e,n.line,t,n,o))throw new Error("Inserting collapsed marker partially overlapping an existing one");Wt()}o.addToHistory&&To(e,{from:t,to:n,origin:"markText"},e.sel,NaN);var a,s=t.line,u=e.cm;if(e.iter(s,n.line+1,(function(r){u&&o.collapsed&&!u.options.lineWrapping&&Qt(r)==u.display.maxLine&&(a=!0),o.collapsed&&s!=t.line&&et(r,0),Et(r,new Ht(o,s==t.line?t.ch:null,s==n.line?n.ch:null),e.cm&&e.cm.curOp),++s})),o.collapsed&&e.iter(t.line,n.line+1,(function(t){rn(e,t)&&et(t,0)})),o.clearOnEnter&&ge(o,"beforeCursorEnter",(function(){return o.clear()})),o.readOnly&&(Dt(),(e.history.done.length||e.history.undone.length)&&e.clearHistory()),o.collapsed&&(o.id=++pl,o.atomic=!0),u){if(a&&(u.curOp.updateMaxLine=!0),o.collapsed)Ir(u,t.line,n.line+1);else if(o.className||o.startStyle||o.endStyle||o.css||o.attributes||o.title)for(var c=t.line;c<=n.line;c++)Rr(u,c,"text");o.atomic&&jo(u.doc),On(u,"markerAdded",u,o)}return o}gl.prototype.clear=function(){if(!this.explicitlyCleared){var e=this.doc.cm,t=e&&!e.curOp;if(t&&Si(e),xe(this,"clear")){var n=this.find();n&&On(this,"clear",n.from,n.to)}for(var r=null,i=null,o=0;oe.display.maxLineLength&&(e.display.maxLine=u,e.display.maxLineLength=c,e.display.maxLineChanged=!0)}null!=r&&e&&this.collapsed&&Ir(e,r,i+1),this.lines.length=0,this.explicitlyCleared=!0,this.atomic&&this.doc.cantEdit&&(this.doc.cantEdit=!1,e&&jo(e.doc)),e&&On(e,"markerCleared",e,this,r,i),t&&Li(e),this.parent&&this.parent.clear()}},gl.prototype.find=function(e,t){null==e&&"bookmark"==this.type&&(e=1);for(var n,r,i=0;i=0;s--)Qo(this,r[s]);a?Go(this,a):this.cm&&ai(this.cm)})),undo:Fi((function(){el(this,"undo")})),redo:Fi((function(){el(this,"redo")})),undoSelection:Fi((function(){el(this,"undo",!0)})),redoSelection:Fi((function(){el(this,"redo",!0)})),setExtending:function(e){this.extend=e},getExtending:function(){return this.extend},historySize:function(){for(var e=this.history,t=0,n=0,r=0;r=e.ch)&&t.push(i.marker.parent||i.marker)}return t},findMarks:function(e,t,n){e=dt(this,e),t=dt(this,t);var r=[],i=e.line;return this.iter(e.line,t.line+1,(function(o){var l=o.markedSpans;if(l)for(var a=0;a=s.to||null==s.from&&i!=e.line||null!=s.from&&i==t.line&&s.from>=t.ch)&&(!n||n(s.marker))&&r.push(s.marker.parent||s.marker)}++i})),r},getAllMarks:function(){var e=[];return this.iter((function(t){var n=t.markedSpans;if(n)for(var r=0;re)return t=e,!0;e-=o,++n})),dt(this,ot(n,t))},indexFromPos:function(e){var t=(e=dt(this,e)).ch;if(e.linet&&(t=e.from),null!=e.to&&e.to-1)return t.state.draggingText(e),void setTimeout((function(){return t.display.input.focus()}),20);try{var d=e.dataTransfer.getData("Text");if(d){var f;if(t.state.draggingText&&!t.state.draggingText.copy&&(f=t.listSelections()),Vo(t.doc,ao(n,n)),f)for(var p=0;p=0;t--)il(e.doc,"",r[t].from,r[t].to,"+delete");ai(e)}))}function Xl(e,t,n){var r=ae(e.text,t+n,n);return r<0||r>e.text.length?null:r}function Yl(e,t,n){var r=Xl(e,t.ch,n);return null==r?null:new ot(t.line,r,n<0?"after":"before")}function $l(e,t,n,r,i){if(e){"rtl"==t.doc.direction&&(i=-i);var o=fe(n,t.doc.direction);if(o){var l,a=i<0?q(o):o[0],s=i<0==(1==a.level)?"after":"before";if(a.level>0||"rtl"==t.doc.direction){var u=nr(t,n);l=i<0?n.text.length-1:0;var c=rr(t,u,l).top;l=se((function(e){return rr(t,u,e).top==c}),i<0==(1==a.level)?a.from:a.to-1,l),"before"==s&&(l=Xl(n,l,1))}else l=i<0?a.to:a.from;return new ot(r,l,s)}}return new ot(r,i<0?n.text.length:0,i<0?"before":"after")}function ql(e,t,n,r){var o=fe(t,e.doc.direction);if(!o)return Yl(t,n,r);n.ch>=t.text.length?(n.ch=t.text.length,n.sticky="before"):n.ch<=0&&(n.ch=0,n.sticky="after");var l=he(o,n.ch,n.sticky),a=o[l];if("ltr"==e.doc.direction&&a.level%2==0&&(r>0?a.to>n.ch:a.from=a.from&&f>=h.begin)){var p=d?"before":"after";return new ot(n.line,f,p)}}var g=i((function(e,t,r){for(var l=i((function(e,t){return t?new ot(n.line,u(e,1),"before"):new ot(n.line,e,"after")}),"getRes");e>=0&&e0==(1!=a.level),c=s?r.begin:u(r.end,-1);if(a.from<=c&&c0?h.end:u(h.begin,-1);return null==m||r>0&&m==t.text.length||!(v=g(r>0?0:o.length-1,r,c(m)))?null:v}Rl.basic={Left:"goCharLeft",Right:"goCharRight",Up:"goLineUp",Down:"goLineDown",End:"goLineEnd",Home:"goLineStartSmart",PageUp:"goPageUp",PageDown:"goPageDown",Delete:"delCharAfter",Backspace:"delCharBefore","Shift-Backspace":"delCharBefore",Tab:"defaultTab","Shift-Tab":"indentAuto",Enter:"newlineAndIndent",Insert:"toggleOverwrite",Esc:"singleSelection"},Rl.pcDefault={"Ctrl-A":"selectAll","Ctrl-D":"deleteLine","Ctrl-Z":"undo","Shift-Ctrl-Z":"redo","Ctrl-Y":"redo","Ctrl-Home":"goDocStart","Ctrl-End":"goDocEnd","Ctrl-Up":"goLineUp","Ctrl-Down":"goLineDown","Ctrl-Left":"goGroupLeft","Ctrl-Right":"goGroupRight","Alt-Left":"goLineStart","Alt-Right":"goLineEnd","Ctrl-Backspace":"delGroupBefore","Ctrl-Delete":"delGroupAfter","Ctrl-S":"save","Ctrl-F":"find","Ctrl-G":"findNext","Shift-Ctrl-G":"findPrev","Shift-Ctrl-F":"replace","Shift-Ctrl-R":"replaceAll","Ctrl-[":"indentLess","Ctrl-]":"indentMore","Ctrl-U":"undoSelection","Shift-Ctrl-U":"redoSelection","Alt-U":"redoSelection",fallthrough:"basic"},Rl.emacsy={"Ctrl-F":"goCharRight","Ctrl-B":"goCharLeft","Ctrl-P":"goLineUp","Ctrl-N":"goLineDown","Ctrl-A":"goLineStart","Ctrl-E":"goLineEnd","Ctrl-V":"goPageDown","Shift-Ctrl-V":"goPageUp","Ctrl-D":"delCharAfter","Ctrl-H":"delCharBefore","Alt-Backspace":"delWordBefore","Ctrl-K":"killLine","Ctrl-T":"transposeChars","Ctrl-O":"openLine"},Rl.macDefault={"Cmd-A":"selectAll","Cmd-D":"deleteLine","Cmd-Z":"undo","Shift-Cmd-Z":"redo","Cmd-Y":"redo","Cmd-Home":"goDocStart","Cmd-Up":"goDocStart","Cmd-End":"goDocEnd","Cmd-Down":"goDocEnd","Alt-Left":"goGroupLeft","Alt-Right":"goGroupRight","Cmd-Left":"goLineLeft","Cmd-Right":"goLineRight","Alt-Backspace":"delGroupBefore","Ctrl-Alt-Backspace":"delGroupAfter","Alt-Delete":"delGroupAfter","Cmd-S":"save","Cmd-F":"find","Cmd-G":"findNext","Shift-Cmd-G":"findPrev","Cmd-Alt-F":"replace","Shift-Cmd-Alt-F":"replaceAll","Cmd-[":"indentLess","Cmd-]":"indentMore","Cmd-Backspace":"delWrappedLineLeft","Cmd-Delete":"delWrappedLineRight","Cmd-U":"undoSelection","Shift-Cmd-U":"redoSelection","Ctrl-Up":"goDocStart","Ctrl-Down":"goDocEnd",fallthrough:["basic","emacsy"]},Rl.default=b?Rl.macDefault:Rl.pcDefault,i(Bl,"normalizeKeyName"),i(zl,"normalizeKeyMap"),i(Gl,"lookupKey"),i(Ul,"isModifierKey"),i(Vl,"addModifierNames"),i(Kl,"keyName"),i(jl,"getKeyMap"),i(_l,"deleteNearSelection"),i(Xl,"moveCharLogically"),i(Yl,"moveLogically"),i($l,"endOfLine"),i(ql,"moveVisually");var Zl={selectAll:qo,singleSelection:function(e){return e.setSelection(e.getCursor("anchor"),e.getCursor("head"),K)},killLine:function(e){return _l(e,(function(t){if(t.empty()){var n=Ze(e.doc,t.head.line).text.length;return t.head.ch==n&&t.head.line0)i=new ot(i.line,i.ch+1),e.replaceRange(o.charAt(i.ch-1)+o.charAt(i.ch-2),ot(i.line,i.ch-2),i,"+transpose");else if(i.line>e.doc.first){var l=Ze(e.doc,i.line-1).text;l&&(i=new ot(i.line,1),e.replaceRange(o.charAt(0)+e.doc.lineSeparator()+l.charAt(l.length-1),ot(i.line-1,l.length-1),i,"+transpose"))}n.push(new oo(i,i))}e.setSelections(n)}))},newlineAndIndent:function(e){return Di(e,(function(){for(var t=e.listSelections(),n=t.length-1;n>=0;n--)e.replaceRange(e.doc.lineSeparator(),t[n].anchor,t[n].head,"+input");t=e.listSelections();for(var r=0;r-1&&(lt((i=l.ranges[i]).from(),t)<0||t.xRel>0)&&(lt(i.to(),t)>0||t.xRel<0)?Ca(e,r,t,o):La(e,r,t,o)}function Ca(e,t,n,r){var o=e.display,l=!1,c=Wi(e,(function(t){u&&(o.scroller.draggable=!1),e.state.draggingText=!1,e.state.delayingBlurEvent&&(e.hasFocus()?e.state.delayingBlurEvent=!1:qr(e)),me(o.wrapper.ownerDocument,"mouseup",c),me(o.wrapper.ownerDocument,"mousemove",h),me(o.scroller,"dragstart",d),me(o.scroller,"drop",c),l||(Se(t),r.addNew||Eo(e.doc,n,null,null,r.extend),u&&!f||a&&9==s?setTimeout((function(){o.wrapper.ownerDocument.body.focus({preventScroll:!0}),o.input.focus()}),20):o.input.focus())})),h=i((function(e){l=l||Math.abs(t.clientX-e.clientX)+Math.abs(t.clientY-e.clientY)>=10}),"mouseMove"),d=i((function(){return l=!0}),"dragStart");u&&(o.scroller.draggable=!0),e.state.draggingText=c,c.copy=!r.moveOnDrag,ge(o.wrapper.ownerDocument,"mouseup",c),ge(o.wrapper.ownerDocument,"mousemove",h),ge(o.scroller,"dragstart",d),ge(o.scroller,"drop",c),e.state.delayingBlurEvent=!0,setTimeout((function(){return o.input.focus()}),20),o.scroller.dragDrop&&o.scroller.dragDrop()}function Sa(e,t,n){if("char"==n)return new oo(t,t);if("word"==n)return e.findWordAt(t);if("line"==n)return new oo(ot(t.line,0),dt(e.doc,ot(t.line+1,0)));var r=n(e,t);return new oo(r.from,r.to)}function La(e,t,n,r){a&&qr(e);var o=e.display,l=e.doc;Se(t);var s,u,c=l.sel,h=c.ranges;if(r.addNew&&!r.extend?(u=l.sel.contains(n),s=u>-1?h[u]:new oo(n,n)):(s=l.sel.primary(),u=l.sel.primIndex),"rectangle"==r.unit)r.addNew||(s=new oo(n,n)),n=Pr(e,t,!0,!0),u=-1;else{var d=Sa(e,n,r.unit);s=r.extend?Po(s,d.anchor,d.head,r.extend):d}r.addNew?-1==u?(u=h.length,Uo(l,lo(e,h.concat([s]),u),{scroll:!1,origin:"*mouse"})):h.length>1&&h[u].empty()&&"char"==r.unit&&!r.extend?(Uo(l,lo(e,h.slice(0,u).concat(h.slice(u+1)),0),{scroll:!1,origin:"*mouse"}),c=l.sel):Ro(l,u,s,j):(u=0,Uo(l,new io([s],0),j),c=l.sel);var f=n;function p(t){if(0!=lt(f,t))if(f=t,"rectangle"==r.unit){for(var i=[],o=e.options.tabSize,a=B(Ze(l,n.line).text,n.ch,o),h=B(Ze(l,t.line).text,t.ch,o),d=Math.min(a,h),p=Math.max(a,h),g=Math.min(n.line,t.line),v=Math.min(e.lastLine(),Math.max(n.line,t.line));g<=v;g++){var m=Ze(l,g).text,y=X(m,d,o);d==p?i.push(new oo(ot(g,y),ot(g,y))):m.length>y&&i.push(new oo(ot(g,y),ot(g,X(m,p,o))))}i.length||i.push(new oo(n,n)),Uo(l,lo(e,c.ranges.slice(0,u).concat(i),u),{origin:"*mouse",scroll:!1}),e.scrollIntoView(t)}else{var b,w=s,x=Sa(e,t,r.unit),C=w.anchor;lt(x.anchor,C)>0?(b=x.head,C=ct(w.from(),x.anchor)):(b=x.anchor,C=ut(w.to(),x.head));var S=c.ranges.slice(0);S[u]=ka(e,new oo(dt(l,C),b)),Uo(l,lo(e,S,u),j)}}i(p,"extendTo");var g=o.wrapper.getBoundingClientRect(),v=0;function m(t){var n=++v,i=Pr(e,t,!0,"rectangle"==r.unit);if(i)if(0!=lt(i,f)){e.curOp.focus=H(),p(i);var a=ti(o,l);(i.line>=a.to||i.lineg.bottom?20:0;s&&setTimeout(Wi(e,(function(){v==n&&(o.scroller.scrollTop+=s,m(t))})),50)}}function y(t){e.state.selectingText=!1,v=1/0,t&&(Se(t),o.input.focus()),me(o.wrapper.ownerDocument,"mousemove",b),me(o.wrapper.ownerDocument,"mouseup",w),l.history.lastSelOrigin=null}i(m,"extend"),i(y,"done");var b=Wi(e,(function(e){0!==e.buttons&&Ne(e)?m(e):y(e)})),w=Wi(e,y);e.state.selectingText=w,ge(o.wrapper.ownerDocument,"mousemove",b),ge(o.wrapper.ownerDocument,"mouseup",w)}function ka(e,t){var n=t.anchor,r=t.head,i=Ze(e.doc,n.line);if(0==lt(n,r)&&n.sticky==r.sticky)return t;var o=fe(i);if(!o)return t;var l=he(o,n.ch,n.sticky),a=o[l];if(a.from!=n.ch&&a.to!=n.ch)return t;var s,u=l+(a.from==n.ch==(1!=a.level)?0:1);if(0==u||u==o.length)return t;if(r.line!=n.line)s=(r.line-n.line)*("ltr"==e.doc.direction?1:-1)>0;else{var c=he(o,r.ch,r.sticky),h=c-l||(r.ch-n.ch)*(1==a.level?-1:1);s=c==u-1||c==u?h<0:h>0}var d=o[u+(s?-1:0)],f=s==(1==d.level),p=f?d.from:d.to,g=f?"after":"before";return n.ch==p&&n.sticky==g?t:new oo(new ot(n.line,p,g),r)}function Ta(e,t,n,r){var i,o;if(t.touches)i=t.touches[0].clientX,o=t.touches[0].clientY;else try{i=t.clientX,o=t.clientY}catch(c){return!1}if(i>=Math.floor(e.display.gutters.getBoundingClientRect().right))return!1;r&&Se(t);var l=e.display,a=l.lineDiv.getBoundingClientRect();if(o>a.bottom||!xe(e,n))return ke(t);o-=a.top-l.viewOffset;for(var s=0;s=i)return ye(e,n,e,nt(e.doc,o),e.display.gutterSpecs[s].className,t),ke(t)}}function Ma(e,t){return Ta(e,t,"gutterClick",!0)}function Na(e,t){Kn(e.display,t)||Oa(e,t)||be(e,t,"contextmenu")||L||e.display.input.onContextMenu(t)}function Oa(e,t){return!!xe(e,"gutterContextMenu")&&Ta(e,t,"gutterContextMenu",!1)}function Aa(e){e.display.wrapper.className=e.display.wrapper.className.replace(/\s*cm-s-\S+/g,"")+e.options.theme.replace(/(^|\s)\s*/g," cm-s-"),dr(e)}va.prototype.compare=function(e,t,n){return this.time+ga>e&&0==lt(t,this.pos)&&n==this.button},i(ma,"clickRepeat"),i(ya,"onMouseDown"),i(ba,"handleMappedButton"),i(wa,"configureMouse"),i(xa,"leftButtonDown"),i(Ca,"leftButtonStartDrag"),i(Sa,"rangeForUnit"),i(La,"leftButtonSelect"),i(ka,"bidiSimplify"),i(Ta,"gutterEvent"),i(Ma,"clickInGutter"),i(Na,"onContextMenu"),i(Oa,"contextMenuInGutter"),i(Aa,"themeChanged");var Da={toString:function(){return"CodeMirror.Init"}},Wa={},Ha={};function Fa(e){var t=e.optionHandlers;function n(n,r,i,o){e.defaults[n]=r,i&&(t[n]=o?function(e,t,n){n!=Da&&i(e,t,n)}:i)}i(n,"option"),e.defineOption=n,e.Init=Da,n("value","",(function(e,t){return e.setValue(t)}),!0),n("mode",null,(function(e,t){e.doc.modeOption=t,po(e)}),!0),n("indentUnit",2,po,!0),n("indentWithTabs",!1),n("smartIndent",!0),n("tabSize",4,(function(e){go(e),dr(e),Ir(e)}),!0),n("lineSeparator",null,(function(e,t){if(e.doc.lineSep=t,t){var n=[],r=e.doc.first;e.doc.iter((function(e){for(var i=0;;){var o=e.text.indexOf(t,i);if(-1==o)break;i=o+t.length,n.push(ot(r,o))}r++}));for(var i=n.length-1;i>=0;i--)il(e.doc,t,n[i],ot(n[i].line,n[i].ch+t.length))}})),n("specialChars",/[\u0000-\u001f\u007f-\u009f\u00ad\u061c\u200b\u200e\u200f\u2028\u2029\ufeff\ufff9-\ufffc]/g,(function(e,t,n){e.state.specialChars=new RegExp(t.source+(t.test("\t")?"":"|\t"),"g"),n!=Da&&e.refresh()})),n("specialCharPlaceholder",vn,(function(e){return e.refresh()}),!0),n("electricChars",!0),n("inputStyle",y?"contenteditable":"textarea",(function(){throw new Error("inputStyle can not (yet) be changed in a running editor")}),!0),n("spellcheck",!1,(function(e,t){return e.getInputField().spellcheck=t}),!0),n("autocorrect",!1,(function(e,t){return e.getInputField().autocorrect=t}),!0),n("autocapitalize",!1,(function(e,t){return e.getInputField().autocapitalize=t}),!0),n("rtlMoveVisually",!x),n("wholeLineUpdateBefore",!0),n("theme","default",(function(e){Aa(e),Zi(e)}),!0),n("keyMap","default",(function(e,t,n){var r=jl(t),i=n!=Da&&jl(n);i&&i.detach&&i.detach(e,r),r.attach&&r.attach(e,i||null)})),n("extraKeys",null),n("configureMouse",null),n("lineWrapping",!1,Ea,!0),n("gutters",[],(function(e,t){e.display.gutterSpecs=$i(t,e.options.lineNumbers),Zi(e)}),!0),n("fixedGutter",!0,(function(e,t){e.display.gutters.style.left=t?Wr(e.display)+"px":"0",e.refresh()}),!0),n("coverGutterNextToScrollbar",!1,(function(e){return yi(e)}),!0),n("scrollbarStyle","native",(function(e){xi(e),yi(e),e.display.scrollbars.setScrollTop(e.doc.scrollTop),e.display.scrollbars.setScrollLeft(e.doc.scrollLeft)}),!0),n("lineNumbers",!1,(function(e,t){e.display.gutterSpecs=$i(e.options.gutters,t),Zi(e)}),!0),n("firstLineNumber",1,Zi,!0),n("lineNumberFormatter",(function(e){return e}),Zi,!0),n("showCursorWhenSelecting",!1,Vr,!0),n("resetSelectionOnContextMenu",!0),n("lineWiseCopyCut",!0),n("pasteLinesPerSelection",!0),n("selectionsMayTouch",!1),n("readOnly",!1,(function(e,t){"nocursor"==t&&(Qr(e),e.display.input.blur()),e.display.input.readOnlyChanged(t)})),n("screenReaderLabel",null,(function(e,t){t=""===t?null:t,e.display.input.screenReaderLabelChanged(t)})),n("disableInput",!1,(function(e,t){t||e.display.input.reset()}),!0),n("dragDrop",!0,Pa),n("allowDropFileTypes",null),n("cursorBlinkRate",530),n("cursorScrollMargin",0),n("cursorHeight",1,Vr,!0),n("singleCursorHeightPerLine",!0,Vr,!0),n("workTime",100),n("workDelay",100),n("flattenSpans",!0,go,!0),n("addModeClass",!1,go,!0),n("pollInterval",100),n("undoDepth",200,(function(e,t){return e.doc.history.undoDepth=t})),n("historyEventDelay",1250),n("viewportMargin",10,(function(e){return e.refresh()}),!0),n("maxHighlightLength",1e4,go,!0),n("moveInputWithCursor",!0,(function(e,t){t||e.display.input.resetPosition()})),n("tabindex",null,(function(e,t){return e.display.input.getField().tabIndex=t||""})),n("autofocus",null),n("direction","ltr",(function(e,t){return e.doc.setDirection(t)}),!0),n("phrases",null)}function Pa(e,t,n){if(!t!=!(n&&n!=Da)){var r=e.display.dragFunctions,i=t?ge:me;i(e.display.scroller,"dragstart",r.start),i(e.display.scroller,"dragenter",r.enter),i(e.display.scroller,"dragover",r.over),i(e.display.scroller,"dragleave",r.leave),i(e.display.scroller,"drop",r.drop)}}function Ea(e){e.options.lineWrapping?(F(e.display.wrapper,"CodeMirror-wrap"),e.display.sizer.style.minWidth="",e.display.sizerWidth=null):(M(e.display.wrapper,"CodeMirror-wrap"),sn(e)),Fr(e),Ir(e),dr(e),setTimeout((function(){return yi(e)}),100)}function Ia(e,t){var n=this;if(!(this instanceof Ia))return new Ia(e,t);this.options=t=t?R(t):{},R(Wa,t,!1);var r=t.value;"string"==typeof r?r=new Sl(r,t.mode,null,t.lineSeparator,t.direction):t.mode&&(r.modeOption=t.mode),this.doc=r;var i=new Ia.inputStyles[t.inputStyle](this),o=this.display=new Qi(e,r,i,t);for(var l in o.wrapper.CodeMirror=this,Aa(this),t.lineWrapping&&(this.display.wrapper.className+=" CodeMirror-wrap"),xi(this),this.state={keyMaps:[],overlays:[],modeGen:0,overwrite:!1,delayingBlurEvent:!1,focused:!1,suppressEdits:!1,pasteIncoming:-1,cutIncoming:-1,selectingText:!1,draggingText:!1,highlight:new z,keySeq:null,specialChars:null},t.autofocus&&!y&&o.input.focus(),a&&s<11&&setTimeout((function(){return n.display.input.reset(!0)}),20),Ra(this),Dl(),Si(this),this.curOp.forceUpdate=!0,bo(this,r),t.autofocus&&!y||this.hasFocus()?setTimeout((function(){n.hasFocus()&&!n.state.focused&&Zr(n)}),20):Qr(this),Ha)Ha.hasOwnProperty(l)&&Ha[l](this,t[l],Da);Yi(this),t.finishInit&&t.finishInit(this);for(var c=0;c400}i(o,"finishTouch"),i(l,"isMouseLikeTouchEvent"),i(u,"farAway"),ge(t.scroller,"touchstart",(function(i){if(!be(e,i)&&!l(i)&&!Ma(e,i)){t.input.ensurePolled(),clearTimeout(n);var o=+new Date;t.activeTouch={start:o,moved:!1,prev:o-r.end<=300?r:null},1==i.touches.length&&(t.activeTouch.left=i.touches[0].pageX,t.activeTouch.top=i.touches[0].pageY)}})),ge(t.scroller,"touchmove",(function(){t.activeTouch&&(t.activeTouch.moved=!0)})),ge(t.scroller,"touchend",(function(n){var r=t.activeTouch;if(r&&!Kn(t,n)&&null!=r.left&&!r.moved&&new Date-r.start<300){var i,l=e.coordsChar(t.activeTouch,"page");i=!r.prev||u(r,r.prev)?new oo(l,l):!r.prev.prev||u(r,r.prev.prev)?e.findWordAt(l):new oo(ot(l.line,0),dt(e.doc,ot(l.line+1,0))),e.setSelection(i.anchor,i.head),e.focus(),Se(n)}o()})),ge(t.scroller,"touchcancel",o),ge(t.scroller,"scroll",(function(){t.scroller.clientHeight&&(di(e,t.scroller.scrollTop),pi(e,t.scroller.scrollLeft,!0),ye(e,"scroll",e))})),ge(t.scroller,"mousewheel",(function(t){return ro(e,t)})),ge(t.scroller,"DOMMouseScroll",(function(t){return ro(e,t)})),ge(t.wrapper,"scroll",(function(){return t.wrapper.scrollTop=t.wrapper.scrollLeft=0})),t.dragFunctions={enter:function(t){be(e,t)||Te(t)},over:function(t){be(e,t)||(Ml(e,t),Te(t))},start:function(t){return Tl(e,t)},drop:Wi(e,kl),leave:function(t){be(e,t)||Nl(e)}};var c=t.input.getField();ge(c,"keyup",(function(t){return ha.call(e,t)})),ge(c,"keydown",Wi(e,ua)),ge(c,"keypress",Wi(e,da)),ge(c,"focus",(function(t){return Zr(e,t)})),ge(c,"blur",(function(t){return Qr(e,t)}))}i(Fa,"defineOptions"),i(Pa,"dragDropChanged"),i(Ea,"wrappingChanged"),i(Ia,"CodeMirror"),Ia.defaults=Wa,Ia.optionHandlers=Ha,i(Ra,"registerEventHandlers");var Ba=[];function za(e,t,n,r){var i,o=e.doc;null==n&&(n="add"),"smart"==n&&(o.mode.indent?i=bt(e,t).state:n="prev");var l=e.options.tabSize,a=Ze(o,t),s=B(a.text,null,l);a.stateAfter&&(a.stateAfter=null);var u,c=a.text.match(/^\s*/)[0];if(r||/\S/.test(a.text)){if("smart"==n&&((u=o.mode.indent(i,a.text.slice(c.length),a.text))==V||u>150)){if(!r)return;n="prev"}}else u=0,n="not";"prev"==n?u=t>o.first?B(Ze(o,t-1).text,null,l):0:"add"==n?u=s+e.options.indentUnit:"subtract"==n?u=s-e.options.indentUnit:"number"==typeof n&&(u=s+n),u=Math.max(0,u);var h="",d=0;if(e.options.indentWithTabs)for(var f=Math.floor(u/l);f;--f)d+=l,h+="\t";if(dl,s=Fe(t),u=null;if(a&&r.ranges.length>1)if(Ga&&Ga.text.join("\n")==t){if(r.ranges.length%Ga.text.length==0){u=[];for(var c=0;c=0;d--){var f=r.ranges[d],p=f.from(),g=f.to();f.empty()&&(n&&n>0?p=ot(p.line,p.ch-n):e.state.overwrite&&!a?g=ot(g.line,Math.min(Ze(o,g.line).text.length,g.ch+q(s).length)):a&&Ga&&Ga.lineWise&&Ga.text.join("\n")==s.join("\n")&&(p=g=ot(p.line,0)));var v={from:p,to:g,text:u?u[d%u.length]:s,origin:i||(a?"paste":e.state.cutIncoming>l?"cut":"+input")};Qo(e.doc,v),On(e,"inputRead",e,v)}t&&!a&&ja(e,t),ai(e),e.curOp.updateInput<2&&(e.curOp.updateInput=h),e.curOp.typing=!0,e.state.pasteIncoming=e.state.cutIncoming=-1}function Ka(e,t){var n=e.clipboardData&&e.clipboardData.getData("Text");if(n)return e.preventDefault(),!t.isReadOnly()&&!t.options.disableInput&&Di(t,(function(){return Va(t,n,0,null,"paste")})),!0}function ja(e,t){if(e.options.electricChars&&e.options.smartIndent)for(var n=e.doc.sel,r=n.ranges.length-1;r>=0;r--){var i=n.ranges[r];if(!(i.head.ch>100||r&&n.ranges[r-1].head.line==i.head.line)){var o=e.getModeAt(i.head),l=!1;if(o.electricChars){for(var a=0;a-1){l=za(e,i.head.line,"smart");break}}else o.electricInput&&o.electricInput.test(Ze(e.doc,i.head.line).text.slice(0,i.head.ch))&&(l=za(e,i.head.line,"smart"));l&&On(e,"electricInput",e,i.head.line)}}}function _a(e){for(var t=[],n=[],r=0;rn&&(za(this,i.head.line,e,!0),n=i.head.line,r==this.doc.sel.primIndex&&ai(this));else{var o=i.from(),l=i.to(),a=Math.max(n,o.line);n=Math.min(this.lastLine(),l.line-(l.ch?0:1))+1;for(var s=a;s0&&Ro(this.doc,r,new oo(o,u[r].to()),K)}}})),getTokenAt:function(e,t){return Lt(this,e,t)},getLineTokens:function(e,t){return Lt(this,ot(e),t,!0)},getTokenTypeAt:function(e){e=dt(this.doc,e);var t,n=yt(this,Ze(this.doc,e.line)),r=0,i=(n.length-1)/2,o=e.ch;if(0==o)t=n[2];else for(;;){var l=r+i>>1;if((l?n[2*l-1]:0)>=o)i=l;else{if(!(n[2*l+1]o&&(e=o,i=!0),r=Ze(this.doc,e)}else r=e;return vr(this,r,{top:0,left:0},t||"page",n||i).top+(i?this.doc.height-ln(r):0)},defaultTextHeight:function(){return Or(this.display)},defaultCharWidth:function(){return Ar(this.display)},getViewport:function(){return{from:this.display.viewFrom,to:this.display.viewTo}},addWidget:function(e,t,n,r,i){var o=this.display,l=(e=br(this,dt(this.doc,e))).bottom,a=e.left;if(t.style.position="absolute",t.setAttribute("cm-ignore-events","true"),this.display.input.setUneditable(t),o.sizer.appendChild(t),"over"==r)l=e.top;else if("above"==r||"near"==r){var s=Math.max(o.wrapper.clientHeight,this.doc.height),u=Math.max(o.sizer.clientWidth,o.lineSpace.clientWidth);("above"==r||e.bottom+t.offsetHeight>s)&&e.top>t.offsetHeight?l=e.top-t.offsetHeight:e.bottom+t.offsetHeight<=s&&(l=e.bottom),a+t.offsetWidth>u&&(a=u-t.offsetWidth)}t.style.top=l+"px",t.style.left=t.style.right="","right"==i?(a=o.sizer.clientWidth-t.offsetWidth,t.style.right="0px"):("left"==i?a=0:"middle"==i&&(a=(o.sizer.clientWidth-t.offsetWidth)/2),t.style.left=a+"px"),n&&ii(this,{left:a,top:l,right:a+t.offsetWidth,bottom:l+t.offsetHeight})},triggerOnKeyDown:Hi(ua),triggerOnKeyPress:Hi(da),triggerOnKeyUp:ha,triggerOnMouseDown:Hi(ya),execCommand:function(e){if(Zl.hasOwnProperty(e))return Zl[e].call(null,this)},triggerElectric:Hi((function(e){ja(this,e)})),findPosH:function(e,t,n,r){var i=1;t<0&&(i=-1,t=-t);for(var o=dt(this.doc,e),l=0;l0&&l(t.charAt(n-1));)--n;for(;r.5||this.options.lineWrapping)&&Fr(this),ye(this,"refresh",this)})),swapDoc:Hi((function(e){var t=this.doc;return t.cm=null,this.state.selectingText&&this.state.selectingText(),bo(this,e),dr(this),this.display.input.reset(),si(this,e.scrollLeft,e.scrollTop),this.curOp.forceScroll=!0,On(this,"swapDoc",this,t),t})),phrase:function(e){var t=this.options.phrases;return t&&Object.prototype.hasOwnProperty.call(t,e)?t[e]:e},getInputField:function(){return this.display.input.getField()},getWrapperElement:function(){return this.display.wrapper},getScrollerElement:function(){return this.display.scroller},getGutterElement:function(){return this.display.gutters}},Ce(e),e.registerHelper=function(t,r,i){n.hasOwnProperty(t)||(n[t]=e[t]={_global:[]}),n[t][r]=i},e.registerGlobalHelper=function(t,r,i,o){e.registerHelper(t,r,o),n[t]._global.push({pred:i,val:o})}}function qa(e,t,n,r,o){var l=t,a=n,s=Ze(e,t.line),u=o&&"rtl"==e.direction?-n:n;function c(){var n=t.line+u;return!(n=e.first+e.size)&&(t=new ot(n,t.ch,t.sticky),s=Ze(e,n))}function h(i){var l;if("codepoint"==r){var a=s.text.charCodeAt(t.ch+(n>0?0:-1));if(isNaN(a))l=null;else{var h=n>0?a>=55296&&a<56320:a>=56320&&a<57343;l=new ot(t.line,Math.max(0,Math.min(s.text.length,t.ch+n*(h?2:1))),-n)}}else l=o?ql(e.cm,s,t,n):Yl(s,t,n);if(null==l){if(i||!c())return!1;t=$l(o,e.cm,s,t.line,u)}else t=l;return!0}if(i(c,"findNextLine"),i(h,"moveOnce"),"char"==r||"codepoint"==r)h();else if("column"==r)h(!0);else if("word"==r||"group"==r)for(var d=null,f="group"==r,p=e.cm&&e.cm.getHelper(t,"wordChars"),g=!0;!(n<0)||h(!g);g=!1){var v=s.text.charAt(t.ch)||"\n",m=re(v,p)?"w":f&&"\n"==v?"n":!f||/\s/.test(v)?null:"p";if(f&&!g&&!m&&(m="s"),d&&d!=m){n<0&&(n=1,h(),t.sticky="after");break}if(m&&(d=m),n>0&&!h(!g))break}var y=Yo(e,t,l,a,!0);return at(l,y)&&(y.hitSide=!0),y}function Za(e,t,n,r){var i,o,l=e.doc,a=t.left;if("page"==r){var s=Math.min(e.display.wrapper.clientHeight,window.innerHeight||document.documentElement.clientHeight),u=Math.max(s-.5*Or(e.display),3);i=(n>0?t.bottom:t.top)+n*u}else"line"==r&&(i=n>0?t.bottom+3:t.top-3);for(;(o=Cr(e,a,i)).outside;){if(n<0?i<=0:i>=l.height){o.hitSide=!0;break}i+=5*n}return o}i(Ua,"setLastCopied"),i(Va,"applyTextInput"),i(Ka,"handlePaste"),i(ja,"triggerElectric"),i(_a,"copyableRanges"),i(Xa,"disableBrowserMagic"),i(Ya,"hiddenTextarea"),i($a,"addEditorMethods"),i(qa,"findPosH"),i(Za,"findPosV");var Qa=i((function(e){this.cm=e,this.lastAnchorNode=this.lastAnchorOffset=this.lastFocusNode=this.lastFocusOffset=null,this.polling=new z,this.composing=null,this.gracePeriod=!1,this.readDOMTimeout=null}),"ContentEditableInput");function Ja(e,t){var n=tr(e,t.line);if(!n||n.hidden)return null;var r=Ze(e.doc,t.line),i=Qn(n,r,t.line),o=fe(r,e.doc.direction),l="left";o&&(l=he(o,t.ch)%2?"right":"left");var a=lr(i.map,t.ch,l);return a.offset="right"==a.collapse?a.end:a.start,a}function es(e){for(var t=e;t;t=t.parentNode)if(/CodeMirror-gutter-wrapper/.test(t.className))return!0;return!1}function ts(e,t){return t&&(e.bad=!0),e}function ns(e,t,n,r,o){var l="",a=!1,s=e.doc.lineSeparator(),u=!1;function c(e){return function(t){return t.id==e}}function h(){a&&(l+=s,u&&(l+=s),a=u=!1)}function d(e){e&&(h(),l+=e)}function f(t){if(1==t.nodeType){var n=t.getAttribute("cm-text");if(n)return void d(n);var i,l=t.getAttribute("cm-marker");if(l){var p=e.findMarks(ot(r,0),ot(o+1,0),c(+l));return void(p.length&&(i=p[0].find(0))&&d(Qe(e.doc,i.from,i.to).join(s)))}if("false"==t.getAttribute("contenteditable"))return;var g=/^(pre|div|p|li|table|br)$/i.test(t.nodeName);if(!/^br$/i.test(t.nodeName)&&0==t.textContent.length)return;g&&h();for(var v=0;v=t.display.viewTo||o.line=t.display.viewFrom&&Ja(t,i)||{node:s[0].measure.map[2],offset:0},c=o.liner.firstLine()&&(l=ot(l.line-1,Ze(r.doc,l.line-1).length)),a.ch==Ze(r.doc,a.line).text.length&&a.linei.viewTo-1)return!1;l.line==i.viewFrom||0==(e=Er(r,l.line))?(t=tt(i.view[0].line),n=i.view[0].node):(t=tt(i.view[e].line),n=i.view[e-1].node.nextSibling);var s,u,c=Er(r,a.line);if(c==i.view.length-1?(s=i.viewTo-1,u=i.lineDiv.lastChild):(s=tt(i.view[c+1].line)-1,u=i.view[c+1].node.previousSibling),!n)return!1;for(var h=r.doc.splitLines(ns(r,n,u,t,s)),d=Qe(r.doc,ot(t,0),ot(s,Ze(r.doc,s).text.length));h.length>1&&d.length>1;)if(q(h)==q(d))h.pop(),d.pop(),s--;else{if(h[0]!=d[0])break;h.shift(),d.shift(),t++}for(var f=0,p=0,g=h[0],v=d[0],m=Math.min(g.length,v.length);fl.ch&&y.charCodeAt(y.length-p-1)==b.charCodeAt(b.length-p-1);)f--,p++;h[h.length-1]=y.slice(0,y.length-p).replace(/^\u200b+/,""),h[0]=h[0].slice(f).replace(/\u200b+$/,"");var x=ot(t,f),C=ot(s,d.length?q(d).length-p:0);return h.length>1||h[0]||lt(x,C)?(il(r.doc,h,x,C,"+input"),!0):void 0},Qa.prototype.ensurePolled=function(){this.forceCompositionEnd()},Qa.prototype.reset=function(){this.forceCompositionEnd()},Qa.prototype.forceCompositionEnd=function(){this.composing&&(clearTimeout(this.readDOMTimeout),this.composing=null,this.updateFromDOM(),this.div.blur(),this.div.focus())},Qa.prototype.readFromDOMSoon=function(){var e=this;null==this.readDOMTimeout&&(this.readDOMTimeout=setTimeout((function(){if(e.readDOMTimeout=null,e.composing){if(!e.composing.done)return;e.composing=null}e.updateFromDOM()}),80))},Qa.prototype.updateFromDOM=function(){var e=this;(this.cm.isReadOnly()||!this.pollContent())&&Di(this.cm,(function(){return Ir(e.cm)}))},Qa.prototype.setUneditable=function(e){e.contentEditable="false"},Qa.prototype.onKeyPress=function(e){0==e.charCode||this.composing||(e.preventDefault(),this.cm.isReadOnly()||Wi(this.cm,Va)(this.cm,String.fromCharCode(null==e.charCode?e.keyCode:e.charCode),0))},Qa.prototype.readOnlyChanged=function(e){this.div.contentEditable=String("nocursor"!=e)},Qa.prototype.onContextMenu=function(){},Qa.prototype.resetPosition=function(){},Qa.prototype.needsContentAttribute=!0,i(Ja,"posToDOM"),i(es,"isInGutter"),i(ts,"badPos"),i(ns,"domTextBetween"),i(rs,"domToPos"),i(is,"locateNodeInLineView");var os=i((function(e){this.cm=e,this.prevInput="",this.pollingFast=!1,this.polling=new z,this.hasSelection=!1,this.composing=null}),"TextareaInput");function ls(e,t){if((t=t?R(t):{}).value=e.value,!t.tabindex&&e.tabIndex&&(t.tabindex=e.tabIndex),!t.placeholder&&e.placeholder&&(t.placeholder=e.placeholder),null==t.autofocus){var n=H();t.autofocus=n==e||null!=e.getAttribute("autofocus")&&n==document.body}function r(){e.value=s.getValue()}var o;if(i(r,"save"),e.form&&(ge(e.form,"submit",r),!t.leaveSubmitMethodAlone)){var l=e.form;o=l.submit;try{var a=l.submit=function(){r(),l.submit=o,l.submit(),l.submit=a}}catch(u){}}t.finishInit=function(n){n.save=r,n.getTextArea=function(){return e},n.toTextArea=function(){n.toTextArea=isNaN,r(),e.parentNode.removeChild(n.getWrapperElement()),e.style.display="",e.form&&(me(e.form,"submit",r),!t.leaveSubmitMethodAlone&&"function"==typeof e.form.submit&&(e.form.submit=o))}},e.style.display="none";var s=Ia((function(t){return e.parentNode.insertBefore(t,e.nextSibling)}),t);return s}function as(e){e.off=me,e.on=ge,e.wheelEventPixels=no,e.Doc=Sl,e.splitLines=Fe,e.countColumn=B,e.findColumn=X,e.isWordChar=ne,e.Pass=V,e.signal=ye,e.Line=un,e.changeEnd=so,e.scrollbarModel=wi,e.Pos=ot,e.cmpPos=lt,e.modes=Be,e.mimeModes=ze,e.resolveMode=Ve,e.getMode=Ke,e.modeExtensions=je,e.extendMode=_e,e.copyState=Xe,e.startState=$e,e.innerMode=Ye,e.commands=Zl,e.keyMap=Rl,e.keyName=Kl,e.isModifierKey=Ul,e.lookupKey=Gl,e.normalizeKeyMap=zl,e.StringStream=qe,e.SharedTextMarker=ml,e.TextMarker=gl,e.LineWidget=hl,e.e_preventDefault=Se,e.e_stopPropagation=Le,e.e_stop=Te,e.addClass=F,e.contains=W,e.rmClass=M,e.keyNames=Fl}os.prototype.init=function(e){var t=this,n=this,r=this.cm;this.createField(e);var o=this.textarea;function l(e){if(!be(r,e)){if(r.somethingSelected())Ua({lineWise:!1,text:r.getSelections()});else{if(!r.options.lineWiseCopyCut)return;var t=_a(r);Ua({lineWise:!0,text:t.text}),"cut"==e.type?r.setSelections(t.ranges,null,K):(n.prevInput="",o.value=t.text.join("\n"),E(o))}"cut"==e.type&&(r.state.cutIncoming=+new Date)}}e.wrapper.insertBefore(this.wrapper,e.wrapper.firstChild),v&&(o.style.width="0px"),ge(o,"input",(function(){a&&s>=9&&t.hasSelection&&(t.hasSelection=null),n.poll()})),ge(o,"paste",(function(e){be(r,e)||Ka(e,r)||(r.state.pasteIncoming=+new Date,n.fastPoll())})),i(l,"prepareCopyCut"),ge(o,"cut",l),ge(o,"copy",l),ge(e.scroller,"paste",(function(t){if(!Kn(e,t)&&!be(r,t)){if(!o.dispatchEvent)return r.state.pasteIncoming=+new Date,void n.focus();var i=new Event("paste");i.clipboardData=t.clipboardData,o.dispatchEvent(i)}})),ge(e.lineSpace,"selectstart",(function(t){Kn(e,t)||Se(t)})),ge(o,"compositionstart",(function(){var e=r.getCursor("from");n.composing&&n.composing.range.clear(),n.composing={start:e,range:r.markText(e,r.getCursor("to"),{className:"CodeMirror-composing"})}})),ge(o,"compositionend",(function(){n.composing&&(n.poll(),n.composing.range.clear(),n.composing=null)}))},os.prototype.createField=function(e){this.wrapper=Ya(),this.textarea=this.wrapper.firstChild},os.prototype.screenReaderLabelChanged=function(e){e?this.textarea.setAttribute("aria-label",e):this.textarea.removeAttribute("aria-label")},os.prototype.prepareSelection=function(){var e=this.cm,t=e.display,n=e.doc,r=Kr(e);if(e.options.moveInputWithCursor){var i=br(e,n.sel.primary().head,"div"),o=t.wrapper.getBoundingClientRect(),l=t.lineDiv.getBoundingClientRect();r.teTop=Math.max(0,Math.min(t.wrapper.clientHeight-10,i.top+l.top-o.top)),r.teLeft=Math.max(0,Math.min(t.wrapper.clientWidth-10,i.left+l.left-o.left))}return r},os.prototype.showSelection=function(e){var t=this.cm.display;O(t.cursorDiv,e.cursors),O(t.selectionDiv,e.selection),null!=e.teTop&&(this.wrapper.style.top=e.teTop+"px",this.wrapper.style.left=e.teLeft+"px")},os.prototype.reset=function(e){if(!this.contextMenuPending&&!this.composing){var t=this.cm;if(t.somethingSelected()){this.prevInput="";var n=t.getSelection();this.textarea.value=n,t.state.focused&&E(this.textarea),a&&s>=9&&(this.hasSelection=n)}else e||(this.prevInput=this.textarea.value="",a&&s>=9&&(this.hasSelection=null))}},os.prototype.getField=function(){return this.textarea},os.prototype.supportsTouch=function(){return!1},os.prototype.focus=function(){if("nocursor"!=this.cm.options.readOnly&&(!y||H()!=this.textarea))try{this.textarea.focus()}catch(e){}},os.prototype.blur=function(){this.textarea.blur()},os.prototype.resetPosition=function(){this.wrapper.style.top=this.wrapper.style.left=0},os.prototype.receivedFocus=function(){this.slowPoll()},os.prototype.slowPoll=function(){var e=this;this.pollingFast||this.polling.set(this.cm.options.pollInterval,(function(){e.poll(),e.cm.state.focused&&e.slowPoll()}))},os.prototype.fastPoll=function(){var e=!1,t=this;function n(){t.poll()||e?(t.pollingFast=!1,t.slowPoll()):(e=!0,t.polling.set(60,n))}t.pollingFast=!0,i(n,"p"),t.polling.set(20,n)},os.prototype.poll=function(){var e=this,t=this.cm,n=this.textarea,r=this.prevInput;if(this.contextMenuPending||!t.state.focused||Pe(n)&&!r&&!this.composing||t.isReadOnly()||t.options.disableInput||t.state.keySeq)return!1;var i=n.value;if(i==r&&!t.somethingSelected())return!1;if(a&&s>=9&&this.hasSelection===i||b&&/[\uf700-\uf7ff]/.test(i))return t.display.input.reset(),!1;if(t.doc.sel==t.display.selForContextMenu){var o=i.charCodeAt(0);if(8203==o&&!r&&(r="\u200b"),8666==o)return this.reset(),this.cm.execCommand("undo")}for(var l=0,u=Math.min(r.length,i.length);l1e3||i.indexOf("\n")>-1?n.value=e.prevInput="":e.prevInput=i,e.composing&&(e.composing.range.clear(),e.composing.range=t.markText(e.composing.start,t.getCursor("to"),{className:"CodeMirror-composing"}))})),!0},os.prototype.ensurePolled=function(){this.pollingFast&&this.poll()&&(this.pollingFast=!1)},os.prototype.onKeyPress=function(){a&&s>=9&&(this.hasSelection=null),this.fastPoll()},os.prototype.onContextMenu=function(e){var t=this,n=t.cm,r=n.display,o=t.textarea;t.contextMenuPending&&t.contextMenuPending();var l=Pr(n,e),c=r.scroller.scrollTop;if(l&&!d){n.options.resetSelectionOnContextMenu&&-1==n.doc.sel.contains(l)&&Wi(n,Uo)(n.doc,ao(l),K);var h,f=o.style.cssText,p=t.wrapper.style.cssText,g=t.wrapper.offsetParent.getBoundingClientRect();if(t.wrapper.style.cssText="position: static",o.style.cssText="position: absolute; width: 30px; height: 30px;\n top: "+(e.clientY-g.top-5)+"px; left: "+(e.clientX-g.left-5)+"px;\n z-index: 1000; background: "+(a?"rgba(255, 255, 255, .05)":"transparent")+";\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);",u&&(h=window.scrollY),r.input.focus(),u&&window.scrollTo(null,h),r.input.reset(),n.somethingSelected()||(o.value=t.prevInput=" "),t.contextMenuPending=y,r.selForContextMenu=n.doc.sel,clearTimeout(r.detectingSelectAll),i(m,"prepareSelectAllHack"),i(y,"rehide"),a&&s>=9&&m(),L){Te(e);var v=i((function(){me(window,"mouseup",v),setTimeout(y,20)}),"mouseup");ge(window,"mouseup",v)}else setTimeout(y,50)}function m(){if(null!=o.selectionStart){var e=n.somethingSelected(),i="\u200b"+(e?o.value:"");o.value="\u21da",o.value=i,t.prevInput=e?"":"\u200b",o.selectionStart=1,o.selectionEnd=i.length,r.selForContextMenu=n.doc.sel}}function y(){if(t.contextMenuPending==y&&(t.contextMenuPending=!1,t.wrapper.style.cssText=p,o.style.cssText=f,a&&s<9&&r.scrollbars.setScrollTop(r.scroller.scrollTop=c),null!=o.selectionStart)){(!a||a&&s<9)&&m();var e=0,l=i((function(){r.selForContextMenu==n.doc.sel&&0==o.selectionStart&&o.selectionEnd>0&&"\u200b"==t.prevInput?Wi(n,qo)(n):e++<10?r.detectingSelectAll=setTimeout(l,500):(r.selForContextMenu=null,r.input.reset())}),"poll");r.detectingSelectAll=setTimeout(l,200)}}},os.prototype.readOnlyChanged=function(e){e||this.reset(),this.textarea.disabled="nocursor"==e,this.textarea.readOnly=!!e},os.prototype.setUneditable=function(){},os.prototype.needsContentAttribute=!1,i(ls,"fromTextArea"),i(as,"addLegacyProps"),Fa(Ia),$a(Ia);var ss="iter insert remove copy getEditor constructor".split(" ");for(var us in Sl.prototype)Sl.prototype.hasOwnProperty(us)&&G(ss,us)<0&&(Ia.prototype[us]=function(e){return function(){return e.apply(this.doc,arguments)}}(Sl.prototype[us]));return Ce(Sl),Ia.inputStyles={textarea:os,contenteditable:Qa},Ia.defineMode=function(e){!Ia.defaults.mode&&"null"!=e&&(Ia.defaults.mode=e),Ge.apply(this,arguments)},Ia.defineMIME=Ue,Ia.defineMode("null",(function(){return{token:function(e){return e.skipToEnd()}}})),Ia.defineMIME("text/plain","null"),Ia.defineExtension=function(e,t){Ia.prototype[e]=t},Ia.defineDocExtension=function(e,t){Sl.prototype[e]=t},Ia.fromTextArea=ls,as(Ia),Ia.version="5.65.3",Ia}()),a.exports}i(s,"requireCodemirror")}}]); -//# sourceMappingURL=308.d593a087.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/308.d593a087.chunk.js.map b/serv/web/build/static/js/308.d593a087.chunk.js.map deleted file mode 100644 index cd3e31f6..00000000 --- a/serv/web/build/static/js/308.d593a087.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/308.d593a087.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/lib/codemirror.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// This is CodeMirror (https://codemirror.net), a code editor\n// implemented in JavaScript on top of the browser's DOM.\n//\n// You can find some technical background for some of the code below\n// at http://marijnhaverbeke.nl/blog/#cm-internals .\n\n(function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = global || self, global.CodeMirror = factory());\n}(this, (function () { 'use strict';\n\n // Kludges for bugs and behavior differences that can't be feature\n // detected are enabled based on userAgent etc sniffing.\n var userAgent = navigator.userAgent;\n var platform = navigator.platform;\n\n var gecko = /gecko\\/\\d/i.test(userAgent);\n var ie_upto10 = /MSIE \\d/.test(userAgent);\n var ie_11up = /Trident\\/(?:[7-9]|\\d{2,})\\..*rv:(\\d+)/.exec(userAgent);\n var edge = /Edge\\/(\\d+)/.exec(userAgent);\n var ie = ie_upto10 || ie_11up || edge;\n var ie_version = ie && (ie_upto10 ? document.documentMode || 6 : +(edge || ie_11up)[1]);\n var webkit = !edge && /WebKit\\//.test(userAgent);\n var qtwebkit = webkit && /Qt\\/\\d+\\.\\d+/.test(userAgent);\n var chrome = !edge && /Chrome\\//.test(userAgent);\n var presto = /Opera\\//.test(userAgent);\n var safari = /Apple Computer/.test(navigator.vendor);\n var mac_geMountainLion = /Mac OS X 1\\d\\D([8-9]|\\d\\d)\\D/.test(userAgent);\n var phantom = /PhantomJS/.test(userAgent);\n\n var ios = safari && (/Mobile\\/\\w+/.test(userAgent) || navigator.maxTouchPoints > 2);\n var android = /Android/.test(userAgent);\n // This is woefully incomplete. Suggestions for alternative methods welcome.\n var mobile = ios || android || /webOS|BlackBerry|Opera Mini|Opera Mobi|IEMobile/i.test(userAgent);\n var mac = ios || /Mac/.test(platform);\n var chromeOS = /\\bCrOS\\b/.test(userAgent);\n var windows = /win/i.test(platform);\n\n var presto_version = presto && userAgent.match(/Version\\/(\\d*\\.\\d*)/);\n if (presto_version) { presto_version = Number(presto_version[1]); }\n if (presto_version && presto_version >= 15) { presto = false; webkit = true; }\n // Some browsers use the wrong event properties to signal cmd/ctrl on OS X\n var flipCtrlCmd = mac && (qtwebkit || presto && (presto_version == null || presto_version < 12.11));\n var captureRightClick = gecko || (ie && ie_version >= 9);\n\n function classTest(cls) { return new RegExp(\"(^|\\\\s)\" + cls + \"(?:$|\\\\s)\\\\s*\") }\n\n var rmClass = function(node, cls) {\n var current = node.className;\n var match = classTest(cls).exec(current);\n if (match) {\n var after = current.slice(match.index + match[0].length);\n node.className = current.slice(0, match.index) + (after ? match[1] + after : \"\");\n }\n };\n\n function removeChildren(e) {\n for (var count = e.childNodes.length; count > 0; --count)\n { e.removeChild(e.firstChild); }\n return e\n }\n\n function removeChildrenAndAdd(parent, e) {\n return removeChildren(parent).appendChild(e)\n }\n\n function elt(tag, content, className, style) {\n var e = document.createElement(tag);\n if (className) { e.className = className; }\n if (style) { e.style.cssText = style; }\n if (typeof content == \"string\") { e.appendChild(document.createTextNode(content)); }\n else if (content) { for (var i = 0; i < content.length; ++i) { e.appendChild(content[i]); } }\n return e\n }\n // wrapper for elt, which removes the elt from the accessibility tree\n function eltP(tag, content, className, style) {\n var e = elt(tag, content, className, style);\n e.setAttribute(\"role\", \"presentation\");\n return e\n }\n\n var range;\n if (document.createRange) { range = function(node, start, end, endNode) {\n var r = document.createRange();\n r.setEnd(endNode || node, end);\n r.setStart(node, start);\n return r\n }; }\n else { range = function(node, start, end) {\n var r = document.body.createTextRange();\n try { r.moveToElementText(node.parentNode); }\n catch(e) { return r }\n r.collapse(true);\n r.moveEnd(\"character\", end);\n r.moveStart(\"character\", start);\n return r\n }; }\n\n function contains(parent, child) {\n if (child.nodeType == 3) // Android browser always returns false when child is a textnode\n { child = child.parentNode; }\n if (parent.contains)\n { return parent.contains(child) }\n do {\n if (child.nodeType == 11) { child = child.host; }\n if (child == parent) { return true }\n } while (child = child.parentNode)\n }\n\n function activeElt() {\n // IE and Edge may throw an \"Unspecified Error\" when accessing document.activeElement.\n // IE < 10 will throw when accessed while the page is loading or in an iframe.\n // IE > 9 and Edge will throw when accessed in an iframe if document.body is unavailable.\n var activeElement;\n try {\n activeElement = document.activeElement;\n } catch(e) {\n activeElement = document.body || null;\n }\n while (activeElement && activeElement.shadowRoot && activeElement.shadowRoot.activeElement)\n { activeElement = activeElement.shadowRoot.activeElement; }\n return activeElement\n }\n\n function addClass(node, cls) {\n var current = node.className;\n if (!classTest(cls).test(current)) { node.className += (current ? \" \" : \"\") + cls; }\n }\n function joinClasses(a, b) {\n var as = a.split(\" \");\n for (var i = 0; i < as.length; i++)\n { if (as[i] && !classTest(as[i]).test(b)) { b += \" \" + as[i]; } }\n return b\n }\n\n var selectInput = function(node) { node.select(); };\n if (ios) // Mobile Safari apparently has a bug where select() is broken.\n { selectInput = function(node) { node.selectionStart = 0; node.selectionEnd = node.value.length; }; }\n else if (ie) // Suppress mysterious IE10 errors\n { selectInput = function(node) { try { node.select(); } catch(_e) {} }; }\n\n function bind(f) {\n var args = Array.prototype.slice.call(arguments, 1);\n return function(){return f.apply(null, args)}\n }\n\n function copyObj(obj, target, overwrite) {\n if (!target) { target = {}; }\n for (var prop in obj)\n { if (obj.hasOwnProperty(prop) && (overwrite !== false || !target.hasOwnProperty(prop)))\n { target[prop] = obj[prop]; } }\n return target\n }\n\n // Counts the column offset in a string, taking tabs into account.\n // Used mostly to find indentation.\n function countColumn(string, end, tabSize, startIndex, startValue) {\n if (end == null) {\n end = string.search(/[^\\s\\u00a0]/);\n if (end == -1) { end = string.length; }\n }\n for (var i = startIndex || 0, n = startValue || 0;;) {\n var nextTab = string.indexOf(\"\\t\", i);\n if (nextTab < 0 || nextTab >= end)\n { return n + (end - i) }\n n += nextTab - i;\n n += tabSize - (n % tabSize);\n i = nextTab + 1;\n }\n }\n\n var Delayed = function() {\n this.id = null;\n this.f = null;\n this.time = 0;\n this.handler = bind(this.onTimeout, this);\n };\n Delayed.prototype.onTimeout = function (self) {\n self.id = 0;\n if (self.time <= +new Date) {\n self.f();\n } else {\n setTimeout(self.handler, self.time - +new Date);\n }\n };\n Delayed.prototype.set = function (ms, f) {\n this.f = f;\n var time = +new Date + ms;\n if (!this.id || time < this.time) {\n clearTimeout(this.id);\n this.id = setTimeout(this.handler, ms);\n this.time = time;\n }\n };\n\n function indexOf(array, elt) {\n for (var i = 0; i < array.length; ++i)\n { if (array[i] == elt) { return i } }\n return -1\n }\n\n // Number of pixels added to scroller and sizer to hide scrollbar\n var scrollerGap = 50;\n\n // Returned or thrown by various protocols to signal 'I'm not\n // handling this'.\n var Pass = {toString: function(){return \"CodeMirror.Pass\"}};\n\n // Reused option objects for setSelection & friends\n var sel_dontScroll = {scroll: false}, sel_mouse = {origin: \"*mouse\"}, sel_move = {origin: \"+move\"};\n\n // The inverse of countColumn -- find the offset that corresponds to\n // a particular column.\n function findColumn(string, goal, tabSize) {\n for (var pos = 0, col = 0;;) {\n var nextTab = string.indexOf(\"\\t\", pos);\n if (nextTab == -1) { nextTab = string.length; }\n var skipped = nextTab - pos;\n if (nextTab == string.length || col + skipped >= goal)\n { return pos + Math.min(skipped, goal - col) }\n col += nextTab - pos;\n col += tabSize - (col % tabSize);\n pos = nextTab + 1;\n if (col >= goal) { return pos }\n }\n }\n\n var spaceStrs = [\"\"];\n function spaceStr(n) {\n while (spaceStrs.length <= n)\n { spaceStrs.push(lst(spaceStrs) + \" \"); }\n return spaceStrs[n]\n }\n\n function lst(arr) { return arr[arr.length-1] }\n\n function map(array, f) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = f(array[i], i); }\n return out\n }\n\n function insertSorted(array, value, score) {\n var pos = 0, priority = score(value);\n while (pos < array.length && score(array[pos]) <= priority) { pos++; }\n array.splice(pos, 0, value);\n }\n\n function nothing() {}\n\n function createObj(base, props) {\n var inst;\n if (Object.create) {\n inst = Object.create(base);\n } else {\n nothing.prototype = base;\n inst = new nothing();\n }\n if (props) { copyObj(props, inst); }\n return inst\n }\n\n var nonASCIISingleCaseWordChar = /[\\u00df\\u0587\\u0590-\\u05f4\\u0600-\\u06ff\\u3040-\\u309f\\u30a0-\\u30ff\\u3400-\\u4db5\\u4e00-\\u9fcc\\uac00-\\ud7af]/;\n function isWordCharBasic(ch) {\n return /\\w/.test(ch) || ch > \"\\x80\" &&\n (ch.toUpperCase() != ch.toLowerCase() || nonASCIISingleCaseWordChar.test(ch))\n }\n function isWordChar(ch, helper) {\n if (!helper) { return isWordCharBasic(ch) }\n if (helper.source.indexOf(\"\\\\w\") > -1 && isWordCharBasic(ch)) { return true }\n return helper.test(ch)\n }\n\n function isEmpty(obj) {\n for (var n in obj) { if (obj.hasOwnProperty(n) && obj[n]) { return false } }\n return true\n }\n\n // Extending unicode characters. A series of a non-extending char +\n // any number of extending chars is treated as a single unit as far\n // as editing and measuring is concerned. This is not fully correct,\n // since some scripts/fonts/browsers also treat other configurations\n // of code points as a group.\n var extendingChars = /[\\u0300-\\u036f\\u0483-\\u0489\\u0591-\\u05bd\\u05bf\\u05c1\\u05c2\\u05c4\\u05c5\\u05c7\\u0610-\\u061a\\u064b-\\u065e\\u0670\\u06d6-\\u06dc\\u06de-\\u06e4\\u06e7\\u06e8\\u06ea-\\u06ed\\u0711\\u0730-\\u074a\\u07a6-\\u07b0\\u07eb-\\u07f3\\u0816-\\u0819\\u081b-\\u0823\\u0825-\\u0827\\u0829-\\u082d\\u0900-\\u0902\\u093c\\u0941-\\u0948\\u094d\\u0951-\\u0955\\u0962\\u0963\\u0981\\u09bc\\u09be\\u09c1-\\u09c4\\u09cd\\u09d7\\u09e2\\u09e3\\u0a01\\u0a02\\u0a3c\\u0a41\\u0a42\\u0a47\\u0a48\\u0a4b-\\u0a4d\\u0a51\\u0a70\\u0a71\\u0a75\\u0a81\\u0a82\\u0abc\\u0ac1-\\u0ac5\\u0ac7\\u0ac8\\u0acd\\u0ae2\\u0ae3\\u0b01\\u0b3c\\u0b3e\\u0b3f\\u0b41-\\u0b44\\u0b4d\\u0b56\\u0b57\\u0b62\\u0b63\\u0b82\\u0bbe\\u0bc0\\u0bcd\\u0bd7\\u0c3e-\\u0c40\\u0c46-\\u0c48\\u0c4a-\\u0c4d\\u0c55\\u0c56\\u0c62\\u0c63\\u0cbc\\u0cbf\\u0cc2\\u0cc6\\u0ccc\\u0ccd\\u0cd5\\u0cd6\\u0ce2\\u0ce3\\u0d3e\\u0d41-\\u0d44\\u0d4d\\u0d57\\u0d62\\u0d63\\u0dca\\u0dcf\\u0dd2-\\u0dd4\\u0dd6\\u0ddf\\u0e31\\u0e34-\\u0e3a\\u0e47-\\u0e4e\\u0eb1\\u0eb4-\\u0eb9\\u0ebb\\u0ebc\\u0ec8-\\u0ecd\\u0f18\\u0f19\\u0f35\\u0f37\\u0f39\\u0f71-\\u0f7e\\u0f80-\\u0f84\\u0f86\\u0f87\\u0f90-\\u0f97\\u0f99-\\u0fbc\\u0fc6\\u102d-\\u1030\\u1032-\\u1037\\u1039\\u103a\\u103d\\u103e\\u1058\\u1059\\u105e-\\u1060\\u1071-\\u1074\\u1082\\u1085\\u1086\\u108d\\u109d\\u135f\\u1712-\\u1714\\u1732-\\u1734\\u1752\\u1753\\u1772\\u1773\\u17b7-\\u17bd\\u17c6\\u17c9-\\u17d3\\u17dd\\u180b-\\u180d\\u18a9\\u1920-\\u1922\\u1927\\u1928\\u1932\\u1939-\\u193b\\u1a17\\u1a18\\u1a56\\u1a58-\\u1a5e\\u1a60\\u1a62\\u1a65-\\u1a6c\\u1a73-\\u1a7c\\u1a7f\\u1b00-\\u1b03\\u1b34\\u1b36-\\u1b3a\\u1b3c\\u1b42\\u1b6b-\\u1b73\\u1b80\\u1b81\\u1ba2-\\u1ba5\\u1ba8\\u1ba9\\u1c2c-\\u1c33\\u1c36\\u1c37\\u1cd0-\\u1cd2\\u1cd4-\\u1ce0\\u1ce2-\\u1ce8\\u1ced\\u1dc0-\\u1de6\\u1dfd-\\u1dff\\u200c\\u200d\\u20d0-\\u20f0\\u2cef-\\u2cf1\\u2de0-\\u2dff\\u302a-\\u302f\\u3099\\u309a\\ua66f-\\ua672\\ua67c\\ua67d\\ua6f0\\ua6f1\\ua802\\ua806\\ua80b\\ua825\\ua826\\ua8c4\\ua8e0-\\ua8f1\\ua926-\\ua92d\\ua947-\\ua951\\ua980-\\ua982\\ua9b3\\ua9b6-\\ua9b9\\ua9bc\\uaa29-\\uaa2e\\uaa31\\uaa32\\uaa35\\uaa36\\uaa43\\uaa4c\\uaab0\\uaab2-\\uaab4\\uaab7\\uaab8\\uaabe\\uaabf\\uaac1\\uabe5\\uabe8\\uabed\\udc00-\\udfff\\ufb1e\\ufe00-\\ufe0f\\ufe20-\\ufe26\\uff9e\\uff9f]/;\n function isExtendingChar(ch) { return ch.charCodeAt(0) >= 768 && extendingChars.test(ch) }\n\n // Returns a number from the range [`0`; `str.length`] unless `pos` is outside that range.\n function skipExtendingChars(str, pos, dir) {\n while ((dir < 0 ? pos > 0 : pos < str.length) && isExtendingChar(str.charAt(pos))) { pos += dir; }\n return pos\n }\n\n // Returns the value from the range [`from`; `to`] that satisfies\n // `pred` and is closest to `from`. Assumes that at least `to`\n // satisfies `pred`. Supports `from` being greater than `to`.\n function findFirst(pred, from, to) {\n // At any point we are certain `to` satisfies `pred`, don't know\n // whether `from` does.\n var dir = from > to ? -1 : 1;\n for (;;) {\n if (from == to) { return from }\n var midF = (from + to) / 2, mid = dir < 0 ? Math.ceil(midF) : Math.floor(midF);\n if (mid == from) { return pred(mid) ? from : to }\n if (pred(mid)) { to = mid; }\n else { from = mid + dir; }\n }\n }\n\n // BIDI HELPERS\n\n function iterateBidiSections(order, from, to, f) {\n if (!order) { return f(from, to, \"ltr\", 0) }\n var found = false;\n for (var i = 0; i < order.length; ++i) {\n var part = order[i];\n if (part.from < to && part.to > from || from == to && part.to == from) {\n f(Math.max(part.from, from), Math.min(part.to, to), part.level == 1 ? \"rtl\" : \"ltr\", i);\n found = true;\n }\n }\n if (!found) { f(from, to, \"ltr\"); }\n }\n\n var bidiOther = null;\n function getBidiPartAt(order, ch, sticky) {\n var found;\n bidiOther = null;\n for (var i = 0; i < order.length; ++i) {\n var cur = order[i];\n if (cur.from < ch && cur.to > ch) { return i }\n if (cur.to == ch) {\n if (cur.from != cur.to && sticky == \"before\") { found = i; }\n else { bidiOther = i; }\n }\n if (cur.from == ch) {\n if (cur.from != cur.to && sticky != \"before\") { found = i; }\n else { bidiOther = i; }\n }\n }\n return found != null ? found : bidiOther\n }\n\n // Bidirectional ordering algorithm\n // See http://unicode.org/reports/tr9/tr9-13.html for the algorithm\n // that this (partially) implements.\n\n // One-char codes used for character types:\n // L (L): Left-to-Right\n // R (R): Right-to-Left\n // r (AL): Right-to-Left Arabic\n // 1 (EN): European Number\n // + (ES): European Number Separator\n // % (ET): European Number Terminator\n // n (AN): Arabic Number\n // , (CS): Common Number Separator\n // m (NSM): Non-Spacing Mark\n // b (BN): Boundary Neutral\n // s (B): Paragraph Separator\n // t (S): Segment Separator\n // w (WS): Whitespace\n // N (ON): Other Neutrals\n\n // Returns null if characters are ordered as they appear\n // (left-to-right), or an array of sections ({from, to, level}\n // objects) in the order in which they occur visually.\n var bidiOrdering = (function() {\n // Character types for codepoints 0 to 0xff\n var lowTypes = \"bbbbbbbbbtstwsbbbbbbbbbbbbbbssstwNN%%%NNNNNN,N,N1111111111NNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNNNLLLLLLLLLLLLLLLLLLLLLLLLLLNNNNbbbbbbsbbbbbbbbbbbbbbbbbbbbbbbbbb,N%%%%NNNNLNNNNN%%11NLNNN1LNNNNNLLLLLLLLLLLLLLLLLLLLLLLNLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLLN\";\n // Character types for codepoints 0x600 to 0x6f9\n var arabicTypes = \"nnnnnnNNr%%r,rNNmmmmmmmmmmmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmmmmmmmmmmmmmmmnnnnnnnnnn%nnrrrmrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrmmmmmmmnNmmmmmmrrmmNmmmmrr1111111111\";\n function charType(code) {\n if (code <= 0xf7) { return lowTypes.charAt(code) }\n else if (0x590 <= code && code <= 0x5f4) { return \"R\" }\n else if (0x600 <= code && code <= 0x6f9) { return arabicTypes.charAt(code - 0x600) }\n else if (0x6ee <= code && code <= 0x8ac) { return \"r\" }\n else if (0x2000 <= code && code <= 0x200b) { return \"w\" }\n else if (code == 0x200c) { return \"b\" }\n else { return \"L\" }\n }\n\n var bidiRE = /[\\u0590-\\u05f4\\u0600-\\u06ff\\u0700-\\u08ac]/;\n var isNeutral = /[stwN]/, isStrong = /[LRr]/, countsAsLeft = /[Lb1n]/, countsAsNum = /[1n]/;\n\n function BidiSpan(level, from, to) {\n this.level = level;\n this.from = from; this.to = to;\n }\n\n return function(str, direction) {\n var outerType = direction == \"ltr\" ? \"L\" : \"R\";\n\n if (str.length == 0 || direction == \"ltr\" && !bidiRE.test(str)) { return false }\n var len = str.length, types = [];\n for (var i = 0; i < len; ++i)\n { types.push(charType(str.charCodeAt(i))); }\n\n // W1. Examine each non-spacing mark (NSM) in the level run, and\n // change the type of the NSM to the type of the previous\n // character. If the NSM is at the start of the level run, it will\n // get the type of sor.\n for (var i$1 = 0, prev = outerType; i$1 < len; ++i$1) {\n var type = types[i$1];\n if (type == \"m\") { types[i$1] = prev; }\n else { prev = type; }\n }\n\n // W2. Search backwards from each instance of a European number\n // until the first strong type (R, L, AL, or sor) is found. If an\n // AL is found, change the type of the European number to Arabic\n // number.\n // W3. Change all ALs to R.\n for (var i$2 = 0, cur = outerType; i$2 < len; ++i$2) {\n var type$1 = types[i$2];\n if (type$1 == \"1\" && cur == \"r\") { types[i$2] = \"n\"; }\n else if (isStrong.test(type$1)) { cur = type$1; if (type$1 == \"r\") { types[i$2] = \"R\"; } }\n }\n\n // W4. A single European separator between two European numbers\n // changes to a European number. A single common separator between\n // two numbers of the same type changes to that type.\n for (var i$3 = 1, prev$1 = types[0]; i$3 < len - 1; ++i$3) {\n var type$2 = types[i$3];\n if (type$2 == \"+\" && prev$1 == \"1\" && types[i$3+1] == \"1\") { types[i$3] = \"1\"; }\n else if (type$2 == \",\" && prev$1 == types[i$3+1] &&\n (prev$1 == \"1\" || prev$1 == \"n\")) { types[i$3] = prev$1; }\n prev$1 = type$2;\n }\n\n // W5. A sequence of European terminators adjacent to European\n // numbers changes to all European numbers.\n // W6. Otherwise, separators and terminators change to Other\n // Neutral.\n for (var i$4 = 0; i$4 < len; ++i$4) {\n var type$3 = types[i$4];\n if (type$3 == \",\") { types[i$4] = \"N\"; }\n else if (type$3 == \"%\") {\n var end = (void 0);\n for (end = i$4 + 1; end < len && types[end] == \"%\"; ++end) {}\n var replace = (i$4 && types[i$4-1] == \"!\") || (end < len && types[end] == \"1\") ? \"1\" : \"N\";\n for (var j = i$4; j < end; ++j) { types[j] = replace; }\n i$4 = end - 1;\n }\n }\n\n // W7. Search backwards from each instance of a European number\n // until the first strong type (R, L, or sor) is found. If an L is\n // found, then change the type of the European number to L.\n for (var i$5 = 0, cur$1 = outerType; i$5 < len; ++i$5) {\n var type$4 = types[i$5];\n if (cur$1 == \"L\" && type$4 == \"1\") { types[i$5] = \"L\"; }\n else if (isStrong.test(type$4)) { cur$1 = type$4; }\n }\n\n // N1. A sequence of neutrals takes the direction of the\n // surrounding strong text if the text on both sides has the same\n // direction. European and Arabic numbers act as if they were R in\n // terms of their influence on neutrals. Start-of-level-run (sor)\n // and end-of-level-run (eor) are used at level run boundaries.\n // N2. Any remaining neutrals take the embedding direction.\n for (var i$6 = 0; i$6 < len; ++i$6) {\n if (isNeutral.test(types[i$6])) {\n var end$1 = (void 0);\n for (end$1 = i$6 + 1; end$1 < len && isNeutral.test(types[end$1]); ++end$1) {}\n var before = (i$6 ? types[i$6-1] : outerType) == \"L\";\n var after = (end$1 < len ? types[end$1] : outerType) == \"L\";\n var replace$1 = before == after ? (before ? \"L\" : \"R\") : outerType;\n for (var j$1 = i$6; j$1 < end$1; ++j$1) { types[j$1] = replace$1; }\n i$6 = end$1 - 1;\n }\n }\n\n // Here we depart from the documented algorithm, in order to avoid\n // building up an actual levels array. Since there are only three\n // levels (0, 1, 2) in an implementation that doesn't take\n // explicit embedding into account, we can build up the order on\n // the fly, without following the level-based algorithm.\n var order = [], m;\n for (var i$7 = 0; i$7 < len;) {\n if (countsAsLeft.test(types[i$7])) {\n var start = i$7;\n for (++i$7; i$7 < len && countsAsLeft.test(types[i$7]); ++i$7) {}\n order.push(new BidiSpan(0, start, i$7));\n } else {\n var pos = i$7, at = order.length, isRTL = direction == \"rtl\" ? 1 : 0;\n for (++i$7; i$7 < len && types[i$7] != \"L\"; ++i$7) {}\n for (var j$2 = pos; j$2 < i$7;) {\n if (countsAsNum.test(types[j$2])) {\n if (pos < j$2) { order.splice(at, 0, new BidiSpan(1, pos, j$2)); at += isRTL; }\n var nstart = j$2;\n for (++j$2; j$2 < i$7 && countsAsNum.test(types[j$2]); ++j$2) {}\n order.splice(at, 0, new BidiSpan(2, nstart, j$2));\n at += isRTL;\n pos = j$2;\n } else { ++j$2; }\n }\n if (pos < i$7) { order.splice(at, 0, new BidiSpan(1, pos, i$7)); }\n }\n }\n if (direction == \"ltr\") {\n if (order[0].level == 1 && (m = str.match(/^\\s+/))) {\n order[0].from = m[0].length;\n order.unshift(new BidiSpan(0, 0, m[0].length));\n }\n if (lst(order).level == 1 && (m = str.match(/\\s+$/))) {\n lst(order).to -= m[0].length;\n order.push(new BidiSpan(0, len - m[0].length, len));\n }\n }\n\n return direction == \"rtl\" ? order.reverse() : order\n }\n })();\n\n // Get the bidi ordering for the given line (and cache it). Returns\n // false for lines that are fully left-to-right, and an array of\n // BidiSpan objects otherwise.\n function getOrder(line, direction) {\n var order = line.order;\n if (order == null) { order = line.order = bidiOrdering(line.text, direction); }\n return order\n }\n\n // EVENT HANDLING\n\n // Lightweight event framework. on/off also work on DOM nodes,\n // registering native DOM handlers.\n\n var noHandlers = [];\n\n var on = function(emitter, type, f) {\n if (emitter.addEventListener) {\n emitter.addEventListener(type, f, false);\n } else if (emitter.attachEvent) {\n emitter.attachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers || (emitter._handlers = {});\n map[type] = (map[type] || noHandlers).concat(f);\n }\n };\n\n function getHandlers(emitter, type) {\n return emitter._handlers && emitter._handlers[type] || noHandlers\n }\n\n function off(emitter, type, f) {\n if (emitter.removeEventListener) {\n emitter.removeEventListener(type, f, false);\n } else if (emitter.detachEvent) {\n emitter.detachEvent(\"on\" + type, f);\n } else {\n var map = emitter._handlers, arr = map && map[type];\n if (arr) {\n var index = indexOf(arr, f);\n if (index > -1)\n { map[type] = arr.slice(0, index).concat(arr.slice(index + 1)); }\n }\n }\n }\n\n function signal(emitter, type /*, values...*/) {\n var handlers = getHandlers(emitter, type);\n if (!handlers.length) { return }\n var args = Array.prototype.slice.call(arguments, 2);\n for (var i = 0; i < handlers.length; ++i) { handlers[i].apply(null, args); }\n }\n\n // The DOM events that CodeMirror handles can be overridden by\n // registering a (non-DOM) handler on the editor for the event name,\n // and preventDefault-ing the event in that handler.\n function signalDOMEvent(cm, e, override) {\n if (typeof e == \"string\")\n { e = {type: e, preventDefault: function() { this.defaultPrevented = true; }}; }\n signal(cm, override || e.type, cm, e);\n return e_defaultPrevented(e) || e.codemirrorIgnore\n }\n\n function signalCursorActivity(cm) {\n var arr = cm._handlers && cm._handlers.cursorActivity;\n if (!arr) { return }\n var set = cm.curOp.cursorActivityHandlers || (cm.curOp.cursorActivityHandlers = []);\n for (var i = 0; i < arr.length; ++i) { if (indexOf(set, arr[i]) == -1)\n { set.push(arr[i]); } }\n }\n\n function hasHandler(emitter, type) {\n return getHandlers(emitter, type).length > 0\n }\n\n // Add on and off methods to a constructor's prototype, to make\n // registering events on such objects more convenient.\n function eventMixin(ctor) {\n ctor.prototype.on = function(type, f) {on(this, type, f);};\n ctor.prototype.off = function(type, f) {off(this, type, f);};\n }\n\n // Due to the fact that we still support jurassic IE versions, some\n // compatibility wrappers are needed.\n\n function e_preventDefault(e) {\n if (e.preventDefault) { e.preventDefault(); }\n else { e.returnValue = false; }\n }\n function e_stopPropagation(e) {\n if (e.stopPropagation) { e.stopPropagation(); }\n else { e.cancelBubble = true; }\n }\n function e_defaultPrevented(e) {\n return e.defaultPrevented != null ? e.defaultPrevented : e.returnValue == false\n }\n function e_stop(e) {e_preventDefault(e); e_stopPropagation(e);}\n\n function e_target(e) {return e.target || e.srcElement}\n function e_button(e) {\n var b = e.which;\n if (b == null) {\n if (e.button & 1) { b = 1; }\n else if (e.button & 2) { b = 3; }\n else if (e.button & 4) { b = 2; }\n }\n if (mac && e.ctrlKey && b == 1) { b = 3; }\n return b\n }\n\n // Detect drag-and-drop\n var dragAndDrop = function() {\n // There is *some* kind of drag-and-drop support in IE6-8, but I\n // couldn't get it to work yet.\n if (ie && ie_version < 9) { return false }\n var div = elt('div');\n return \"draggable\" in div || \"dragDrop\" in div\n }();\n\n var zwspSupported;\n function zeroWidthElement(measure) {\n if (zwspSupported == null) {\n var test = elt(\"span\", \"\\u200b\");\n removeChildrenAndAdd(measure, elt(\"span\", [test, document.createTextNode(\"x\")]));\n if (measure.firstChild.offsetHeight != 0)\n { zwspSupported = test.offsetWidth <= 1 && test.offsetHeight > 2 && !(ie && ie_version < 8); }\n }\n var node = zwspSupported ? elt(\"span\", \"\\u200b\") :\n elt(\"span\", \"\\u00a0\", null, \"display: inline-block; width: 1px; margin-right: -1px\");\n node.setAttribute(\"cm-text\", \"\");\n return node\n }\n\n // Feature-detect IE's crummy client rect reporting for bidi text\n var badBidiRects;\n function hasBadBidiRects(measure) {\n if (badBidiRects != null) { return badBidiRects }\n var txt = removeChildrenAndAdd(measure, document.createTextNode(\"A\\u062eA\"));\n var r0 = range(txt, 0, 1).getBoundingClientRect();\n var r1 = range(txt, 1, 2).getBoundingClientRect();\n removeChildren(measure);\n if (!r0 || r0.left == r0.right) { return false } // Safari returns null in some cases (#2780)\n return badBidiRects = (r1.right - r0.right < 3)\n }\n\n // See if \"\".split is the broken IE version, if so, provide an\n // alternative way to split lines.\n var splitLinesAuto = \"\\n\\nb\".split(/\\n/).length != 3 ? function (string) {\n var pos = 0, result = [], l = string.length;\n while (pos <= l) {\n var nl = string.indexOf(\"\\n\", pos);\n if (nl == -1) { nl = string.length; }\n var line = string.slice(pos, string.charAt(nl - 1) == \"\\r\" ? nl - 1 : nl);\n var rt = line.indexOf(\"\\r\");\n if (rt != -1) {\n result.push(line.slice(0, rt));\n pos += rt + 1;\n } else {\n result.push(line);\n pos = nl + 1;\n }\n }\n return result\n } : function (string) { return string.split(/\\r\\n?|\\n/); };\n\n var hasSelection = window.getSelection ? function (te) {\n try { return te.selectionStart != te.selectionEnd }\n catch(e) { return false }\n } : function (te) {\n var range;\n try {range = te.ownerDocument.selection.createRange();}\n catch(e) {}\n if (!range || range.parentElement() != te) { return false }\n return range.compareEndPoints(\"StartToEnd\", range) != 0\n };\n\n var hasCopyEvent = (function () {\n var e = elt(\"div\");\n if (\"oncopy\" in e) { return true }\n e.setAttribute(\"oncopy\", \"return;\");\n return typeof e.oncopy == \"function\"\n })();\n\n var badZoomedRects = null;\n function hasBadZoomedRects(measure) {\n if (badZoomedRects != null) { return badZoomedRects }\n var node = removeChildrenAndAdd(measure, elt(\"span\", \"x\"));\n var normal = node.getBoundingClientRect();\n var fromRange = range(node, 0, 1).getBoundingClientRect();\n return badZoomedRects = Math.abs(normal.left - fromRange.left) > 1\n }\n\n // Known modes, by name and by MIME\n var modes = {}, mimeModes = {};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n function defineMode(name, mode) {\n if (arguments.length > 2)\n { mode.dependencies = Array.prototype.slice.call(arguments, 2); }\n modes[name] = mode;\n }\n\n function defineMIME(mime, spec) {\n mimeModes[mime] = spec;\n }\n\n // Given a MIME type, a {name, ...options} config object, or a name\n // string, return a mode config object.\n function resolveMode(spec) {\n if (typeof spec == \"string\" && mimeModes.hasOwnProperty(spec)) {\n spec = mimeModes[spec];\n } else if (spec && typeof spec.name == \"string\" && mimeModes.hasOwnProperty(spec.name)) {\n var found = mimeModes[spec.name];\n if (typeof found == \"string\") { found = {name: found}; }\n spec = createObj(found, spec);\n spec.name = found.name;\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+xml$/.test(spec)) {\n return resolveMode(\"application/xml\")\n } else if (typeof spec == \"string\" && /^[\\w\\-]+\\/[\\w\\-]+\\+json$/.test(spec)) {\n return resolveMode(\"application/json\")\n }\n if (typeof spec == \"string\") { return {name: spec} }\n else { return spec || {name: \"null\"} }\n }\n\n // Given a mode spec (anything that resolveMode accepts), find and\n // initialize an actual mode object.\n function getMode(options, spec) {\n spec = resolveMode(spec);\n var mfactory = modes[spec.name];\n if (!mfactory) { return getMode(options, \"text/plain\") }\n var modeObj = mfactory(options, spec);\n if (modeExtensions.hasOwnProperty(spec.name)) {\n var exts = modeExtensions[spec.name];\n for (var prop in exts) {\n if (!exts.hasOwnProperty(prop)) { continue }\n if (modeObj.hasOwnProperty(prop)) { modeObj[\"_\" + prop] = modeObj[prop]; }\n modeObj[prop] = exts[prop];\n }\n }\n modeObj.name = spec.name;\n if (spec.helperType) { modeObj.helperType = spec.helperType; }\n if (spec.modeProps) { for (var prop$1 in spec.modeProps)\n { modeObj[prop$1] = spec.modeProps[prop$1]; } }\n\n return modeObj\n }\n\n // This can be used to attach properties to mode objects from\n // outside the actual mode definition.\n var modeExtensions = {};\n function extendMode(mode, properties) {\n var exts = modeExtensions.hasOwnProperty(mode) ? modeExtensions[mode] : (modeExtensions[mode] = {});\n copyObj(properties, exts);\n }\n\n function copyState(mode, state) {\n if (state === true) { return state }\n if (mode.copyState) { return mode.copyState(state) }\n var nstate = {};\n for (var n in state) {\n var val = state[n];\n if (val instanceof Array) { val = val.concat([]); }\n nstate[n] = val;\n }\n return nstate\n }\n\n // Given a mode and a state (for that mode), find the inner mode and\n // state at the position that the state refers to.\n function innerMode(mode, state) {\n var info;\n while (mode.innerMode) {\n info = mode.innerMode(state);\n if (!info || info.mode == mode) { break }\n state = info.state;\n mode = info.mode;\n }\n return info || {mode: mode, state: state}\n }\n\n function startState(mode, a1, a2) {\n return mode.startState ? mode.startState(a1, a2) : true\n }\n\n // STRING STREAM\n\n // Fed to the mode parsers, provides helper functions to make\n // parsers more succinct.\n\n var StringStream = function(string, tabSize, lineOracle) {\n this.pos = this.start = 0;\n this.string = string;\n this.tabSize = tabSize || 8;\n this.lastColumnPos = this.lastColumnValue = 0;\n this.lineStart = 0;\n this.lineOracle = lineOracle;\n };\n\n StringStream.prototype.eol = function () {return this.pos >= this.string.length};\n StringStream.prototype.sol = function () {return this.pos == this.lineStart};\n StringStream.prototype.peek = function () {return this.string.charAt(this.pos) || undefined};\n StringStream.prototype.next = function () {\n if (this.pos < this.string.length)\n { return this.string.charAt(this.pos++) }\n };\n StringStream.prototype.eat = function (match) {\n var ch = this.string.charAt(this.pos);\n var ok;\n if (typeof match == \"string\") { ok = ch == match; }\n else { ok = ch && (match.test ? match.test(ch) : match(ch)); }\n if (ok) {++this.pos; return ch}\n };\n StringStream.prototype.eatWhile = function (match) {\n var start = this.pos;\n while (this.eat(match)){}\n return this.pos > start\n };\n StringStream.prototype.eatSpace = function () {\n var start = this.pos;\n while (/[\\s\\u00a0]/.test(this.string.charAt(this.pos))) { ++this.pos; }\n return this.pos > start\n };\n StringStream.prototype.skipToEnd = function () {this.pos = this.string.length;};\n StringStream.prototype.skipTo = function (ch) {\n var found = this.string.indexOf(ch, this.pos);\n if (found > -1) {this.pos = found; return true}\n };\n StringStream.prototype.backUp = function (n) {this.pos -= n;};\n StringStream.prototype.column = function () {\n if (this.lastColumnPos < this.start) {\n this.lastColumnValue = countColumn(this.string, this.start, this.tabSize, this.lastColumnPos, this.lastColumnValue);\n this.lastColumnPos = this.start;\n }\n return this.lastColumnValue - (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.indentation = function () {\n return countColumn(this.string, null, this.tabSize) -\n (this.lineStart ? countColumn(this.string, this.lineStart, this.tabSize) : 0)\n };\n StringStream.prototype.match = function (pattern, consume, caseInsensitive) {\n if (typeof pattern == \"string\") {\n var cased = function (str) { return caseInsensitive ? str.toLowerCase() : str; };\n var substr = this.string.substr(this.pos, pattern.length);\n if (cased(substr) == cased(pattern)) {\n if (consume !== false) { this.pos += pattern.length; }\n return true\n }\n } else {\n var match = this.string.slice(this.pos).match(pattern);\n if (match && match.index > 0) { return null }\n if (match && consume !== false) { this.pos += match[0].length; }\n return match\n }\n };\n StringStream.prototype.current = function (){return this.string.slice(this.start, this.pos)};\n StringStream.prototype.hideFirstChars = function (n, inner) {\n this.lineStart += n;\n try { return inner() }\n finally { this.lineStart -= n; }\n };\n StringStream.prototype.lookAhead = function (n) {\n var oracle = this.lineOracle;\n return oracle && oracle.lookAhead(n)\n };\n StringStream.prototype.baseToken = function () {\n var oracle = this.lineOracle;\n return oracle && oracle.baseToken(this.pos)\n };\n\n // Find the line object corresponding to the given line number.\n function getLine(doc, n) {\n n -= doc.first;\n if (n < 0 || n >= doc.size) { throw new Error(\"There is no line \" + (n + doc.first) + \" in the document.\") }\n var chunk = doc;\n while (!chunk.lines) {\n for (var i = 0;; ++i) {\n var child = chunk.children[i], sz = child.chunkSize();\n if (n < sz) { chunk = child; break }\n n -= sz;\n }\n }\n return chunk.lines[n]\n }\n\n // Get the part of a document between two positions, as an array of\n // strings.\n function getBetween(doc, start, end) {\n var out = [], n = start.line;\n doc.iter(start.line, end.line + 1, function (line) {\n var text = line.text;\n if (n == end.line) { text = text.slice(0, end.ch); }\n if (n == start.line) { text = text.slice(start.ch); }\n out.push(text);\n ++n;\n });\n return out\n }\n // Get the lines between from and to, as array of strings.\n function getLines(doc, from, to) {\n var out = [];\n doc.iter(from, to, function (line) { out.push(line.text); }); // iter aborts when callback returns truthy value\n return out\n }\n\n // Update the height of a line, propagating the height change\n // upwards to parent nodes.\n function updateLineHeight(line, height) {\n var diff = height - line.height;\n if (diff) { for (var n = line; n; n = n.parent) { n.height += diff; } }\n }\n\n // Given a line object, find its line number by walking up through\n // its parent links.\n function lineNo(line) {\n if (line.parent == null) { return null }\n var cur = line.parent, no = indexOf(cur.lines, line);\n for (var chunk = cur.parent; chunk; cur = chunk, chunk = chunk.parent) {\n for (var i = 0;; ++i) {\n if (chunk.children[i] == cur) { break }\n no += chunk.children[i].chunkSize();\n }\n }\n return no + cur.first\n }\n\n // Find the line at the given vertical position, using the height\n // information in the document tree.\n function lineAtHeight(chunk, h) {\n var n = chunk.first;\n outer: do {\n for (var i$1 = 0; i$1 < chunk.children.length; ++i$1) {\n var child = chunk.children[i$1], ch = child.height;\n if (h < ch) { chunk = child; continue outer }\n h -= ch;\n n += child.chunkSize();\n }\n return n\n } while (!chunk.lines)\n var i = 0;\n for (; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i], lh = line.height;\n if (h < lh) { break }\n h -= lh;\n }\n return n + i\n }\n\n function isLine(doc, l) {return l >= doc.first && l < doc.first + doc.size}\n\n function lineNumberFor(options, i) {\n return String(options.lineNumberFormatter(i + options.firstLineNumber))\n }\n\n // A Pos instance represents a position within the text.\n function Pos(line, ch, sticky) {\n if ( sticky === void 0 ) sticky = null;\n\n if (!(this instanceof Pos)) { return new Pos(line, ch, sticky) }\n this.line = line;\n this.ch = ch;\n this.sticky = sticky;\n }\n\n // Compare two positions, return 0 if they are the same, a negative\n // number when a is less, and a positive number otherwise.\n function cmp(a, b) { return a.line - b.line || a.ch - b.ch }\n\n function equalCursorPos(a, b) { return a.sticky == b.sticky && cmp(a, b) == 0 }\n\n function copyPos(x) {return Pos(x.line, x.ch)}\n function maxPos(a, b) { return cmp(a, b) < 0 ? b : a }\n function minPos(a, b) { return cmp(a, b) < 0 ? a : b }\n\n // Most of the external API clips given positions to make sure they\n // actually exist within the document.\n function clipLine(doc, n) {return Math.max(doc.first, Math.min(n, doc.first + doc.size - 1))}\n function clipPos(doc, pos) {\n if (pos.line < doc.first) { return Pos(doc.first, 0) }\n var last = doc.first + doc.size - 1;\n if (pos.line > last) { return Pos(last, getLine(doc, last).text.length) }\n return clipToLen(pos, getLine(doc, pos.line).text.length)\n }\n function clipToLen(pos, linelen) {\n var ch = pos.ch;\n if (ch == null || ch > linelen) { return Pos(pos.line, linelen) }\n else if (ch < 0) { return Pos(pos.line, 0) }\n else { return pos }\n }\n function clipPosArray(doc, array) {\n var out = [];\n for (var i = 0; i < array.length; i++) { out[i] = clipPos(doc, array[i]); }\n return out\n }\n\n var SavedContext = function(state, lookAhead) {\n this.state = state;\n this.lookAhead = lookAhead;\n };\n\n var Context = function(doc, state, line, lookAhead) {\n this.state = state;\n this.doc = doc;\n this.line = line;\n this.maxLookAhead = lookAhead || 0;\n this.baseTokens = null;\n this.baseTokenPos = 1;\n };\n\n Context.prototype.lookAhead = function (n) {\n var line = this.doc.getLine(this.line + n);\n if (line != null && n > this.maxLookAhead) { this.maxLookAhead = n; }\n return line\n };\n\n Context.prototype.baseToken = function (n) {\n if (!this.baseTokens) { return null }\n while (this.baseTokens[this.baseTokenPos] <= n)\n { this.baseTokenPos += 2; }\n var type = this.baseTokens[this.baseTokenPos + 1];\n return {type: type && type.replace(/( |^)overlay .*/, \"\"),\n size: this.baseTokens[this.baseTokenPos] - n}\n };\n\n Context.prototype.nextLine = function () {\n this.line++;\n if (this.maxLookAhead > 0) { this.maxLookAhead--; }\n };\n\n Context.fromSaved = function (doc, saved, line) {\n if (saved instanceof SavedContext)\n { return new Context(doc, copyState(doc.mode, saved.state), line, saved.lookAhead) }\n else\n { return new Context(doc, copyState(doc.mode, saved), line) }\n };\n\n Context.prototype.save = function (copy) {\n var state = copy !== false ? copyState(this.doc.mode, this.state) : this.state;\n return this.maxLookAhead > 0 ? new SavedContext(state, this.maxLookAhead) : state\n };\n\n\n // Compute a style array (an array starting with a mode generation\n // -- for invalidation -- followed by pairs of end positions and\n // style strings), which is used to highlight the tokens on the\n // line.\n function highlightLine(cm, line, context, forceToEnd) {\n // A styles array always starts with a number identifying the\n // mode/overlays that it is based on (for easy invalidation).\n var st = [cm.state.modeGen], lineClasses = {};\n // Compute the base array of styles\n runMode(cm, line.text, cm.doc.mode, context, function (end, style) { return st.push(end, style); },\n lineClasses, forceToEnd);\n var state = context.state;\n\n // Run overlays, adjust style array.\n var loop = function ( o ) {\n context.baseTokens = st;\n var overlay = cm.state.overlays[o], i = 1, at = 0;\n context.state = true;\n runMode(cm, line.text, overlay.mode, context, function (end, style) {\n var start = i;\n // Ensure there's a token end at the current position, and that i points at it\n while (at < end) {\n var i_end = st[i];\n if (i_end > end)\n { st.splice(i, 1, end, st[i+1], i_end); }\n i += 2;\n at = Math.min(end, i_end);\n }\n if (!style) { return }\n if (overlay.opaque) {\n st.splice(start, i - start, end, \"overlay \" + style);\n i = start + 2;\n } else {\n for (; start < i; start += 2) {\n var cur = st[start+1];\n st[start+1] = (cur ? cur + \" \" : \"\") + \"overlay \" + style;\n }\n }\n }, lineClasses);\n context.state = state;\n context.baseTokens = null;\n context.baseTokenPos = 1;\n };\n\n for (var o = 0; o < cm.state.overlays.length; ++o) loop( o );\n\n return {styles: st, classes: lineClasses.bgClass || lineClasses.textClass ? lineClasses : null}\n }\n\n function getLineStyles(cm, line, updateFrontier) {\n if (!line.styles || line.styles[0] != cm.state.modeGen) {\n var context = getContextBefore(cm, lineNo(line));\n var resetState = line.text.length > cm.options.maxHighlightLength && copyState(cm.doc.mode, context.state);\n var result = highlightLine(cm, line, context);\n if (resetState) { context.state = resetState; }\n line.stateAfter = context.save(!resetState);\n line.styles = result.styles;\n if (result.classes) { line.styleClasses = result.classes; }\n else if (line.styleClasses) { line.styleClasses = null; }\n if (updateFrontier === cm.doc.highlightFrontier)\n { cm.doc.modeFrontier = Math.max(cm.doc.modeFrontier, ++cm.doc.highlightFrontier); }\n }\n return line.styles\n }\n\n function getContextBefore(cm, n, precise) {\n var doc = cm.doc, display = cm.display;\n if (!doc.mode.startState) { return new Context(doc, true, n) }\n var start = findStartLine(cm, n, precise);\n var saved = start > doc.first && getLine(doc, start - 1).stateAfter;\n var context = saved ? Context.fromSaved(doc, saved, start) : new Context(doc, startState(doc.mode), start);\n\n doc.iter(start, n, function (line) {\n processLine(cm, line.text, context);\n var pos = context.line;\n line.stateAfter = pos == n - 1 || pos % 5 == 0 || pos >= display.viewFrom && pos < display.viewTo ? context.save() : null;\n context.nextLine();\n });\n if (precise) { doc.modeFrontier = context.line; }\n return context\n }\n\n // Lightweight form of highlight -- proceed over this line and\n // update state, but don't save a style array. Used for lines that\n // aren't currently visible.\n function processLine(cm, text, context, startAt) {\n var mode = cm.doc.mode;\n var stream = new StringStream(text, cm.options.tabSize, context);\n stream.start = stream.pos = startAt || 0;\n if (text == \"\") { callBlankLine(mode, context.state); }\n while (!stream.eol()) {\n readToken(mode, stream, context.state);\n stream.start = stream.pos;\n }\n }\n\n function callBlankLine(mode, state) {\n if (mode.blankLine) { return mode.blankLine(state) }\n if (!mode.innerMode) { return }\n var inner = innerMode(mode, state);\n if (inner.mode.blankLine) { return inner.mode.blankLine(inner.state) }\n }\n\n function readToken(mode, stream, state, inner) {\n for (var i = 0; i < 10; i++) {\n if (inner) { inner[0] = innerMode(mode, state).mode; }\n var style = mode.token(stream, state);\n if (stream.pos > stream.start) { return style }\n }\n throw new Error(\"Mode \" + mode.name + \" failed to advance stream.\")\n }\n\n var Token = function(stream, type, state) {\n this.start = stream.start; this.end = stream.pos;\n this.string = stream.current();\n this.type = type || null;\n this.state = state;\n };\n\n // Utility for getTokenAt and getLineTokens\n function takeToken(cm, pos, precise, asArray) {\n var doc = cm.doc, mode = doc.mode, style;\n pos = clipPos(doc, pos);\n var line = getLine(doc, pos.line), context = getContextBefore(cm, pos.line, precise);\n var stream = new StringStream(line.text, cm.options.tabSize, context), tokens;\n if (asArray) { tokens = []; }\n while ((asArray || stream.pos < pos.ch) && !stream.eol()) {\n stream.start = stream.pos;\n style = readToken(mode, stream, context.state);\n if (asArray) { tokens.push(new Token(stream, style, copyState(doc.mode, context.state))); }\n }\n return asArray ? tokens : new Token(stream, style, context.state)\n }\n\n function extractLineClasses(type, output) {\n if (type) { for (;;) {\n var lineClass = type.match(/(?:^|\\s+)line-(background-)?(\\S+)/);\n if (!lineClass) { break }\n type = type.slice(0, lineClass.index) + type.slice(lineClass.index + lineClass[0].length);\n var prop = lineClass[1] ? \"bgClass\" : \"textClass\";\n if (output[prop] == null)\n { output[prop] = lineClass[2]; }\n else if (!(new RegExp(\"(?:^|\\\\s)\" + lineClass[2] + \"(?:$|\\\\s)\")).test(output[prop]))\n { output[prop] += \" \" + lineClass[2]; }\n } }\n return type\n }\n\n // Run the given mode's parser over a line, calling f for each token.\n function runMode(cm, text, mode, context, f, lineClasses, forceToEnd) {\n var flattenSpans = mode.flattenSpans;\n if (flattenSpans == null) { flattenSpans = cm.options.flattenSpans; }\n var curStart = 0, curStyle = null;\n var stream = new StringStream(text, cm.options.tabSize, context), style;\n var inner = cm.options.addModeClass && [null];\n if (text == \"\") { extractLineClasses(callBlankLine(mode, context.state), lineClasses); }\n while (!stream.eol()) {\n if (stream.pos > cm.options.maxHighlightLength) {\n flattenSpans = false;\n if (forceToEnd) { processLine(cm, text, context, stream.pos); }\n stream.pos = text.length;\n style = null;\n } else {\n style = extractLineClasses(readToken(mode, stream, context.state, inner), lineClasses);\n }\n if (inner) {\n var mName = inner[0].name;\n if (mName) { style = \"m-\" + (style ? mName + \" \" + style : mName); }\n }\n if (!flattenSpans || curStyle != style) {\n while (curStart < stream.start) {\n curStart = Math.min(stream.start, curStart + 5000);\n f(curStart, curStyle);\n }\n curStyle = style;\n }\n stream.start = stream.pos;\n }\n while (curStart < stream.pos) {\n // Webkit seems to refuse to render text nodes longer than 57444\n // characters, and returns inaccurate measurements in nodes\n // starting around 5000 chars.\n var pos = Math.min(stream.pos, curStart + 5000);\n f(pos, curStyle);\n curStart = pos;\n }\n }\n\n // Finds the line to start with when starting a parse. Tries to\n // find a line with a stateAfter, so that it can start with a\n // valid state. If that fails, it returns the line with the\n // smallest indentation, which tends to need the least context to\n // parse correctly.\n function findStartLine(cm, n, precise) {\n var minindent, minline, doc = cm.doc;\n var lim = precise ? -1 : n - (cm.doc.mode.innerMode ? 1000 : 100);\n for (var search = n; search > lim; --search) {\n if (search <= doc.first) { return doc.first }\n var line = getLine(doc, search - 1), after = line.stateAfter;\n if (after && (!precise || search + (after instanceof SavedContext ? after.lookAhead : 0) <= doc.modeFrontier))\n { return search }\n var indented = countColumn(line.text, null, cm.options.tabSize);\n if (minline == null || minindent > indented) {\n minline = search - 1;\n minindent = indented;\n }\n }\n return minline\n }\n\n function retreatFrontier(doc, n) {\n doc.modeFrontier = Math.min(doc.modeFrontier, n);\n if (doc.highlightFrontier < n - 10) { return }\n var start = doc.first;\n for (var line = n - 1; line > start; line--) {\n var saved = getLine(doc, line).stateAfter;\n // change is on 3\n // state on line 1 looked ahead 2 -- so saw 3\n // test 1 + 2 < 3 should cover this\n if (saved && (!(saved instanceof SavedContext) || line + saved.lookAhead < n)) {\n start = line + 1;\n break\n }\n }\n doc.highlightFrontier = Math.min(doc.highlightFrontier, start);\n }\n\n // Optimize some code when these features are not used.\n var sawReadOnlySpans = false, sawCollapsedSpans = false;\n\n function seeReadOnlySpans() {\n sawReadOnlySpans = true;\n }\n\n function seeCollapsedSpans() {\n sawCollapsedSpans = true;\n }\n\n // TEXTMARKER SPANS\n\n function MarkedSpan(marker, from, to) {\n this.marker = marker;\n this.from = from; this.to = to;\n }\n\n // Search an array of spans for a span matching the given marker.\n function getMarkedSpanFor(spans, marker) {\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.marker == marker) { return span }\n } }\n }\n\n // Remove a span from an array, returning undefined if no spans are\n // left (we don't store arrays for lines without spans).\n function removeMarkedSpan(spans, span) {\n var r;\n for (var i = 0; i < spans.length; ++i)\n { if (spans[i] != span) { (r || (r = [])).push(spans[i]); } }\n return r\n }\n\n // Add a span to a line.\n function addMarkedSpan(line, span, op) {\n var inThisOp = op && window.WeakSet && (op.markedSpans || (op.markedSpans = new WeakSet));\n if (inThisOp && line.markedSpans && inThisOp.has(line.markedSpans)) {\n line.markedSpans.push(span);\n } else {\n line.markedSpans = line.markedSpans ? line.markedSpans.concat([span]) : [span];\n if (inThisOp) { inThisOp.add(line.markedSpans); }\n }\n span.marker.attachLine(line);\n }\n\n // Used for the algorithm that adjusts markers for a change in the\n // document. These functions cut an array of spans at a given\n // character position, returning an array of remaining chunks (or\n // undefined if nothing remains).\n function markedSpansBefore(old, startCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= startCh : span.from < startCh);\n if (startsBefore || span.from == startCh && marker.type == \"bookmark\" && (!isInsert || !span.marker.insertLeft)) {\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= startCh : span.to > startCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, span.from, endsAfter ? null : span.to));\n }\n } }\n return nw\n }\n function markedSpansAfter(old, endCh, isInsert) {\n var nw;\n if (old) { for (var i = 0; i < old.length; ++i) {\n var span = old[i], marker = span.marker;\n var endsAfter = span.to == null || (marker.inclusiveRight ? span.to >= endCh : span.to > endCh);\n if (endsAfter || span.from == endCh && marker.type == \"bookmark\" && (!isInsert || span.marker.insertLeft)) {\n var startsBefore = span.from == null || (marker.inclusiveLeft ? span.from <= endCh : span.from < endCh)\n ;(nw || (nw = [])).push(new MarkedSpan(marker, startsBefore ? null : span.from - endCh,\n span.to == null ? null : span.to - endCh));\n }\n } }\n return nw\n }\n\n // Given a change object, compute the new set of marker spans that\n // cover the line in which the change took place. Removes spans\n // entirely within the change, reconnects spans belonging to the\n // same marker that appear on both sides of the change, and cuts off\n // spans partially within the change. Returns an array of span\n // arrays with one element for each line in (after) the change.\n function stretchSpansOverChange(doc, change) {\n if (change.full) { return null }\n var oldFirst = isLine(doc, change.from.line) && getLine(doc, change.from.line).markedSpans;\n var oldLast = isLine(doc, change.to.line) && getLine(doc, change.to.line).markedSpans;\n if (!oldFirst && !oldLast) { return null }\n\n var startCh = change.from.ch, endCh = change.to.ch, isInsert = cmp(change.from, change.to) == 0;\n // Get the spans that 'stick out' on both sides\n var first = markedSpansBefore(oldFirst, startCh, isInsert);\n var last = markedSpansAfter(oldLast, endCh, isInsert);\n\n // Next, merge those two ends\n var sameLine = change.text.length == 1, offset = lst(change.text).length + (sameLine ? startCh : 0);\n if (first) {\n // Fix up .to properties of first\n for (var i = 0; i < first.length; ++i) {\n var span = first[i];\n if (span.to == null) {\n var found = getMarkedSpanFor(last, span.marker);\n if (!found) { span.to = startCh; }\n else if (sameLine) { span.to = found.to == null ? null : found.to + offset; }\n }\n }\n }\n if (last) {\n // Fix up .from in last (or move them into first in case of sameLine)\n for (var i$1 = 0; i$1 < last.length; ++i$1) {\n var span$1 = last[i$1];\n if (span$1.to != null) { span$1.to += offset; }\n if (span$1.from == null) {\n var found$1 = getMarkedSpanFor(first, span$1.marker);\n if (!found$1) {\n span$1.from = offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n } else {\n span$1.from += offset;\n if (sameLine) { (first || (first = [])).push(span$1); }\n }\n }\n }\n // Make sure we didn't create any zero-length spans\n if (first) { first = clearEmptySpans(first); }\n if (last && last != first) { last = clearEmptySpans(last); }\n\n var newMarkers = [first];\n if (!sameLine) {\n // Fill gap with whole-line-spans\n var gap = change.text.length - 2, gapMarkers;\n if (gap > 0 && first)\n { for (var i$2 = 0; i$2 < first.length; ++i$2)\n { if (first[i$2].to == null)\n { (gapMarkers || (gapMarkers = [])).push(new MarkedSpan(first[i$2].marker, null, null)); } } }\n for (var i$3 = 0; i$3 < gap; ++i$3)\n { newMarkers.push(gapMarkers); }\n newMarkers.push(last);\n }\n return newMarkers\n }\n\n // Remove spans that are empty and don't have a clearWhenEmpty\n // option of false.\n function clearEmptySpans(spans) {\n for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if (span.from != null && span.from == span.to && span.marker.clearWhenEmpty !== false)\n { spans.splice(i--, 1); }\n }\n if (!spans.length) { return null }\n return spans\n }\n\n // Used to 'clip' out readOnly ranges when making a change.\n function removeReadOnlyRanges(doc, from, to) {\n var markers = null;\n doc.iter(from.line, to.line + 1, function (line) {\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var mark = line.markedSpans[i].marker;\n if (mark.readOnly && (!markers || indexOf(markers, mark) == -1))\n { (markers || (markers = [])).push(mark); }\n } }\n });\n if (!markers) { return null }\n var parts = [{from: from, to: to}];\n for (var i = 0; i < markers.length; ++i) {\n var mk = markers[i], m = mk.find(0);\n for (var j = 0; j < parts.length; ++j) {\n var p = parts[j];\n if (cmp(p.to, m.from) < 0 || cmp(p.from, m.to) > 0) { continue }\n var newParts = [j, 1], dfrom = cmp(p.from, m.from), dto = cmp(p.to, m.to);\n if (dfrom < 0 || !mk.inclusiveLeft && !dfrom)\n { newParts.push({from: p.from, to: m.from}); }\n if (dto > 0 || !mk.inclusiveRight && !dto)\n { newParts.push({from: m.to, to: p.to}); }\n parts.splice.apply(parts, newParts);\n j += newParts.length - 3;\n }\n }\n return parts\n }\n\n // Connect or disconnect spans from a line.\n function detachMarkedSpans(line) {\n var spans = line.markedSpans;\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.detachLine(line); }\n line.markedSpans = null;\n }\n function attachMarkedSpans(line, spans) {\n if (!spans) { return }\n for (var i = 0; i < spans.length; ++i)\n { spans[i].marker.attachLine(line); }\n line.markedSpans = spans;\n }\n\n // Helpers used when computing which overlapping collapsed span\n // counts as the larger one.\n function extraLeft(marker) { return marker.inclusiveLeft ? -1 : 0 }\n function extraRight(marker) { return marker.inclusiveRight ? 1 : 0 }\n\n // Returns a number indicating which of two overlapping collapsed\n // spans is larger (and thus includes the other). Falls back to\n // comparing ids when the spans cover exactly the same range.\n function compareCollapsedMarkers(a, b) {\n var lenDiff = a.lines.length - b.lines.length;\n if (lenDiff != 0) { return lenDiff }\n var aPos = a.find(), bPos = b.find();\n var fromCmp = cmp(aPos.from, bPos.from) || extraLeft(a) - extraLeft(b);\n if (fromCmp) { return -fromCmp }\n var toCmp = cmp(aPos.to, bPos.to) || extraRight(a) - extraRight(b);\n if (toCmp) { return toCmp }\n return b.id - a.id\n }\n\n // Find out whether a line ends or starts in a collapsed span. If\n // so, return the marker for that span.\n function collapsedSpanAtSide(line, start) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (sp.marker.collapsed && (start ? sp.from : sp.to) == null &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0))\n { found = sp.marker; }\n } }\n return found\n }\n function collapsedSpanAtStart(line) { return collapsedSpanAtSide(line, true) }\n function collapsedSpanAtEnd(line) { return collapsedSpanAtSide(line, false) }\n\n function collapsedSpanAround(line, ch) {\n var sps = sawCollapsedSpans && line.markedSpans, found;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (sp.marker.collapsed && (sp.from == null || sp.from < ch) && (sp.to == null || sp.to > ch) &&\n (!found || compareCollapsedMarkers(found, sp.marker) < 0)) { found = sp.marker; }\n } }\n return found\n }\n\n // Test whether there exists a collapsed span that partially\n // overlaps (covers the start or end, but not both) of a new span.\n // Such overlap is not allowed.\n function conflictingCollapsedRange(doc, lineNo, from, to, marker) {\n var line = getLine(doc, lineNo);\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i) {\n var sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n var found = sp.marker.find(0);\n var fromCmp = cmp(found.from, from) || extraLeft(sp.marker) - extraLeft(marker);\n var toCmp = cmp(found.to, to) || extraRight(sp.marker) - extraRight(marker);\n if (fromCmp >= 0 && toCmp <= 0 || fromCmp <= 0 && toCmp >= 0) { continue }\n if (fromCmp <= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.to, from) >= 0 : cmp(found.to, from) > 0) ||\n fromCmp >= 0 && (sp.marker.inclusiveRight && marker.inclusiveLeft ? cmp(found.from, to) <= 0 : cmp(found.from, to) < 0))\n { return true }\n } }\n }\n\n // A visual line is a line as drawn on the screen. Folding, for\n // example, can cause multiple logical lines to appear on the same\n // visual line. This finds the start of the visual line that the\n // given line is part of (usually that is the line itself).\n function visualLine(line) {\n var merged;\n while (merged = collapsedSpanAtStart(line))\n { line = merged.find(-1, true).line; }\n return line\n }\n\n function visualLineEnd(line) {\n var merged;\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return line\n }\n\n // Returns an array of logical lines that continue the visual line\n // started by the argument, or undefined if there are no such lines.\n function visualLineContinued(line) {\n var merged, lines;\n while (merged = collapsedSpanAtEnd(line)) {\n line = merged.find(1, true).line\n ;(lines || (lines = [])).push(line);\n }\n return lines\n }\n\n // Get the line number of the start of the visual line that the\n // given line number is part of.\n function visualLineNo(doc, lineN) {\n var line = getLine(doc, lineN), vis = visualLine(line);\n if (line == vis) { return lineN }\n return lineNo(vis)\n }\n\n // Get the line number of the start of the next visual line after\n // the given line.\n function visualLineEndNo(doc, lineN) {\n if (lineN > doc.lastLine()) { return lineN }\n var line = getLine(doc, lineN), merged;\n if (!lineIsHidden(doc, line)) { return lineN }\n while (merged = collapsedSpanAtEnd(line))\n { line = merged.find(1, true).line; }\n return lineNo(line) + 1\n }\n\n // Compute whether a line is hidden. Lines count as hidden when they\n // are part of a visual line that starts with another line, or when\n // they are entirely covered by collapsed, non-widget span.\n function lineIsHidden(doc, line) {\n var sps = sawCollapsedSpans && line.markedSpans;\n if (sps) { for (var sp = (void 0), i = 0; i < sps.length; ++i) {\n sp = sps[i];\n if (!sp.marker.collapsed) { continue }\n if (sp.from == null) { return true }\n if (sp.marker.widgetNode) { continue }\n if (sp.from == 0 && sp.marker.inclusiveLeft && lineIsHiddenInner(doc, line, sp))\n { return true }\n } }\n }\n function lineIsHiddenInner(doc, line, span) {\n if (span.to == null) {\n var end = span.marker.find(1, true);\n return lineIsHiddenInner(doc, end.line, getMarkedSpanFor(end.line.markedSpans, span.marker))\n }\n if (span.marker.inclusiveRight && span.to == line.text.length)\n { return true }\n for (var sp = (void 0), i = 0; i < line.markedSpans.length; ++i) {\n sp = line.markedSpans[i];\n if (sp.marker.collapsed && !sp.marker.widgetNode && sp.from == span.to &&\n (sp.to == null || sp.to != span.from) &&\n (sp.marker.inclusiveLeft || span.marker.inclusiveRight) &&\n lineIsHiddenInner(doc, line, sp)) { return true }\n }\n }\n\n // Find the height above the given line.\n function heightAtLine(lineObj) {\n lineObj = visualLine(lineObj);\n\n var h = 0, chunk = lineObj.parent;\n for (var i = 0; i < chunk.lines.length; ++i) {\n var line = chunk.lines[i];\n if (line == lineObj) { break }\n else { h += line.height; }\n }\n for (var p = chunk.parent; p; chunk = p, p = chunk.parent) {\n for (var i$1 = 0; i$1 < p.children.length; ++i$1) {\n var cur = p.children[i$1];\n if (cur == chunk) { break }\n else { h += cur.height; }\n }\n }\n return h\n }\n\n // Compute the character length of a line, taking into account\n // collapsed ranges (see markText) that might hide parts, and join\n // other lines onto it.\n function lineLength(line) {\n if (line.height == 0) { return 0 }\n var len = line.text.length, merged, cur = line;\n while (merged = collapsedSpanAtStart(cur)) {\n var found = merged.find(0, true);\n cur = found.from.line;\n len += found.from.ch - found.to.ch;\n }\n cur = line;\n while (merged = collapsedSpanAtEnd(cur)) {\n var found$1 = merged.find(0, true);\n len -= cur.text.length - found$1.from.ch;\n cur = found$1.to.line;\n len += cur.text.length - found$1.to.ch;\n }\n return len\n }\n\n // Find the longest line in the document.\n function findMaxLine(cm) {\n var d = cm.display, doc = cm.doc;\n d.maxLine = getLine(doc, doc.first);\n d.maxLineLength = lineLength(d.maxLine);\n d.maxLineChanged = true;\n doc.iter(function (line) {\n var len = lineLength(line);\n if (len > d.maxLineLength) {\n d.maxLineLength = len;\n d.maxLine = line;\n }\n });\n }\n\n // LINE DATA STRUCTURE\n\n // Line objects. These hold state related to a line, including\n // highlighting info (the styles array).\n var Line = function(text, markedSpans, estimateHeight) {\n this.text = text;\n attachMarkedSpans(this, markedSpans);\n this.height = estimateHeight ? estimateHeight(this) : 1;\n };\n\n Line.prototype.lineNo = function () { return lineNo(this) };\n eventMixin(Line);\n\n // Change the content (text, markers) of a line. Automatically\n // invalidates cached information and tries to re-estimate the\n // line's height.\n function updateLine(line, text, markedSpans, estimateHeight) {\n line.text = text;\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n if (line.order != null) { line.order = null; }\n detachMarkedSpans(line);\n attachMarkedSpans(line, markedSpans);\n var estHeight = estimateHeight ? estimateHeight(line) : 1;\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n }\n\n // Detach a line from the document tree and its markers.\n function cleanUpLine(line) {\n line.parent = null;\n detachMarkedSpans(line);\n }\n\n // Convert a style as returned by a mode (either null, or a string\n // containing one or more styles) to a CSS style. This is cached,\n // and also looks for line-wide styles.\n var styleToClassCache = {}, styleToClassCacheWithMode = {};\n function interpretTokenStyle(style, options) {\n if (!style || /^\\s*$/.test(style)) { return null }\n var cache = options.addModeClass ? styleToClassCacheWithMode : styleToClassCache;\n return cache[style] ||\n (cache[style] = style.replace(/\\S+/g, \"cm-$&\"))\n }\n\n // Render the DOM representation of the text of a line. Also builds\n // up a 'line map', which points at the DOM nodes that represent\n // specific stretches of text, and is used by the measuring code.\n // The returned object contains the DOM node, this map, and\n // information about line-wide styles that were set by the mode.\n function buildLineContent(cm, lineView) {\n // The padding-right forces the element to have a 'border', which\n // is needed on Webkit to be able to get line-level bounding\n // rectangles for it (in measureChar).\n var content = eltP(\"span\", null, null, webkit ? \"padding-right: .1px\" : null);\n var builder = {pre: eltP(\"pre\", [content], \"CodeMirror-line\"), content: content,\n col: 0, pos: 0, cm: cm,\n trailingSpace: false,\n splitSpaces: cm.getOption(\"lineWrapping\")};\n lineView.measure = {};\n\n // Iterate over the logical lines that make up this visual line.\n for (var i = 0; i <= (lineView.rest ? lineView.rest.length : 0); i++) {\n var line = i ? lineView.rest[i - 1] : lineView.line, order = (void 0);\n builder.pos = 0;\n builder.addToken = buildToken;\n // Optionally wire in some hacks into the token-rendering\n // algorithm, to deal with browser quirks.\n if (hasBadBidiRects(cm.display.measure) && (order = getOrder(line, cm.doc.direction)))\n { builder.addToken = buildTokenBadBidi(builder.addToken, order); }\n builder.map = [];\n var allowFrontierUpdate = lineView != cm.display.externalMeasured && lineNo(line);\n insertLineContent(line, builder, getLineStyles(cm, line, allowFrontierUpdate));\n if (line.styleClasses) {\n if (line.styleClasses.bgClass)\n { builder.bgClass = joinClasses(line.styleClasses.bgClass, builder.bgClass || \"\"); }\n if (line.styleClasses.textClass)\n { builder.textClass = joinClasses(line.styleClasses.textClass, builder.textClass || \"\"); }\n }\n\n // Ensure at least a single node is present, for measuring.\n if (builder.map.length == 0)\n { builder.map.push(0, 0, builder.content.appendChild(zeroWidthElement(cm.display.measure))); }\n\n // Store the map and a cache object for the current logical line\n if (i == 0) {\n lineView.measure.map = builder.map;\n lineView.measure.cache = {};\n } else {\n (lineView.measure.maps || (lineView.measure.maps = [])).push(builder.map)\n ;(lineView.measure.caches || (lineView.measure.caches = [])).push({});\n }\n }\n\n // See issue #2901\n if (webkit) {\n var last = builder.content.lastChild;\n if (/\\bcm-tab\\b/.test(last.className) || (last.querySelector && last.querySelector(\".cm-tab\")))\n { builder.content.className = \"cm-tab-wrap-hack\"; }\n }\n\n signal(cm, \"renderLine\", cm, lineView.line, builder.pre);\n if (builder.pre.className)\n { builder.textClass = joinClasses(builder.pre.className, builder.textClass || \"\"); }\n\n return builder\n }\n\n function defaultSpecialCharPlaceholder(ch) {\n var token = elt(\"span\", \"\\u2022\", \"cm-invalidchar\");\n token.title = \"\\\\u\" + ch.charCodeAt(0).toString(16);\n token.setAttribute(\"aria-label\", token.title);\n return token\n }\n\n // Build up the DOM representation for a single token, and add it to\n // the line map. Takes care to render special characters separately.\n function buildToken(builder, text, style, startStyle, endStyle, css, attributes) {\n if (!text) { return }\n var displayText = builder.splitSpaces ? splitSpaces(text, builder.trailingSpace) : text;\n var special = builder.cm.state.specialChars, mustWrap = false;\n var content;\n if (!special.test(text)) {\n builder.col += text.length;\n content = document.createTextNode(displayText);\n builder.map.push(builder.pos, builder.pos + text.length, content);\n if (ie && ie_version < 9) { mustWrap = true; }\n builder.pos += text.length;\n } else {\n content = document.createDocumentFragment();\n var pos = 0;\n while (true) {\n special.lastIndex = pos;\n var m = special.exec(text);\n var skipped = m ? m.index - pos : text.length - pos;\n if (skipped) {\n var txt = document.createTextNode(displayText.slice(pos, pos + skipped));\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt])); }\n else { content.appendChild(txt); }\n builder.map.push(builder.pos, builder.pos + skipped, txt);\n builder.col += skipped;\n builder.pos += skipped;\n }\n if (!m) { break }\n pos += skipped + 1;\n var txt$1 = (void 0);\n if (m[0] == \"\\t\") {\n var tabSize = builder.cm.options.tabSize, tabWidth = tabSize - builder.col % tabSize;\n txt$1 = content.appendChild(elt(\"span\", spaceStr(tabWidth), \"cm-tab\"));\n txt$1.setAttribute(\"role\", \"presentation\");\n txt$1.setAttribute(\"cm-text\", \"\\t\");\n builder.col += tabWidth;\n } else if (m[0] == \"\\r\" || m[0] == \"\\n\") {\n txt$1 = content.appendChild(elt(\"span\", m[0] == \"\\r\" ? \"\\u240d\" : \"\\u2424\", \"cm-invalidchar\"));\n txt$1.setAttribute(\"cm-text\", m[0]);\n builder.col += 1;\n } else {\n txt$1 = builder.cm.options.specialCharPlaceholder(m[0]);\n txt$1.setAttribute(\"cm-text\", m[0]);\n if (ie && ie_version < 9) { content.appendChild(elt(\"span\", [txt$1])); }\n else { content.appendChild(txt$1); }\n builder.col += 1;\n }\n builder.map.push(builder.pos, builder.pos + 1, txt$1);\n builder.pos++;\n }\n }\n builder.trailingSpace = displayText.charCodeAt(text.length - 1) == 32;\n if (style || startStyle || endStyle || mustWrap || css || attributes) {\n var fullStyle = style || \"\";\n if (startStyle) { fullStyle += startStyle; }\n if (endStyle) { fullStyle += endStyle; }\n var token = elt(\"span\", [content], fullStyle, css);\n if (attributes) {\n for (var attr in attributes) { if (attributes.hasOwnProperty(attr) && attr != \"style\" && attr != \"class\")\n { token.setAttribute(attr, attributes[attr]); } }\n }\n return builder.content.appendChild(token)\n }\n builder.content.appendChild(content);\n }\n\n // Change some spaces to NBSP to prevent the browser from collapsing\n // trailing spaces at the end of a line when rendering text (issue #1362).\n function splitSpaces(text, trailingBefore) {\n if (text.length > 1 && !/ /.test(text)) { return text }\n var spaceBefore = trailingBefore, result = \"\";\n for (var i = 0; i < text.length; i++) {\n var ch = text.charAt(i);\n if (ch == \" \" && spaceBefore && (i == text.length - 1 || text.charCodeAt(i + 1) == 32))\n { ch = \"\\u00a0\"; }\n result += ch;\n spaceBefore = ch == \" \";\n }\n return result\n }\n\n // Work around nonsense dimensions being reported for stretches of\n // right-to-left text.\n function buildTokenBadBidi(inner, order) {\n return function (builder, text, style, startStyle, endStyle, css, attributes) {\n style = style ? style + \" cm-force-border\" : \"cm-force-border\";\n var start = builder.pos, end = start + text.length;\n for (;;) {\n // Find the part that overlaps with the start of this text\n var part = (void 0);\n for (var i = 0; i < order.length; i++) {\n part = order[i];\n if (part.to > start && part.from <= start) { break }\n }\n if (part.to >= end) { return inner(builder, text, style, startStyle, endStyle, css, attributes) }\n inner(builder, text.slice(0, part.to - start), style, startStyle, null, css, attributes);\n startStyle = null;\n text = text.slice(part.to - start);\n start = part.to;\n }\n }\n }\n\n function buildCollapsedSpan(builder, size, marker, ignoreWidget) {\n var widget = !ignoreWidget && marker.widgetNode;\n if (widget) { builder.map.push(builder.pos, builder.pos + size, widget); }\n if (!ignoreWidget && builder.cm.display.input.needsContentAttribute) {\n if (!widget)\n { widget = builder.content.appendChild(document.createElement(\"span\")); }\n widget.setAttribute(\"cm-marker\", marker.id);\n }\n if (widget) {\n builder.cm.display.input.setUneditable(widget);\n builder.content.appendChild(widget);\n }\n builder.pos += size;\n builder.trailingSpace = false;\n }\n\n // Outputs a number of spans to make up a line, taking highlighting\n // and marked text into account.\n function insertLineContent(line, builder, styles) {\n var spans = line.markedSpans, allText = line.text, at = 0;\n if (!spans) {\n for (var i$1 = 1; i$1 < styles.length; i$1+=2)\n { builder.addToken(builder, allText.slice(at, at = styles[i$1]), interpretTokenStyle(styles[i$1+1], builder.cm.options)); }\n return\n }\n\n var len = allText.length, pos = 0, i = 1, text = \"\", style, css;\n var nextChange = 0, spanStyle, spanEndStyle, spanStartStyle, collapsed, attributes;\n for (;;) {\n if (nextChange == pos) { // Update current marker set\n spanStyle = spanEndStyle = spanStartStyle = css = \"\";\n attributes = null;\n collapsed = null; nextChange = Infinity;\n var foundBookmarks = [], endStyles = (void 0);\n for (var j = 0; j < spans.length; ++j) {\n var sp = spans[j], m = sp.marker;\n if (m.type == \"bookmark\" && sp.from == pos && m.widgetNode) {\n foundBookmarks.push(m);\n } else if (sp.from <= pos && (sp.to == null || sp.to > pos || m.collapsed && sp.to == pos && sp.from == pos)) {\n if (sp.to != null && sp.to != pos && nextChange > sp.to) {\n nextChange = sp.to;\n spanEndStyle = \"\";\n }\n if (m.className) { spanStyle += \" \" + m.className; }\n if (m.css) { css = (css ? css + \";\" : \"\") + m.css; }\n if (m.startStyle && sp.from == pos) { spanStartStyle += \" \" + m.startStyle; }\n if (m.endStyle && sp.to == nextChange) { (endStyles || (endStyles = [])).push(m.endStyle, sp.to); }\n // support for the old title property\n // https://github.com/codemirror/CodeMirror/pull/5673\n if (m.title) { (attributes || (attributes = {})).title = m.title; }\n if (m.attributes) {\n for (var attr in m.attributes)\n { (attributes || (attributes = {}))[attr] = m.attributes[attr]; }\n }\n if (m.collapsed && (!collapsed || compareCollapsedMarkers(collapsed.marker, m) < 0))\n { collapsed = sp; }\n } else if (sp.from > pos && nextChange > sp.from) {\n nextChange = sp.from;\n }\n }\n if (endStyles) { for (var j$1 = 0; j$1 < endStyles.length; j$1 += 2)\n { if (endStyles[j$1 + 1] == nextChange) { spanEndStyle += \" \" + endStyles[j$1]; } } }\n\n if (!collapsed || collapsed.from == pos) { for (var j$2 = 0; j$2 < foundBookmarks.length; ++j$2)\n { buildCollapsedSpan(builder, 0, foundBookmarks[j$2]); } }\n if (collapsed && (collapsed.from || 0) == pos) {\n buildCollapsedSpan(builder, (collapsed.to == null ? len + 1 : collapsed.to) - pos,\n collapsed.marker, collapsed.from == null);\n if (collapsed.to == null) { return }\n if (collapsed.to == pos) { collapsed = false; }\n }\n }\n if (pos >= len) { break }\n\n var upto = Math.min(len, nextChange);\n while (true) {\n if (text) {\n var end = pos + text.length;\n if (!collapsed) {\n var tokenText = end > upto ? text.slice(0, upto - pos) : text;\n builder.addToken(builder, tokenText, style ? style + spanStyle : spanStyle,\n spanStartStyle, pos + tokenText.length == nextChange ? spanEndStyle : \"\", css, attributes);\n }\n if (end >= upto) {text = text.slice(upto - pos); pos = upto; break}\n pos = end;\n spanStartStyle = \"\";\n }\n text = allText.slice(at, at = styles[i++]);\n style = interpretTokenStyle(styles[i++], builder.cm.options);\n }\n }\n }\n\n\n // These objects are used to represent the visible (currently drawn)\n // part of the document. A LineView may correspond to multiple\n // logical lines, if those are connected by collapsed ranges.\n function LineView(doc, line, lineN) {\n // The starting line\n this.line = line;\n // Continuing lines, if any\n this.rest = visualLineContinued(line);\n // Number of logical lines in this visual line\n this.size = this.rest ? lineNo(lst(this.rest)) - lineN + 1 : 1;\n this.node = this.text = null;\n this.hidden = lineIsHidden(doc, line);\n }\n\n // Create a range of LineView objects for the given lines.\n function buildViewArray(cm, from, to) {\n var array = [], nextPos;\n for (var pos = from; pos < to; pos = nextPos) {\n var view = new LineView(cm.doc, getLine(cm.doc, pos), pos);\n nextPos = pos + view.size;\n array.push(view);\n }\n return array\n }\n\n var operationGroup = null;\n\n function pushOperation(op) {\n if (operationGroup) {\n operationGroup.ops.push(op);\n } else {\n op.ownsGroup = operationGroup = {\n ops: [op],\n delayedCallbacks: []\n };\n }\n }\n\n function fireCallbacksForOps(group) {\n // Calls delayed callbacks and cursorActivity handlers until no\n // new ones appear\n var callbacks = group.delayedCallbacks, i = 0;\n do {\n for (; i < callbacks.length; i++)\n { callbacks[i].call(null); }\n for (var j = 0; j < group.ops.length; j++) {\n var op = group.ops[j];\n if (op.cursorActivityHandlers)\n { while (op.cursorActivityCalled < op.cursorActivityHandlers.length)\n { op.cursorActivityHandlers[op.cursorActivityCalled++].call(null, op.cm); } }\n }\n } while (i < callbacks.length)\n }\n\n function finishOperation(op, endCb) {\n var group = op.ownsGroup;\n if (!group) { return }\n\n try { fireCallbacksForOps(group); }\n finally {\n operationGroup = null;\n endCb(group);\n }\n }\n\n var orphanDelayedCallbacks = null;\n\n // Often, we want to signal events at a point where we are in the\n // middle of some work, but don't want the handler to start calling\n // other methods on the editor, which might be in an inconsistent\n // state or simply not expect any other events to happen.\n // signalLater looks whether there are any handlers, and schedules\n // them to be executed when the last operation ends, or, if no\n // operation is active, when a timeout fires.\n function signalLater(emitter, type /*, values...*/) {\n var arr = getHandlers(emitter, type);\n if (!arr.length) { return }\n var args = Array.prototype.slice.call(arguments, 2), list;\n if (operationGroup) {\n list = operationGroup.delayedCallbacks;\n } else if (orphanDelayedCallbacks) {\n list = orphanDelayedCallbacks;\n } else {\n list = orphanDelayedCallbacks = [];\n setTimeout(fireOrphanDelayed, 0);\n }\n var loop = function ( i ) {\n list.push(function () { return arr[i].apply(null, args); });\n };\n\n for (var i = 0; i < arr.length; ++i)\n loop( i );\n }\n\n function fireOrphanDelayed() {\n var delayed = orphanDelayedCallbacks;\n orphanDelayedCallbacks = null;\n for (var i = 0; i < delayed.length; ++i) { delayed[i](); }\n }\n\n // When an aspect of a line changes, a string is added to\n // lineView.changes. This updates the relevant part of the line's\n // DOM structure.\n function updateLineForChanges(cm, lineView, lineN, dims) {\n for (var j = 0; j < lineView.changes.length; j++) {\n var type = lineView.changes[j];\n if (type == \"text\") { updateLineText(cm, lineView); }\n else if (type == \"gutter\") { updateLineGutter(cm, lineView, lineN, dims); }\n else if (type == \"class\") { updateLineClasses(cm, lineView); }\n else if (type == \"widget\") { updateLineWidgets(cm, lineView, dims); }\n }\n lineView.changes = null;\n }\n\n // Lines with gutter elements, widgets or a background class need to\n // be wrapped, and have the extra elements added to the wrapper div\n function ensureLineWrapped(lineView) {\n if (lineView.node == lineView.text) {\n lineView.node = elt(\"div\", null, null, \"position: relative\");\n if (lineView.text.parentNode)\n { lineView.text.parentNode.replaceChild(lineView.node, lineView.text); }\n lineView.node.appendChild(lineView.text);\n if (ie && ie_version < 8) { lineView.node.style.zIndex = 2; }\n }\n return lineView.node\n }\n\n function updateLineBackground(cm, lineView) {\n var cls = lineView.bgClass ? lineView.bgClass + \" \" + (lineView.line.bgClass || \"\") : lineView.line.bgClass;\n if (cls) { cls += \" CodeMirror-linebackground\"; }\n if (lineView.background) {\n if (cls) { lineView.background.className = cls; }\n else { lineView.background.parentNode.removeChild(lineView.background); lineView.background = null; }\n } else if (cls) {\n var wrap = ensureLineWrapped(lineView);\n lineView.background = wrap.insertBefore(elt(\"div\", null, cls), wrap.firstChild);\n cm.display.input.setUneditable(lineView.background);\n }\n }\n\n // Wrapper around buildLineContent which will reuse the structure\n // in display.externalMeasured when possible.\n function getLineContent(cm, lineView) {\n var ext = cm.display.externalMeasured;\n if (ext && ext.line == lineView.line) {\n cm.display.externalMeasured = null;\n lineView.measure = ext.measure;\n return ext.built\n }\n return buildLineContent(cm, lineView)\n }\n\n // Redraw the line's text. Interacts with the background and text\n // classes because the mode may output tokens that influence these\n // classes.\n function updateLineText(cm, lineView) {\n var cls = lineView.text.className;\n var built = getLineContent(cm, lineView);\n if (lineView.text == lineView.node) { lineView.node = built.pre; }\n lineView.text.parentNode.replaceChild(built.pre, lineView.text);\n lineView.text = built.pre;\n if (built.bgClass != lineView.bgClass || built.textClass != lineView.textClass) {\n lineView.bgClass = built.bgClass;\n lineView.textClass = built.textClass;\n updateLineClasses(cm, lineView);\n } else if (cls) {\n lineView.text.className = cls;\n }\n }\n\n function updateLineClasses(cm, lineView) {\n updateLineBackground(cm, lineView);\n if (lineView.line.wrapClass)\n { ensureLineWrapped(lineView).className = lineView.line.wrapClass; }\n else if (lineView.node != lineView.text)\n { lineView.node.className = \"\"; }\n var textClass = lineView.textClass ? lineView.textClass + \" \" + (lineView.line.textClass || \"\") : lineView.line.textClass;\n lineView.text.className = textClass || \"\";\n }\n\n function updateLineGutter(cm, lineView, lineN, dims) {\n if (lineView.gutter) {\n lineView.node.removeChild(lineView.gutter);\n lineView.gutter = null;\n }\n if (lineView.gutterBackground) {\n lineView.node.removeChild(lineView.gutterBackground);\n lineView.gutterBackground = null;\n }\n if (lineView.line.gutterClass) {\n var wrap = ensureLineWrapped(lineView);\n lineView.gutterBackground = elt(\"div\", null, \"CodeMirror-gutter-background \" + lineView.line.gutterClass,\n (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px; width: \" + (dims.gutterTotalWidth) + \"px\"));\n cm.display.input.setUneditable(lineView.gutterBackground);\n wrap.insertBefore(lineView.gutterBackground, lineView.text);\n }\n var markers = lineView.line.gutterMarkers;\n if (cm.options.lineNumbers || markers) {\n var wrap$1 = ensureLineWrapped(lineView);\n var gutterWrap = lineView.gutter = elt(\"div\", null, \"CodeMirror-gutter-wrapper\", (\"left: \" + (cm.options.fixedGutter ? dims.fixedPos : -dims.gutterTotalWidth) + \"px\"));\n gutterWrap.setAttribute(\"aria-hidden\", \"true\");\n cm.display.input.setUneditable(gutterWrap);\n wrap$1.insertBefore(gutterWrap, lineView.text);\n if (lineView.line.gutterClass)\n { gutterWrap.className += \" \" + lineView.line.gutterClass; }\n if (cm.options.lineNumbers && (!markers || !markers[\"CodeMirror-linenumbers\"]))\n { lineView.lineNumber = gutterWrap.appendChild(\n elt(\"div\", lineNumberFor(cm.options, lineN),\n \"CodeMirror-linenumber CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[\"CodeMirror-linenumbers\"]) + \"px; width: \" + (cm.display.lineNumInnerWidth) + \"px\"))); }\n if (markers) { for (var k = 0; k < cm.display.gutterSpecs.length; ++k) {\n var id = cm.display.gutterSpecs[k].className, found = markers.hasOwnProperty(id) && markers[id];\n if (found)\n { gutterWrap.appendChild(elt(\"div\", [found], \"CodeMirror-gutter-elt\",\n (\"left: \" + (dims.gutterLeft[id]) + \"px; width: \" + (dims.gutterWidth[id]) + \"px\"))); }\n } }\n }\n }\n\n function updateLineWidgets(cm, lineView, dims) {\n if (lineView.alignable) { lineView.alignable = null; }\n var isWidget = classTest(\"CodeMirror-linewidget\");\n for (var node = lineView.node.firstChild, next = (void 0); node; node = next) {\n next = node.nextSibling;\n if (isWidget.test(node.className)) { lineView.node.removeChild(node); }\n }\n insertLineWidgets(cm, lineView, dims);\n }\n\n // Build a line's DOM representation from scratch\n function buildLineElement(cm, lineView, lineN, dims) {\n var built = getLineContent(cm, lineView);\n lineView.text = lineView.node = built.pre;\n if (built.bgClass) { lineView.bgClass = built.bgClass; }\n if (built.textClass) { lineView.textClass = built.textClass; }\n\n updateLineClasses(cm, lineView);\n updateLineGutter(cm, lineView, lineN, dims);\n insertLineWidgets(cm, lineView, dims);\n return lineView.node\n }\n\n // A lineView may contain multiple logical lines (when merged by\n // collapsed spans). The widgets for all of them need to be drawn.\n function insertLineWidgets(cm, lineView, dims) {\n insertLineWidgetsFor(cm, lineView.line, lineView, dims, true);\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { insertLineWidgetsFor(cm, lineView.rest[i], lineView, dims, false); } }\n }\n\n function insertLineWidgetsFor(cm, line, lineView, dims, allowAbove) {\n if (!line.widgets) { return }\n var wrap = ensureLineWrapped(lineView);\n for (var i = 0, ws = line.widgets; i < ws.length; ++i) {\n var widget = ws[i], node = elt(\"div\", [widget.node], \"CodeMirror-linewidget\" + (widget.className ? \" \" + widget.className : \"\"));\n if (!widget.handleMouseEvents) { node.setAttribute(\"cm-ignore-events\", \"true\"); }\n positionLineWidget(widget, node, lineView, dims);\n cm.display.input.setUneditable(node);\n if (allowAbove && widget.above)\n { wrap.insertBefore(node, lineView.gutter || lineView.text); }\n else\n { wrap.appendChild(node); }\n signalLater(widget, \"redraw\");\n }\n }\n\n function positionLineWidget(widget, node, lineView, dims) {\n if (widget.noHScroll) {\n (lineView.alignable || (lineView.alignable = [])).push(node);\n var width = dims.wrapperWidth;\n node.style.left = dims.fixedPos + \"px\";\n if (!widget.coverGutter) {\n width -= dims.gutterTotalWidth;\n node.style.paddingLeft = dims.gutterTotalWidth + \"px\";\n }\n node.style.width = width + \"px\";\n }\n if (widget.coverGutter) {\n node.style.zIndex = 5;\n node.style.position = \"relative\";\n if (!widget.noHScroll) { node.style.marginLeft = -dims.gutterTotalWidth + \"px\"; }\n }\n }\n\n function widgetHeight(widget) {\n if (widget.height != null) { return widget.height }\n var cm = widget.doc.cm;\n if (!cm) { return 0 }\n if (!contains(document.body, widget.node)) {\n var parentStyle = \"position: relative;\";\n if (widget.coverGutter)\n { parentStyle += \"margin-left: -\" + cm.display.gutters.offsetWidth + \"px;\"; }\n if (widget.noHScroll)\n { parentStyle += \"width: \" + cm.display.wrapper.clientWidth + \"px;\"; }\n removeChildrenAndAdd(cm.display.measure, elt(\"div\", [widget.node], null, parentStyle));\n }\n return widget.height = widget.node.parentNode.offsetHeight\n }\n\n // Return true when the given mouse event happened in a widget\n function eventInWidget(display, e) {\n for (var n = e_target(e); n != display.wrapper; n = n.parentNode) {\n if (!n || (n.nodeType == 1 && n.getAttribute(\"cm-ignore-events\") == \"true\") ||\n (n.parentNode == display.sizer && n != display.mover))\n { return true }\n }\n }\n\n // POSITION MEASUREMENT\n\n function paddingTop(display) {return display.lineSpace.offsetTop}\n function paddingVert(display) {return display.mover.offsetHeight - display.lineSpace.offsetHeight}\n function paddingH(display) {\n if (display.cachedPaddingH) { return display.cachedPaddingH }\n var e = removeChildrenAndAdd(display.measure, elt(\"pre\", \"x\", \"CodeMirror-line-like\"));\n var style = window.getComputedStyle ? window.getComputedStyle(e) : e.currentStyle;\n var data = {left: parseInt(style.paddingLeft), right: parseInt(style.paddingRight)};\n if (!isNaN(data.left) && !isNaN(data.right)) { display.cachedPaddingH = data; }\n return data\n }\n\n function scrollGap(cm) { return scrollerGap - cm.display.nativeBarWidth }\n function displayWidth(cm) {\n return cm.display.scroller.clientWidth - scrollGap(cm) - cm.display.barWidth\n }\n function displayHeight(cm) {\n return cm.display.scroller.clientHeight - scrollGap(cm) - cm.display.barHeight\n }\n\n // Ensure the lineView.wrapping.heights array is populated. This is\n // an array of bottom offsets for the lines that make up a drawn\n // line. When lineWrapping is on, there might be more than one\n // height.\n function ensureLineHeights(cm, lineView, rect) {\n var wrapping = cm.options.lineWrapping;\n var curWidth = wrapping && displayWidth(cm);\n if (!lineView.measure.heights || wrapping && lineView.measure.width != curWidth) {\n var heights = lineView.measure.heights = [];\n if (wrapping) {\n lineView.measure.width = curWidth;\n var rects = lineView.text.firstChild.getClientRects();\n for (var i = 0; i < rects.length - 1; i++) {\n var cur = rects[i], next = rects[i + 1];\n if (Math.abs(cur.bottom - next.bottom) > 2)\n { heights.push((cur.bottom + next.top) / 2 - rect.top); }\n }\n }\n heights.push(rect.bottom - rect.top);\n }\n }\n\n // Find a line map (mapping character offsets to text nodes) and a\n // measurement cache for the given line number. (A line view might\n // contain multiple lines when collapsed ranges are present.)\n function mapFromLineView(lineView, line, lineN) {\n if (lineView.line == line)\n { return {map: lineView.measure.map, cache: lineView.measure.cache} }\n if (lineView.rest) {\n for (var i = 0; i < lineView.rest.length; i++)\n { if (lineView.rest[i] == line)\n { return {map: lineView.measure.maps[i], cache: lineView.measure.caches[i]} } }\n for (var i$1 = 0; i$1 < lineView.rest.length; i$1++)\n { if (lineNo(lineView.rest[i$1]) > lineN)\n { return {map: lineView.measure.maps[i$1], cache: lineView.measure.caches[i$1], before: true} } }\n }\n }\n\n // Render a line into the hidden node display.externalMeasured. Used\n // when measurement is needed for a line that's not in the viewport.\n function updateExternalMeasurement(cm, line) {\n line = visualLine(line);\n var lineN = lineNo(line);\n var view = cm.display.externalMeasured = new LineView(cm.doc, line, lineN);\n view.lineN = lineN;\n var built = view.built = buildLineContent(cm, view);\n view.text = built.pre;\n removeChildrenAndAdd(cm.display.lineMeasure, built.pre);\n return view\n }\n\n // Get a {top, bottom, left, right} box (in line-local coordinates)\n // for a given character.\n function measureChar(cm, line, ch, bias) {\n return measureCharPrepared(cm, prepareMeasureForLine(cm, line), ch, bias)\n }\n\n // Find a line view that corresponds to the given line number.\n function findViewForLine(cm, lineN) {\n if (lineN >= cm.display.viewFrom && lineN < cm.display.viewTo)\n { return cm.display.view[findViewIndex(cm, lineN)] }\n var ext = cm.display.externalMeasured;\n if (ext && lineN >= ext.lineN && lineN < ext.lineN + ext.size)\n { return ext }\n }\n\n // Measurement can be split in two steps, the set-up work that\n // applies to the whole line, and the measurement of the actual\n // character. Functions like coordsChar, that need to do a lot of\n // measurements in a row, can thus ensure that the set-up work is\n // only done once.\n function prepareMeasureForLine(cm, line) {\n var lineN = lineNo(line);\n var view = findViewForLine(cm, lineN);\n if (view && !view.text) {\n view = null;\n } else if (view && view.changes) {\n updateLineForChanges(cm, view, lineN, getDimensions(cm));\n cm.curOp.forceUpdate = true;\n }\n if (!view)\n { view = updateExternalMeasurement(cm, line); }\n\n var info = mapFromLineView(view, line, lineN);\n return {\n line: line, view: view, rect: null,\n map: info.map, cache: info.cache, before: info.before,\n hasHeights: false\n }\n }\n\n // Given a prepared measurement object, measures the position of an\n // actual character (or fetches it from the cache).\n function measureCharPrepared(cm, prepared, ch, bias, varHeight) {\n if (prepared.before) { ch = -1; }\n var key = ch + (bias || \"\"), found;\n if (prepared.cache.hasOwnProperty(key)) {\n found = prepared.cache[key];\n } else {\n if (!prepared.rect)\n { prepared.rect = prepared.view.text.getBoundingClientRect(); }\n if (!prepared.hasHeights) {\n ensureLineHeights(cm, prepared.view, prepared.rect);\n prepared.hasHeights = true;\n }\n found = measureCharInner(cm, prepared, ch, bias);\n if (!found.bogus) { prepared.cache[key] = found; }\n }\n return {left: found.left, right: found.right,\n top: varHeight ? found.rtop : found.top,\n bottom: varHeight ? found.rbottom : found.bottom}\n }\n\n var nullRect = {left: 0, right: 0, top: 0, bottom: 0};\n\n function nodeAndOffsetInLineMap(map, ch, bias) {\n var node, start, end, collapse, mStart, mEnd;\n // First, search the line map for the text node corresponding to,\n // or closest to, the target character.\n for (var i = 0; i < map.length; i += 3) {\n mStart = map[i];\n mEnd = map[i + 1];\n if (ch < mStart) {\n start = 0; end = 1;\n collapse = \"left\";\n } else if (ch < mEnd) {\n start = ch - mStart;\n end = start + 1;\n } else if (i == map.length - 3 || ch == mEnd && map[i + 3] > ch) {\n end = mEnd - mStart;\n start = end - 1;\n if (ch >= mEnd) { collapse = \"right\"; }\n }\n if (start != null) {\n node = map[i + 2];\n if (mStart == mEnd && bias == (node.insertLeft ? \"left\" : \"right\"))\n { collapse = bias; }\n if (bias == \"left\" && start == 0)\n { while (i && map[i - 2] == map[i - 3] && map[i - 1].insertLeft) {\n node = map[(i -= 3) + 2];\n collapse = \"left\";\n } }\n if (bias == \"right\" && start == mEnd - mStart)\n { while (i < map.length - 3 && map[i + 3] == map[i + 4] && !map[i + 5].insertLeft) {\n node = map[(i += 3) + 2];\n collapse = \"right\";\n } }\n break\n }\n }\n return {node: node, start: start, end: end, collapse: collapse, coverStart: mStart, coverEnd: mEnd}\n }\n\n function getUsefulRect(rects, bias) {\n var rect = nullRect;\n if (bias == \"left\") { for (var i = 0; i < rects.length; i++) {\n if ((rect = rects[i]).left != rect.right) { break }\n } } else { for (var i$1 = rects.length - 1; i$1 >= 0; i$1--) {\n if ((rect = rects[i$1]).left != rect.right) { break }\n } }\n return rect\n }\n\n function measureCharInner(cm, prepared, ch, bias) {\n var place = nodeAndOffsetInLineMap(prepared.map, ch, bias);\n var node = place.node, start = place.start, end = place.end, collapse = place.collapse;\n\n var rect;\n if (node.nodeType == 3) { // If it is a text node, use a range to retrieve the coordinates.\n for (var i$1 = 0; i$1 < 4; i$1++) { // Retry a maximum of 4 times when nonsense rectangles are returned\n while (start && isExtendingChar(prepared.line.text.charAt(place.coverStart + start))) { --start; }\n while (place.coverStart + end < place.coverEnd && isExtendingChar(prepared.line.text.charAt(place.coverStart + end))) { ++end; }\n if (ie && ie_version < 9 && start == 0 && end == place.coverEnd - place.coverStart)\n { rect = node.parentNode.getBoundingClientRect(); }\n else\n { rect = getUsefulRect(range(node, start, end).getClientRects(), bias); }\n if (rect.left || rect.right || start == 0) { break }\n end = start;\n start = start - 1;\n collapse = \"right\";\n }\n if (ie && ie_version < 11) { rect = maybeUpdateRectForZooming(cm.display.measure, rect); }\n } else { // If it is a widget, simply get the box for the whole widget.\n if (start > 0) { collapse = bias = \"right\"; }\n var rects;\n if (cm.options.lineWrapping && (rects = node.getClientRects()).length > 1)\n { rect = rects[bias == \"right\" ? rects.length - 1 : 0]; }\n else\n { rect = node.getBoundingClientRect(); }\n }\n if (ie && ie_version < 9 && !start && (!rect || !rect.left && !rect.right)) {\n var rSpan = node.parentNode.getClientRects()[0];\n if (rSpan)\n { rect = {left: rSpan.left, right: rSpan.left + charWidth(cm.display), top: rSpan.top, bottom: rSpan.bottom}; }\n else\n { rect = nullRect; }\n }\n\n var rtop = rect.top - prepared.rect.top, rbot = rect.bottom - prepared.rect.top;\n var mid = (rtop + rbot) / 2;\n var heights = prepared.view.measure.heights;\n var i = 0;\n for (; i < heights.length - 1; i++)\n { if (mid < heights[i]) { break } }\n var top = i ? heights[i - 1] : 0, bot = heights[i];\n var result = {left: (collapse == \"right\" ? rect.right : rect.left) - prepared.rect.left,\n right: (collapse == \"left\" ? rect.left : rect.right) - prepared.rect.left,\n top: top, bottom: bot};\n if (!rect.left && !rect.right) { result.bogus = true; }\n if (!cm.options.singleCursorHeightPerLine) { result.rtop = rtop; result.rbottom = rbot; }\n\n return result\n }\n\n // Work around problem with bounding client rects on ranges being\n // returned incorrectly when zoomed on IE10 and below.\n function maybeUpdateRectForZooming(measure, rect) {\n if (!window.screen || screen.logicalXDPI == null ||\n screen.logicalXDPI == screen.deviceXDPI || !hasBadZoomedRects(measure))\n { return rect }\n var scaleX = screen.logicalXDPI / screen.deviceXDPI;\n var scaleY = screen.logicalYDPI / screen.deviceYDPI;\n return {left: rect.left * scaleX, right: rect.right * scaleX,\n top: rect.top * scaleY, bottom: rect.bottom * scaleY}\n }\n\n function clearLineMeasurementCacheFor(lineView) {\n if (lineView.measure) {\n lineView.measure.cache = {};\n lineView.measure.heights = null;\n if (lineView.rest) { for (var i = 0; i < lineView.rest.length; i++)\n { lineView.measure.caches[i] = {}; } }\n }\n }\n\n function clearLineMeasurementCache(cm) {\n cm.display.externalMeasure = null;\n removeChildren(cm.display.lineMeasure);\n for (var i = 0; i < cm.display.view.length; i++)\n { clearLineMeasurementCacheFor(cm.display.view[i]); }\n }\n\n function clearCaches(cm) {\n clearLineMeasurementCache(cm);\n cm.display.cachedCharWidth = cm.display.cachedTextHeight = cm.display.cachedPaddingH = null;\n if (!cm.options.lineWrapping) { cm.display.maxLineChanged = true; }\n cm.display.lineNumChars = null;\n }\n\n function pageScrollX() {\n // Work around https://bugs.chromium.org/p/chromium/issues/detail?id=489206\n // which causes page_Offset and bounding client rects to use\n // different reference viewports and invalidate our calculations.\n if (chrome && android) { return -(document.body.getBoundingClientRect().left - parseInt(getComputedStyle(document.body).marginLeft)) }\n return window.pageXOffset || (document.documentElement || document.body).scrollLeft\n }\n function pageScrollY() {\n if (chrome && android) { return -(document.body.getBoundingClientRect().top - parseInt(getComputedStyle(document.body).marginTop)) }\n return window.pageYOffset || (document.documentElement || document.body).scrollTop\n }\n\n function widgetTopHeight(lineObj) {\n var ref = visualLine(lineObj);\n var widgets = ref.widgets;\n var height = 0;\n if (widgets) { for (var i = 0; i < widgets.length; ++i) { if (widgets[i].above)\n { height += widgetHeight(widgets[i]); } } }\n return height\n }\n\n // Converts a {top, bottom, left, right} box from line-local\n // coordinates into another coordinate system. Context may be one of\n // \"line\", \"div\" (display.lineDiv), \"local\"./null (editor), \"window\",\n // or \"page\".\n function intoCoordSystem(cm, lineObj, rect, context, includeWidgets) {\n if (!includeWidgets) {\n var height = widgetTopHeight(lineObj);\n rect.top += height; rect.bottom += height;\n }\n if (context == \"line\") { return rect }\n if (!context) { context = \"local\"; }\n var yOff = heightAtLine(lineObj);\n if (context == \"local\") { yOff += paddingTop(cm.display); }\n else { yOff -= cm.display.viewOffset; }\n if (context == \"page\" || context == \"window\") {\n var lOff = cm.display.lineSpace.getBoundingClientRect();\n yOff += lOff.top + (context == \"window\" ? 0 : pageScrollY());\n var xOff = lOff.left + (context == \"window\" ? 0 : pageScrollX());\n rect.left += xOff; rect.right += xOff;\n }\n rect.top += yOff; rect.bottom += yOff;\n return rect\n }\n\n // Coverts a box from \"div\" coords to another coordinate system.\n // Context may be \"window\", \"page\", \"div\", or \"local\"./null.\n function fromCoordSystem(cm, coords, context) {\n if (context == \"div\") { return coords }\n var left = coords.left, top = coords.top;\n // First move into \"page\" coordinate system\n if (context == \"page\") {\n left -= pageScrollX();\n top -= pageScrollY();\n } else if (context == \"local\" || !context) {\n var localBox = cm.display.sizer.getBoundingClientRect();\n left += localBox.left;\n top += localBox.top;\n }\n\n var lineSpaceBox = cm.display.lineSpace.getBoundingClientRect();\n return {left: left - lineSpaceBox.left, top: top - lineSpaceBox.top}\n }\n\n function charCoords(cm, pos, context, lineObj, bias) {\n if (!lineObj) { lineObj = getLine(cm.doc, pos.line); }\n return intoCoordSystem(cm, lineObj, measureChar(cm, lineObj, pos.ch, bias), context)\n }\n\n // Returns a box for a given cursor position, which may have an\n // 'other' property containing the position of the secondary cursor\n // on a bidi boundary.\n // A cursor Pos(line, char, \"before\") is on the same visual line as `char - 1`\n // and after `char - 1` in writing order of `char - 1`\n // A cursor Pos(line, char, \"after\") is on the same visual line as `char`\n // and before `char` in writing order of `char`\n // Examples (upper-case letters are RTL, lower-case are LTR):\n // Pos(0, 1, ...)\n // before after\n // ab a|b a|b\n // aB a|B aB|\n // Ab |Ab A|b\n // AB B|A B|A\n // Every position after the last character on a line is considered to stick\n // to the last character on the line.\n function cursorCoords(cm, pos, context, lineObj, preparedMeasure, varHeight) {\n lineObj = lineObj || getLine(cm.doc, pos.line);\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n function get(ch, right) {\n var m = measureCharPrepared(cm, preparedMeasure, ch, right ? \"right\" : \"left\", varHeight);\n if (right) { m.left = m.right; } else { m.right = m.left; }\n return intoCoordSystem(cm, lineObj, m, context)\n }\n var order = getOrder(lineObj, cm.doc.direction), ch = pos.ch, sticky = pos.sticky;\n if (ch >= lineObj.text.length) {\n ch = lineObj.text.length;\n sticky = \"before\";\n } else if (ch <= 0) {\n ch = 0;\n sticky = \"after\";\n }\n if (!order) { return get(sticky == \"before\" ? ch - 1 : ch, sticky == \"before\") }\n\n function getBidi(ch, partPos, invert) {\n var part = order[partPos], right = part.level == 1;\n return get(invert ? ch - 1 : ch, right != invert)\n }\n var partPos = getBidiPartAt(order, ch, sticky);\n var other = bidiOther;\n var val = getBidi(ch, partPos, sticky == \"before\");\n if (other != null) { val.other = getBidi(ch, other, sticky != \"before\"); }\n return val\n }\n\n // Used to cheaply estimate the coordinates for a position. Used for\n // intermediate scroll updates.\n function estimateCoords(cm, pos) {\n var left = 0;\n pos = clipPos(cm.doc, pos);\n if (!cm.options.lineWrapping) { left = charWidth(cm.display) * pos.ch; }\n var lineObj = getLine(cm.doc, pos.line);\n var top = heightAtLine(lineObj) + paddingTop(cm.display);\n return {left: left, right: left, top: top, bottom: top + lineObj.height}\n }\n\n // Positions returned by coordsChar contain some extra information.\n // xRel is the relative x position of the input coordinates compared\n // to the found position (so xRel > 0 means the coordinates are to\n // the right of the character position, for example). When outside\n // is true, that means the coordinates lie outside the line's\n // vertical range.\n function PosWithInfo(line, ch, sticky, outside, xRel) {\n var pos = Pos(line, ch, sticky);\n pos.xRel = xRel;\n if (outside) { pos.outside = outside; }\n return pos\n }\n\n // Compute the character position closest to the given coordinates.\n // Input must be lineSpace-local (\"div\" coordinate system).\n function coordsChar(cm, x, y) {\n var doc = cm.doc;\n y += cm.display.viewOffset;\n if (y < 0) { return PosWithInfo(doc.first, 0, null, -1, -1) }\n var lineN = lineAtHeight(doc, y), last = doc.first + doc.size - 1;\n if (lineN > last)\n { return PosWithInfo(doc.first + doc.size - 1, getLine(doc, last).text.length, null, 1, 1) }\n if (x < 0) { x = 0; }\n\n var lineObj = getLine(doc, lineN);\n for (;;) {\n var found = coordsCharInner(cm, lineObj, lineN, x, y);\n var collapsed = collapsedSpanAround(lineObj, found.ch + (found.xRel > 0 || found.outside > 0 ? 1 : 0));\n if (!collapsed) { return found }\n var rangeEnd = collapsed.find(1);\n if (rangeEnd.line == lineN) { return rangeEnd }\n lineObj = getLine(doc, lineN = rangeEnd.line);\n }\n }\n\n function wrappedLineExtent(cm, lineObj, preparedMeasure, y) {\n y -= widgetTopHeight(lineObj);\n var end = lineObj.text.length;\n var begin = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch - 1).bottom <= y; }, end, 0);\n end = findFirst(function (ch) { return measureCharPrepared(cm, preparedMeasure, ch).top > y; }, begin, end);\n return {begin: begin, end: end}\n }\n\n function wrappedLineExtentChar(cm, lineObj, preparedMeasure, target) {\n if (!preparedMeasure) { preparedMeasure = prepareMeasureForLine(cm, lineObj); }\n var targetTop = intoCoordSystem(cm, lineObj, measureCharPrepared(cm, preparedMeasure, target), \"line\").top;\n return wrappedLineExtent(cm, lineObj, preparedMeasure, targetTop)\n }\n\n // Returns true if the given side of a box is after the given\n // coordinates, in top-to-bottom, left-to-right order.\n function boxIsAfter(box, x, y, left) {\n return box.bottom <= y ? false : box.top > y ? true : (left ? box.left : box.right) > x\n }\n\n function coordsCharInner(cm, lineObj, lineNo, x, y) {\n // Move y into line-local coordinate space\n y -= heightAtLine(lineObj);\n var preparedMeasure = prepareMeasureForLine(cm, lineObj);\n // When directly calling `measureCharPrepared`, we have to adjust\n // for the widgets at this line.\n var widgetHeight = widgetTopHeight(lineObj);\n var begin = 0, end = lineObj.text.length, ltr = true;\n\n var order = getOrder(lineObj, cm.doc.direction);\n // If the line isn't plain left-to-right text, first figure out\n // which bidi section the coordinates fall into.\n if (order) {\n var part = (cm.options.lineWrapping ? coordsBidiPartWrapped : coordsBidiPart)\n (cm, lineObj, lineNo, preparedMeasure, order, x, y);\n ltr = part.level != 1;\n // The awkward -1 offsets are needed because findFirst (called\n // on these below) will treat its first bound as inclusive,\n // second as exclusive, but we want to actually address the\n // characters in the part's range\n begin = ltr ? part.from : part.to - 1;\n end = ltr ? part.to : part.from - 1;\n }\n\n // A binary search to find the first character whose bounding box\n // starts after the coordinates. If we run across any whose box wrap\n // the coordinates, store that.\n var chAround = null, boxAround = null;\n var ch = findFirst(function (ch) {\n var box = measureCharPrepared(cm, preparedMeasure, ch);\n box.top += widgetHeight; box.bottom += widgetHeight;\n if (!boxIsAfter(box, x, y, false)) { return false }\n if (box.top <= y && box.left <= x) {\n chAround = ch;\n boxAround = box;\n }\n return true\n }, begin, end);\n\n var baseX, sticky, outside = false;\n // If a box around the coordinates was found, use that\n if (boxAround) {\n // Distinguish coordinates nearer to the left or right side of the box\n var atLeft = x - boxAround.left < boxAround.right - x, atStart = atLeft == ltr;\n ch = chAround + (atStart ? 0 : 1);\n sticky = atStart ? \"after\" : \"before\";\n baseX = atLeft ? boxAround.left : boxAround.right;\n } else {\n // (Adjust for extended bound, if necessary.)\n if (!ltr && (ch == end || ch == begin)) { ch++; }\n // To determine which side to associate with, get the box to the\n // left of the character and compare it's vertical position to the\n // coordinates\n sticky = ch == 0 ? \"after\" : ch == lineObj.text.length ? \"before\" :\n (measureCharPrepared(cm, preparedMeasure, ch - (ltr ? 1 : 0)).bottom + widgetHeight <= y) == ltr ?\n \"after\" : \"before\";\n // Now get accurate coordinates for this place, in order to get a\n // base X position\n var coords = cursorCoords(cm, Pos(lineNo, ch, sticky), \"line\", lineObj, preparedMeasure);\n baseX = coords.left;\n outside = y < coords.top ? -1 : y >= coords.bottom ? 1 : 0;\n }\n\n ch = skipExtendingChars(lineObj.text, ch, 1);\n return PosWithInfo(lineNo, ch, sticky, outside, x - baseX)\n }\n\n function coordsBidiPart(cm, lineObj, lineNo, preparedMeasure, order, x, y) {\n // Bidi parts are sorted left-to-right, and in a non-line-wrapping\n // situation, we can take this ordering to correspond to the visual\n // ordering. This finds the first part whose end is after the given\n // coordinates.\n var index = findFirst(function (i) {\n var part = order[i], ltr = part.level != 1;\n return boxIsAfter(cursorCoords(cm, Pos(lineNo, ltr ? part.to : part.from, ltr ? \"before\" : \"after\"),\n \"line\", lineObj, preparedMeasure), x, y, true)\n }, 0, order.length - 1);\n var part = order[index];\n // If this isn't the first part, the part's start is also after\n // the coordinates, and the coordinates aren't on the same line as\n // that start, move one part back.\n if (index > 0) {\n var ltr = part.level != 1;\n var start = cursorCoords(cm, Pos(lineNo, ltr ? part.from : part.to, ltr ? \"after\" : \"before\"),\n \"line\", lineObj, preparedMeasure);\n if (boxIsAfter(start, x, y, true) && start.top > y)\n { part = order[index - 1]; }\n }\n return part\n }\n\n function coordsBidiPartWrapped(cm, lineObj, _lineNo, preparedMeasure, order, x, y) {\n // In a wrapped line, rtl text on wrapping boundaries can do things\n // that don't correspond to the ordering in our `order` array at\n // all, so a binary search doesn't work, and we want to return a\n // part that only spans one line so that the binary search in\n // coordsCharInner is safe. As such, we first find the extent of the\n // wrapped line, and then do a flat search in which we discard any\n // spans that aren't on the line.\n var ref = wrappedLineExtent(cm, lineObj, preparedMeasure, y);\n var begin = ref.begin;\n var end = ref.end;\n if (/\\s/.test(lineObj.text.charAt(end - 1))) { end--; }\n var part = null, closestDist = null;\n for (var i = 0; i < order.length; i++) {\n var p = order[i];\n if (p.from >= end || p.to <= begin) { continue }\n var ltr = p.level != 1;\n var endX = measureCharPrepared(cm, preparedMeasure, ltr ? Math.min(end, p.to) - 1 : Math.max(begin, p.from)).right;\n // Weigh against spans ending before this, so that they are only\n // picked if nothing ends after\n var dist = endX < x ? x - endX + 1e9 : endX - x;\n if (!part || closestDist > dist) {\n part = p;\n closestDist = dist;\n }\n }\n if (!part) { part = order[order.length - 1]; }\n // Clip the part to the wrapped line.\n if (part.from < begin) { part = {from: begin, to: part.to, level: part.level}; }\n if (part.to > end) { part = {from: part.from, to: end, level: part.level}; }\n return part\n }\n\n var measureText;\n // Compute the default text height.\n function textHeight(display) {\n if (display.cachedTextHeight != null) { return display.cachedTextHeight }\n if (measureText == null) {\n measureText = elt(\"pre\", null, \"CodeMirror-line-like\");\n // Measure a bunch of lines, for browsers that compute\n // fractional heights.\n for (var i = 0; i < 49; ++i) {\n measureText.appendChild(document.createTextNode(\"x\"));\n measureText.appendChild(elt(\"br\"));\n }\n measureText.appendChild(document.createTextNode(\"x\"));\n }\n removeChildrenAndAdd(display.measure, measureText);\n var height = measureText.offsetHeight / 50;\n if (height > 3) { display.cachedTextHeight = height; }\n removeChildren(display.measure);\n return height || 1\n }\n\n // Compute the default character width.\n function charWidth(display) {\n if (display.cachedCharWidth != null) { return display.cachedCharWidth }\n var anchor = elt(\"span\", \"xxxxxxxxxx\");\n var pre = elt(\"pre\", [anchor], \"CodeMirror-line-like\");\n removeChildrenAndAdd(display.measure, pre);\n var rect = anchor.getBoundingClientRect(), width = (rect.right - rect.left) / 10;\n if (width > 2) { display.cachedCharWidth = width; }\n return width || 10\n }\n\n // Do a bulk-read of the DOM positions and sizes needed to draw the\n // view, so that we don't interleave reading and writing to the DOM.\n function getDimensions(cm) {\n var d = cm.display, left = {}, width = {};\n var gutterLeft = d.gutters.clientLeft;\n for (var n = d.gutters.firstChild, i = 0; n; n = n.nextSibling, ++i) {\n var id = cm.display.gutterSpecs[i].className;\n left[id] = n.offsetLeft + n.clientLeft + gutterLeft;\n width[id] = n.clientWidth;\n }\n return {fixedPos: compensateForHScroll(d),\n gutterTotalWidth: d.gutters.offsetWidth,\n gutterLeft: left,\n gutterWidth: width,\n wrapperWidth: d.wrapper.clientWidth}\n }\n\n // Computes display.scroller.scrollLeft + display.gutters.offsetWidth,\n // but using getBoundingClientRect to get a sub-pixel-accurate\n // result.\n function compensateForHScroll(display) {\n return display.scroller.getBoundingClientRect().left - display.sizer.getBoundingClientRect().left\n }\n\n // Returns a function that estimates the height of a line, to use as\n // first approximation until the line becomes visible (and is thus\n // properly measurable).\n function estimateHeight(cm) {\n var th = textHeight(cm.display), wrapping = cm.options.lineWrapping;\n var perLine = wrapping && Math.max(5, cm.display.scroller.clientWidth / charWidth(cm.display) - 3);\n return function (line) {\n if (lineIsHidden(cm.doc, line)) { return 0 }\n\n var widgetsHeight = 0;\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++) {\n if (line.widgets[i].height) { widgetsHeight += line.widgets[i].height; }\n } }\n\n if (wrapping)\n { return widgetsHeight + (Math.ceil(line.text.length / perLine) || 1) * th }\n else\n { return widgetsHeight + th }\n }\n }\n\n function estimateLineHeights(cm) {\n var doc = cm.doc, est = estimateHeight(cm);\n doc.iter(function (line) {\n var estHeight = est(line);\n if (estHeight != line.height) { updateLineHeight(line, estHeight); }\n });\n }\n\n // Given a mouse event, find the corresponding position. If liberal\n // is false, it checks whether a gutter or scrollbar was clicked,\n // and returns null if it was. forRect is used by rectangular\n // selections, and tries to estimate a character position even for\n // coordinates beyond the right of the text.\n function posFromMouse(cm, e, liberal, forRect) {\n var display = cm.display;\n if (!liberal && e_target(e).getAttribute(\"cm-not-content\") == \"true\") { return null }\n\n var x, y, space = display.lineSpace.getBoundingClientRect();\n // Fails unpredictably on IE[67] when mouse is dragged around quickly.\n try { x = e.clientX - space.left; y = e.clientY - space.top; }\n catch (e$1) { return null }\n var coords = coordsChar(cm, x, y), line;\n if (forRect && coords.xRel > 0 && (line = getLine(cm.doc, coords.line).text).length == coords.ch) {\n var colDiff = countColumn(line, line.length, cm.options.tabSize) - line.length;\n coords = Pos(coords.line, Math.max(0, Math.round((x - paddingH(cm.display).left) / charWidth(cm.display)) - colDiff));\n }\n return coords\n }\n\n // Find the view element corresponding to a given line. Return null\n // when the line isn't visible.\n function findViewIndex(cm, n) {\n if (n >= cm.display.viewTo) { return null }\n n -= cm.display.viewFrom;\n if (n < 0) { return null }\n var view = cm.display.view;\n for (var i = 0; i < view.length; i++) {\n n -= view[i].size;\n if (n < 0) { return i }\n }\n }\n\n // Updates the display.view data structure for a given change to the\n // document. From and to are in pre-change coordinates. Lendiff is\n // the amount of lines added or subtracted by the change. This is\n // used for changes that span multiple lines, or change the way\n // lines are divided into visual lines. regLineChange (below)\n // registers single-line changes.\n function regChange(cm, from, to, lendiff) {\n if (from == null) { from = cm.doc.first; }\n if (to == null) { to = cm.doc.first + cm.doc.size; }\n if (!lendiff) { lendiff = 0; }\n\n var display = cm.display;\n if (lendiff && to < display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers > from))\n { display.updateLineNumbers = from; }\n\n cm.curOp.viewChanged = true;\n\n if (from >= display.viewTo) { // Change after\n if (sawCollapsedSpans && visualLineNo(cm.doc, from) < display.viewTo)\n { resetView(cm); }\n } else if (to <= display.viewFrom) { // Change before\n if (sawCollapsedSpans && visualLineEndNo(cm.doc, to + lendiff) > display.viewFrom) {\n resetView(cm);\n } else {\n display.viewFrom += lendiff;\n display.viewTo += lendiff;\n }\n } else if (from <= display.viewFrom && to >= display.viewTo) { // Full overlap\n resetView(cm);\n } else if (from <= display.viewFrom) { // Top overlap\n var cut = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cut) {\n display.view = display.view.slice(cut.index);\n display.viewFrom = cut.lineN;\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n } else if (to >= display.viewTo) { // Bottom overlap\n var cut$1 = viewCuttingPoint(cm, from, from, -1);\n if (cut$1) {\n display.view = display.view.slice(0, cut$1.index);\n display.viewTo = cut$1.lineN;\n } else {\n resetView(cm);\n }\n } else { // Gap in the middle\n var cutTop = viewCuttingPoint(cm, from, from, -1);\n var cutBot = viewCuttingPoint(cm, to, to + lendiff, 1);\n if (cutTop && cutBot) {\n display.view = display.view.slice(0, cutTop.index)\n .concat(buildViewArray(cm, cutTop.lineN, cutBot.lineN))\n .concat(display.view.slice(cutBot.index));\n display.viewTo += lendiff;\n } else {\n resetView(cm);\n }\n }\n\n var ext = display.externalMeasured;\n if (ext) {\n if (to < ext.lineN)\n { ext.lineN += lendiff; }\n else if (from < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n }\n }\n\n // Register a change to a single line. Type must be one of \"text\",\n // \"gutter\", \"class\", \"widget\"\n function regLineChange(cm, line, type) {\n cm.curOp.viewChanged = true;\n var display = cm.display, ext = cm.display.externalMeasured;\n if (ext && line >= ext.lineN && line < ext.lineN + ext.size)\n { display.externalMeasured = null; }\n\n if (line < display.viewFrom || line >= display.viewTo) { return }\n var lineView = display.view[findViewIndex(cm, line)];\n if (lineView.node == null) { return }\n var arr = lineView.changes || (lineView.changes = []);\n if (indexOf(arr, type) == -1) { arr.push(type); }\n }\n\n // Clear the view.\n function resetView(cm) {\n cm.display.viewFrom = cm.display.viewTo = cm.doc.first;\n cm.display.view = [];\n cm.display.viewOffset = 0;\n }\n\n function viewCuttingPoint(cm, oldN, newN, dir) {\n var index = findViewIndex(cm, oldN), diff, view = cm.display.view;\n if (!sawCollapsedSpans || newN == cm.doc.first + cm.doc.size)\n { return {index: index, lineN: newN} }\n var n = cm.display.viewFrom;\n for (var i = 0; i < index; i++)\n { n += view[i].size; }\n if (n != oldN) {\n if (dir > 0) {\n if (index == view.length - 1) { return null }\n diff = (n + view[index].size) - oldN;\n index++;\n } else {\n diff = n - oldN;\n }\n oldN += diff; newN += diff;\n }\n while (visualLineNo(cm.doc, newN) != newN) {\n if (index == (dir < 0 ? 0 : view.length - 1)) { return null }\n newN += dir * view[index - (dir < 0 ? 1 : 0)].size;\n index += dir;\n }\n return {index: index, lineN: newN}\n }\n\n // Force the view to cover a given range, adding empty view element\n // or clipping off existing ones as needed.\n function adjustView(cm, from, to) {\n var display = cm.display, view = display.view;\n if (view.length == 0 || from >= display.viewTo || to <= display.viewFrom) {\n display.view = buildViewArray(cm, from, to);\n display.viewFrom = from;\n } else {\n if (display.viewFrom > from)\n { display.view = buildViewArray(cm, from, display.viewFrom).concat(display.view); }\n else if (display.viewFrom < from)\n { display.view = display.view.slice(findViewIndex(cm, from)); }\n display.viewFrom = from;\n if (display.viewTo < to)\n { display.view = display.view.concat(buildViewArray(cm, display.viewTo, to)); }\n else if (display.viewTo > to)\n { display.view = display.view.slice(0, findViewIndex(cm, to)); }\n }\n display.viewTo = to;\n }\n\n // Count the number of lines in the view whose DOM representation is\n // out of date (or nonexistent).\n function countDirtyView(cm) {\n var view = cm.display.view, dirty = 0;\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (!lineView.hidden && (!lineView.node || lineView.changes)) { ++dirty; }\n }\n return dirty\n }\n\n function updateSelection(cm) {\n cm.display.input.showSelection(cm.display.input.prepareSelection());\n }\n\n function prepareSelection(cm, primary) {\n if ( primary === void 0 ) primary = true;\n\n var doc = cm.doc, result = {};\n var curFragment = result.cursors = document.createDocumentFragment();\n var selFragment = result.selection = document.createDocumentFragment();\n\n var customCursor = cm.options.$customCursor;\n if (customCursor) { primary = true; }\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n if (!primary && i == doc.sel.primIndex) { continue }\n var range = doc.sel.ranges[i];\n if (range.from().line >= cm.display.viewTo || range.to().line < cm.display.viewFrom) { continue }\n var collapsed = range.empty();\n if (customCursor) {\n var head = customCursor(cm, range);\n if (head) { drawSelectionCursor(cm, head, curFragment); }\n } else if (collapsed || cm.options.showCursorWhenSelecting) {\n drawSelectionCursor(cm, range.head, curFragment);\n }\n if (!collapsed)\n { drawSelectionRange(cm, range, selFragment); }\n }\n return result\n }\n\n // Draws a cursor for the given range\n function drawSelectionCursor(cm, head, output) {\n var pos = cursorCoords(cm, head, \"div\", null, null, !cm.options.singleCursorHeightPerLine);\n\n var cursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor\"));\n cursor.style.left = pos.left + \"px\";\n cursor.style.top = pos.top + \"px\";\n cursor.style.height = Math.max(0, pos.bottom - pos.top) * cm.options.cursorHeight + \"px\";\n\n if (/\\bcm-fat-cursor\\b/.test(cm.getWrapperElement().className)) {\n var charPos = charCoords(cm, head, \"div\", null, null);\n var width = charPos.right - charPos.left;\n cursor.style.width = (width > 0 ? width : cm.defaultCharWidth()) + \"px\";\n }\n\n if (pos.other) {\n // Secondary cursor, shown when on a 'jump' in bi-directional text\n var otherCursor = output.appendChild(elt(\"div\", \"\\u00a0\", \"CodeMirror-cursor CodeMirror-secondarycursor\"));\n otherCursor.style.display = \"\";\n otherCursor.style.left = pos.other.left + \"px\";\n otherCursor.style.top = pos.other.top + \"px\";\n otherCursor.style.height = (pos.other.bottom - pos.other.top) * .85 + \"px\";\n }\n }\n\n function cmpCoords(a, b) { return a.top - b.top || a.left - b.left }\n\n // Draws the given range as a highlighted selection\n function drawSelectionRange(cm, range, output) {\n var display = cm.display, doc = cm.doc;\n var fragment = document.createDocumentFragment();\n var padding = paddingH(cm.display), leftSide = padding.left;\n var rightSide = Math.max(display.sizerWidth, displayWidth(cm) - display.sizer.offsetLeft) - padding.right;\n var docLTR = doc.direction == \"ltr\";\n\n function add(left, top, width, bottom) {\n if (top < 0) { top = 0; }\n top = Math.round(top);\n bottom = Math.round(bottom);\n fragment.appendChild(elt(\"div\", null, \"CodeMirror-selected\", (\"position: absolute; left: \" + left + \"px;\\n top: \" + top + \"px; width: \" + (width == null ? rightSide - left : width) + \"px;\\n height: \" + (bottom - top) + \"px\")));\n }\n\n function drawForLine(line, fromArg, toArg) {\n var lineObj = getLine(doc, line);\n var lineLen = lineObj.text.length;\n var start, end;\n function coords(ch, bias) {\n return charCoords(cm, Pos(line, ch), \"div\", lineObj, bias)\n }\n\n function wrapX(pos, dir, side) {\n var extent = wrappedLineExtentChar(cm, lineObj, null, pos);\n var prop = (dir == \"ltr\") == (side == \"after\") ? \"left\" : \"right\";\n var ch = side == \"after\" ? extent.begin : extent.end - (/\\s/.test(lineObj.text.charAt(extent.end - 1)) ? 2 : 1);\n return coords(ch, prop)[prop]\n }\n\n var order = getOrder(lineObj, doc.direction);\n iterateBidiSections(order, fromArg || 0, toArg == null ? lineLen : toArg, function (from, to, dir, i) {\n var ltr = dir == \"ltr\";\n var fromPos = coords(from, ltr ? \"left\" : \"right\");\n var toPos = coords(to - 1, ltr ? \"right\" : \"left\");\n\n var openStart = fromArg == null && from == 0, openEnd = toArg == null && to == lineLen;\n var first = i == 0, last = !order || i == order.length - 1;\n if (toPos.top - fromPos.top <= 3) { // Single line\n var openLeft = (docLTR ? openStart : openEnd) && first;\n var openRight = (docLTR ? openEnd : openStart) && last;\n var left = openLeft ? leftSide : (ltr ? fromPos : toPos).left;\n var right = openRight ? rightSide : (ltr ? toPos : fromPos).right;\n add(left, fromPos.top, right - left, fromPos.bottom);\n } else { // Multiple lines\n var topLeft, topRight, botLeft, botRight;\n if (ltr) {\n topLeft = docLTR && openStart && first ? leftSide : fromPos.left;\n topRight = docLTR ? rightSide : wrapX(from, dir, \"before\");\n botLeft = docLTR ? leftSide : wrapX(to, dir, \"after\");\n botRight = docLTR && openEnd && last ? rightSide : toPos.right;\n } else {\n topLeft = !docLTR ? leftSide : wrapX(from, dir, \"before\");\n topRight = !docLTR && openStart && first ? rightSide : fromPos.right;\n botLeft = !docLTR && openEnd && last ? leftSide : toPos.left;\n botRight = !docLTR ? rightSide : wrapX(to, dir, \"after\");\n }\n add(topLeft, fromPos.top, topRight - topLeft, fromPos.bottom);\n if (fromPos.bottom < toPos.top) { add(leftSide, fromPos.bottom, null, toPos.top); }\n add(botLeft, toPos.top, botRight - botLeft, toPos.bottom);\n }\n\n if (!start || cmpCoords(fromPos, start) < 0) { start = fromPos; }\n if (cmpCoords(toPos, start) < 0) { start = toPos; }\n if (!end || cmpCoords(fromPos, end) < 0) { end = fromPos; }\n if (cmpCoords(toPos, end) < 0) { end = toPos; }\n });\n return {start: start, end: end}\n }\n\n var sFrom = range.from(), sTo = range.to();\n if (sFrom.line == sTo.line) {\n drawForLine(sFrom.line, sFrom.ch, sTo.ch);\n } else {\n var fromLine = getLine(doc, sFrom.line), toLine = getLine(doc, sTo.line);\n var singleVLine = visualLine(fromLine) == visualLine(toLine);\n var leftEnd = drawForLine(sFrom.line, sFrom.ch, singleVLine ? fromLine.text.length + 1 : null).end;\n var rightStart = drawForLine(sTo.line, singleVLine ? 0 : null, sTo.ch).start;\n if (singleVLine) {\n if (leftEnd.top < rightStart.top - 2) {\n add(leftEnd.right, leftEnd.top, null, leftEnd.bottom);\n add(leftSide, rightStart.top, rightStart.left, rightStart.bottom);\n } else {\n add(leftEnd.right, leftEnd.top, rightStart.left - leftEnd.right, leftEnd.bottom);\n }\n }\n if (leftEnd.bottom < rightStart.top)\n { add(leftSide, leftEnd.bottom, null, rightStart.top); }\n }\n\n output.appendChild(fragment);\n }\n\n // Cursor-blinking\n function restartBlink(cm) {\n if (!cm.state.focused) { return }\n var display = cm.display;\n clearInterval(display.blinker);\n var on = true;\n display.cursorDiv.style.visibility = \"\";\n if (cm.options.cursorBlinkRate > 0)\n { display.blinker = setInterval(function () {\n if (!cm.hasFocus()) { onBlur(cm); }\n display.cursorDiv.style.visibility = (on = !on) ? \"\" : \"hidden\";\n }, cm.options.cursorBlinkRate); }\n else if (cm.options.cursorBlinkRate < 0)\n { display.cursorDiv.style.visibility = \"hidden\"; }\n }\n\n function ensureFocus(cm) {\n if (!cm.hasFocus()) {\n cm.display.input.focus();\n if (!cm.state.focused) { onFocus(cm); }\n }\n }\n\n function delayBlurEvent(cm) {\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { if (cm.state.delayingBlurEvent) {\n cm.state.delayingBlurEvent = false;\n if (cm.state.focused) { onBlur(cm); }\n } }, 100);\n }\n\n function onFocus(cm, e) {\n if (cm.state.delayingBlurEvent && !cm.state.draggingText) { cm.state.delayingBlurEvent = false; }\n\n if (cm.options.readOnly == \"nocursor\") { return }\n if (!cm.state.focused) {\n signal(cm, \"focus\", cm, e);\n cm.state.focused = true;\n addClass(cm.display.wrapper, \"CodeMirror-focused\");\n // This test prevents this from firing when a context\n // menu is closed (since the input reset would kill the\n // select-all detection hack)\n if (!cm.curOp && cm.display.selForContextMenu != cm.doc.sel) {\n cm.display.input.reset();\n if (webkit) { setTimeout(function () { return cm.display.input.reset(true); }, 20); } // Issue #1730\n }\n cm.display.input.receivedFocus();\n }\n restartBlink(cm);\n }\n function onBlur(cm, e) {\n if (cm.state.delayingBlurEvent) { return }\n\n if (cm.state.focused) {\n signal(cm, \"blur\", cm, e);\n cm.state.focused = false;\n rmClass(cm.display.wrapper, \"CodeMirror-focused\");\n }\n clearInterval(cm.display.blinker);\n setTimeout(function () { if (!cm.state.focused) { cm.display.shift = false; } }, 150);\n }\n\n // Read the actual heights of the rendered lines, and update their\n // stored heights to match.\n function updateHeightsInViewport(cm) {\n var display = cm.display;\n var prevBottom = display.lineDiv.offsetTop;\n var viewTop = Math.max(0, display.scroller.getBoundingClientRect().top);\n var oldHeight = display.lineDiv.getBoundingClientRect().top;\n var mustScroll = 0;\n for (var i = 0; i < display.view.length; i++) {\n var cur = display.view[i], wrapping = cm.options.lineWrapping;\n var height = (void 0), width = 0;\n if (cur.hidden) { continue }\n oldHeight += cur.line.height;\n if (ie && ie_version < 8) {\n var bot = cur.node.offsetTop + cur.node.offsetHeight;\n height = bot - prevBottom;\n prevBottom = bot;\n } else {\n var box = cur.node.getBoundingClientRect();\n height = box.bottom - box.top;\n // Check that lines don't extend past the right of the current\n // editor width\n if (!wrapping && cur.text.firstChild)\n { width = cur.text.firstChild.getBoundingClientRect().right - box.left - 1; }\n }\n var diff = cur.line.height - height;\n if (diff > .005 || diff < -.005) {\n if (oldHeight < viewTop) { mustScroll -= diff; }\n updateLineHeight(cur.line, height);\n updateWidgetHeight(cur.line);\n if (cur.rest) { for (var j = 0; j < cur.rest.length; j++)\n { updateWidgetHeight(cur.rest[j]); } }\n }\n if (width > cm.display.sizerWidth) {\n var chWidth = Math.ceil(width / charWidth(cm.display));\n if (chWidth > cm.display.maxLineLength) {\n cm.display.maxLineLength = chWidth;\n cm.display.maxLine = cur.line;\n cm.display.maxLineChanged = true;\n }\n }\n }\n if (Math.abs(mustScroll) > 2) { display.scroller.scrollTop += mustScroll; }\n }\n\n // Read and store the height of line widgets associated with the\n // given line.\n function updateWidgetHeight(line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; ++i) {\n var w = line.widgets[i], parent = w.node.parentNode;\n if (parent) { w.height = parent.offsetHeight; }\n } }\n }\n\n // Compute the lines that are visible in a given viewport (defaults\n // the the current scroll position). viewport may contain top,\n // height, and ensure (see op.scrollToPos) properties.\n function visibleLines(display, doc, viewport) {\n var top = viewport && viewport.top != null ? Math.max(0, viewport.top) : display.scroller.scrollTop;\n top = Math.floor(top - paddingTop(display));\n var bottom = viewport && viewport.bottom != null ? viewport.bottom : top + display.wrapper.clientHeight;\n\n var from = lineAtHeight(doc, top), to = lineAtHeight(doc, bottom);\n // Ensure is a {from: {line, ch}, to: {line, ch}} object, and\n // forces those lines into the viewport (if possible).\n if (viewport && viewport.ensure) {\n var ensureFrom = viewport.ensure.from.line, ensureTo = viewport.ensure.to.line;\n if (ensureFrom < from) {\n from = ensureFrom;\n to = lineAtHeight(doc, heightAtLine(getLine(doc, ensureFrom)) + display.wrapper.clientHeight);\n } else if (Math.min(ensureTo, doc.lastLine()) >= to) {\n from = lineAtHeight(doc, heightAtLine(getLine(doc, ensureTo)) - display.wrapper.clientHeight);\n to = ensureTo;\n }\n }\n return {from: from, to: Math.max(to, from + 1)}\n }\n\n // SCROLLING THINGS INTO VIEW\n\n // If an editor sits on the top or bottom of the window, partially\n // scrolled out of view, this ensures that the cursor is visible.\n function maybeScrollWindow(cm, rect) {\n if (signalDOMEvent(cm, \"scrollCursorIntoView\")) { return }\n\n var display = cm.display, box = display.sizer.getBoundingClientRect(), doScroll = null;\n if (rect.top + box.top < 0) { doScroll = true; }\n else if (rect.bottom + box.top > (window.innerHeight || document.documentElement.clientHeight)) { doScroll = false; }\n if (doScroll != null && !phantom) {\n var scrollNode = elt(\"div\", \"\\u200b\", null, (\"position: absolute;\\n top: \" + (rect.top - display.viewOffset - paddingTop(cm.display)) + \"px;\\n height: \" + (rect.bottom - rect.top + scrollGap(cm) + display.barHeight) + \"px;\\n left: \" + (rect.left) + \"px; width: \" + (Math.max(2, rect.right - rect.left)) + \"px;\"));\n cm.display.lineSpace.appendChild(scrollNode);\n scrollNode.scrollIntoView(doScroll);\n cm.display.lineSpace.removeChild(scrollNode);\n }\n }\n\n // Scroll a given position into view (immediately), verifying that\n // it actually became visible (as line heights are accurately\n // measured, the position of something may 'drift' during drawing).\n function scrollPosIntoView(cm, pos, end, margin) {\n if (margin == null) { margin = 0; }\n var rect;\n if (!cm.options.lineWrapping && pos == end) {\n // Set pos and end to the cursor positions around the character pos sticks to\n // If pos.sticky == \"before\", that is around pos.ch - 1, otherwise around pos.ch\n // If pos == Pos(_, 0, \"before\"), pos and end are unchanged\n end = pos.sticky == \"before\" ? Pos(pos.line, pos.ch + 1, \"before\") : pos;\n pos = pos.ch ? Pos(pos.line, pos.sticky == \"before\" ? pos.ch - 1 : pos.ch, \"after\") : pos;\n }\n for (var limit = 0; limit < 5; limit++) {\n var changed = false;\n var coords = cursorCoords(cm, pos);\n var endCoords = !end || end == pos ? coords : cursorCoords(cm, end);\n rect = {left: Math.min(coords.left, endCoords.left),\n top: Math.min(coords.top, endCoords.top) - margin,\n right: Math.max(coords.left, endCoords.left),\n bottom: Math.max(coords.bottom, endCoords.bottom) + margin};\n var scrollPos = calculateScrollPos(cm, rect);\n var startTop = cm.doc.scrollTop, startLeft = cm.doc.scrollLeft;\n if (scrollPos.scrollTop != null) {\n updateScrollTop(cm, scrollPos.scrollTop);\n if (Math.abs(cm.doc.scrollTop - startTop) > 1) { changed = true; }\n }\n if (scrollPos.scrollLeft != null) {\n setScrollLeft(cm, scrollPos.scrollLeft);\n if (Math.abs(cm.doc.scrollLeft - startLeft) > 1) { changed = true; }\n }\n if (!changed) { break }\n }\n return rect\n }\n\n // Scroll a given set of coordinates into view (immediately).\n function scrollIntoView(cm, rect) {\n var scrollPos = calculateScrollPos(cm, rect);\n if (scrollPos.scrollTop != null) { updateScrollTop(cm, scrollPos.scrollTop); }\n if (scrollPos.scrollLeft != null) { setScrollLeft(cm, scrollPos.scrollLeft); }\n }\n\n // Calculate a new scroll position needed to scroll the given\n // rectangle into view. Returns an object with scrollTop and\n // scrollLeft properties. When these are undefined, the\n // vertical/horizontal position does not need to be adjusted.\n function calculateScrollPos(cm, rect) {\n var display = cm.display, snapMargin = textHeight(cm.display);\n if (rect.top < 0) { rect.top = 0; }\n var screentop = cm.curOp && cm.curOp.scrollTop != null ? cm.curOp.scrollTop : display.scroller.scrollTop;\n var screen = displayHeight(cm), result = {};\n if (rect.bottom - rect.top > screen) { rect.bottom = rect.top + screen; }\n var docBottom = cm.doc.height + paddingVert(display);\n var atTop = rect.top < snapMargin, atBottom = rect.bottom > docBottom - snapMargin;\n if (rect.top < screentop) {\n result.scrollTop = atTop ? 0 : rect.top;\n } else if (rect.bottom > screentop + screen) {\n var newTop = Math.min(rect.top, (atBottom ? docBottom : rect.bottom) - screen);\n if (newTop != screentop) { result.scrollTop = newTop; }\n }\n\n var gutterSpace = cm.options.fixedGutter ? 0 : display.gutters.offsetWidth;\n var screenleft = cm.curOp && cm.curOp.scrollLeft != null ? cm.curOp.scrollLeft : display.scroller.scrollLeft - gutterSpace;\n var screenw = displayWidth(cm) - display.gutters.offsetWidth;\n var tooWide = rect.right - rect.left > screenw;\n if (tooWide) { rect.right = rect.left + screenw; }\n if (rect.left < 10)\n { result.scrollLeft = 0; }\n else if (rect.left < screenleft)\n { result.scrollLeft = Math.max(0, rect.left + gutterSpace - (tooWide ? 0 : 10)); }\n else if (rect.right > screenw + screenleft - 3)\n { result.scrollLeft = rect.right + (tooWide ? 0 : 10) - screenw; }\n return result\n }\n\n // Store a relative adjustment to the scroll position in the current\n // operation (to be applied when the operation finishes).\n function addToScrollTop(cm, top) {\n if (top == null) { return }\n resolveScrollToPos(cm);\n cm.curOp.scrollTop = (cm.curOp.scrollTop == null ? cm.doc.scrollTop : cm.curOp.scrollTop) + top;\n }\n\n // Make sure that at the end of the operation the current cursor is\n // shown.\n function ensureCursorVisible(cm) {\n resolveScrollToPos(cm);\n var cur = cm.getCursor();\n cm.curOp.scrollToPos = {from: cur, to: cur, margin: cm.options.cursorScrollMargin};\n }\n\n function scrollToCoords(cm, x, y) {\n if (x != null || y != null) { resolveScrollToPos(cm); }\n if (x != null) { cm.curOp.scrollLeft = x; }\n if (y != null) { cm.curOp.scrollTop = y; }\n }\n\n function scrollToRange(cm, range) {\n resolveScrollToPos(cm);\n cm.curOp.scrollToPos = range;\n }\n\n // When an operation has its scrollToPos property set, and another\n // scroll action is applied before the end of the operation, this\n // 'simulates' scrolling that position into view in a cheap way, so\n // that the effect of intermediate scroll commands is not ignored.\n function resolveScrollToPos(cm) {\n var range = cm.curOp.scrollToPos;\n if (range) {\n cm.curOp.scrollToPos = null;\n var from = estimateCoords(cm, range.from), to = estimateCoords(cm, range.to);\n scrollToCoordsRange(cm, from, to, range.margin);\n }\n }\n\n function scrollToCoordsRange(cm, from, to, margin) {\n var sPos = calculateScrollPos(cm, {\n left: Math.min(from.left, to.left),\n top: Math.min(from.top, to.top) - margin,\n right: Math.max(from.right, to.right),\n bottom: Math.max(from.bottom, to.bottom) + margin\n });\n scrollToCoords(cm, sPos.scrollLeft, sPos.scrollTop);\n }\n\n // Sync the scrollable area and scrollbars, ensure the viewport\n // covers the visible area.\n function updateScrollTop(cm, val) {\n if (Math.abs(cm.doc.scrollTop - val) < 2) { return }\n if (!gecko) { updateDisplaySimple(cm, {top: val}); }\n setScrollTop(cm, val, true);\n if (gecko) { updateDisplaySimple(cm); }\n startWorker(cm, 100);\n }\n\n function setScrollTop(cm, val, forceScroll) {\n val = Math.max(0, Math.min(cm.display.scroller.scrollHeight - cm.display.scroller.clientHeight, val));\n if (cm.display.scroller.scrollTop == val && !forceScroll) { return }\n cm.doc.scrollTop = val;\n cm.display.scrollbars.setScrollTop(val);\n if (cm.display.scroller.scrollTop != val) { cm.display.scroller.scrollTop = val; }\n }\n\n // Sync scroller and scrollbar, ensure the gutter elements are\n // aligned.\n function setScrollLeft(cm, val, isScroller, forceScroll) {\n val = Math.max(0, Math.min(val, cm.display.scroller.scrollWidth - cm.display.scroller.clientWidth));\n if ((isScroller ? val == cm.doc.scrollLeft : Math.abs(cm.doc.scrollLeft - val) < 2) && !forceScroll) { return }\n cm.doc.scrollLeft = val;\n alignHorizontally(cm);\n if (cm.display.scroller.scrollLeft != val) { cm.display.scroller.scrollLeft = val; }\n cm.display.scrollbars.setScrollLeft(val);\n }\n\n // SCROLLBARS\n\n // Prepare DOM reads needed to update the scrollbars. Done in one\n // shot to minimize update/measure roundtrips.\n function measureForScrollbars(cm) {\n var d = cm.display, gutterW = d.gutters.offsetWidth;\n var docH = Math.round(cm.doc.height + paddingVert(cm.display));\n return {\n clientHeight: d.scroller.clientHeight,\n viewHeight: d.wrapper.clientHeight,\n scrollWidth: d.scroller.scrollWidth, clientWidth: d.scroller.clientWidth,\n viewWidth: d.wrapper.clientWidth,\n barLeft: cm.options.fixedGutter ? gutterW : 0,\n docHeight: docH,\n scrollHeight: docH + scrollGap(cm) + d.barHeight,\n nativeBarWidth: d.nativeBarWidth,\n gutterWidth: gutterW\n }\n }\n\n var NativeScrollbars = function(place, scroll, cm) {\n this.cm = cm;\n var vert = this.vert = elt(\"div\", [elt(\"div\", null, null, \"min-width: 1px\")], \"CodeMirror-vscrollbar\");\n var horiz = this.horiz = elt(\"div\", [elt(\"div\", null, null, \"height: 100%; min-height: 1px\")], \"CodeMirror-hscrollbar\");\n vert.tabIndex = horiz.tabIndex = -1;\n place(vert); place(horiz);\n\n on(vert, \"scroll\", function () {\n if (vert.clientHeight) { scroll(vert.scrollTop, \"vertical\"); }\n });\n on(horiz, \"scroll\", function () {\n if (horiz.clientWidth) { scroll(horiz.scrollLeft, \"horizontal\"); }\n });\n\n this.checkedZeroWidth = false;\n // Need to set a minimum width to see the scrollbar on IE7 (but must not set it on IE8).\n if (ie && ie_version < 8) { this.horiz.style.minHeight = this.vert.style.minWidth = \"18px\"; }\n };\n\n NativeScrollbars.prototype.update = function (measure) {\n var needsH = measure.scrollWidth > measure.clientWidth + 1;\n var needsV = measure.scrollHeight > measure.clientHeight + 1;\n var sWidth = measure.nativeBarWidth;\n\n if (needsV) {\n this.vert.style.display = \"block\";\n this.vert.style.bottom = needsH ? sWidth + \"px\" : \"0\";\n var totalHeight = measure.viewHeight - (needsH ? sWidth : 0);\n // A bug in IE8 can cause this value to be negative, so guard it.\n this.vert.firstChild.style.height =\n Math.max(0, measure.scrollHeight - measure.clientHeight + totalHeight) + \"px\";\n } else {\n this.vert.scrollTop = 0;\n this.vert.style.display = \"\";\n this.vert.firstChild.style.height = \"0\";\n }\n\n if (needsH) {\n this.horiz.style.display = \"block\";\n this.horiz.style.right = needsV ? sWidth + \"px\" : \"0\";\n this.horiz.style.left = measure.barLeft + \"px\";\n var totalWidth = measure.viewWidth - measure.barLeft - (needsV ? sWidth : 0);\n this.horiz.firstChild.style.width =\n Math.max(0, measure.scrollWidth - measure.clientWidth + totalWidth) + \"px\";\n } else {\n this.horiz.style.display = \"\";\n this.horiz.firstChild.style.width = \"0\";\n }\n\n if (!this.checkedZeroWidth && measure.clientHeight > 0) {\n if (sWidth == 0) { this.zeroWidthHack(); }\n this.checkedZeroWidth = true;\n }\n\n return {right: needsV ? sWidth : 0, bottom: needsH ? sWidth : 0}\n };\n\n NativeScrollbars.prototype.setScrollLeft = function (pos) {\n if (this.horiz.scrollLeft != pos) { this.horiz.scrollLeft = pos; }\n if (this.disableHoriz) { this.enableZeroWidthBar(this.horiz, this.disableHoriz, \"horiz\"); }\n };\n\n NativeScrollbars.prototype.setScrollTop = function (pos) {\n if (this.vert.scrollTop != pos) { this.vert.scrollTop = pos; }\n if (this.disableVert) { this.enableZeroWidthBar(this.vert, this.disableVert, \"vert\"); }\n };\n\n NativeScrollbars.prototype.zeroWidthHack = function () {\n var w = mac && !mac_geMountainLion ? \"12px\" : \"18px\";\n this.horiz.style.height = this.vert.style.width = w;\n this.horiz.style.pointerEvents = this.vert.style.pointerEvents = \"none\";\n this.disableHoriz = new Delayed;\n this.disableVert = new Delayed;\n };\n\n NativeScrollbars.prototype.enableZeroWidthBar = function (bar, delay, type) {\n bar.style.pointerEvents = \"auto\";\n function maybeDisable() {\n // To find out whether the scrollbar is still visible, we\n // check whether the element under the pixel in the bottom\n // right corner of the scrollbar box is the scrollbar box\n // itself (when the bar is still visible) or its filler child\n // (when the bar is hidden). If it is still visible, we keep\n // it enabled, if it's hidden, we disable pointer events.\n var box = bar.getBoundingClientRect();\n var elt = type == \"vert\" ? document.elementFromPoint(box.right - 1, (box.top + box.bottom) / 2)\n : document.elementFromPoint((box.right + box.left) / 2, box.bottom - 1);\n if (elt != bar) { bar.style.pointerEvents = \"none\"; }\n else { delay.set(1000, maybeDisable); }\n }\n delay.set(1000, maybeDisable);\n };\n\n NativeScrollbars.prototype.clear = function () {\n var parent = this.horiz.parentNode;\n parent.removeChild(this.horiz);\n parent.removeChild(this.vert);\n };\n\n var NullScrollbars = function () {};\n\n NullScrollbars.prototype.update = function () { return {bottom: 0, right: 0} };\n NullScrollbars.prototype.setScrollLeft = function () {};\n NullScrollbars.prototype.setScrollTop = function () {};\n NullScrollbars.prototype.clear = function () {};\n\n function updateScrollbars(cm, measure) {\n if (!measure) { measure = measureForScrollbars(cm); }\n var startWidth = cm.display.barWidth, startHeight = cm.display.barHeight;\n updateScrollbarsInner(cm, measure);\n for (var i = 0; i < 4 && startWidth != cm.display.barWidth || startHeight != cm.display.barHeight; i++) {\n if (startWidth != cm.display.barWidth && cm.options.lineWrapping)\n { updateHeightsInViewport(cm); }\n updateScrollbarsInner(cm, measureForScrollbars(cm));\n startWidth = cm.display.barWidth; startHeight = cm.display.barHeight;\n }\n }\n\n // Re-synchronize the fake scrollbars with the actual size of the\n // content.\n function updateScrollbarsInner(cm, measure) {\n var d = cm.display;\n var sizes = d.scrollbars.update(measure);\n\n d.sizer.style.paddingRight = (d.barWidth = sizes.right) + \"px\";\n d.sizer.style.paddingBottom = (d.barHeight = sizes.bottom) + \"px\";\n d.heightForcer.style.borderBottom = sizes.bottom + \"px solid transparent\";\n\n if (sizes.right && sizes.bottom) {\n d.scrollbarFiller.style.display = \"block\";\n d.scrollbarFiller.style.height = sizes.bottom + \"px\";\n d.scrollbarFiller.style.width = sizes.right + \"px\";\n } else { d.scrollbarFiller.style.display = \"\"; }\n if (sizes.bottom && cm.options.coverGutterNextToScrollbar && cm.options.fixedGutter) {\n d.gutterFiller.style.display = \"block\";\n d.gutterFiller.style.height = sizes.bottom + \"px\";\n d.gutterFiller.style.width = measure.gutterWidth + \"px\";\n } else { d.gutterFiller.style.display = \"\"; }\n }\n\n var scrollbarModel = {\"native\": NativeScrollbars, \"null\": NullScrollbars};\n\n function initScrollbars(cm) {\n if (cm.display.scrollbars) {\n cm.display.scrollbars.clear();\n if (cm.display.scrollbars.addClass)\n { rmClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n cm.display.scrollbars = new scrollbarModel[cm.options.scrollbarStyle](function (node) {\n cm.display.wrapper.insertBefore(node, cm.display.scrollbarFiller);\n // Prevent clicks in the scrollbars from killing focus\n on(node, \"mousedown\", function () {\n if (cm.state.focused) { setTimeout(function () { return cm.display.input.focus(); }, 0); }\n });\n node.setAttribute(\"cm-not-content\", \"true\");\n }, function (pos, axis) {\n if (axis == \"horizontal\") { setScrollLeft(cm, pos); }\n else { updateScrollTop(cm, pos); }\n }, cm);\n if (cm.display.scrollbars.addClass)\n { addClass(cm.display.wrapper, cm.display.scrollbars.addClass); }\n }\n\n // Operations are used to wrap a series of changes to the editor\n // state in such a way that each change won't have to update the\n // cursor and display (which would be awkward, slow, and\n // error-prone). Instead, display updates are batched and then all\n // combined and executed at once.\n\n var nextOpId = 0;\n // Start a new operation.\n function startOperation(cm) {\n cm.curOp = {\n cm: cm,\n viewChanged: false, // Flag that indicates that lines might need to be redrawn\n startHeight: cm.doc.height, // Used to detect need to update scrollbar\n forceUpdate: false, // Used to force a redraw\n updateInput: 0, // Whether to reset the input textarea\n typing: false, // Whether this reset should be careful to leave existing text (for compositing)\n changeObjs: null, // Accumulated changes, for firing change events\n cursorActivityHandlers: null, // Set of handlers to fire cursorActivity on\n cursorActivityCalled: 0, // Tracks which cursorActivity handlers have been called already\n selectionChanged: false, // Whether the selection needs to be redrawn\n updateMaxLine: false, // Set when the widest line needs to be determined anew\n scrollLeft: null, scrollTop: null, // Intermediate scroll position, not pushed to DOM yet\n scrollToPos: null, // Used to scroll to a specific position\n focus: false,\n id: ++nextOpId, // Unique ID\n markArrays: null // Used by addMarkedSpan\n };\n pushOperation(cm.curOp);\n }\n\n // Finish an operation, updating the display and signalling delayed events\n function endOperation(cm) {\n var op = cm.curOp;\n if (op) { finishOperation(op, function (group) {\n for (var i = 0; i < group.ops.length; i++)\n { group.ops[i].cm.curOp = null; }\n endOperations(group);\n }); }\n }\n\n // The DOM updates done when an operation finishes are batched so\n // that the minimum number of relayouts are required.\n function endOperations(group) {\n var ops = group.ops;\n for (var i = 0; i < ops.length; i++) // Read DOM\n { endOperation_R1(ops[i]); }\n for (var i$1 = 0; i$1 < ops.length; i$1++) // Write DOM (maybe)\n { endOperation_W1(ops[i$1]); }\n for (var i$2 = 0; i$2 < ops.length; i$2++) // Read DOM\n { endOperation_R2(ops[i$2]); }\n for (var i$3 = 0; i$3 < ops.length; i$3++) // Write DOM (maybe)\n { endOperation_W2(ops[i$3]); }\n for (var i$4 = 0; i$4 < ops.length; i$4++) // Read DOM\n { endOperation_finish(ops[i$4]); }\n }\n\n function endOperation_R1(op) {\n var cm = op.cm, display = cm.display;\n maybeClipScrollbars(cm);\n if (op.updateMaxLine) { findMaxLine(cm); }\n\n op.mustUpdate = op.viewChanged || op.forceUpdate || op.scrollTop != null ||\n op.scrollToPos && (op.scrollToPos.from.line < display.viewFrom ||\n op.scrollToPos.to.line >= display.viewTo) ||\n display.maxLineChanged && cm.options.lineWrapping;\n op.update = op.mustUpdate &&\n new DisplayUpdate(cm, op.mustUpdate && {top: op.scrollTop, ensure: op.scrollToPos}, op.forceUpdate);\n }\n\n function endOperation_W1(op) {\n op.updatedDisplay = op.mustUpdate && updateDisplayIfNeeded(op.cm, op.update);\n }\n\n function endOperation_R2(op) {\n var cm = op.cm, display = cm.display;\n if (op.updatedDisplay) { updateHeightsInViewport(cm); }\n\n op.barMeasure = measureForScrollbars(cm);\n\n // If the max line changed since it was last measured, measure it,\n // and ensure the document's width matches it.\n // updateDisplay_W2 will use these properties to do the actual resizing\n if (display.maxLineChanged && !cm.options.lineWrapping) {\n op.adjustWidthTo = measureChar(cm, display.maxLine, display.maxLine.text.length).left + 3;\n cm.display.sizerWidth = op.adjustWidthTo;\n op.barMeasure.scrollWidth =\n Math.max(display.scroller.clientWidth, display.sizer.offsetLeft + op.adjustWidthTo + scrollGap(cm) + cm.display.barWidth);\n op.maxScrollLeft = Math.max(0, display.sizer.offsetLeft + op.adjustWidthTo - displayWidth(cm));\n }\n\n if (op.updatedDisplay || op.selectionChanged)\n { op.preparedSelection = display.input.prepareSelection(); }\n }\n\n function endOperation_W2(op) {\n var cm = op.cm;\n\n if (op.adjustWidthTo != null) {\n cm.display.sizer.style.minWidth = op.adjustWidthTo + \"px\";\n if (op.maxScrollLeft < cm.doc.scrollLeft)\n { setScrollLeft(cm, Math.min(cm.display.scroller.scrollLeft, op.maxScrollLeft), true); }\n cm.display.maxLineChanged = false;\n }\n\n var takeFocus = op.focus && op.focus == activeElt();\n if (op.preparedSelection)\n { cm.display.input.showSelection(op.preparedSelection, takeFocus); }\n if (op.updatedDisplay || op.startHeight != cm.doc.height)\n { updateScrollbars(cm, op.barMeasure); }\n if (op.updatedDisplay)\n { setDocumentHeight(cm, op.barMeasure); }\n\n if (op.selectionChanged) { restartBlink(cm); }\n\n if (cm.state.focused && op.updateInput)\n { cm.display.input.reset(op.typing); }\n if (takeFocus) { ensureFocus(op.cm); }\n }\n\n function endOperation_finish(op) {\n var cm = op.cm, display = cm.display, doc = cm.doc;\n\n if (op.updatedDisplay) { postUpdateDisplay(cm, op.update); }\n\n // Abort mouse wheel delta measurement, when scrolling explicitly\n if (display.wheelStartX != null && (op.scrollTop != null || op.scrollLeft != null || op.scrollToPos))\n { display.wheelStartX = display.wheelStartY = null; }\n\n // Propagate the scroll position to the actual DOM scroller\n if (op.scrollTop != null) { setScrollTop(cm, op.scrollTop, op.forceScroll); }\n\n if (op.scrollLeft != null) { setScrollLeft(cm, op.scrollLeft, true, true); }\n // If we need to scroll a specific position into view, do so.\n if (op.scrollToPos) {\n var rect = scrollPosIntoView(cm, clipPos(doc, op.scrollToPos.from),\n clipPos(doc, op.scrollToPos.to), op.scrollToPos.margin);\n maybeScrollWindow(cm, rect);\n }\n\n // Fire events for markers that are hidden/unidden by editing or\n // undoing\n var hidden = op.maybeHiddenMarkers, unhidden = op.maybeUnhiddenMarkers;\n if (hidden) { for (var i = 0; i < hidden.length; ++i)\n { if (!hidden[i].lines.length) { signal(hidden[i], \"hide\"); } } }\n if (unhidden) { for (var i$1 = 0; i$1 < unhidden.length; ++i$1)\n { if (unhidden[i$1].lines.length) { signal(unhidden[i$1], \"unhide\"); } } }\n\n if (display.wrapper.offsetHeight)\n { doc.scrollTop = cm.display.scroller.scrollTop; }\n\n // Fire change events, and delayed event handlers\n if (op.changeObjs)\n { signal(cm, \"changes\", cm, op.changeObjs); }\n if (op.update)\n { op.update.finish(); }\n }\n\n // Run the given function in an operation\n function runInOp(cm, f) {\n if (cm.curOp) { return f() }\n startOperation(cm);\n try { return f() }\n finally { endOperation(cm); }\n }\n // Wraps a function in an operation. Returns the wrapped function.\n function operation(cm, f) {\n return function() {\n if (cm.curOp) { return f.apply(cm, arguments) }\n startOperation(cm);\n try { return f.apply(cm, arguments) }\n finally { endOperation(cm); }\n }\n }\n // Used to add methods to editor and doc instances, wrapping them in\n // operations.\n function methodOp(f) {\n return function() {\n if (this.curOp) { return f.apply(this, arguments) }\n startOperation(this);\n try { return f.apply(this, arguments) }\n finally { endOperation(this); }\n }\n }\n function docMethodOp(f) {\n return function() {\n var cm = this.cm;\n if (!cm || cm.curOp) { return f.apply(this, arguments) }\n startOperation(cm);\n try { return f.apply(this, arguments) }\n finally { endOperation(cm); }\n }\n }\n\n // HIGHLIGHT WORKER\n\n function startWorker(cm, time) {\n if (cm.doc.highlightFrontier < cm.display.viewTo)\n { cm.state.highlight.set(time, bind(highlightWorker, cm)); }\n }\n\n function highlightWorker(cm) {\n var doc = cm.doc;\n if (doc.highlightFrontier >= cm.display.viewTo) { return }\n var end = +new Date + cm.options.workTime;\n var context = getContextBefore(cm, doc.highlightFrontier);\n var changedLines = [];\n\n doc.iter(context.line, Math.min(doc.first + doc.size, cm.display.viewTo + 500), function (line) {\n if (context.line >= cm.display.viewFrom) { // Visible\n var oldStyles = line.styles;\n var resetState = line.text.length > cm.options.maxHighlightLength ? copyState(doc.mode, context.state) : null;\n var highlighted = highlightLine(cm, line, context, true);\n if (resetState) { context.state = resetState; }\n line.styles = highlighted.styles;\n var oldCls = line.styleClasses, newCls = highlighted.classes;\n if (newCls) { line.styleClasses = newCls; }\n else if (oldCls) { line.styleClasses = null; }\n var ischange = !oldStyles || oldStyles.length != line.styles.length ||\n oldCls != newCls && (!oldCls || !newCls || oldCls.bgClass != newCls.bgClass || oldCls.textClass != newCls.textClass);\n for (var i = 0; !ischange && i < oldStyles.length; ++i) { ischange = oldStyles[i] != line.styles[i]; }\n if (ischange) { changedLines.push(context.line); }\n line.stateAfter = context.save();\n context.nextLine();\n } else {\n if (line.text.length <= cm.options.maxHighlightLength)\n { processLine(cm, line.text, context); }\n line.stateAfter = context.line % 5 == 0 ? context.save() : null;\n context.nextLine();\n }\n if (+new Date > end) {\n startWorker(cm, cm.options.workDelay);\n return true\n }\n });\n doc.highlightFrontier = context.line;\n doc.modeFrontier = Math.max(doc.modeFrontier, context.line);\n if (changedLines.length) { runInOp(cm, function () {\n for (var i = 0; i < changedLines.length; i++)\n { regLineChange(cm, changedLines[i], \"text\"); }\n }); }\n }\n\n // DISPLAY DRAWING\n\n var DisplayUpdate = function(cm, viewport, force) {\n var display = cm.display;\n\n this.viewport = viewport;\n // Store some values that we'll need later (but don't want to force a relayout for)\n this.visible = visibleLines(display, cm.doc, viewport);\n this.editorIsHidden = !display.wrapper.offsetWidth;\n this.wrapperHeight = display.wrapper.clientHeight;\n this.wrapperWidth = display.wrapper.clientWidth;\n this.oldDisplayWidth = displayWidth(cm);\n this.force = force;\n this.dims = getDimensions(cm);\n this.events = [];\n };\n\n DisplayUpdate.prototype.signal = function (emitter, type) {\n if (hasHandler(emitter, type))\n { this.events.push(arguments); }\n };\n DisplayUpdate.prototype.finish = function () {\n for (var i = 0; i < this.events.length; i++)\n { signal.apply(null, this.events[i]); }\n };\n\n function maybeClipScrollbars(cm) {\n var display = cm.display;\n if (!display.scrollbarsClipped && display.scroller.offsetWidth) {\n display.nativeBarWidth = display.scroller.offsetWidth - display.scroller.clientWidth;\n display.heightForcer.style.height = scrollGap(cm) + \"px\";\n display.sizer.style.marginBottom = -display.nativeBarWidth + \"px\";\n display.sizer.style.borderRightWidth = scrollGap(cm) + \"px\";\n display.scrollbarsClipped = true;\n }\n }\n\n function selectionSnapshot(cm) {\n if (cm.hasFocus()) { return null }\n var active = activeElt();\n if (!active || !contains(cm.display.lineDiv, active)) { return null }\n var result = {activeElt: active};\n if (window.getSelection) {\n var sel = window.getSelection();\n if (sel.anchorNode && sel.extend && contains(cm.display.lineDiv, sel.anchorNode)) {\n result.anchorNode = sel.anchorNode;\n result.anchorOffset = sel.anchorOffset;\n result.focusNode = sel.focusNode;\n result.focusOffset = sel.focusOffset;\n }\n }\n return result\n }\n\n function restoreSelection(snapshot) {\n if (!snapshot || !snapshot.activeElt || snapshot.activeElt == activeElt()) { return }\n snapshot.activeElt.focus();\n if (!/^(INPUT|TEXTAREA)$/.test(snapshot.activeElt.nodeName) &&\n snapshot.anchorNode && contains(document.body, snapshot.anchorNode) && contains(document.body, snapshot.focusNode)) {\n var sel = window.getSelection(), range = document.createRange();\n range.setEnd(snapshot.anchorNode, snapshot.anchorOffset);\n range.collapse(false);\n sel.removeAllRanges();\n sel.addRange(range);\n sel.extend(snapshot.focusNode, snapshot.focusOffset);\n }\n }\n\n // Does the actual updating of the line display. Bails out\n // (returning false) when there is nothing to be done and forced is\n // false.\n function updateDisplayIfNeeded(cm, update) {\n var display = cm.display, doc = cm.doc;\n\n if (update.editorIsHidden) {\n resetView(cm);\n return false\n }\n\n // Bail out if the visible area is already rendered and nothing changed.\n if (!update.force &&\n update.visible.from >= display.viewFrom && update.visible.to <= display.viewTo &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo) &&\n display.renderedView == display.view && countDirtyView(cm) == 0)\n { return false }\n\n if (maybeUpdateLineNumberWidth(cm)) {\n resetView(cm);\n update.dims = getDimensions(cm);\n }\n\n // Compute a suitable new viewport (from & to)\n var end = doc.first + doc.size;\n var from = Math.max(update.visible.from - cm.options.viewportMargin, doc.first);\n var to = Math.min(end, update.visible.to + cm.options.viewportMargin);\n if (display.viewFrom < from && from - display.viewFrom < 20) { from = Math.max(doc.first, display.viewFrom); }\n if (display.viewTo > to && display.viewTo - to < 20) { to = Math.min(end, display.viewTo); }\n if (sawCollapsedSpans) {\n from = visualLineNo(cm.doc, from);\n to = visualLineEndNo(cm.doc, to);\n }\n\n var different = from != display.viewFrom || to != display.viewTo ||\n display.lastWrapHeight != update.wrapperHeight || display.lastWrapWidth != update.wrapperWidth;\n adjustView(cm, from, to);\n\n display.viewOffset = heightAtLine(getLine(cm.doc, display.viewFrom));\n // Position the mover div to align with the current scroll position\n cm.display.mover.style.top = display.viewOffset + \"px\";\n\n var toUpdate = countDirtyView(cm);\n if (!different && toUpdate == 0 && !update.force && display.renderedView == display.view &&\n (display.updateLineNumbers == null || display.updateLineNumbers >= display.viewTo))\n { return false }\n\n // For big changes, we hide the enclosing element during the\n // update, since that speeds up the operations on most browsers.\n var selSnapshot = selectionSnapshot(cm);\n if (toUpdate > 4) { display.lineDiv.style.display = \"none\"; }\n patchDisplay(cm, display.updateLineNumbers, update.dims);\n if (toUpdate > 4) { display.lineDiv.style.display = \"\"; }\n display.renderedView = display.view;\n // There might have been a widget with a focused element that got\n // hidden or updated, if so re-focus it.\n restoreSelection(selSnapshot);\n\n // Prevent selection and cursors from interfering with the scroll\n // width and height.\n removeChildren(display.cursorDiv);\n removeChildren(display.selectionDiv);\n display.gutters.style.height = display.sizer.style.minHeight = 0;\n\n if (different) {\n display.lastWrapHeight = update.wrapperHeight;\n display.lastWrapWidth = update.wrapperWidth;\n startWorker(cm, 400);\n }\n\n display.updateLineNumbers = null;\n\n return true\n }\n\n function postUpdateDisplay(cm, update) {\n var viewport = update.viewport;\n\n for (var first = true;; first = false) {\n if (!first || !cm.options.lineWrapping || update.oldDisplayWidth == displayWidth(cm)) {\n // Clip forced viewport to actual scrollable area.\n if (viewport && viewport.top != null)\n { viewport = {top: Math.min(cm.doc.height + paddingVert(cm.display) - displayHeight(cm), viewport.top)}; }\n // Updated line heights might result in the drawn area not\n // actually covering the viewport. Keep looping until it does.\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n if (update.visible.from >= cm.display.viewFrom && update.visible.to <= cm.display.viewTo)\n { break }\n } else if (first) {\n update.visible = visibleLines(cm.display, cm.doc, viewport);\n }\n if (!updateDisplayIfNeeded(cm, update)) { break }\n updateHeightsInViewport(cm);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.force = false;\n }\n\n update.signal(cm, \"update\", cm);\n if (cm.display.viewFrom != cm.display.reportedViewFrom || cm.display.viewTo != cm.display.reportedViewTo) {\n update.signal(cm, \"viewportChange\", cm, cm.display.viewFrom, cm.display.viewTo);\n cm.display.reportedViewFrom = cm.display.viewFrom; cm.display.reportedViewTo = cm.display.viewTo;\n }\n }\n\n function updateDisplaySimple(cm, viewport) {\n var update = new DisplayUpdate(cm, viewport);\n if (updateDisplayIfNeeded(cm, update)) {\n updateHeightsInViewport(cm);\n postUpdateDisplay(cm, update);\n var barMeasure = measureForScrollbars(cm);\n updateSelection(cm);\n updateScrollbars(cm, barMeasure);\n setDocumentHeight(cm, barMeasure);\n update.finish();\n }\n }\n\n // Sync the actual display DOM structure with display.view, removing\n // nodes for lines that are no longer in view, and creating the ones\n // that are not there yet, and updating the ones that are out of\n // date.\n function patchDisplay(cm, updateNumbersFrom, dims) {\n var display = cm.display, lineNumbers = cm.options.lineNumbers;\n var container = display.lineDiv, cur = container.firstChild;\n\n function rm(node) {\n var next = node.nextSibling;\n // Works around a throw-scroll bug in OS X Webkit\n if (webkit && mac && cm.display.currentWheelTarget == node)\n { node.style.display = \"none\"; }\n else\n { node.parentNode.removeChild(node); }\n return next\n }\n\n var view = display.view, lineN = display.viewFrom;\n // Loop over the elements in the view, syncing cur (the DOM nodes\n // in display.lineDiv) with the view as we go.\n for (var i = 0; i < view.length; i++) {\n var lineView = view[i];\n if (lineView.hidden) ; else if (!lineView.node || lineView.node.parentNode != container) { // Not drawn yet\n var node = buildLineElement(cm, lineView, lineN, dims);\n container.insertBefore(node, cur);\n } else { // Already drawn\n while (cur != lineView.node) { cur = rm(cur); }\n var updateNumber = lineNumbers && updateNumbersFrom != null &&\n updateNumbersFrom <= lineN && lineView.lineNumber;\n if (lineView.changes) {\n if (indexOf(lineView.changes, \"gutter\") > -1) { updateNumber = false; }\n updateLineForChanges(cm, lineView, lineN, dims);\n }\n if (updateNumber) {\n removeChildren(lineView.lineNumber);\n lineView.lineNumber.appendChild(document.createTextNode(lineNumberFor(cm.options, lineN)));\n }\n cur = lineView.node.nextSibling;\n }\n lineN += lineView.size;\n }\n while (cur) { cur = rm(cur); }\n }\n\n function updateGutterSpace(display) {\n var width = display.gutters.offsetWidth;\n display.sizer.style.marginLeft = width + \"px\";\n // Send an event to consumers responding to changes in gutter width.\n signalLater(display, \"gutterChanged\", display);\n }\n\n function setDocumentHeight(cm, measure) {\n cm.display.sizer.style.minHeight = measure.docHeight + \"px\";\n cm.display.heightForcer.style.top = measure.docHeight + \"px\";\n cm.display.gutters.style.height = (measure.docHeight + cm.display.barHeight + scrollGap(cm)) + \"px\";\n }\n\n // Re-align line numbers and gutter marks to compensate for\n // horizontal scrolling.\n function alignHorizontally(cm) {\n var display = cm.display, view = display.view;\n if (!display.alignWidgets && (!display.gutters.firstChild || !cm.options.fixedGutter)) { return }\n var comp = compensateForHScroll(display) - display.scroller.scrollLeft + cm.doc.scrollLeft;\n var gutterW = display.gutters.offsetWidth, left = comp + \"px\";\n for (var i = 0; i < view.length; i++) { if (!view[i].hidden) {\n if (cm.options.fixedGutter) {\n if (view[i].gutter)\n { view[i].gutter.style.left = left; }\n if (view[i].gutterBackground)\n { view[i].gutterBackground.style.left = left; }\n }\n var align = view[i].alignable;\n if (align) { for (var j = 0; j < align.length; j++)\n { align[j].style.left = left; } }\n } }\n if (cm.options.fixedGutter)\n { display.gutters.style.left = (comp + gutterW) + \"px\"; }\n }\n\n // Used to ensure that the line number gutter is still the right\n // size for the current document size. Returns true when an update\n // is needed.\n function maybeUpdateLineNumberWidth(cm) {\n if (!cm.options.lineNumbers) { return false }\n var doc = cm.doc, last = lineNumberFor(cm.options, doc.first + doc.size - 1), display = cm.display;\n if (last.length != display.lineNumChars) {\n var test = display.measure.appendChild(elt(\"div\", [elt(\"div\", last)],\n \"CodeMirror-linenumber CodeMirror-gutter-elt\"));\n var innerW = test.firstChild.offsetWidth, padding = test.offsetWidth - innerW;\n display.lineGutter.style.width = \"\";\n display.lineNumInnerWidth = Math.max(innerW, display.lineGutter.offsetWidth - padding) + 1;\n display.lineNumWidth = display.lineNumInnerWidth + padding;\n display.lineNumChars = display.lineNumInnerWidth ? last.length : -1;\n display.lineGutter.style.width = display.lineNumWidth + \"px\";\n updateGutterSpace(cm.display);\n return true\n }\n return false\n }\n\n function getGutters(gutters, lineNumbers) {\n var result = [], sawLineNumbers = false;\n for (var i = 0; i < gutters.length; i++) {\n var name = gutters[i], style = null;\n if (typeof name != \"string\") { style = name.style; name = name.className; }\n if (name == \"CodeMirror-linenumbers\") {\n if (!lineNumbers) { continue }\n else { sawLineNumbers = true; }\n }\n result.push({className: name, style: style});\n }\n if (lineNumbers && !sawLineNumbers) { result.push({className: \"CodeMirror-linenumbers\", style: null}); }\n return result\n }\n\n // Rebuild the gutter elements, ensure the margin to the left of the\n // code matches their width.\n function renderGutters(display) {\n var gutters = display.gutters, specs = display.gutterSpecs;\n removeChildren(gutters);\n display.lineGutter = null;\n for (var i = 0; i < specs.length; ++i) {\n var ref = specs[i];\n var className = ref.className;\n var style = ref.style;\n var gElt = gutters.appendChild(elt(\"div\", null, \"CodeMirror-gutter \" + className));\n if (style) { gElt.style.cssText = style; }\n if (className == \"CodeMirror-linenumbers\") {\n display.lineGutter = gElt;\n gElt.style.width = (display.lineNumWidth || 1) + \"px\";\n }\n }\n gutters.style.display = specs.length ? \"\" : \"none\";\n updateGutterSpace(display);\n }\n\n function updateGutters(cm) {\n renderGutters(cm.display);\n regChange(cm);\n alignHorizontally(cm);\n }\n\n // The display handles the DOM integration, both for input reading\n // and content drawing. It holds references to DOM nodes and\n // display-related state.\n\n function Display(place, doc, input, options) {\n var d = this;\n this.input = input;\n\n // Covers bottom-right square when both scrollbars are present.\n d.scrollbarFiller = elt(\"div\", null, \"CodeMirror-scrollbar-filler\");\n d.scrollbarFiller.setAttribute(\"cm-not-content\", \"true\");\n // Covers bottom of gutter when coverGutterNextToScrollbar is on\n // and h scrollbar is present.\n d.gutterFiller = elt(\"div\", null, \"CodeMirror-gutter-filler\");\n d.gutterFiller.setAttribute(\"cm-not-content\", \"true\");\n // Will contain the actual code, positioned to cover the viewport.\n d.lineDiv = eltP(\"div\", null, \"CodeMirror-code\");\n // Elements are added to these to represent selection and cursors.\n d.selectionDiv = elt(\"div\", null, null, \"position: relative; z-index: 1\");\n d.cursorDiv = elt(\"div\", null, \"CodeMirror-cursors\");\n // A visibility: hidden element used to find the size of things.\n d.measure = elt(\"div\", null, \"CodeMirror-measure\");\n // When lines outside of the viewport are measured, they are drawn in this.\n d.lineMeasure = elt(\"div\", null, \"CodeMirror-measure\");\n // Wraps everything that needs to exist inside the vertically-padded coordinate system\n d.lineSpace = eltP(\"div\", [d.measure, d.lineMeasure, d.selectionDiv, d.cursorDiv, d.lineDiv],\n null, \"position: relative; outline: none\");\n var lines = eltP(\"div\", [d.lineSpace], \"CodeMirror-lines\");\n // Moved around its parent to cover visible view.\n d.mover = elt(\"div\", [lines], null, \"position: relative\");\n // Set to the height of the document, allowing scrolling.\n d.sizer = elt(\"div\", [d.mover], \"CodeMirror-sizer\");\n d.sizerWidth = null;\n // Behavior of elts with overflow: auto and padding is\n // inconsistent across browsers. This is used to ensure the\n // scrollable area is big enough.\n d.heightForcer = elt(\"div\", null, null, \"position: absolute; height: \" + scrollerGap + \"px; width: 1px;\");\n // Will contain the gutters, if any.\n d.gutters = elt(\"div\", null, \"CodeMirror-gutters\");\n d.lineGutter = null;\n // Actual scrollable element.\n d.scroller = elt(\"div\", [d.sizer, d.heightForcer, d.gutters], \"CodeMirror-scroll\");\n d.scroller.setAttribute(\"tabIndex\", \"-1\");\n // The element in which the editor lives.\n d.wrapper = elt(\"div\", [d.scrollbarFiller, d.gutterFiller, d.scroller], \"CodeMirror\");\n\n // This attribute is respected by automatic translation systems such as Google Translate,\n // and may also be respected by tools used by human translators.\n d.wrapper.setAttribute('translate', 'no');\n\n // Work around IE7 z-index bug (not perfect, hence IE7 not really being supported)\n if (ie && ie_version < 8) { d.gutters.style.zIndex = -1; d.scroller.style.paddingRight = 0; }\n if (!webkit && !(gecko && mobile)) { d.scroller.draggable = true; }\n\n if (place) {\n if (place.appendChild) { place.appendChild(d.wrapper); }\n else { place(d.wrapper); }\n }\n\n // Current rendered range (may be bigger than the view window).\n d.viewFrom = d.viewTo = doc.first;\n d.reportedViewFrom = d.reportedViewTo = doc.first;\n // Information about the rendered lines.\n d.view = [];\n d.renderedView = null;\n // Holds info about a single rendered line when it was rendered\n // for measurement, while not in view.\n d.externalMeasured = null;\n // Empty space (in pixels) above the view\n d.viewOffset = 0;\n d.lastWrapHeight = d.lastWrapWidth = 0;\n d.updateLineNumbers = null;\n\n d.nativeBarWidth = d.barHeight = d.barWidth = 0;\n d.scrollbarsClipped = false;\n\n // Used to only resize the line number gutter when necessary (when\n // the amount of lines crosses a boundary that makes its width change)\n d.lineNumWidth = d.lineNumInnerWidth = d.lineNumChars = null;\n // Set to true when a non-horizontal-scrolling line widget is\n // added. As an optimization, line widget aligning is skipped when\n // this is false.\n d.alignWidgets = false;\n\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n\n // Tracks the maximum line length so that the horizontal scrollbar\n // can be kept static when scrolling.\n d.maxLine = null;\n d.maxLineLength = 0;\n d.maxLineChanged = false;\n\n // Used for measuring wheel scrolling granularity\n d.wheelDX = d.wheelDY = d.wheelStartX = d.wheelStartY = null;\n\n // True when shift is held down.\n d.shift = false;\n\n // Used to track whether anything happened since the context menu\n // was opened.\n d.selForContextMenu = null;\n\n d.activeTouch = null;\n\n d.gutterSpecs = getGutters(options.gutters, options.lineNumbers);\n renderGutters(d);\n\n input.init(d);\n }\n\n // Since the delta values reported on mouse wheel events are\n // unstandardized between browsers and even browser versions, and\n // generally horribly unpredictable, this code starts by measuring\n // the scroll effect that the first few mouse wheel events have,\n // and, from that, detects the way it can convert deltas to pixel\n // offsets afterwards.\n //\n // The reason we want to know the amount a wheel event will scroll\n // is that it gives us a chance to update the display before the\n // actual scrolling happens, reducing flickering.\n\n var wheelSamples = 0, wheelPixelsPerUnit = null;\n // Fill in a browser-detected starting value on browsers where we\n // know one. These don't have to be accurate -- the result of them\n // being wrong would just be a slight flicker on the first wheel\n // scroll (if it is large enough).\n if (ie) { wheelPixelsPerUnit = -.53; }\n else if (gecko) { wheelPixelsPerUnit = 15; }\n else if (chrome) { wheelPixelsPerUnit = -.7; }\n else if (safari) { wheelPixelsPerUnit = -1/3; }\n\n function wheelEventDelta(e) {\n var dx = e.wheelDeltaX, dy = e.wheelDeltaY;\n if (dx == null && e.detail && e.axis == e.HORIZONTAL_AXIS) { dx = e.detail; }\n if (dy == null && e.detail && e.axis == e.VERTICAL_AXIS) { dy = e.detail; }\n else if (dy == null) { dy = e.wheelDelta; }\n return {x: dx, y: dy}\n }\n function wheelEventPixels(e) {\n var delta = wheelEventDelta(e);\n delta.x *= wheelPixelsPerUnit;\n delta.y *= wheelPixelsPerUnit;\n return delta\n }\n\n function onScrollWheel(cm, e) {\n var delta = wheelEventDelta(e), dx = delta.x, dy = delta.y;\n var pixelsPerUnit = wheelPixelsPerUnit;\n if (e.deltaMode === 0) {\n dx = e.deltaX;\n dy = e.deltaY;\n pixelsPerUnit = 1;\n }\n\n var display = cm.display, scroll = display.scroller;\n // Quit if there's nothing to scroll here\n var canScrollX = scroll.scrollWidth > scroll.clientWidth;\n var canScrollY = scroll.scrollHeight > scroll.clientHeight;\n if (!(dx && canScrollX || dy && canScrollY)) { return }\n\n // Webkit browsers on OS X abort momentum scrolls when the target\n // of the scroll event is removed from the scrollable element.\n // This hack (see related code in patchDisplay) makes sure the\n // element is kept around.\n if (dy && mac && webkit) {\n outer: for (var cur = e.target, view = display.view; cur != scroll; cur = cur.parentNode) {\n for (var i = 0; i < view.length; i++) {\n if (view[i].node == cur) {\n cm.display.currentWheelTarget = cur;\n break outer\n }\n }\n }\n }\n\n // On some browsers, horizontal scrolling will cause redraws to\n // happen before the gutter has been realigned, causing it to\n // wriggle around in a most unseemly way. When we have an\n // estimated pixels/delta value, we just handle horizontal\n // scrolling entirely here. It'll be slightly off from native, but\n // better than glitching out.\n if (dx && !gecko && !presto && pixelsPerUnit != null) {\n if (dy && canScrollY)\n { updateScrollTop(cm, Math.max(0, scroll.scrollTop + dy * pixelsPerUnit)); }\n setScrollLeft(cm, Math.max(0, scroll.scrollLeft + dx * pixelsPerUnit));\n // Only prevent default scrolling if vertical scrolling is\n // actually possible. Otherwise, it causes vertical scroll\n // jitter on OSX trackpads when deltaX is small and deltaY\n // is large (issue #3579)\n if (!dy || (dy && canScrollY))\n { e_preventDefault(e); }\n display.wheelStartX = null; // Abort measurement, if in progress\n return\n }\n\n // 'Project' the visible viewport to cover the area that is being\n // scrolled into view (if we know enough to estimate it).\n if (dy && pixelsPerUnit != null) {\n var pixels = dy * pixelsPerUnit;\n var top = cm.doc.scrollTop, bot = top + display.wrapper.clientHeight;\n if (pixels < 0) { top = Math.max(0, top + pixels - 50); }\n else { bot = Math.min(cm.doc.height, bot + pixels + 50); }\n updateDisplaySimple(cm, {top: top, bottom: bot});\n }\n\n if (wheelSamples < 20 && e.deltaMode !== 0) {\n if (display.wheelStartX == null) {\n display.wheelStartX = scroll.scrollLeft; display.wheelStartY = scroll.scrollTop;\n display.wheelDX = dx; display.wheelDY = dy;\n setTimeout(function () {\n if (display.wheelStartX == null) { return }\n var movedX = scroll.scrollLeft - display.wheelStartX;\n var movedY = scroll.scrollTop - display.wheelStartY;\n var sample = (movedY && display.wheelDY && movedY / display.wheelDY) ||\n (movedX && display.wheelDX && movedX / display.wheelDX);\n display.wheelStartX = display.wheelStartY = null;\n if (!sample) { return }\n wheelPixelsPerUnit = (wheelPixelsPerUnit * wheelSamples + sample) / (wheelSamples + 1);\n ++wheelSamples;\n }, 200);\n } else {\n display.wheelDX += dx; display.wheelDY += dy;\n }\n }\n }\n\n // Selection objects are immutable. A new one is created every time\n // the selection changes. A selection is one or more non-overlapping\n // (and non-touching) ranges, sorted, and an integer that indicates\n // which one is the primary selection (the one that's scrolled into\n // view, that getCursor returns, etc).\n var Selection = function(ranges, primIndex) {\n this.ranges = ranges;\n this.primIndex = primIndex;\n };\n\n Selection.prototype.primary = function () { return this.ranges[this.primIndex] };\n\n Selection.prototype.equals = function (other) {\n if (other == this) { return true }\n if (other.primIndex != this.primIndex || other.ranges.length != this.ranges.length) { return false }\n for (var i = 0; i < this.ranges.length; i++) {\n var here = this.ranges[i], there = other.ranges[i];\n if (!equalCursorPos(here.anchor, there.anchor) || !equalCursorPos(here.head, there.head)) { return false }\n }\n return true\n };\n\n Selection.prototype.deepCopy = function () {\n var out = [];\n for (var i = 0; i < this.ranges.length; i++)\n { out[i] = new Range(copyPos(this.ranges[i].anchor), copyPos(this.ranges[i].head)); }\n return new Selection(out, this.primIndex)\n };\n\n Selection.prototype.somethingSelected = function () {\n for (var i = 0; i < this.ranges.length; i++)\n { if (!this.ranges[i].empty()) { return true } }\n return false\n };\n\n Selection.prototype.contains = function (pos, end) {\n if (!end) { end = pos; }\n for (var i = 0; i < this.ranges.length; i++) {\n var range = this.ranges[i];\n if (cmp(end, range.from()) >= 0 && cmp(pos, range.to()) <= 0)\n { return i }\n }\n return -1\n };\n\n var Range = function(anchor, head) {\n this.anchor = anchor; this.head = head;\n };\n\n Range.prototype.from = function () { return minPos(this.anchor, this.head) };\n Range.prototype.to = function () { return maxPos(this.anchor, this.head) };\n Range.prototype.empty = function () { return this.head.line == this.anchor.line && this.head.ch == this.anchor.ch };\n\n // Take an unsorted, potentially overlapping set of ranges, and\n // build a selection out of it. 'Consumes' ranges array (modifying\n // it).\n function normalizeSelection(cm, ranges, primIndex) {\n var mayTouch = cm && cm.options.selectionsMayTouch;\n var prim = ranges[primIndex];\n ranges.sort(function (a, b) { return cmp(a.from(), b.from()); });\n primIndex = indexOf(ranges, prim);\n for (var i = 1; i < ranges.length; i++) {\n var cur = ranges[i], prev = ranges[i - 1];\n var diff = cmp(prev.to(), cur.from());\n if (mayTouch && !cur.empty() ? diff > 0 : diff >= 0) {\n var from = minPos(prev.from(), cur.from()), to = maxPos(prev.to(), cur.to());\n var inv = prev.empty() ? cur.from() == cur.head : prev.from() == prev.head;\n if (i <= primIndex) { --primIndex; }\n ranges.splice(--i, 2, new Range(inv ? to : from, inv ? from : to));\n }\n }\n return new Selection(ranges, primIndex)\n }\n\n function simpleSelection(anchor, head) {\n return new Selection([new Range(anchor, head || anchor)], 0)\n }\n\n // Compute the position of the end of a change (its 'to' property\n // refers to the pre-change end).\n function changeEnd(change) {\n if (!change.text) { return change.to }\n return Pos(change.from.line + change.text.length - 1,\n lst(change.text).length + (change.text.length == 1 ? change.from.ch : 0))\n }\n\n // Adjust a position to refer to the post-change position of the\n // same text, or the end of the change if the change covers it.\n function adjustForChange(pos, change) {\n if (cmp(pos, change.from) < 0) { return pos }\n if (cmp(pos, change.to) <= 0) { return changeEnd(change) }\n\n var line = pos.line + change.text.length - (change.to.line - change.from.line) - 1, ch = pos.ch;\n if (pos.line == change.to.line) { ch += changeEnd(change).ch - change.to.ch; }\n return Pos(line, ch)\n }\n\n function computeSelAfterChange(doc, change) {\n var out = [];\n for (var i = 0; i < doc.sel.ranges.length; i++) {\n var range = doc.sel.ranges[i];\n out.push(new Range(adjustForChange(range.anchor, change),\n adjustForChange(range.head, change)));\n }\n return normalizeSelection(doc.cm, out, doc.sel.primIndex)\n }\n\n function offsetPos(pos, old, nw) {\n if (pos.line == old.line)\n { return Pos(nw.line, pos.ch - old.ch + nw.ch) }\n else\n { return Pos(nw.line + (pos.line - old.line), pos.ch) }\n }\n\n // Used by replaceSelections to allow moving the selection to the\n // start or around the replaced test. Hint may be \"start\" or \"around\".\n function computeReplacedSel(doc, changes, hint) {\n var out = [];\n var oldPrev = Pos(doc.first, 0), newPrev = oldPrev;\n for (var i = 0; i < changes.length; i++) {\n var change = changes[i];\n var from = offsetPos(change.from, oldPrev, newPrev);\n var to = offsetPos(changeEnd(change), oldPrev, newPrev);\n oldPrev = change.to;\n newPrev = to;\n if (hint == \"around\") {\n var range = doc.sel.ranges[i], inv = cmp(range.head, range.anchor) < 0;\n out[i] = new Range(inv ? to : from, inv ? from : to);\n } else {\n out[i] = new Range(from, from);\n }\n }\n return new Selection(out, doc.sel.primIndex)\n }\n\n // Used to get the editor into a consistent state again when options change.\n\n function loadMode(cm) {\n cm.doc.mode = getMode(cm.options, cm.doc.modeOption);\n resetModeState(cm);\n }\n\n function resetModeState(cm) {\n cm.doc.iter(function (line) {\n if (line.stateAfter) { line.stateAfter = null; }\n if (line.styles) { line.styles = null; }\n });\n cm.doc.modeFrontier = cm.doc.highlightFrontier = cm.doc.first;\n startWorker(cm, 100);\n cm.state.modeGen++;\n if (cm.curOp) { regChange(cm); }\n }\n\n // DOCUMENT DATA STRUCTURE\n\n // By default, updates that start and end at the beginning of a line\n // are treated specially, in order to make the association of line\n // widgets and marker elements with the text behave more intuitive.\n function isWholeLineUpdate(doc, change) {\n return change.from.ch == 0 && change.to.ch == 0 && lst(change.text) == \"\" &&\n (!doc.cm || doc.cm.options.wholeLineUpdateBefore)\n }\n\n // Perform a change on the document data structure.\n function updateDoc(doc, change, markedSpans, estimateHeight) {\n function spansFor(n) {return markedSpans ? markedSpans[n] : null}\n function update(line, text, spans) {\n updateLine(line, text, spans, estimateHeight);\n signalLater(line, \"change\", line, change);\n }\n function linesFor(start, end) {\n var result = [];\n for (var i = start; i < end; ++i)\n { result.push(new Line(text[i], spansFor(i), estimateHeight)); }\n return result\n }\n\n var from = change.from, to = change.to, text = change.text;\n var firstLine = getLine(doc, from.line), lastLine = getLine(doc, to.line);\n var lastText = lst(text), lastSpans = spansFor(text.length - 1), nlines = to.line - from.line;\n\n // Adjust the line structure\n if (change.full) {\n doc.insert(0, linesFor(0, text.length));\n doc.remove(text.length, doc.size - text.length);\n } else if (isWholeLineUpdate(doc, change)) {\n // This is a whole-line replace. Treated specially to make\n // sure line objects move the way they are supposed to.\n var added = linesFor(0, text.length - 1);\n update(lastLine, lastLine.text, lastSpans);\n if (nlines) { doc.remove(from.line, nlines); }\n if (added.length) { doc.insert(from.line, added); }\n } else if (firstLine == lastLine) {\n if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + lastText + firstLine.text.slice(to.ch), lastSpans);\n } else {\n var added$1 = linesFor(1, text.length - 1);\n added$1.push(new Line(lastText + firstLine.text.slice(to.ch), lastSpans, estimateHeight));\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n doc.insert(from.line + 1, added$1);\n }\n } else if (text.length == 1) {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0] + lastLine.text.slice(to.ch), spansFor(0));\n doc.remove(from.line + 1, nlines);\n } else {\n update(firstLine, firstLine.text.slice(0, from.ch) + text[0], spansFor(0));\n update(lastLine, lastText + lastLine.text.slice(to.ch), lastSpans);\n var added$2 = linesFor(1, text.length - 1);\n if (nlines > 1) { doc.remove(from.line + 1, nlines - 1); }\n doc.insert(from.line + 1, added$2);\n }\n\n signalLater(doc, \"change\", doc, change);\n }\n\n // Call f for all linked documents.\n function linkedDocs(doc, f, sharedHistOnly) {\n function propagate(doc, skip, sharedHist) {\n if (doc.linked) { for (var i = 0; i < doc.linked.length; ++i) {\n var rel = doc.linked[i];\n if (rel.doc == skip) { continue }\n var shared = sharedHist && rel.sharedHist;\n if (sharedHistOnly && !shared) { continue }\n f(rel.doc, shared);\n propagate(rel.doc, doc, shared);\n } }\n }\n propagate(doc, null, true);\n }\n\n // Attach a document to an editor.\n function attachDoc(cm, doc) {\n if (doc.cm) { throw new Error(\"This document is already in use.\") }\n cm.doc = doc;\n doc.cm = cm;\n estimateLineHeights(cm);\n loadMode(cm);\n setDirectionClass(cm);\n cm.options.direction = doc.direction;\n if (!cm.options.lineWrapping) { findMaxLine(cm); }\n cm.options.mode = doc.modeOption;\n regChange(cm);\n }\n\n function setDirectionClass(cm) {\n (cm.doc.direction == \"rtl\" ? addClass : rmClass)(cm.display.lineDiv, \"CodeMirror-rtl\");\n }\n\n function directionChanged(cm) {\n runInOp(cm, function () {\n setDirectionClass(cm);\n regChange(cm);\n });\n }\n\n function History(prev) {\n // Arrays of change events and selections. Doing something adds an\n // event to done and clears undo. Undoing moves events from done\n // to undone, redoing moves them in the other direction.\n this.done = []; this.undone = [];\n this.undoDepth = prev ? prev.undoDepth : Infinity;\n // Used to track when changes can be merged into a single undo\n // event\n this.lastModTime = this.lastSelTime = 0;\n this.lastOp = this.lastSelOp = null;\n this.lastOrigin = this.lastSelOrigin = null;\n // Used by the isClean() method\n this.generation = this.maxGeneration = prev ? prev.maxGeneration : 1;\n }\n\n // Create a history change event from an updateDoc-style change\n // object.\n function historyChangeFromChange(doc, change) {\n var histChange = {from: copyPos(change.from), to: changeEnd(change), text: getBetween(doc, change.from, change.to)};\n attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1);\n linkedDocs(doc, function (doc) { return attachLocalSpans(doc, histChange, change.from.line, change.to.line + 1); }, true);\n return histChange\n }\n\n // Pop all selection events off the end of a history array. Stop at\n // a change event.\n function clearSelectionEvents(array) {\n while (array.length) {\n var last = lst(array);\n if (last.ranges) { array.pop(); }\n else { break }\n }\n }\n\n // Find the top change event in the history. Pop off selection\n // events that are in the way.\n function lastChangeEvent(hist, force) {\n if (force) {\n clearSelectionEvents(hist.done);\n return lst(hist.done)\n } else if (hist.done.length && !lst(hist.done).ranges) {\n return lst(hist.done)\n } else if (hist.done.length > 1 && !hist.done[hist.done.length - 2].ranges) {\n hist.done.pop();\n return lst(hist.done)\n }\n }\n\n // Register a change in the history. Merges changes that are within\n // a single operation, or are close together with an origin that\n // allows merging (starting with \"+\") into a single event.\n function addChangeToHistory(doc, change, selAfter, opId) {\n var hist = doc.history;\n hist.undone.length = 0;\n var time = +new Date, cur;\n var last;\n\n if ((hist.lastOp == opId ||\n hist.lastOrigin == change.origin && change.origin &&\n ((change.origin.charAt(0) == \"+\" && hist.lastModTime > time - (doc.cm ? doc.cm.options.historyEventDelay : 500)) ||\n change.origin.charAt(0) == \"*\")) &&\n (cur = lastChangeEvent(hist, hist.lastOp == opId))) {\n // Merge this change into the last event\n last = lst(cur.changes);\n if (cmp(change.from, change.to) == 0 && cmp(change.from, last.to) == 0) {\n // Optimized case for simple insertion -- don't want to add\n // new changesets for every character typed\n last.to = changeEnd(change);\n } else {\n // Add new sub-event\n cur.changes.push(historyChangeFromChange(doc, change));\n }\n } else {\n // Can not be merged, start a new event.\n var before = lst(hist.done);\n if (!before || !before.ranges)\n { pushSelectionToHistory(doc.sel, hist.done); }\n cur = {changes: [historyChangeFromChange(doc, change)],\n generation: hist.generation};\n hist.done.push(cur);\n while (hist.done.length > hist.undoDepth) {\n hist.done.shift();\n if (!hist.done[0].ranges) { hist.done.shift(); }\n }\n }\n hist.done.push(selAfter);\n hist.generation = ++hist.maxGeneration;\n hist.lastModTime = hist.lastSelTime = time;\n hist.lastOp = hist.lastSelOp = opId;\n hist.lastOrigin = hist.lastSelOrigin = change.origin;\n\n if (!last) { signal(doc, \"historyAdded\"); }\n }\n\n function selectionEventCanBeMerged(doc, origin, prev, sel) {\n var ch = origin.charAt(0);\n return ch == \"*\" ||\n ch == \"+\" &&\n prev.ranges.length == sel.ranges.length &&\n prev.somethingSelected() == sel.somethingSelected() &&\n new Date - doc.history.lastSelTime <= (doc.cm ? doc.cm.options.historyEventDelay : 500)\n }\n\n // Called whenever the selection changes, sets the new selection as\n // the pending selection in the history, and pushes the old pending\n // selection into the 'done' array when it was significantly\n // different (in number of selected ranges, emptiness, or time).\n function addSelectionToHistory(doc, sel, opId, options) {\n var hist = doc.history, origin = options && options.origin;\n\n // A new event is started when the previous origin does not match\n // the current, or the origins don't allow matching. Origins\n // starting with * are always merged, those starting with + are\n // merged when similar and close together in time.\n if (opId == hist.lastSelOp ||\n (origin && hist.lastSelOrigin == origin &&\n (hist.lastModTime == hist.lastSelTime && hist.lastOrigin == origin ||\n selectionEventCanBeMerged(doc, origin, lst(hist.done), sel))))\n { hist.done[hist.done.length - 1] = sel; }\n else\n { pushSelectionToHistory(sel, hist.done); }\n\n hist.lastSelTime = +new Date;\n hist.lastSelOrigin = origin;\n hist.lastSelOp = opId;\n if (options && options.clearRedo !== false)\n { clearSelectionEvents(hist.undone); }\n }\n\n function pushSelectionToHistory(sel, dest) {\n var top = lst(dest);\n if (!(top && top.ranges && top.equals(sel)))\n { dest.push(sel); }\n }\n\n // Used to store marked span information in the history.\n function attachLocalSpans(doc, change, from, to) {\n var existing = change[\"spans_\" + doc.id], n = 0;\n doc.iter(Math.max(doc.first, from), Math.min(doc.first + doc.size, to), function (line) {\n if (line.markedSpans)\n { (existing || (existing = change[\"spans_\" + doc.id] = {}))[n] = line.markedSpans; }\n ++n;\n });\n }\n\n // When un/re-doing restores text containing marked spans, those\n // that have been explicitly cleared should not be restored.\n function removeClearedSpans(spans) {\n if (!spans) { return null }\n var out;\n for (var i = 0; i < spans.length; ++i) {\n if (spans[i].marker.explicitlyCleared) { if (!out) { out = spans.slice(0, i); } }\n else if (out) { out.push(spans[i]); }\n }\n return !out ? spans : out.length ? out : null\n }\n\n // Retrieve and filter the old marked spans stored in a change event.\n function getOldSpans(doc, change) {\n var found = change[\"spans_\" + doc.id];\n if (!found) { return null }\n var nw = [];\n for (var i = 0; i < change.text.length; ++i)\n { nw.push(removeClearedSpans(found[i])); }\n return nw\n }\n\n // Used for un/re-doing changes from the history. Combines the\n // result of computing the existing spans with the set of spans that\n // existed in the history (so that deleting around a span and then\n // undoing brings back the span).\n function mergeOldSpans(doc, change) {\n var old = getOldSpans(doc, change);\n var stretched = stretchSpansOverChange(doc, change);\n if (!old) { return stretched }\n if (!stretched) { return old }\n\n for (var i = 0; i < old.length; ++i) {\n var oldCur = old[i], stretchCur = stretched[i];\n if (oldCur && stretchCur) {\n spans: for (var j = 0; j < stretchCur.length; ++j) {\n var span = stretchCur[j];\n for (var k = 0; k < oldCur.length; ++k)\n { if (oldCur[k].marker == span.marker) { continue spans } }\n oldCur.push(span);\n }\n } else if (stretchCur) {\n old[i] = stretchCur;\n }\n }\n return old\n }\n\n // Used both to provide a JSON-safe object in .getHistory, and, when\n // detaching a document, to split the history in two\n function copyHistoryArray(events, newGroup, instantiateSel) {\n var copy = [];\n for (var i = 0; i < events.length; ++i) {\n var event = events[i];\n if (event.ranges) {\n copy.push(instantiateSel ? Selection.prototype.deepCopy.call(event) : event);\n continue\n }\n var changes = event.changes, newChanges = [];\n copy.push({changes: newChanges});\n for (var j = 0; j < changes.length; ++j) {\n var change = changes[j], m = (void 0);\n newChanges.push({from: change.from, to: change.to, text: change.text});\n if (newGroup) { for (var prop in change) { if (m = prop.match(/^spans_(\\d+)$/)) {\n if (indexOf(newGroup, Number(m[1])) > -1) {\n lst(newChanges)[prop] = change[prop];\n delete change[prop];\n }\n } } }\n }\n }\n return copy\n }\n\n // The 'scroll' parameter given to many of these indicated whether\n // the new cursor position should be scrolled into view after\n // modifying the selection.\n\n // If shift is held or the extend flag is set, extends a range to\n // include a given position (and optionally a second position).\n // Otherwise, simply returns the range between the given positions.\n // Used for cursor motion and such.\n function extendRange(range, head, other, extend) {\n if (extend) {\n var anchor = range.anchor;\n if (other) {\n var posBefore = cmp(head, anchor) < 0;\n if (posBefore != (cmp(other, anchor) < 0)) {\n anchor = head;\n head = other;\n } else if (posBefore != (cmp(head, other) < 0)) {\n head = other;\n }\n }\n return new Range(anchor, head)\n } else {\n return new Range(other || head, head)\n }\n }\n\n // Extend the primary selection range, discard the rest.\n function extendSelection(doc, head, other, options, extend) {\n if (extend == null) { extend = doc.cm && (doc.cm.display.shift || doc.extend); }\n setSelection(doc, new Selection([extendRange(doc.sel.primary(), head, other, extend)], 0), options);\n }\n\n // Extend all selections (pos is an array of selections with length\n // equal the number of selections)\n function extendSelections(doc, heads, options) {\n var out = [];\n var extend = doc.cm && (doc.cm.display.shift || doc.extend);\n for (var i = 0; i < doc.sel.ranges.length; i++)\n { out[i] = extendRange(doc.sel.ranges[i], heads[i], null, extend); }\n var newSel = normalizeSelection(doc.cm, out, doc.sel.primIndex);\n setSelection(doc, newSel, options);\n }\n\n // Updates a single range in the selection.\n function replaceOneSelection(doc, i, range, options) {\n var ranges = doc.sel.ranges.slice(0);\n ranges[i] = range;\n setSelection(doc, normalizeSelection(doc.cm, ranges, doc.sel.primIndex), options);\n }\n\n // Reset the selection to a single range.\n function setSimpleSelection(doc, anchor, head, options) {\n setSelection(doc, simpleSelection(anchor, head), options);\n }\n\n // Give beforeSelectionChange handlers a change to influence a\n // selection update.\n function filterSelectionChange(doc, sel, options) {\n var obj = {\n ranges: sel.ranges,\n update: function(ranges) {\n this.ranges = [];\n for (var i = 0; i < ranges.length; i++)\n { this.ranges[i] = new Range(clipPos(doc, ranges[i].anchor),\n clipPos(doc, ranges[i].head)); }\n },\n origin: options && options.origin\n };\n signal(doc, \"beforeSelectionChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeSelectionChange\", doc.cm, obj); }\n if (obj.ranges != sel.ranges) { return normalizeSelection(doc.cm, obj.ranges, obj.ranges.length - 1) }\n else { return sel }\n }\n\n function setSelectionReplaceHistory(doc, sel, options) {\n var done = doc.history.done, last = lst(done);\n if (last && last.ranges) {\n done[done.length - 1] = sel;\n setSelectionNoUndo(doc, sel, options);\n } else {\n setSelection(doc, sel, options);\n }\n }\n\n // Set a new selection.\n function setSelection(doc, sel, options) {\n setSelectionNoUndo(doc, sel, options);\n addSelectionToHistory(doc, doc.sel, doc.cm ? doc.cm.curOp.id : NaN, options);\n }\n\n function setSelectionNoUndo(doc, sel, options) {\n if (hasHandler(doc, \"beforeSelectionChange\") || doc.cm && hasHandler(doc.cm, \"beforeSelectionChange\"))\n { sel = filterSelectionChange(doc, sel, options); }\n\n var bias = options && options.bias ||\n (cmp(sel.primary().head, doc.sel.primary().head) < 0 ? -1 : 1);\n setSelectionInner(doc, skipAtomicInSelection(doc, sel, bias, true));\n\n if (!(options && options.scroll === false) && doc.cm && doc.cm.getOption(\"readOnly\") != \"nocursor\")\n { ensureCursorVisible(doc.cm); }\n }\n\n function setSelectionInner(doc, sel) {\n if (sel.equals(doc.sel)) { return }\n\n doc.sel = sel;\n\n if (doc.cm) {\n doc.cm.curOp.updateInput = 1;\n doc.cm.curOp.selectionChanged = true;\n signalCursorActivity(doc.cm);\n }\n signalLater(doc, \"cursorActivity\", doc);\n }\n\n // Verify that the selection does not partially select any atomic\n // marked ranges.\n function reCheckSelection(doc) {\n setSelectionInner(doc, skipAtomicInSelection(doc, doc.sel, null, false));\n }\n\n // Return a selection that does not partially select any atomic\n // ranges.\n function skipAtomicInSelection(doc, sel, bias, mayClear) {\n var out;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n var old = sel.ranges.length == doc.sel.ranges.length && doc.sel.ranges[i];\n var newAnchor = skipAtomic(doc, range.anchor, old && old.anchor, bias, mayClear);\n var newHead = skipAtomic(doc, range.head, old && old.head, bias, mayClear);\n if (out || newAnchor != range.anchor || newHead != range.head) {\n if (!out) { out = sel.ranges.slice(0, i); }\n out[i] = new Range(newAnchor, newHead);\n }\n }\n return out ? normalizeSelection(doc.cm, out, sel.primIndex) : sel\n }\n\n function skipAtomicInner(doc, pos, oldPos, dir, mayClear) {\n var line = getLine(doc, pos.line);\n if (line.markedSpans) { for (var i = 0; i < line.markedSpans.length; ++i) {\n var sp = line.markedSpans[i], m = sp.marker;\n\n // Determine if we should prevent the cursor being placed to the left/right of an atomic marker\n // Historically this was determined using the inclusiveLeft/Right option, but the new way to control it\n // is with selectLeft/Right\n var preventCursorLeft = (\"selectLeft\" in m) ? !m.selectLeft : m.inclusiveLeft;\n var preventCursorRight = (\"selectRight\" in m) ? !m.selectRight : m.inclusiveRight;\n\n if ((sp.from == null || (preventCursorLeft ? sp.from <= pos.ch : sp.from < pos.ch)) &&\n (sp.to == null || (preventCursorRight ? sp.to >= pos.ch : sp.to > pos.ch))) {\n if (mayClear) {\n signal(m, \"beforeCursorEnter\");\n if (m.explicitlyCleared) {\n if (!line.markedSpans) { break }\n else {--i; continue}\n }\n }\n if (!m.atomic) { continue }\n\n if (oldPos) {\n var near = m.find(dir < 0 ? 1 : -1), diff = (void 0);\n if (dir < 0 ? preventCursorRight : preventCursorLeft)\n { near = movePos(doc, near, -dir, near && near.line == pos.line ? line : null); }\n if (near && near.line == pos.line && (diff = cmp(near, oldPos)) && (dir < 0 ? diff < 0 : diff > 0))\n { return skipAtomicInner(doc, near, pos, dir, mayClear) }\n }\n\n var far = m.find(dir < 0 ? -1 : 1);\n if (dir < 0 ? preventCursorLeft : preventCursorRight)\n { far = movePos(doc, far, dir, far.line == pos.line ? line : null); }\n return far ? skipAtomicInner(doc, far, pos, dir, mayClear) : null\n }\n } }\n return pos\n }\n\n // Ensure a given position is not inside an atomic range.\n function skipAtomic(doc, pos, oldPos, bias, mayClear) {\n var dir = bias || 1;\n var found = skipAtomicInner(doc, pos, oldPos, dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, dir, true)) ||\n skipAtomicInner(doc, pos, oldPos, -dir, mayClear) ||\n (!mayClear && skipAtomicInner(doc, pos, oldPos, -dir, true));\n if (!found) {\n doc.cantEdit = true;\n return Pos(doc.first, 0)\n }\n return found\n }\n\n function movePos(doc, pos, dir, line) {\n if (dir < 0 && pos.ch == 0) {\n if (pos.line > doc.first) { return clipPos(doc, Pos(pos.line - 1)) }\n else { return null }\n } else if (dir > 0 && pos.ch == (line || getLine(doc, pos.line)).text.length) {\n if (pos.line < doc.first + doc.size - 1) { return Pos(pos.line + 1, 0) }\n else { return null }\n } else {\n return new Pos(pos.line, pos.ch + dir)\n }\n }\n\n function selectAll(cm) {\n cm.setSelection(Pos(cm.firstLine(), 0), Pos(cm.lastLine()), sel_dontScroll);\n }\n\n // UPDATING\n\n // Allow \"beforeChange\" event handlers to influence a change\n function filterChange(doc, change, update) {\n var obj = {\n canceled: false,\n from: change.from,\n to: change.to,\n text: change.text,\n origin: change.origin,\n cancel: function () { return obj.canceled = true; }\n };\n if (update) { obj.update = function (from, to, text, origin) {\n if (from) { obj.from = clipPos(doc, from); }\n if (to) { obj.to = clipPos(doc, to); }\n if (text) { obj.text = text; }\n if (origin !== undefined) { obj.origin = origin; }\n }; }\n signal(doc, \"beforeChange\", doc, obj);\n if (doc.cm) { signal(doc.cm, \"beforeChange\", doc.cm, obj); }\n\n if (obj.canceled) {\n if (doc.cm) { doc.cm.curOp.updateInput = 2; }\n return null\n }\n return {from: obj.from, to: obj.to, text: obj.text, origin: obj.origin}\n }\n\n // Apply a change to a document, and add it to the document's\n // history, and propagating it to all linked documents.\n function makeChange(doc, change, ignoreReadOnly) {\n if (doc.cm) {\n if (!doc.cm.curOp) { return operation(doc.cm, makeChange)(doc, change, ignoreReadOnly) }\n if (doc.cm.state.suppressEdits) { return }\n }\n\n if (hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\")) {\n change = filterChange(doc, change, true);\n if (!change) { return }\n }\n\n // Possibly split or suppress the update based on the presence\n // of read-only spans in its range.\n var split = sawReadOnlySpans && !ignoreReadOnly && removeReadOnlyRanges(doc, change.from, change.to);\n if (split) {\n for (var i = split.length - 1; i >= 0; --i)\n { makeChangeInner(doc, {from: split[i].from, to: split[i].to, text: i ? [\"\"] : change.text, origin: change.origin}); }\n } else {\n makeChangeInner(doc, change);\n }\n }\n\n function makeChangeInner(doc, change) {\n if (change.text.length == 1 && change.text[0] == \"\" && cmp(change.from, change.to) == 0) { return }\n var selAfter = computeSelAfterChange(doc, change);\n addChangeToHistory(doc, change, selAfter, doc.cm ? doc.cm.curOp.id : NaN);\n\n makeChangeSingleDoc(doc, change, selAfter, stretchSpansOverChange(doc, change));\n var rebased = [];\n\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, stretchSpansOverChange(doc, change));\n });\n }\n\n // Revert a change stored in a document's history.\n function makeChangeFromHistory(doc, type, allowSelectionOnly) {\n var suppress = doc.cm && doc.cm.state.suppressEdits;\n if (suppress && !allowSelectionOnly) { return }\n\n var hist = doc.history, event, selAfter = doc.sel;\n var source = type == \"undo\" ? hist.done : hist.undone, dest = type == \"undo\" ? hist.undone : hist.done;\n\n // Verify that there is a useable event (so that ctrl-z won't\n // needlessly clear selection events)\n var i = 0;\n for (; i < source.length; i++) {\n event = source[i];\n if (allowSelectionOnly ? event.ranges && !event.equals(doc.sel) : !event.ranges)\n { break }\n }\n if (i == source.length) { return }\n hist.lastOrigin = hist.lastSelOrigin = null;\n\n for (;;) {\n event = source.pop();\n if (event.ranges) {\n pushSelectionToHistory(event, dest);\n if (allowSelectionOnly && !event.equals(doc.sel)) {\n setSelection(doc, event, {clearRedo: false});\n return\n }\n selAfter = event;\n } else if (suppress) {\n source.push(event);\n return\n } else { break }\n }\n\n // Build up a reverse change object to add to the opposite history\n // stack (redo when undoing, and vice versa).\n var antiChanges = [];\n pushSelectionToHistory(selAfter, dest);\n dest.push({changes: antiChanges, generation: hist.generation});\n hist.generation = event.generation || ++hist.maxGeneration;\n\n var filter = hasHandler(doc, \"beforeChange\") || doc.cm && hasHandler(doc.cm, \"beforeChange\");\n\n var loop = function ( i ) {\n var change = event.changes[i];\n change.origin = type;\n if (filter && !filterChange(doc, change, false)) {\n source.length = 0;\n return {}\n }\n\n antiChanges.push(historyChangeFromChange(doc, change));\n\n var after = i ? computeSelAfterChange(doc, change) : lst(source);\n makeChangeSingleDoc(doc, change, after, mergeOldSpans(doc, change));\n if (!i && doc.cm) { doc.cm.scrollIntoView({from: change.from, to: changeEnd(change)}); }\n var rebased = [];\n\n // Propagate to the linked documents\n linkedDocs(doc, function (doc, sharedHist) {\n if (!sharedHist && indexOf(rebased, doc.history) == -1) {\n rebaseHist(doc.history, change);\n rebased.push(doc.history);\n }\n makeChangeSingleDoc(doc, change, null, mergeOldSpans(doc, change));\n });\n };\n\n for (var i$1 = event.changes.length - 1; i$1 >= 0; --i$1) {\n var returned = loop( i$1 );\n\n if ( returned ) return returned.v;\n }\n }\n\n // Sub-views need their line numbers shifted when text is added\n // above or below them in the parent document.\n function shiftDoc(doc, distance) {\n if (distance == 0) { return }\n doc.first += distance;\n doc.sel = new Selection(map(doc.sel.ranges, function (range) { return new Range(\n Pos(range.anchor.line + distance, range.anchor.ch),\n Pos(range.head.line + distance, range.head.ch)\n ); }), doc.sel.primIndex);\n if (doc.cm) {\n regChange(doc.cm, doc.first, doc.first - distance, distance);\n for (var d = doc.cm.display, l = d.viewFrom; l < d.viewTo; l++)\n { regLineChange(doc.cm, l, \"gutter\"); }\n }\n }\n\n // More lower-level change function, handling only a single document\n // (not linked ones).\n function makeChangeSingleDoc(doc, change, selAfter, spans) {\n if (doc.cm && !doc.cm.curOp)\n { return operation(doc.cm, makeChangeSingleDoc)(doc, change, selAfter, spans) }\n\n if (change.to.line < doc.first) {\n shiftDoc(doc, change.text.length - 1 - (change.to.line - change.from.line));\n return\n }\n if (change.from.line > doc.lastLine()) { return }\n\n // Clip the change to the size of this doc\n if (change.from.line < doc.first) {\n var shift = change.text.length - 1 - (doc.first - change.from.line);\n shiftDoc(doc, shift);\n change = {from: Pos(doc.first, 0), to: Pos(change.to.line + shift, change.to.ch),\n text: [lst(change.text)], origin: change.origin};\n }\n var last = doc.lastLine();\n if (change.to.line > last) {\n change = {from: change.from, to: Pos(last, getLine(doc, last).text.length),\n text: [change.text[0]], origin: change.origin};\n }\n\n change.removed = getBetween(doc, change.from, change.to);\n\n if (!selAfter) { selAfter = computeSelAfterChange(doc, change); }\n if (doc.cm) { makeChangeSingleDocInEditor(doc.cm, change, spans); }\n else { updateDoc(doc, change, spans); }\n setSelectionNoUndo(doc, selAfter, sel_dontScroll);\n\n if (doc.cantEdit && skipAtomic(doc, Pos(doc.firstLine(), 0)))\n { doc.cantEdit = false; }\n }\n\n // Handle the interaction of a change to a document with the editor\n // that this document is part of.\n function makeChangeSingleDocInEditor(cm, change, spans) {\n var doc = cm.doc, display = cm.display, from = change.from, to = change.to;\n\n var recomputeMaxLength = false, checkWidthStart = from.line;\n if (!cm.options.lineWrapping) {\n checkWidthStart = lineNo(visualLine(getLine(doc, from.line)));\n doc.iter(checkWidthStart, to.line + 1, function (line) {\n if (line == display.maxLine) {\n recomputeMaxLength = true;\n return true\n }\n });\n }\n\n if (doc.sel.contains(change.from, change.to) > -1)\n { signalCursorActivity(cm); }\n\n updateDoc(doc, change, spans, estimateHeight(cm));\n\n if (!cm.options.lineWrapping) {\n doc.iter(checkWidthStart, from.line + change.text.length, function (line) {\n var len = lineLength(line);\n if (len > display.maxLineLength) {\n display.maxLine = line;\n display.maxLineLength = len;\n display.maxLineChanged = true;\n recomputeMaxLength = false;\n }\n });\n if (recomputeMaxLength) { cm.curOp.updateMaxLine = true; }\n }\n\n retreatFrontier(doc, from.line);\n startWorker(cm, 400);\n\n var lendiff = change.text.length - (to.line - from.line) - 1;\n // Remember that these lines changed, for updating the display\n if (change.full)\n { regChange(cm); }\n else if (from.line == to.line && change.text.length == 1 && !isWholeLineUpdate(cm.doc, change))\n { regLineChange(cm, from.line, \"text\"); }\n else\n { regChange(cm, from.line, to.line + 1, lendiff); }\n\n var changesHandler = hasHandler(cm, \"changes\"), changeHandler = hasHandler(cm, \"change\");\n if (changeHandler || changesHandler) {\n var obj = {\n from: from, to: to,\n text: change.text,\n removed: change.removed,\n origin: change.origin\n };\n if (changeHandler) { signalLater(cm, \"change\", cm, obj); }\n if (changesHandler) { (cm.curOp.changeObjs || (cm.curOp.changeObjs = [])).push(obj); }\n }\n cm.display.selForContextMenu = null;\n }\n\n function replaceRange(doc, code, from, to, origin) {\n var assign;\n\n if (!to) { to = from; }\n if (cmp(to, from) < 0) { (assign = [to, from], from = assign[0], to = assign[1]); }\n if (typeof code == \"string\") { code = doc.splitLines(code); }\n makeChange(doc, {from: from, to: to, text: code, origin: origin});\n }\n\n // Rebasing/resetting history to deal with externally-sourced changes\n\n function rebaseHistSelSingle(pos, from, to, diff) {\n if (to < pos.line) {\n pos.line += diff;\n } else if (from < pos.line) {\n pos.line = from;\n pos.ch = 0;\n }\n }\n\n // Tries to rebase an array of history events given a change in the\n // document. If the change touches the same lines as the event, the\n // event, and everything 'behind' it, is discarded. If the change is\n // before the event, the event's positions are updated. Uses a\n // copy-on-write scheme for the positions, to avoid having to\n // reallocate them all on every rebase, but also avoid problems with\n // shared position objects being unsafely updated.\n function rebaseHistArray(array, from, to, diff) {\n for (var i = 0; i < array.length; ++i) {\n var sub = array[i], ok = true;\n if (sub.ranges) {\n if (!sub.copied) { sub = array[i] = sub.deepCopy(); sub.copied = true; }\n for (var j = 0; j < sub.ranges.length; j++) {\n rebaseHistSelSingle(sub.ranges[j].anchor, from, to, diff);\n rebaseHistSelSingle(sub.ranges[j].head, from, to, diff);\n }\n continue\n }\n for (var j$1 = 0; j$1 < sub.changes.length; ++j$1) {\n var cur = sub.changes[j$1];\n if (to < cur.from.line) {\n cur.from = Pos(cur.from.line + diff, cur.from.ch);\n cur.to = Pos(cur.to.line + diff, cur.to.ch);\n } else if (from <= cur.to.line) {\n ok = false;\n break\n }\n }\n if (!ok) {\n array.splice(0, i + 1);\n i = 0;\n }\n }\n }\n\n function rebaseHist(hist, change) {\n var from = change.from.line, to = change.to.line, diff = change.text.length - (to - from) - 1;\n rebaseHistArray(hist.done, from, to, diff);\n rebaseHistArray(hist.undone, from, to, diff);\n }\n\n // Utility for applying a change to a line by handle or number,\n // returning the number and optionally registering the line as\n // changed.\n function changeLine(doc, handle, changeType, op) {\n var no = handle, line = handle;\n if (typeof handle == \"number\") { line = getLine(doc, clipLine(doc, handle)); }\n else { no = lineNo(handle); }\n if (no == null) { return null }\n if (op(line, no) && doc.cm) { regLineChange(doc.cm, no, changeType); }\n return line\n }\n\n // The document is represented as a BTree consisting of leaves, with\n // chunk of lines in them, and branches, with up to ten leaves or\n // other branch nodes below them. The top node is always a branch\n // node, and is the document object itself (meaning it has\n // additional methods and properties).\n //\n // All nodes have parent links. The tree is used both to go from\n // line numbers to line objects, and to go from objects to numbers.\n // It also indexes by height, and is used to convert between height\n // and line object, and to find the total height of the document.\n //\n // See also http://marijnhaverbeke.nl/blog/codemirror-line-tree.html\n\n function LeafChunk(lines) {\n this.lines = lines;\n this.parent = null;\n var height = 0;\n for (var i = 0; i < lines.length; ++i) {\n lines[i].parent = this;\n height += lines[i].height;\n }\n this.height = height;\n }\n\n LeafChunk.prototype = {\n chunkSize: function() { return this.lines.length },\n\n // Remove the n lines at offset 'at'.\n removeInner: function(at, n) {\n for (var i = at, e = at + n; i < e; ++i) {\n var line = this.lines[i];\n this.height -= line.height;\n cleanUpLine(line);\n signalLater(line, \"delete\");\n }\n this.lines.splice(at, n);\n },\n\n // Helper used to collapse a small branch into a single leaf.\n collapse: function(lines) {\n lines.push.apply(lines, this.lines);\n },\n\n // Insert the given array of lines at offset 'at', count them as\n // having the given height.\n insertInner: function(at, lines, height) {\n this.height += height;\n this.lines = this.lines.slice(0, at).concat(lines).concat(this.lines.slice(at));\n for (var i = 0; i < lines.length; ++i) { lines[i].parent = this; }\n },\n\n // Used to iterate over a part of the tree.\n iterN: function(at, n, op) {\n for (var e = at + n; at < e; ++at)\n { if (op(this.lines[at])) { return true } }\n }\n };\n\n function BranchChunk(children) {\n this.children = children;\n var size = 0, height = 0;\n for (var i = 0; i < children.length; ++i) {\n var ch = children[i];\n size += ch.chunkSize(); height += ch.height;\n ch.parent = this;\n }\n this.size = size;\n this.height = height;\n this.parent = null;\n }\n\n BranchChunk.prototype = {\n chunkSize: function() { return this.size },\n\n removeInner: function(at, n) {\n this.size -= n;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var rm = Math.min(n, sz - at), oldHeight = child.height;\n child.removeInner(at, rm);\n this.height -= oldHeight - child.height;\n if (sz == rm) { this.children.splice(i--, 1); child.parent = null; }\n if ((n -= rm) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n // If the result is smaller than 25 lines, ensure that it is a\n // single leaf node.\n if (this.size - n < 25 &&\n (this.children.length > 1 || !(this.children[0] instanceof LeafChunk))) {\n var lines = [];\n this.collapse(lines);\n this.children = [new LeafChunk(lines)];\n this.children[0].parent = this;\n }\n },\n\n collapse: function(lines) {\n for (var i = 0; i < this.children.length; ++i) { this.children[i].collapse(lines); }\n },\n\n insertInner: function(at, lines, height) {\n this.size += lines.length;\n this.height += height;\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at <= sz) {\n child.insertInner(at, lines, height);\n if (child.lines && child.lines.length > 50) {\n // To avoid memory thrashing when child.lines is huge (e.g. first view of a large file), it's never spliced.\n // Instead, small slices are taken. They're taken in order because sequential memory accesses are fastest.\n var remaining = child.lines.length % 25 + 25;\n for (var pos = remaining; pos < child.lines.length;) {\n var leaf = new LeafChunk(child.lines.slice(pos, pos += 25));\n child.height -= leaf.height;\n this.children.splice(++i, 0, leaf);\n leaf.parent = this;\n }\n child.lines = child.lines.slice(0, remaining);\n this.maybeSpill();\n }\n break\n }\n at -= sz;\n }\n },\n\n // When a node has grown, check whether it should be split.\n maybeSpill: function() {\n if (this.children.length <= 10) { return }\n var me = this;\n do {\n var spilled = me.children.splice(me.children.length - 5, 5);\n var sibling = new BranchChunk(spilled);\n if (!me.parent) { // Become the parent node\n var copy = new BranchChunk(me.children);\n copy.parent = me;\n me.children = [copy, sibling];\n me = copy;\n } else {\n me.size -= sibling.size;\n me.height -= sibling.height;\n var myIndex = indexOf(me.parent.children, me);\n me.parent.children.splice(myIndex + 1, 0, sibling);\n }\n sibling.parent = me.parent;\n } while (me.children.length > 10)\n me.parent.maybeSpill();\n },\n\n iterN: function(at, n, op) {\n for (var i = 0; i < this.children.length; ++i) {\n var child = this.children[i], sz = child.chunkSize();\n if (at < sz) {\n var used = Math.min(n, sz - at);\n if (child.iterN(at, used, op)) { return true }\n if ((n -= used) == 0) { break }\n at = 0;\n } else { at -= sz; }\n }\n }\n };\n\n // Line widgets are block elements displayed above or below a line.\n\n var LineWidget = function(doc, node, options) {\n if (options) { for (var opt in options) { if (options.hasOwnProperty(opt))\n { this[opt] = options[opt]; } } }\n this.doc = doc;\n this.node = node;\n };\n\n LineWidget.prototype.clear = function () {\n var cm = this.doc.cm, ws = this.line.widgets, line = this.line, no = lineNo(line);\n if (no == null || !ws) { return }\n for (var i = 0; i < ws.length; ++i) { if (ws[i] == this) { ws.splice(i--, 1); } }\n if (!ws.length) { line.widgets = null; }\n var height = widgetHeight(this);\n updateLineHeight(line, Math.max(0, line.height - height));\n if (cm) {\n runInOp(cm, function () {\n adjustScrollWhenAboveVisible(cm, line, -height);\n regLineChange(cm, no, \"widget\");\n });\n signalLater(cm, \"lineWidgetCleared\", cm, this, no);\n }\n };\n\n LineWidget.prototype.changed = function () {\n var this$1 = this;\n\n var oldH = this.height, cm = this.doc.cm, line = this.line;\n this.height = null;\n var diff = widgetHeight(this) - oldH;\n if (!diff) { return }\n if (!lineIsHidden(this.doc, line)) { updateLineHeight(line, line.height + diff); }\n if (cm) {\n runInOp(cm, function () {\n cm.curOp.forceUpdate = true;\n adjustScrollWhenAboveVisible(cm, line, diff);\n signalLater(cm, \"lineWidgetChanged\", cm, this$1, lineNo(line));\n });\n }\n };\n eventMixin(LineWidget);\n\n function adjustScrollWhenAboveVisible(cm, line, diff) {\n if (heightAtLine(line) < ((cm.curOp && cm.curOp.scrollTop) || cm.doc.scrollTop))\n { addToScrollTop(cm, diff); }\n }\n\n function addLineWidget(doc, handle, node, options) {\n var widget = new LineWidget(doc, node, options);\n var cm = doc.cm;\n if (cm && widget.noHScroll) { cm.display.alignWidgets = true; }\n changeLine(doc, handle, \"widget\", function (line) {\n var widgets = line.widgets || (line.widgets = []);\n if (widget.insertAt == null) { widgets.push(widget); }\n else { widgets.splice(Math.min(widgets.length, Math.max(0, widget.insertAt)), 0, widget); }\n widget.line = line;\n if (cm && !lineIsHidden(doc, line)) {\n var aboveVisible = heightAtLine(line) < doc.scrollTop;\n updateLineHeight(line, line.height + widgetHeight(widget));\n if (aboveVisible) { addToScrollTop(cm, widget.height); }\n cm.curOp.forceUpdate = true;\n }\n return true\n });\n if (cm) { signalLater(cm, \"lineWidgetAdded\", cm, widget, typeof handle == \"number\" ? handle : lineNo(handle)); }\n return widget\n }\n\n // TEXTMARKERS\n\n // Created with markText and setBookmark methods. A TextMarker is a\n // handle that can be used to clear or find a marked position in the\n // document. Line objects hold arrays (markedSpans) containing\n // {from, to, marker} object pointing to such marker objects, and\n // indicating that such a marker is present on that line. Multiple\n // lines may point to the same marker when it spans across lines.\n // The spans will have null for their from/to properties when the\n // marker continues beyond the start/end of the line. Markers have\n // links back to the lines they currently touch.\n\n // Collapsed markers have unique ids, in order to be able to order\n // them, which is needed for uniquely determining an outer marker\n // when they overlap (they may nest, but not partially overlap).\n var nextMarkerId = 0;\n\n var TextMarker = function(doc, type) {\n this.lines = [];\n this.type = type;\n this.doc = doc;\n this.id = ++nextMarkerId;\n };\n\n // Clear the marker.\n TextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n var cm = this.doc.cm, withOp = cm && !cm.curOp;\n if (withOp) { startOperation(cm); }\n if (hasHandler(this, \"clear\")) {\n var found = this.find();\n if (found) { signalLater(this, \"clear\", found.from, found.to); }\n }\n var min = null, max = null;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (cm && !this.collapsed) { regLineChange(cm, lineNo(line), \"text\"); }\n else if (cm) {\n if (span.to != null) { max = lineNo(line); }\n if (span.from != null) { min = lineNo(line); }\n }\n line.markedSpans = removeMarkedSpan(line.markedSpans, span);\n if (span.from == null && this.collapsed && !lineIsHidden(this.doc, line) && cm)\n { updateLineHeight(line, textHeight(cm.display)); }\n }\n if (cm && this.collapsed && !cm.options.lineWrapping) { for (var i$1 = 0; i$1 < this.lines.length; ++i$1) {\n var visual = visualLine(this.lines[i$1]), len = lineLength(visual);\n if (len > cm.display.maxLineLength) {\n cm.display.maxLine = visual;\n cm.display.maxLineLength = len;\n cm.display.maxLineChanged = true;\n }\n } }\n\n if (min != null && cm && this.collapsed) { regChange(cm, min, max + 1); }\n this.lines.length = 0;\n this.explicitlyCleared = true;\n if (this.atomic && this.doc.cantEdit) {\n this.doc.cantEdit = false;\n if (cm) { reCheckSelection(cm.doc); }\n }\n if (cm) { signalLater(cm, \"markerCleared\", cm, this, min, max); }\n if (withOp) { endOperation(cm); }\n if (this.parent) { this.parent.clear(); }\n };\n\n // Find the position of the marker in the document. Returns a {from,\n // to} object by default. Side can be passed to get a specific side\n // -- 0 (both), -1 (left), or 1 (right). When lineObj is true, the\n // Pos objects returned contain a line object, rather than a line\n // number (used to prevent looking up the same line twice).\n TextMarker.prototype.find = function (side, lineObj) {\n if (side == null && this.type == \"bookmark\") { side = 1; }\n var from, to;\n for (var i = 0; i < this.lines.length; ++i) {\n var line = this.lines[i];\n var span = getMarkedSpanFor(line.markedSpans, this);\n if (span.from != null) {\n from = Pos(lineObj ? line : lineNo(line), span.from);\n if (side == -1) { return from }\n }\n if (span.to != null) {\n to = Pos(lineObj ? line : lineNo(line), span.to);\n if (side == 1) { return to }\n }\n }\n return from && {from: from, to: to}\n };\n\n // Signals that the marker's widget changed, and surrounding layout\n // should be recomputed.\n TextMarker.prototype.changed = function () {\n var this$1 = this;\n\n var pos = this.find(-1, true), widget = this, cm = this.doc.cm;\n if (!pos || !cm) { return }\n runInOp(cm, function () {\n var line = pos.line, lineN = lineNo(pos.line);\n var view = findViewForLine(cm, lineN);\n if (view) {\n clearLineMeasurementCacheFor(view);\n cm.curOp.selectionChanged = cm.curOp.forceUpdate = true;\n }\n cm.curOp.updateMaxLine = true;\n if (!lineIsHidden(widget.doc, line) && widget.height != null) {\n var oldHeight = widget.height;\n widget.height = null;\n var dHeight = widgetHeight(widget) - oldHeight;\n if (dHeight)\n { updateLineHeight(line, line.height + dHeight); }\n }\n signalLater(cm, \"markerChanged\", cm, this$1);\n });\n };\n\n TextMarker.prototype.attachLine = function (line) {\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp;\n if (!op.maybeHiddenMarkers || indexOf(op.maybeHiddenMarkers, this) == -1)\n { (op.maybeUnhiddenMarkers || (op.maybeUnhiddenMarkers = [])).push(this); }\n }\n this.lines.push(line);\n };\n\n TextMarker.prototype.detachLine = function (line) {\n this.lines.splice(indexOf(this.lines, line), 1);\n if (!this.lines.length && this.doc.cm) {\n var op = this.doc.cm.curOp\n ;(op.maybeHiddenMarkers || (op.maybeHiddenMarkers = [])).push(this);\n }\n };\n eventMixin(TextMarker);\n\n // Create a marker, wire it up to the right lines, and\n function markText(doc, from, to, options, type) {\n // Shared markers (across linked documents) are handled separately\n // (markTextShared will call out to this again, once per\n // document).\n if (options && options.shared) { return markTextShared(doc, from, to, options, type) }\n // Ensure we are in an operation.\n if (doc.cm && !doc.cm.curOp) { return operation(doc.cm, markText)(doc, from, to, options, type) }\n\n var marker = new TextMarker(doc, type), diff = cmp(from, to);\n if (options) { copyObj(options, marker, false); }\n // Don't connect empty markers unless clearWhenEmpty is false\n if (diff > 0 || diff == 0 && marker.clearWhenEmpty !== false)\n { return marker }\n if (marker.replacedWith) {\n // Showing up as a widget implies collapsed (widget replaces text)\n marker.collapsed = true;\n marker.widgetNode = eltP(\"span\", [marker.replacedWith], \"CodeMirror-widget\");\n if (!options.handleMouseEvents) { marker.widgetNode.setAttribute(\"cm-ignore-events\", \"true\"); }\n if (options.insertLeft) { marker.widgetNode.insertLeft = true; }\n }\n if (marker.collapsed) {\n if (conflictingCollapsedRange(doc, from.line, from, to, marker) ||\n from.line != to.line && conflictingCollapsedRange(doc, to.line, from, to, marker))\n { throw new Error(\"Inserting collapsed marker partially overlapping an existing one\") }\n seeCollapsedSpans();\n }\n\n if (marker.addToHistory)\n { addChangeToHistory(doc, {from: from, to: to, origin: \"markText\"}, doc.sel, NaN); }\n\n var curLine = from.line, cm = doc.cm, updateMaxLine;\n doc.iter(curLine, to.line + 1, function (line) {\n if (cm && marker.collapsed && !cm.options.lineWrapping && visualLine(line) == cm.display.maxLine)\n { updateMaxLine = true; }\n if (marker.collapsed && curLine != from.line) { updateLineHeight(line, 0); }\n addMarkedSpan(line, new MarkedSpan(marker,\n curLine == from.line ? from.ch : null,\n curLine == to.line ? to.ch : null), doc.cm && doc.cm.curOp);\n ++curLine;\n });\n // lineIsHidden depends on the presence of the spans, so needs a second pass\n if (marker.collapsed) { doc.iter(from.line, to.line + 1, function (line) {\n if (lineIsHidden(doc, line)) { updateLineHeight(line, 0); }\n }); }\n\n if (marker.clearOnEnter) { on(marker, \"beforeCursorEnter\", function () { return marker.clear(); }); }\n\n if (marker.readOnly) {\n seeReadOnlySpans();\n if (doc.history.done.length || doc.history.undone.length)\n { doc.clearHistory(); }\n }\n if (marker.collapsed) {\n marker.id = ++nextMarkerId;\n marker.atomic = true;\n }\n if (cm) {\n // Sync editor state\n if (updateMaxLine) { cm.curOp.updateMaxLine = true; }\n if (marker.collapsed)\n { regChange(cm, from.line, to.line + 1); }\n else if (marker.className || marker.startStyle || marker.endStyle || marker.css ||\n marker.attributes || marker.title)\n { for (var i = from.line; i <= to.line; i++) { regLineChange(cm, i, \"text\"); } }\n if (marker.atomic) { reCheckSelection(cm.doc); }\n signalLater(cm, \"markerAdded\", cm, marker);\n }\n return marker\n }\n\n // SHARED TEXTMARKERS\n\n // A shared marker spans multiple linked documents. It is\n // implemented as a meta-marker-object controlling multiple normal\n // markers.\n var SharedTextMarker = function(markers, primary) {\n this.markers = markers;\n this.primary = primary;\n for (var i = 0; i < markers.length; ++i)\n { markers[i].parent = this; }\n };\n\n SharedTextMarker.prototype.clear = function () {\n if (this.explicitlyCleared) { return }\n this.explicitlyCleared = true;\n for (var i = 0; i < this.markers.length; ++i)\n { this.markers[i].clear(); }\n signalLater(this, \"clear\");\n };\n\n SharedTextMarker.prototype.find = function (side, lineObj) {\n return this.primary.find(side, lineObj)\n };\n eventMixin(SharedTextMarker);\n\n function markTextShared(doc, from, to, options, type) {\n options = copyObj(options);\n options.shared = false;\n var markers = [markText(doc, from, to, options, type)], primary = markers[0];\n var widget = options.widgetNode;\n linkedDocs(doc, function (doc) {\n if (widget) { options.widgetNode = widget.cloneNode(true); }\n markers.push(markText(doc, clipPos(doc, from), clipPos(doc, to), options, type));\n for (var i = 0; i < doc.linked.length; ++i)\n { if (doc.linked[i].isParent) { return } }\n primary = lst(markers);\n });\n return new SharedTextMarker(markers, primary)\n }\n\n function findSharedMarkers(doc) {\n return doc.findMarks(Pos(doc.first, 0), doc.clipPos(Pos(doc.lastLine())), function (m) { return m.parent; })\n }\n\n function copySharedMarkers(doc, markers) {\n for (var i = 0; i < markers.length; i++) {\n var marker = markers[i], pos = marker.find();\n var mFrom = doc.clipPos(pos.from), mTo = doc.clipPos(pos.to);\n if (cmp(mFrom, mTo)) {\n var subMark = markText(doc, mFrom, mTo, marker.primary, marker.primary.type);\n marker.markers.push(subMark);\n subMark.parent = marker;\n }\n }\n }\n\n function detachSharedMarkers(markers) {\n var loop = function ( i ) {\n var marker = markers[i], linked = [marker.primary.doc];\n linkedDocs(marker.primary.doc, function (d) { return linked.push(d); });\n for (var j = 0; j < marker.markers.length; j++) {\n var subMarker = marker.markers[j];\n if (indexOf(linked, subMarker.doc) == -1) {\n subMarker.parent = null;\n marker.markers.splice(j--, 1);\n }\n }\n };\n\n for (var i = 0; i < markers.length; i++) loop( i );\n }\n\n var nextDocId = 0;\n var Doc = function(text, mode, firstLine, lineSep, direction) {\n if (!(this instanceof Doc)) { return new Doc(text, mode, firstLine, lineSep, direction) }\n if (firstLine == null) { firstLine = 0; }\n\n BranchChunk.call(this, [new LeafChunk([new Line(\"\", null)])]);\n this.first = firstLine;\n this.scrollTop = this.scrollLeft = 0;\n this.cantEdit = false;\n this.cleanGeneration = 1;\n this.modeFrontier = this.highlightFrontier = firstLine;\n var start = Pos(firstLine, 0);\n this.sel = simpleSelection(start);\n this.history = new History(null);\n this.id = ++nextDocId;\n this.modeOption = mode;\n this.lineSep = lineSep;\n this.direction = (direction == \"rtl\") ? \"rtl\" : \"ltr\";\n this.extend = false;\n\n if (typeof text == \"string\") { text = this.splitLines(text); }\n updateDoc(this, {from: start, to: start, text: text});\n setSelection(this, simpleSelection(start), sel_dontScroll);\n };\n\n Doc.prototype = createObj(BranchChunk.prototype, {\n constructor: Doc,\n // Iterate over the document. Supports two forms -- with only one\n // argument, it calls that for each line in the document. With\n // three, it iterates over the range given by the first two (with\n // the second being non-inclusive).\n iter: function(from, to, op) {\n if (op) { this.iterN(from - this.first, to - from, op); }\n else { this.iterN(this.first, this.first + this.size, from); }\n },\n\n // Non-public interface for adding and removing lines.\n insert: function(at, lines) {\n var height = 0;\n for (var i = 0; i < lines.length; ++i) { height += lines[i].height; }\n this.insertInner(at - this.first, lines, height);\n },\n remove: function(at, n) { this.removeInner(at - this.first, n); },\n\n // From here, the methods are part of the public interface. Most\n // are also available from CodeMirror (editor) instances.\n\n getValue: function(lineSep) {\n var lines = getLines(this, this.first, this.first + this.size);\n if (lineSep === false) { return lines }\n return lines.join(lineSep || this.lineSeparator())\n },\n setValue: docMethodOp(function(code) {\n var top = Pos(this.first, 0), last = this.first + this.size - 1;\n makeChange(this, {from: top, to: Pos(last, getLine(this, last).text.length),\n text: this.splitLines(code), origin: \"setValue\", full: true}, true);\n if (this.cm) { scrollToCoords(this.cm, 0, 0); }\n setSelection(this, simpleSelection(top), sel_dontScroll);\n }),\n replaceRange: function(code, from, to, origin) {\n from = clipPos(this, from);\n to = to ? clipPos(this, to) : from;\n replaceRange(this, code, from, to, origin);\n },\n getRange: function(from, to, lineSep) {\n var lines = getBetween(this, clipPos(this, from), clipPos(this, to));\n if (lineSep === false) { return lines }\n if (lineSep === '') { return lines.join('') }\n return lines.join(lineSep || this.lineSeparator())\n },\n\n getLine: function(line) {var l = this.getLineHandle(line); return l && l.text},\n\n getLineHandle: function(line) {if (isLine(this, line)) { return getLine(this, line) }},\n getLineNumber: function(line) {return lineNo(line)},\n\n getLineHandleVisualStart: function(line) {\n if (typeof line == \"number\") { line = getLine(this, line); }\n return visualLine(line)\n },\n\n lineCount: function() {return this.size},\n firstLine: function() {return this.first},\n lastLine: function() {return this.first + this.size - 1},\n\n clipPos: function(pos) {return clipPos(this, pos)},\n\n getCursor: function(start) {\n var range = this.sel.primary(), pos;\n if (start == null || start == \"head\") { pos = range.head; }\n else if (start == \"anchor\") { pos = range.anchor; }\n else if (start == \"end\" || start == \"to\" || start === false) { pos = range.to(); }\n else { pos = range.from(); }\n return pos\n },\n listSelections: function() { return this.sel.ranges },\n somethingSelected: function() {return this.sel.somethingSelected()},\n\n setCursor: docMethodOp(function(line, ch, options) {\n setSimpleSelection(this, clipPos(this, typeof line == \"number\" ? Pos(line, ch || 0) : line), null, options);\n }),\n setSelection: docMethodOp(function(anchor, head, options) {\n setSimpleSelection(this, clipPos(this, anchor), clipPos(this, head || anchor), options);\n }),\n extendSelection: docMethodOp(function(head, other, options) {\n extendSelection(this, clipPos(this, head), other && clipPos(this, other), options);\n }),\n extendSelections: docMethodOp(function(heads, options) {\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n extendSelectionsBy: docMethodOp(function(f, options) {\n var heads = map(this.sel.ranges, f);\n extendSelections(this, clipPosArray(this, heads), options);\n }),\n setSelections: docMethodOp(function(ranges, primary, options) {\n if (!ranges.length) { return }\n var out = [];\n for (var i = 0; i < ranges.length; i++)\n { out[i] = new Range(clipPos(this, ranges[i].anchor),\n clipPos(this, ranges[i].head || ranges[i].anchor)); }\n if (primary == null) { primary = Math.min(ranges.length - 1, this.sel.primIndex); }\n setSelection(this, normalizeSelection(this.cm, out, primary), options);\n }),\n addSelection: docMethodOp(function(anchor, head, options) {\n var ranges = this.sel.ranges.slice(0);\n ranges.push(new Range(clipPos(this, anchor), clipPos(this, head || anchor)));\n setSelection(this, normalizeSelection(this.cm, ranges, ranges.length - 1), options);\n }),\n\n getSelection: function(lineSep) {\n var ranges = this.sel.ranges, lines;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n lines = lines ? lines.concat(sel) : sel;\n }\n if (lineSep === false) { return lines }\n else { return lines.join(lineSep || this.lineSeparator()) }\n },\n getSelections: function(lineSep) {\n var parts = [], ranges = this.sel.ranges;\n for (var i = 0; i < ranges.length; i++) {\n var sel = getBetween(this, ranges[i].from(), ranges[i].to());\n if (lineSep !== false) { sel = sel.join(lineSep || this.lineSeparator()); }\n parts[i] = sel;\n }\n return parts\n },\n replaceSelection: function(code, collapse, origin) {\n var dup = [];\n for (var i = 0; i < this.sel.ranges.length; i++)\n { dup[i] = code; }\n this.replaceSelections(dup, collapse, origin || \"+input\");\n },\n replaceSelections: docMethodOp(function(code, collapse, origin) {\n var changes = [], sel = this.sel;\n for (var i = 0; i < sel.ranges.length; i++) {\n var range = sel.ranges[i];\n changes[i] = {from: range.from(), to: range.to(), text: this.splitLines(code[i]), origin: origin};\n }\n var newSel = collapse && collapse != \"end\" && computeReplacedSel(this, changes, collapse);\n for (var i$1 = changes.length - 1; i$1 >= 0; i$1--)\n { makeChange(this, changes[i$1]); }\n if (newSel) { setSelectionReplaceHistory(this, newSel); }\n else if (this.cm) { ensureCursorVisible(this.cm); }\n }),\n undo: docMethodOp(function() {makeChangeFromHistory(this, \"undo\");}),\n redo: docMethodOp(function() {makeChangeFromHistory(this, \"redo\");}),\n undoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"undo\", true);}),\n redoSelection: docMethodOp(function() {makeChangeFromHistory(this, \"redo\", true);}),\n\n setExtending: function(val) {this.extend = val;},\n getExtending: function() {return this.extend},\n\n historySize: function() {\n var hist = this.history, done = 0, undone = 0;\n for (var i = 0; i < hist.done.length; i++) { if (!hist.done[i].ranges) { ++done; } }\n for (var i$1 = 0; i$1 < hist.undone.length; i$1++) { if (!hist.undone[i$1].ranges) { ++undone; } }\n return {undo: done, redo: undone}\n },\n clearHistory: function() {\n var this$1 = this;\n\n this.history = new History(this.history);\n linkedDocs(this, function (doc) { return doc.history = this$1.history; }, true);\n },\n\n markClean: function() {\n this.cleanGeneration = this.changeGeneration(true);\n },\n changeGeneration: function(forceSplit) {\n if (forceSplit)\n { this.history.lastOp = this.history.lastSelOp = this.history.lastOrigin = null; }\n return this.history.generation\n },\n isClean: function (gen) {\n return this.history.generation == (gen || this.cleanGeneration)\n },\n\n getHistory: function() {\n return {done: copyHistoryArray(this.history.done),\n undone: copyHistoryArray(this.history.undone)}\n },\n setHistory: function(histData) {\n var hist = this.history = new History(this.history);\n hist.done = copyHistoryArray(histData.done.slice(0), null, true);\n hist.undone = copyHistoryArray(histData.undone.slice(0), null, true);\n },\n\n setGutterMarker: docMethodOp(function(line, gutterID, value) {\n return changeLine(this, line, \"gutter\", function (line) {\n var markers = line.gutterMarkers || (line.gutterMarkers = {});\n markers[gutterID] = value;\n if (!value && isEmpty(markers)) { line.gutterMarkers = null; }\n return true\n })\n }),\n\n clearGutter: docMethodOp(function(gutterID) {\n var this$1 = this;\n\n this.iter(function (line) {\n if (line.gutterMarkers && line.gutterMarkers[gutterID]) {\n changeLine(this$1, line, \"gutter\", function () {\n line.gutterMarkers[gutterID] = null;\n if (isEmpty(line.gutterMarkers)) { line.gutterMarkers = null; }\n return true\n });\n }\n });\n }),\n\n lineInfo: function(line) {\n var n;\n if (typeof line == \"number\") {\n if (!isLine(this, line)) { return null }\n n = line;\n line = getLine(this, line);\n if (!line) { return null }\n } else {\n n = lineNo(line);\n if (n == null) { return null }\n }\n return {line: n, handle: line, text: line.text, gutterMarkers: line.gutterMarkers,\n textClass: line.textClass, bgClass: line.bgClass, wrapClass: line.wrapClass,\n widgets: line.widgets}\n },\n\n addLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n if (!line[prop]) { line[prop] = cls; }\n else if (classTest(cls).test(line[prop])) { return false }\n else { line[prop] += \" \" + cls; }\n return true\n })\n }),\n removeLineClass: docMethodOp(function(handle, where, cls) {\n return changeLine(this, handle, where == \"gutter\" ? \"gutter\" : \"class\", function (line) {\n var prop = where == \"text\" ? \"textClass\"\n : where == \"background\" ? \"bgClass\"\n : where == \"gutter\" ? \"gutterClass\" : \"wrapClass\";\n var cur = line[prop];\n if (!cur) { return false }\n else if (cls == null) { line[prop] = null; }\n else {\n var found = cur.match(classTest(cls));\n if (!found) { return false }\n var end = found.index + found[0].length;\n line[prop] = cur.slice(0, found.index) + (!found.index || end == cur.length ? \"\" : \" \") + cur.slice(end) || null;\n }\n return true\n })\n }),\n\n addLineWidget: docMethodOp(function(handle, node, options) {\n return addLineWidget(this, handle, node, options)\n }),\n removeLineWidget: function(widget) { widget.clear(); },\n\n markText: function(from, to, options) {\n return markText(this, clipPos(this, from), clipPos(this, to), options, options && options.type || \"range\")\n },\n setBookmark: function(pos, options) {\n var realOpts = {replacedWith: options && (options.nodeType == null ? options.widget : options),\n insertLeft: options && options.insertLeft,\n clearWhenEmpty: false, shared: options && options.shared,\n handleMouseEvents: options && options.handleMouseEvents};\n pos = clipPos(this, pos);\n return markText(this, pos, pos, realOpts, \"bookmark\")\n },\n findMarksAt: function(pos) {\n pos = clipPos(this, pos);\n var markers = [], spans = getLine(this, pos.line).markedSpans;\n if (spans) { for (var i = 0; i < spans.length; ++i) {\n var span = spans[i];\n if ((span.from == null || span.from <= pos.ch) &&\n (span.to == null || span.to >= pos.ch))\n { markers.push(span.marker.parent || span.marker); }\n } }\n return markers\n },\n findMarks: function(from, to, filter) {\n from = clipPos(this, from); to = clipPos(this, to);\n var found = [], lineNo = from.line;\n this.iter(from.line, to.line + 1, function (line) {\n var spans = line.markedSpans;\n if (spans) { for (var i = 0; i < spans.length; i++) {\n var span = spans[i];\n if (!(span.to != null && lineNo == from.line && from.ch >= span.to ||\n span.from == null && lineNo != from.line ||\n span.from != null && lineNo == to.line && span.from >= to.ch) &&\n (!filter || filter(span.marker)))\n { found.push(span.marker.parent || span.marker); }\n } }\n ++lineNo;\n });\n return found\n },\n getAllMarks: function() {\n var markers = [];\n this.iter(function (line) {\n var sps = line.markedSpans;\n if (sps) { for (var i = 0; i < sps.length; ++i)\n { if (sps[i].from != null) { markers.push(sps[i].marker); } } }\n });\n return markers\n },\n\n posFromIndex: function(off) {\n var ch, lineNo = this.first, sepSize = this.lineSeparator().length;\n this.iter(function (line) {\n var sz = line.text.length + sepSize;\n if (sz > off) { ch = off; return true }\n off -= sz;\n ++lineNo;\n });\n return clipPos(this, Pos(lineNo, ch))\n },\n indexFromPos: function (coords) {\n coords = clipPos(this, coords);\n var index = coords.ch;\n if (coords.line < this.first || coords.ch < 0) { return 0 }\n var sepSize = this.lineSeparator().length;\n this.iter(this.first, coords.line, function (line) { // iter aborts when callback returns a truthy value\n index += line.text.length + sepSize;\n });\n return index\n },\n\n copy: function(copyHistory) {\n var doc = new Doc(getLines(this, this.first, this.first + this.size),\n this.modeOption, this.first, this.lineSep, this.direction);\n doc.scrollTop = this.scrollTop; doc.scrollLeft = this.scrollLeft;\n doc.sel = this.sel;\n doc.extend = false;\n if (copyHistory) {\n doc.history.undoDepth = this.history.undoDepth;\n doc.setHistory(this.getHistory());\n }\n return doc\n },\n\n linkedDoc: function(options) {\n if (!options) { options = {}; }\n var from = this.first, to = this.first + this.size;\n if (options.from != null && options.from > from) { from = options.from; }\n if (options.to != null && options.to < to) { to = options.to; }\n var copy = new Doc(getLines(this, from, to), options.mode || this.modeOption, from, this.lineSep, this.direction);\n if (options.sharedHist) { copy.history = this.history\n ; }(this.linked || (this.linked = [])).push({doc: copy, sharedHist: options.sharedHist});\n copy.linked = [{doc: this, isParent: true, sharedHist: options.sharedHist}];\n copySharedMarkers(copy, findSharedMarkers(this));\n return copy\n },\n unlinkDoc: function(other) {\n if (other instanceof CodeMirror) { other = other.doc; }\n if (this.linked) { for (var i = 0; i < this.linked.length; ++i) {\n var link = this.linked[i];\n if (link.doc != other) { continue }\n this.linked.splice(i, 1);\n other.unlinkDoc(this);\n detachSharedMarkers(findSharedMarkers(this));\n break\n } }\n // If the histories were shared, split them again\n if (other.history == this.history) {\n var splitIds = [other.id];\n linkedDocs(other, function (doc) { return splitIds.push(doc.id); }, true);\n other.history = new History(null);\n other.history.done = copyHistoryArray(this.history.done, splitIds);\n other.history.undone = copyHistoryArray(this.history.undone, splitIds);\n }\n },\n iterLinkedDocs: function(f) {linkedDocs(this, f);},\n\n getMode: function() {return this.mode},\n getEditor: function() {return this.cm},\n\n splitLines: function(str) {\n if (this.lineSep) { return str.split(this.lineSep) }\n return splitLinesAuto(str)\n },\n lineSeparator: function() { return this.lineSep || \"\\n\" },\n\n setDirection: docMethodOp(function (dir) {\n if (dir != \"rtl\") { dir = \"ltr\"; }\n if (dir == this.direction) { return }\n this.direction = dir;\n this.iter(function (line) { return line.order = null; });\n if (this.cm) { directionChanged(this.cm); }\n })\n });\n\n // Public alias.\n Doc.prototype.eachLine = Doc.prototype.iter;\n\n // Kludge to work around strange IE behavior where it'll sometimes\n // re-fire a series of drag-related events right after the drop (#1551)\n var lastDrop = 0;\n\n function onDrop(e) {\n var cm = this;\n clearDragCursor(cm);\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e))\n { return }\n e_preventDefault(e);\n if (ie) { lastDrop = +new Date; }\n var pos = posFromMouse(cm, e, true), files = e.dataTransfer.files;\n if (!pos || cm.isReadOnly()) { return }\n // Might be a file drop, in which case we simply extract the text\n // and insert it.\n if (files && files.length && window.FileReader && window.File) {\n var n = files.length, text = Array(n), read = 0;\n var markAsReadAndPasteIfAllFilesAreRead = function () {\n if (++read == n) {\n operation(cm, function () {\n pos = clipPos(cm.doc, pos);\n var change = {from: pos, to: pos,\n text: cm.doc.splitLines(\n text.filter(function (t) { return t != null; }).join(cm.doc.lineSeparator())),\n origin: \"paste\"};\n makeChange(cm.doc, change);\n setSelectionReplaceHistory(cm.doc, simpleSelection(clipPos(cm.doc, pos), clipPos(cm.doc, changeEnd(change))));\n })();\n }\n };\n var readTextFromFile = function (file, i) {\n if (cm.options.allowDropFileTypes &&\n indexOf(cm.options.allowDropFileTypes, file.type) == -1) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n var reader = new FileReader;\n reader.onerror = function () { return markAsReadAndPasteIfAllFilesAreRead(); };\n reader.onload = function () {\n var content = reader.result;\n if (/[\\x00-\\x08\\x0e-\\x1f]{2}/.test(content)) {\n markAsReadAndPasteIfAllFilesAreRead();\n return\n }\n text[i] = content;\n markAsReadAndPasteIfAllFilesAreRead();\n };\n reader.readAsText(file);\n };\n for (var i = 0; i < files.length; i++) { readTextFromFile(files[i], i); }\n } else { // Normal drop\n // Don't do a replace if the drop happened inside of the selected text.\n if (cm.state.draggingText && cm.doc.sel.contains(pos) > -1) {\n cm.state.draggingText(e);\n // Ensure the editor is re-focused\n setTimeout(function () { return cm.display.input.focus(); }, 20);\n return\n }\n try {\n var text$1 = e.dataTransfer.getData(\"Text\");\n if (text$1) {\n var selected;\n if (cm.state.draggingText && !cm.state.draggingText.copy)\n { selected = cm.listSelections(); }\n setSelectionNoUndo(cm.doc, simpleSelection(pos, pos));\n if (selected) { for (var i$1 = 0; i$1 < selected.length; ++i$1)\n { replaceRange(cm.doc, \"\", selected[i$1].anchor, selected[i$1].head, \"drag\"); } }\n cm.replaceSelection(text$1, \"around\", \"paste\");\n cm.display.input.focus();\n }\n }\n catch(e$1){}\n }\n }\n\n function onDragStart(cm, e) {\n if (ie && (!cm.state.draggingText || +new Date - lastDrop < 100)) { e_stop(e); return }\n if (signalDOMEvent(cm, e) || eventInWidget(cm.display, e)) { return }\n\n e.dataTransfer.setData(\"Text\", cm.getSelection());\n e.dataTransfer.effectAllowed = \"copyMove\";\n\n // Use dummy image instead of default browsers image.\n // Recent Safari (~6.0.2) have a tendency to segfault when this happens, so we don't do it there.\n if (e.dataTransfer.setDragImage && !safari) {\n var img = elt(\"img\", null, null, \"position: fixed; left: 0; top: 0;\");\n img.src = \"data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\";\n if (presto) {\n img.width = img.height = 1;\n cm.display.wrapper.appendChild(img);\n // Force a relayout, or Opera won't use our image for some obscure reason\n img._top = img.offsetTop;\n }\n e.dataTransfer.setDragImage(img, 0, 0);\n if (presto) { img.parentNode.removeChild(img); }\n }\n }\n\n function onDragOver(cm, e) {\n var pos = posFromMouse(cm, e);\n if (!pos) { return }\n var frag = document.createDocumentFragment();\n drawSelectionCursor(cm, pos, frag);\n if (!cm.display.dragCursor) {\n cm.display.dragCursor = elt(\"div\", null, \"CodeMirror-cursors CodeMirror-dragcursors\");\n cm.display.lineSpace.insertBefore(cm.display.dragCursor, cm.display.cursorDiv);\n }\n removeChildrenAndAdd(cm.display.dragCursor, frag);\n }\n\n function clearDragCursor(cm) {\n if (cm.display.dragCursor) {\n cm.display.lineSpace.removeChild(cm.display.dragCursor);\n cm.display.dragCursor = null;\n }\n }\n\n // These must be handled carefully, because naively registering a\n // handler for each editor will cause the editors to never be\n // garbage collected.\n\n function forEachCodeMirror(f) {\n if (!document.getElementsByClassName) { return }\n var byClass = document.getElementsByClassName(\"CodeMirror\"), editors = [];\n for (var i = 0; i < byClass.length; i++) {\n var cm = byClass[i].CodeMirror;\n if (cm) { editors.push(cm); }\n }\n if (editors.length) { editors[0].operation(function () {\n for (var i = 0; i < editors.length; i++) { f(editors[i]); }\n }); }\n }\n\n var globalsRegistered = false;\n function ensureGlobalHandlers() {\n if (globalsRegistered) { return }\n registerGlobalHandlers();\n globalsRegistered = true;\n }\n function registerGlobalHandlers() {\n // When the window resizes, we need to refresh active editors.\n var resizeTimer;\n on(window, \"resize\", function () {\n if (resizeTimer == null) { resizeTimer = setTimeout(function () {\n resizeTimer = null;\n forEachCodeMirror(onResize);\n }, 100); }\n });\n // When the window loses focus, we want to show the editor as blurred\n on(window, \"blur\", function () { return forEachCodeMirror(onBlur); });\n }\n // Called when the window resizes\n function onResize(cm) {\n var d = cm.display;\n // Might be a text scaling operation, clear size caches.\n d.cachedCharWidth = d.cachedTextHeight = d.cachedPaddingH = null;\n d.scrollbarsClipped = false;\n cm.setSize();\n }\n\n var keyNames = {\n 3: \"Pause\", 8: \"Backspace\", 9: \"Tab\", 13: \"Enter\", 16: \"Shift\", 17: \"Ctrl\", 18: \"Alt\",\n 19: \"Pause\", 20: \"CapsLock\", 27: \"Esc\", 32: \"Space\", 33: \"PageUp\", 34: \"PageDown\", 35: \"End\",\n 36: \"Home\", 37: \"Left\", 38: \"Up\", 39: \"Right\", 40: \"Down\", 44: \"PrintScrn\", 45: \"Insert\",\n 46: \"Delete\", 59: \";\", 61: \"=\", 91: \"Mod\", 92: \"Mod\", 93: \"Mod\",\n 106: \"*\", 107: \"=\", 109: \"-\", 110: \".\", 111: \"/\", 145: \"ScrollLock\",\n 173: \"-\", 186: \";\", 187: \"=\", 188: \",\", 189: \"-\", 190: \".\", 191: \"/\", 192: \"`\", 219: \"[\", 220: \"\\\\\",\n 221: \"]\", 222: \"'\", 224: \"Mod\", 63232: \"Up\", 63233: \"Down\", 63234: \"Left\", 63235: \"Right\", 63272: \"Delete\",\n 63273: \"Home\", 63275: \"End\", 63276: \"PageUp\", 63277: \"PageDown\", 63302: \"Insert\"\n };\n\n // Number keys\n for (var i = 0; i < 10; i++) { keyNames[i + 48] = keyNames[i + 96] = String(i); }\n // Alphabetic keys\n for (var i$1 = 65; i$1 <= 90; i$1++) { keyNames[i$1] = String.fromCharCode(i$1); }\n // Function keys\n for (var i$2 = 1; i$2 <= 12; i$2++) { keyNames[i$2 + 111] = keyNames[i$2 + 63235] = \"F\" + i$2; }\n\n var keyMap = {};\n\n keyMap.basic = {\n \"Left\": \"goCharLeft\", \"Right\": \"goCharRight\", \"Up\": \"goLineUp\", \"Down\": \"goLineDown\",\n \"End\": \"goLineEnd\", \"Home\": \"goLineStartSmart\", \"PageUp\": \"goPageUp\", \"PageDown\": \"goPageDown\",\n \"Delete\": \"delCharAfter\", \"Backspace\": \"delCharBefore\", \"Shift-Backspace\": \"delCharBefore\",\n \"Tab\": \"defaultTab\", \"Shift-Tab\": \"indentAuto\",\n \"Enter\": \"newlineAndIndent\", \"Insert\": \"toggleOverwrite\",\n \"Esc\": \"singleSelection\"\n };\n // Note that the save and find-related commands aren't defined by\n // default. User code or addons can define them. Unknown commands\n // are simply ignored.\n keyMap.pcDefault = {\n \"Ctrl-A\": \"selectAll\", \"Ctrl-D\": \"deleteLine\", \"Ctrl-Z\": \"undo\", \"Shift-Ctrl-Z\": \"redo\", \"Ctrl-Y\": \"redo\",\n \"Ctrl-Home\": \"goDocStart\", \"Ctrl-End\": \"goDocEnd\", \"Ctrl-Up\": \"goLineUp\", \"Ctrl-Down\": \"goLineDown\",\n \"Ctrl-Left\": \"goGroupLeft\", \"Ctrl-Right\": \"goGroupRight\", \"Alt-Left\": \"goLineStart\", \"Alt-Right\": \"goLineEnd\",\n \"Ctrl-Backspace\": \"delGroupBefore\", \"Ctrl-Delete\": \"delGroupAfter\", \"Ctrl-S\": \"save\", \"Ctrl-F\": \"find\",\n \"Ctrl-G\": \"findNext\", \"Shift-Ctrl-G\": \"findPrev\", \"Shift-Ctrl-F\": \"replace\", \"Shift-Ctrl-R\": \"replaceAll\",\n \"Ctrl-[\": \"indentLess\", \"Ctrl-]\": \"indentMore\",\n \"Ctrl-U\": \"undoSelection\", \"Shift-Ctrl-U\": \"redoSelection\", \"Alt-U\": \"redoSelection\",\n \"fallthrough\": \"basic\"\n };\n // Very basic readline/emacs-style bindings, which are standard on Mac.\n keyMap.emacsy = {\n \"Ctrl-F\": \"goCharRight\", \"Ctrl-B\": \"goCharLeft\", \"Ctrl-P\": \"goLineUp\", \"Ctrl-N\": \"goLineDown\",\n \"Ctrl-A\": \"goLineStart\", \"Ctrl-E\": \"goLineEnd\", \"Ctrl-V\": \"goPageDown\", \"Shift-Ctrl-V\": \"goPageUp\",\n \"Ctrl-D\": \"delCharAfter\", \"Ctrl-H\": \"delCharBefore\", \"Alt-Backspace\": \"delWordBefore\", \"Ctrl-K\": \"killLine\",\n \"Ctrl-T\": \"transposeChars\", \"Ctrl-O\": \"openLine\"\n };\n keyMap.macDefault = {\n \"Cmd-A\": \"selectAll\", \"Cmd-D\": \"deleteLine\", \"Cmd-Z\": \"undo\", \"Shift-Cmd-Z\": \"redo\", \"Cmd-Y\": \"redo\",\n \"Cmd-Home\": \"goDocStart\", \"Cmd-Up\": \"goDocStart\", \"Cmd-End\": \"goDocEnd\", \"Cmd-Down\": \"goDocEnd\", \"Alt-Left\": \"goGroupLeft\",\n \"Alt-Right\": \"goGroupRight\", \"Cmd-Left\": \"goLineLeft\", \"Cmd-Right\": \"goLineRight\", \"Alt-Backspace\": \"delGroupBefore\",\n \"Ctrl-Alt-Backspace\": \"delGroupAfter\", \"Alt-Delete\": \"delGroupAfter\", \"Cmd-S\": \"save\", \"Cmd-F\": \"find\",\n \"Cmd-G\": \"findNext\", \"Shift-Cmd-G\": \"findPrev\", \"Cmd-Alt-F\": \"replace\", \"Shift-Cmd-Alt-F\": \"replaceAll\",\n \"Cmd-[\": \"indentLess\", \"Cmd-]\": \"indentMore\", \"Cmd-Backspace\": \"delWrappedLineLeft\", \"Cmd-Delete\": \"delWrappedLineRight\",\n \"Cmd-U\": \"undoSelection\", \"Shift-Cmd-U\": \"redoSelection\", \"Ctrl-Up\": \"goDocStart\", \"Ctrl-Down\": \"goDocEnd\",\n \"fallthrough\": [\"basic\", \"emacsy\"]\n };\n keyMap[\"default\"] = mac ? keyMap.macDefault : keyMap.pcDefault;\n\n // KEYMAP DISPATCH\n\n function normalizeKeyName(name) {\n var parts = name.split(/-(?!$)/);\n name = parts[parts.length - 1];\n var alt, ctrl, shift, cmd;\n for (var i = 0; i < parts.length - 1; i++) {\n var mod = parts[i];\n if (/^(cmd|meta|m)$/i.test(mod)) { cmd = true; }\n else if (/^a(lt)?$/i.test(mod)) { alt = true; }\n else if (/^(c|ctrl|control)$/i.test(mod)) { ctrl = true; }\n else if (/^s(hift)?$/i.test(mod)) { shift = true; }\n else { throw new Error(\"Unrecognized modifier name: \" + mod) }\n }\n if (alt) { name = \"Alt-\" + name; }\n if (ctrl) { name = \"Ctrl-\" + name; }\n if (cmd) { name = \"Cmd-\" + name; }\n if (shift) { name = \"Shift-\" + name; }\n return name\n }\n\n // This is a kludge to keep keymaps mostly working as raw objects\n // (backwards compatibility) while at the same time support features\n // like normalization and multi-stroke key bindings. It compiles a\n // new normalized keymap, and then updates the old object to reflect\n // this.\n function normalizeKeyMap(keymap) {\n var copy = {};\n for (var keyname in keymap) { if (keymap.hasOwnProperty(keyname)) {\n var value = keymap[keyname];\n if (/^(name|fallthrough|(de|at)tach)$/.test(keyname)) { continue }\n if (value == \"...\") { delete keymap[keyname]; continue }\n\n var keys = map(keyname.split(\" \"), normalizeKeyName);\n for (var i = 0; i < keys.length; i++) {\n var val = (void 0), name = (void 0);\n if (i == keys.length - 1) {\n name = keys.join(\" \");\n val = value;\n } else {\n name = keys.slice(0, i + 1).join(\" \");\n val = \"...\";\n }\n var prev = copy[name];\n if (!prev) { copy[name] = val; }\n else if (prev != val) { throw new Error(\"Inconsistent bindings for \" + name) }\n }\n delete keymap[keyname];\n } }\n for (var prop in copy) { keymap[prop] = copy[prop]; }\n return keymap\n }\n\n function lookupKey(key, map, handle, context) {\n map = getKeyMap(map);\n var found = map.call ? map.call(key, context) : map[key];\n if (found === false) { return \"nothing\" }\n if (found === \"...\") { return \"multi\" }\n if (found != null && handle(found)) { return \"handled\" }\n\n if (map.fallthrough) {\n if (Object.prototype.toString.call(map.fallthrough) != \"[object Array]\")\n { return lookupKey(key, map.fallthrough, handle, context) }\n for (var i = 0; i < map.fallthrough.length; i++) {\n var result = lookupKey(key, map.fallthrough[i], handle, context);\n if (result) { return result }\n }\n }\n }\n\n // Modifier key presses don't count as 'real' key presses for the\n // purpose of keymap fallthrough.\n function isModifierKey(value) {\n var name = typeof value == \"string\" ? value : keyNames[value.keyCode];\n return name == \"Ctrl\" || name == \"Alt\" || name == \"Shift\" || name == \"Mod\"\n }\n\n function addModifierNames(name, event, noShift) {\n var base = name;\n if (event.altKey && base != \"Alt\") { name = \"Alt-\" + name; }\n if ((flipCtrlCmd ? event.metaKey : event.ctrlKey) && base != \"Ctrl\") { name = \"Ctrl-\" + name; }\n if ((flipCtrlCmd ? event.ctrlKey : event.metaKey) && base != \"Mod\") { name = \"Cmd-\" + name; }\n if (!noShift && event.shiftKey && base != \"Shift\") { name = \"Shift-\" + name; }\n return name\n }\n\n // Look up the name of a key as indicated by an event object.\n function keyName(event, noShift) {\n if (presto && event.keyCode == 34 && event[\"char\"]) { return false }\n var name = keyNames[event.keyCode];\n if (name == null || event.altGraphKey) { return false }\n // Ctrl-ScrollLock has keyCode 3, same as Ctrl-Pause,\n // so we'll use event.code when available (Chrome 48+, FF 38+, Safari 10.1+)\n if (event.keyCode == 3 && event.code) { name = event.code; }\n return addModifierNames(name, event, noShift)\n }\n\n function getKeyMap(val) {\n return typeof val == \"string\" ? keyMap[val] : val\n }\n\n // Helper for deleting text near the selection(s), used to implement\n // backspace, delete, and similar functionality.\n function deleteNearSelection(cm, compute) {\n var ranges = cm.doc.sel.ranges, kill = [];\n // Build up a set of ranges to kill first, merging overlapping\n // ranges.\n for (var i = 0; i < ranges.length; i++) {\n var toKill = compute(ranges[i]);\n while (kill.length && cmp(toKill.from, lst(kill).to) <= 0) {\n var replaced = kill.pop();\n if (cmp(replaced.from, toKill.from) < 0) {\n toKill.from = replaced.from;\n break\n }\n }\n kill.push(toKill);\n }\n // Next, remove those actual ranges.\n runInOp(cm, function () {\n for (var i = kill.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, \"\", kill[i].from, kill[i].to, \"+delete\"); }\n ensureCursorVisible(cm);\n });\n }\n\n function moveCharLogically(line, ch, dir) {\n var target = skipExtendingChars(line.text, ch + dir, dir);\n return target < 0 || target > line.text.length ? null : target\n }\n\n function moveLogically(line, start, dir) {\n var ch = moveCharLogically(line, start.ch, dir);\n return ch == null ? null : new Pos(start.line, ch, dir < 0 ? \"after\" : \"before\")\n }\n\n function endOfLine(visually, cm, lineObj, lineNo, dir) {\n if (visually) {\n if (cm.doc.direction == \"rtl\") { dir = -dir; }\n var order = getOrder(lineObj, cm.doc.direction);\n if (order) {\n var part = dir < 0 ? lst(order) : order[0];\n var moveInStorageOrder = (dir < 0) == (part.level == 1);\n var sticky = moveInStorageOrder ? \"after\" : \"before\";\n var ch;\n // With a wrapped rtl chunk (possibly spanning multiple bidi parts),\n // it could be that the last bidi part is not on the last visual line,\n // since visual lines contain content order-consecutive chunks.\n // Thus, in rtl, we are looking for the first (content-order) character\n // in the rtl chunk that is on the last line (that is, the same line\n // as the last (content-order) character).\n if (part.level > 0 || cm.doc.direction == \"rtl\") {\n var prep = prepareMeasureForLine(cm, lineObj);\n ch = dir < 0 ? lineObj.text.length - 1 : 0;\n var targetTop = measureCharPrepared(cm, prep, ch).top;\n ch = findFirst(function (ch) { return measureCharPrepared(cm, prep, ch).top == targetTop; }, (dir < 0) == (part.level == 1) ? part.from : part.to - 1, ch);\n if (sticky == \"before\") { ch = moveCharLogically(lineObj, ch, 1); }\n } else { ch = dir < 0 ? part.to : part.from; }\n return new Pos(lineNo, ch, sticky)\n }\n }\n return new Pos(lineNo, dir < 0 ? lineObj.text.length : 0, dir < 0 ? \"before\" : \"after\")\n }\n\n function moveVisually(cm, line, start, dir) {\n var bidi = getOrder(line, cm.doc.direction);\n if (!bidi) { return moveLogically(line, start, dir) }\n if (start.ch >= line.text.length) {\n start.ch = line.text.length;\n start.sticky = \"before\";\n } else if (start.ch <= 0) {\n start.ch = 0;\n start.sticky = \"after\";\n }\n var partPos = getBidiPartAt(bidi, start.ch, start.sticky), part = bidi[partPos];\n if (cm.doc.direction == \"ltr\" && part.level % 2 == 0 && (dir > 0 ? part.to > start.ch : part.from < start.ch)) {\n // Case 1: We move within an ltr part in an ltr editor. Even with wrapped lines,\n // nothing interesting happens.\n return moveLogically(line, start, dir)\n }\n\n var mv = function (pos, dir) { return moveCharLogically(line, pos instanceof Pos ? pos.ch : pos, dir); };\n var prep;\n var getWrappedLineExtent = function (ch) {\n if (!cm.options.lineWrapping) { return {begin: 0, end: line.text.length} }\n prep = prep || prepareMeasureForLine(cm, line);\n return wrappedLineExtentChar(cm, line, prep, ch)\n };\n var wrappedLineExtent = getWrappedLineExtent(start.sticky == \"before\" ? mv(start, -1) : start.ch);\n\n if (cm.doc.direction == \"rtl\" || part.level == 1) {\n var moveInStorageOrder = (part.level == 1) == (dir < 0);\n var ch = mv(start, moveInStorageOrder ? 1 : -1);\n if (ch != null && (!moveInStorageOrder ? ch >= part.from && ch >= wrappedLineExtent.begin : ch <= part.to && ch <= wrappedLineExtent.end)) {\n // Case 2: We move within an rtl part or in an rtl editor on the same visual line\n var sticky = moveInStorageOrder ? \"before\" : \"after\";\n return new Pos(start.line, ch, sticky)\n }\n }\n\n // Case 3: Could not move within this bidi part in this visual line, so leave\n // the current bidi part\n\n var searchInVisualLine = function (partPos, dir, wrappedLineExtent) {\n var getRes = function (ch, moveInStorageOrder) { return moveInStorageOrder\n ? new Pos(start.line, mv(ch, 1), \"before\")\n : new Pos(start.line, ch, \"after\"); };\n\n for (; partPos >= 0 && partPos < bidi.length; partPos += dir) {\n var part = bidi[partPos];\n var moveInStorageOrder = (dir > 0) == (part.level != 1);\n var ch = moveInStorageOrder ? wrappedLineExtent.begin : mv(wrappedLineExtent.end, -1);\n if (part.from <= ch && ch < part.to) { return getRes(ch, moveInStorageOrder) }\n ch = moveInStorageOrder ? part.from : mv(part.to, -1);\n if (wrappedLineExtent.begin <= ch && ch < wrappedLineExtent.end) { return getRes(ch, moveInStorageOrder) }\n }\n };\n\n // Case 3a: Look for other bidi parts on the same visual line\n var res = searchInVisualLine(partPos + dir, dir, wrappedLineExtent);\n if (res) { return res }\n\n // Case 3b: Look for other bidi parts on the next visual line\n var nextCh = dir > 0 ? wrappedLineExtent.end : mv(wrappedLineExtent.begin, -1);\n if (nextCh != null && !(dir > 0 && nextCh == line.text.length)) {\n res = searchInVisualLine(dir > 0 ? 0 : bidi.length - 1, dir, getWrappedLineExtent(nextCh));\n if (res) { return res }\n }\n\n // Case 4: Nowhere to move\n return null\n }\n\n // Commands are parameter-less actions that can be performed on an\n // editor, mostly used for keybindings.\n var commands = {\n selectAll: selectAll,\n singleSelection: function (cm) { return cm.setSelection(cm.getCursor(\"anchor\"), cm.getCursor(\"head\"), sel_dontScroll); },\n killLine: function (cm) { return deleteNearSelection(cm, function (range) {\n if (range.empty()) {\n var len = getLine(cm.doc, range.head.line).text.length;\n if (range.head.ch == len && range.head.line < cm.lastLine())\n { return {from: range.head, to: Pos(range.head.line + 1, 0)} }\n else\n { return {from: range.head, to: Pos(range.head.line, len)} }\n } else {\n return {from: range.from(), to: range.to()}\n }\n }); },\n deleteLine: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0),\n to: clipPos(cm.doc, Pos(range.to().line + 1, 0))\n }); }); },\n delLineLeft: function (cm) { return deleteNearSelection(cm, function (range) { return ({\n from: Pos(range.from().line, 0), to: range.from()\n }); }); },\n delWrappedLineLeft: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var leftPos = cm.coordsChar({left: 0, top: top}, \"div\");\n return {from: leftPos, to: range.from()}\n }); },\n delWrappedLineRight: function (cm) { return deleteNearSelection(cm, function (range) {\n var top = cm.charCoords(range.head, \"div\").top + 5;\n var rightPos = cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\");\n return {from: range.from(), to: rightPos }\n }); },\n undo: function (cm) { return cm.undo(); },\n redo: function (cm) { return cm.redo(); },\n undoSelection: function (cm) { return cm.undoSelection(); },\n redoSelection: function (cm) { return cm.redoSelection(); },\n goDocStart: function (cm) { return cm.extendSelection(Pos(cm.firstLine(), 0)); },\n goDocEnd: function (cm) { return cm.extendSelection(Pos(cm.lastLine())); },\n goLineStart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStart(cm, range.head.line); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineStartSmart: function (cm) { return cm.extendSelectionsBy(function (range) { return lineStartSmart(cm, range.head); },\n {origin: \"+move\", bias: 1}\n ); },\n goLineEnd: function (cm) { return cm.extendSelectionsBy(function (range) { return lineEnd(cm, range.head.line); },\n {origin: \"+move\", bias: -1}\n ); },\n goLineRight: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: cm.display.lineDiv.offsetWidth + 100, top: top}, \"div\")\n }, sel_move); },\n goLineLeft: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n return cm.coordsChar({left: 0, top: top}, \"div\")\n }, sel_move); },\n goLineLeftSmart: function (cm) { return cm.extendSelectionsBy(function (range) {\n var top = cm.cursorCoords(range.head, \"div\").top + 5;\n var pos = cm.coordsChar({left: 0, top: top}, \"div\");\n if (pos.ch < cm.getLine(pos.line).search(/\\S/)) { return lineStartSmart(cm, range.head) }\n return pos\n }, sel_move); },\n goLineUp: function (cm) { return cm.moveV(-1, \"line\"); },\n goLineDown: function (cm) { return cm.moveV(1, \"line\"); },\n goPageUp: function (cm) { return cm.moveV(-1, \"page\"); },\n goPageDown: function (cm) { return cm.moveV(1, \"page\"); },\n goCharLeft: function (cm) { return cm.moveH(-1, \"char\"); },\n goCharRight: function (cm) { return cm.moveH(1, \"char\"); },\n goColumnLeft: function (cm) { return cm.moveH(-1, \"column\"); },\n goColumnRight: function (cm) { return cm.moveH(1, \"column\"); },\n goWordLeft: function (cm) { return cm.moveH(-1, \"word\"); },\n goGroupRight: function (cm) { return cm.moveH(1, \"group\"); },\n goGroupLeft: function (cm) { return cm.moveH(-1, \"group\"); },\n goWordRight: function (cm) { return cm.moveH(1, \"word\"); },\n delCharBefore: function (cm) { return cm.deleteH(-1, \"codepoint\"); },\n delCharAfter: function (cm) { return cm.deleteH(1, \"char\"); },\n delWordBefore: function (cm) { return cm.deleteH(-1, \"word\"); },\n delWordAfter: function (cm) { return cm.deleteH(1, \"word\"); },\n delGroupBefore: function (cm) { return cm.deleteH(-1, \"group\"); },\n delGroupAfter: function (cm) { return cm.deleteH(1, \"group\"); },\n indentAuto: function (cm) { return cm.indentSelection(\"smart\"); },\n indentMore: function (cm) { return cm.indentSelection(\"add\"); },\n indentLess: function (cm) { return cm.indentSelection(\"subtract\"); },\n insertTab: function (cm) { return cm.replaceSelection(\"\\t\"); },\n insertSoftTab: function (cm) {\n var spaces = [], ranges = cm.listSelections(), tabSize = cm.options.tabSize;\n for (var i = 0; i < ranges.length; i++) {\n var pos = ranges[i].from();\n var col = countColumn(cm.getLine(pos.line), pos.ch, tabSize);\n spaces.push(spaceStr(tabSize - col % tabSize));\n }\n cm.replaceSelections(spaces);\n },\n defaultTab: function (cm) {\n if (cm.somethingSelected()) { cm.indentSelection(\"add\"); }\n else { cm.execCommand(\"insertTab\"); }\n },\n // Swap the two chars left and right of each selection's head.\n // Move cursor behind the two swapped characters afterwards.\n //\n // Doesn't consider line feeds a character.\n // Doesn't scan more than one line above to find a character.\n // Doesn't do anything on an empty line.\n // Doesn't do anything with non-empty selections.\n transposeChars: function (cm) { return runInOp(cm, function () {\n var ranges = cm.listSelections(), newSel = [];\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) { continue }\n var cur = ranges[i].head, line = getLine(cm.doc, cur.line).text;\n if (line) {\n if (cur.ch == line.length) { cur = new Pos(cur.line, cur.ch - 1); }\n if (cur.ch > 0) {\n cur = new Pos(cur.line, cur.ch + 1);\n cm.replaceRange(line.charAt(cur.ch - 1) + line.charAt(cur.ch - 2),\n Pos(cur.line, cur.ch - 2), cur, \"+transpose\");\n } else if (cur.line > cm.doc.first) {\n var prev = getLine(cm.doc, cur.line - 1).text;\n if (prev) {\n cur = new Pos(cur.line, 1);\n cm.replaceRange(line.charAt(0) + cm.doc.lineSeparator() +\n prev.charAt(prev.length - 1),\n Pos(cur.line - 1, prev.length - 1), cur, \"+transpose\");\n }\n }\n }\n newSel.push(new Range(cur, cur));\n }\n cm.setSelections(newSel);\n }); },\n newlineAndIndent: function (cm) { return runInOp(cm, function () {\n var sels = cm.listSelections();\n for (var i = sels.length - 1; i >= 0; i--)\n { cm.replaceRange(cm.doc.lineSeparator(), sels[i].anchor, sels[i].head, \"+input\"); }\n sels = cm.listSelections();\n for (var i$1 = 0; i$1 < sels.length; i$1++)\n { cm.indentLine(sels[i$1].from().line, null, true); }\n ensureCursorVisible(cm);\n }); },\n openLine: function (cm) { return cm.replaceSelection(\"\\n\", \"start\"); },\n toggleOverwrite: function (cm) { return cm.toggleOverwrite(); }\n };\n\n\n function lineStart(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLine(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, visual, lineN, 1)\n }\n function lineEnd(cm, lineN) {\n var line = getLine(cm.doc, lineN);\n var visual = visualLineEnd(line);\n if (visual != line) { lineN = lineNo(visual); }\n return endOfLine(true, cm, line, lineN, -1)\n }\n function lineStartSmart(cm, pos) {\n var start = lineStart(cm, pos.line);\n var line = getLine(cm.doc, start.line);\n var order = getOrder(line, cm.doc.direction);\n if (!order || order[0].level == 0) {\n var firstNonWS = Math.max(start.ch, line.text.search(/\\S/));\n var inWS = pos.line == start.line && pos.ch <= firstNonWS && pos.ch;\n return Pos(start.line, inWS ? 0 : firstNonWS, start.sticky)\n }\n return start\n }\n\n // Run a handler that was bound to a key.\n function doHandleBinding(cm, bound, dropShift) {\n if (typeof bound == \"string\") {\n bound = commands[bound];\n if (!bound) { return false }\n }\n // Ensure previous input has been read, so that the handler sees a\n // consistent view of the document\n cm.display.input.ensurePolled();\n var prevShift = cm.display.shift, done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n if (dropShift) { cm.display.shift = false; }\n done = bound(cm) != Pass;\n } finally {\n cm.display.shift = prevShift;\n cm.state.suppressEdits = false;\n }\n return done\n }\n\n function lookupKeyForEditor(cm, name, handle) {\n for (var i = 0; i < cm.state.keyMaps.length; i++) {\n var result = lookupKey(name, cm.state.keyMaps[i], handle, cm);\n if (result) { return result }\n }\n return (cm.options.extraKeys && lookupKey(name, cm.options.extraKeys, handle, cm))\n || lookupKey(name, cm.options.keyMap, handle, cm)\n }\n\n // Note that, despite the name, this function is also used to check\n // for bound mouse clicks.\n\n var stopSeq = new Delayed;\n\n function dispatchKey(cm, name, e, handle) {\n var seq = cm.state.keySeq;\n if (seq) {\n if (isModifierKey(name)) { return \"handled\" }\n if (/\\'$/.test(name))\n { cm.state.keySeq = null; }\n else\n { stopSeq.set(50, function () {\n if (cm.state.keySeq == seq) {\n cm.state.keySeq = null;\n cm.display.input.reset();\n }\n }); }\n if (dispatchKeyInner(cm, seq + \" \" + name, e, handle)) { return true }\n }\n return dispatchKeyInner(cm, name, e, handle)\n }\n\n function dispatchKeyInner(cm, name, e, handle) {\n var result = lookupKeyForEditor(cm, name, handle);\n\n if (result == \"multi\")\n { cm.state.keySeq = name; }\n if (result == \"handled\")\n { signalLater(cm, \"keyHandled\", cm, name, e); }\n\n if (result == \"handled\" || result == \"multi\") {\n e_preventDefault(e);\n restartBlink(cm);\n }\n\n return !!result\n }\n\n // Handle a key from the keydown event.\n function handleKeyBinding(cm, e) {\n var name = keyName(e, true);\n if (!name) { return false }\n\n if (e.shiftKey && !cm.state.keySeq) {\n // First try to resolve full name (including 'Shift-'). Failing\n // that, see if there is a cursor-motion command (starting with\n // 'go') bound to the keyname without 'Shift-'.\n return dispatchKey(cm, \"Shift-\" + name, e, function (b) { return doHandleBinding(cm, b, true); })\n || dispatchKey(cm, name, e, function (b) {\n if (typeof b == \"string\" ? /^go[A-Z]/.test(b) : b.motion)\n { return doHandleBinding(cm, b) }\n })\n } else {\n return dispatchKey(cm, name, e, function (b) { return doHandleBinding(cm, b); })\n }\n }\n\n // Handle a key from the keypress event\n function handleCharBinding(cm, e, ch) {\n return dispatchKey(cm, \"'\" + ch + \"'\", e, function (b) { return doHandleBinding(cm, b, true); })\n }\n\n var lastStoppedKey = null;\n function onKeyDown(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n cm.curOp.focus = activeElt();\n if (signalDOMEvent(cm, e)) { return }\n // IE does strange things with escape.\n if (ie && ie_version < 11 && e.keyCode == 27) { e.returnValue = false; }\n var code = e.keyCode;\n cm.display.shift = code == 16 || e.shiftKey;\n var handled = handleKeyBinding(cm, e);\n if (presto) {\n lastStoppedKey = handled ? code : null;\n // Opera has no cut event... we try to at least catch the key combo\n if (!handled && code == 88 && !hasCopyEvent && (mac ? e.metaKey : e.ctrlKey))\n { cm.replaceSelection(\"\", null, \"cut\"); }\n }\n if (gecko && !mac && !handled && code == 46 && e.shiftKey && !e.ctrlKey && document.execCommand)\n { document.execCommand(\"cut\"); }\n\n // Turn mouse into crosshair when Alt is held on Mac.\n if (code == 18 && !/\\bCodeMirror-crosshair\\b/.test(cm.display.lineDiv.className))\n { showCrossHair(cm); }\n }\n\n function showCrossHair(cm) {\n var lineDiv = cm.display.lineDiv;\n addClass(lineDiv, \"CodeMirror-crosshair\");\n\n function up(e) {\n if (e.keyCode == 18 || !e.altKey) {\n rmClass(lineDiv, \"CodeMirror-crosshair\");\n off(document, \"keyup\", up);\n off(document, \"mouseover\", up);\n }\n }\n on(document, \"keyup\", up);\n on(document, \"mouseover\", up);\n }\n\n function onKeyUp(e) {\n if (e.keyCode == 16) { this.doc.sel.shift = false; }\n signalDOMEvent(this, e);\n }\n\n function onKeyPress(e) {\n var cm = this;\n if (e.target && e.target != cm.display.input.getField()) { return }\n if (eventInWidget(cm.display, e) || signalDOMEvent(cm, e) || e.ctrlKey && !e.altKey || mac && e.metaKey) { return }\n var keyCode = e.keyCode, charCode = e.charCode;\n if (presto && keyCode == lastStoppedKey) {lastStoppedKey = null; e_preventDefault(e); return}\n if ((presto && (!e.which || e.which < 10)) && handleKeyBinding(cm, e)) { return }\n var ch = String.fromCharCode(charCode == null ? keyCode : charCode);\n // Some browsers fire keypress events for backspace\n if (ch == \"\\x08\") { return }\n if (handleCharBinding(cm, e, ch)) { return }\n cm.display.input.onKeyPress(e);\n }\n\n var DOUBLECLICK_DELAY = 400;\n\n var PastClick = function(time, pos, button) {\n this.time = time;\n this.pos = pos;\n this.button = button;\n };\n\n PastClick.prototype.compare = function (time, pos, button) {\n return this.time + DOUBLECLICK_DELAY > time &&\n cmp(pos, this.pos) == 0 && button == this.button\n };\n\n var lastClick, lastDoubleClick;\n function clickRepeat(pos, button) {\n var now = +new Date;\n if (lastDoubleClick && lastDoubleClick.compare(now, pos, button)) {\n lastClick = lastDoubleClick = null;\n return \"triple\"\n } else if (lastClick && lastClick.compare(now, pos, button)) {\n lastDoubleClick = new PastClick(now, pos, button);\n lastClick = null;\n return \"double\"\n } else {\n lastClick = new PastClick(now, pos, button);\n lastDoubleClick = null;\n return \"single\"\n }\n }\n\n // A mouse down can be a single click, double click, triple click,\n // start of selection drag, start of text drag, new cursor\n // (ctrl-click), rectangle drag (alt-drag), or xwin\n // middle-click-paste. Or it might be a click on something we should\n // not interfere with, such as a scrollbar or widget.\n function onMouseDown(e) {\n var cm = this, display = cm.display;\n if (signalDOMEvent(cm, e) || display.activeTouch && display.input.supportsTouch()) { return }\n display.input.ensurePolled();\n display.shift = e.shiftKey;\n\n if (eventInWidget(display, e)) {\n if (!webkit) {\n // Briefly turn off draggability, to allow widgets to do\n // normal dragging things.\n display.scroller.draggable = false;\n setTimeout(function () { return display.scroller.draggable = true; }, 100);\n }\n return\n }\n if (clickInGutter(cm, e)) { return }\n var pos = posFromMouse(cm, e), button = e_button(e), repeat = pos ? clickRepeat(pos, button) : \"single\";\n window.focus();\n\n // #3261: make sure, that we're not starting a second selection\n if (button == 1 && cm.state.selectingText)\n { cm.state.selectingText(e); }\n\n if (pos && handleMappedButton(cm, button, pos, repeat, e)) { return }\n\n if (button == 1) {\n if (pos) { leftButtonDown(cm, pos, repeat, e); }\n else if (e_target(e) == display.scroller) { e_preventDefault(e); }\n } else if (button == 2) {\n if (pos) { extendSelection(cm.doc, pos); }\n setTimeout(function () { return display.input.focus(); }, 20);\n } else if (button == 3) {\n if (captureRightClick) { cm.display.input.onContextMenu(e); }\n else { delayBlurEvent(cm); }\n }\n }\n\n function handleMappedButton(cm, button, pos, repeat, event) {\n var name = \"Click\";\n if (repeat == \"double\") { name = \"Double\" + name; }\n else if (repeat == \"triple\") { name = \"Triple\" + name; }\n name = (button == 1 ? \"Left\" : button == 2 ? \"Middle\" : \"Right\") + name;\n\n return dispatchKey(cm, addModifierNames(name, event), event, function (bound) {\n if (typeof bound == \"string\") { bound = commands[bound]; }\n if (!bound) { return false }\n var done = false;\n try {\n if (cm.isReadOnly()) { cm.state.suppressEdits = true; }\n done = bound(cm, pos) != Pass;\n } finally {\n cm.state.suppressEdits = false;\n }\n return done\n })\n }\n\n function configureMouse(cm, repeat, event) {\n var option = cm.getOption(\"configureMouse\");\n var value = option ? option(cm, repeat, event) : {};\n if (value.unit == null) {\n var rect = chromeOS ? event.shiftKey && event.metaKey : event.altKey;\n value.unit = rect ? \"rectangle\" : repeat == \"single\" ? \"char\" : repeat == \"double\" ? \"word\" : \"line\";\n }\n if (value.extend == null || cm.doc.extend) { value.extend = cm.doc.extend || event.shiftKey; }\n if (value.addNew == null) { value.addNew = mac ? event.metaKey : event.ctrlKey; }\n if (value.moveOnDrag == null) { value.moveOnDrag = !(mac ? event.altKey : event.ctrlKey); }\n return value\n }\n\n function leftButtonDown(cm, pos, repeat, event) {\n if (ie) { setTimeout(bind(ensureFocus, cm), 0); }\n else { cm.curOp.focus = activeElt(); }\n\n var behavior = configureMouse(cm, repeat, event);\n\n var sel = cm.doc.sel, contained;\n if (cm.options.dragDrop && dragAndDrop && !cm.isReadOnly() &&\n repeat == \"single\" && (contained = sel.contains(pos)) > -1 &&\n (cmp((contained = sel.ranges[contained]).from(), pos) < 0 || pos.xRel > 0) &&\n (cmp(contained.to(), pos) > 0 || pos.xRel < 0))\n { leftButtonStartDrag(cm, event, pos, behavior); }\n else\n { leftButtonSelect(cm, event, pos, behavior); }\n }\n\n // Start a text drag. When it ends, see if any dragging actually\n // happen, and treat as a click if it didn't.\n function leftButtonStartDrag(cm, event, pos, behavior) {\n var display = cm.display, moved = false;\n var dragEnd = operation(cm, function (e) {\n if (webkit) { display.scroller.draggable = false; }\n cm.state.draggingText = false;\n if (cm.state.delayingBlurEvent) {\n if (cm.hasFocus()) { cm.state.delayingBlurEvent = false; }\n else { delayBlurEvent(cm); }\n }\n off(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n off(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n off(display.scroller, \"dragstart\", dragStart);\n off(display.scroller, \"drop\", dragEnd);\n if (!moved) {\n e_preventDefault(e);\n if (!behavior.addNew)\n { extendSelection(cm.doc, pos, null, null, behavior.extend); }\n // Work around unexplainable focus problem in IE9 (#2127) and Chrome (#3081)\n if ((webkit && !safari) || ie && ie_version == 9)\n { setTimeout(function () {display.wrapper.ownerDocument.body.focus({preventScroll: true}); display.input.focus();}, 20); }\n else\n { display.input.focus(); }\n }\n });\n var mouseMove = function(e2) {\n moved = moved || Math.abs(event.clientX - e2.clientX) + Math.abs(event.clientY - e2.clientY) >= 10;\n };\n var dragStart = function () { return moved = true; };\n // Let the drag handler handle this.\n if (webkit) { display.scroller.draggable = true; }\n cm.state.draggingText = dragEnd;\n dragEnd.copy = !behavior.moveOnDrag;\n on(display.wrapper.ownerDocument, \"mouseup\", dragEnd);\n on(display.wrapper.ownerDocument, \"mousemove\", mouseMove);\n on(display.scroller, \"dragstart\", dragStart);\n on(display.scroller, \"drop\", dragEnd);\n\n cm.state.delayingBlurEvent = true;\n setTimeout(function () { return display.input.focus(); }, 20);\n // IE's approach to draggable\n if (display.scroller.dragDrop) { display.scroller.dragDrop(); }\n }\n\n function rangeForUnit(cm, pos, unit) {\n if (unit == \"char\") { return new Range(pos, pos) }\n if (unit == \"word\") { return cm.findWordAt(pos) }\n if (unit == \"line\") { return new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))) }\n var result = unit(cm, pos);\n return new Range(result.from, result.to)\n }\n\n // Normal selection, as opposed to text dragging.\n function leftButtonSelect(cm, event, start, behavior) {\n if (ie) { delayBlurEvent(cm); }\n var display = cm.display, doc = cm.doc;\n e_preventDefault(event);\n\n var ourRange, ourIndex, startSel = doc.sel, ranges = startSel.ranges;\n if (behavior.addNew && !behavior.extend) {\n ourIndex = doc.sel.contains(start);\n if (ourIndex > -1)\n { ourRange = ranges[ourIndex]; }\n else\n { ourRange = new Range(start, start); }\n } else {\n ourRange = doc.sel.primary();\n ourIndex = doc.sel.primIndex;\n }\n\n if (behavior.unit == \"rectangle\") {\n if (!behavior.addNew) { ourRange = new Range(start, start); }\n start = posFromMouse(cm, event, true, true);\n ourIndex = -1;\n } else {\n var range = rangeForUnit(cm, start, behavior.unit);\n if (behavior.extend)\n { ourRange = extendRange(ourRange, range.anchor, range.head, behavior.extend); }\n else\n { ourRange = range; }\n }\n\n if (!behavior.addNew) {\n ourIndex = 0;\n setSelection(doc, new Selection([ourRange], 0), sel_mouse);\n startSel = doc.sel;\n } else if (ourIndex == -1) {\n ourIndex = ranges.length;\n setSelection(doc, normalizeSelection(cm, ranges.concat([ourRange]), ourIndex),\n {scroll: false, origin: \"*mouse\"});\n } else if (ranges.length > 1 && ranges[ourIndex].empty() && behavior.unit == \"char\" && !behavior.extend) {\n setSelection(doc, normalizeSelection(cm, ranges.slice(0, ourIndex).concat(ranges.slice(ourIndex + 1)), 0),\n {scroll: false, origin: \"*mouse\"});\n startSel = doc.sel;\n } else {\n replaceOneSelection(doc, ourIndex, ourRange, sel_mouse);\n }\n\n var lastPos = start;\n function extendTo(pos) {\n if (cmp(lastPos, pos) == 0) { return }\n lastPos = pos;\n\n if (behavior.unit == \"rectangle\") {\n var ranges = [], tabSize = cm.options.tabSize;\n var startCol = countColumn(getLine(doc, start.line).text, start.ch, tabSize);\n var posCol = countColumn(getLine(doc, pos.line).text, pos.ch, tabSize);\n var left = Math.min(startCol, posCol), right = Math.max(startCol, posCol);\n for (var line = Math.min(start.line, pos.line), end = Math.min(cm.lastLine(), Math.max(start.line, pos.line));\n line <= end; line++) {\n var text = getLine(doc, line).text, leftPos = findColumn(text, left, tabSize);\n if (left == right)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, leftPos))); }\n else if (text.length > leftPos)\n { ranges.push(new Range(Pos(line, leftPos), Pos(line, findColumn(text, right, tabSize)))); }\n }\n if (!ranges.length) { ranges.push(new Range(start, start)); }\n setSelection(doc, normalizeSelection(cm, startSel.ranges.slice(0, ourIndex).concat(ranges), ourIndex),\n {origin: \"*mouse\", scroll: false});\n cm.scrollIntoView(pos);\n } else {\n var oldRange = ourRange;\n var range = rangeForUnit(cm, pos, behavior.unit);\n var anchor = oldRange.anchor, head;\n if (cmp(range.anchor, anchor) > 0) {\n head = range.head;\n anchor = minPos(oldRange.from(), range.anchor);\n } else {\n head = range.anchor;\n anchor = maxPos(oldRange.to(), range.head);\n }\n var ranges$1 = startSel.ranges.slice(0);\n ranges$1[ourIndex] = bidiSimplify(cm, new Range(clipPos(doc, anchor), head));\n setSelection(doc, normalizeSelection(cm, ranges$1, ourIndex), sel_mouse);\n }\n }\n\n var editorSize = display.wrapper.getBoundingClientRect();\n // Used to ensure timeout re-tries don't fire when another extend\n // happened in the meantime (clearTimeout isn't reliable -- at\n // least on Chrome, the timeouts still happen even when cleared,\n // if the clear happens after their scheduled firing time).\n var counter = 0;\n\n function extend(e) {\n var curCount = ++counter;\n var cur = posFromMouse(cm, e, true, behavior.unit == \"rectangle\");\n if (!cur) { return }\n if (cmp(cur, lastPos) != 0) {\n cm.curOp.focus = activeElt();\n extendTo(cur);\n var visible = visibleLines(display, doc);\n if (cur.line >= visible.to || cur.line < visible.from)\n { setTimeout(operation(cm, function () {if (counter == curCount) { extend(e); }}), 150); }\n } else {\n var outside = e.clientY < editorSize.top ? -20 : e.clientY > editorSize.bottom ? 20 : 0;\n if (outside) { setTimeout(operation(cm, function () {\n if (counter != curCount) { return }\n display.scroller.scrollTop += outside;\n extend(e);\n }), 50); }\n }\n }\n\n function done(e) {\n cm.state.selectingText = false;\n counter = Infinity;\n // If e is null or undefined we interpret this as someone trying\n // to explicitly cancel the selection rather than the user\n // letting go of the mouse button.\n if (e) {\n e_preventDefault(e);\n display.input.focus();\n }\n off(display.wrapper.ownerDocument, \"mousemove\", move);\n off(display.wrapper.ownerDocument, \"mouseup\", up);\n doc.history.lastSelOrigin = null;\n }\n\n var move = operation(cm, function (e) {\n if (e.buttons === 0 || !e_button(e)) { done(e); }\n else { extend(e); }\n });\n var up = operation(cm, done);\n cm.state.selectingText = up;\n on(display.wrapper.ownerDocument, \"mousemove\", move);\n on(display.wrapper.ownerDocument, \"mouseup\", up);\n }\n\n // Used when mouse-selecting to adjust the anchor to the proper side\n // of a bidi jump depending on the visual position of the head.\n function bidiSimplify(cm, range) {\n var anchor = range.anchor;\n var head = range.head;\n var anchorLine = getLine(cm.doc, anchor.line);\n if (cmp(anchor, head) == 0 && anchor.sticky == head.sticky) { return range }\n var order = getOrder(anchorLine);\n if (!order) { return range }\n var index = getBidiPartAt(order, anchor.ch, anchor.sticky), part = order[index];\n if (part.from != anchor.ch && part.to != anchor.ch) { return range }\n var boundary = index + ((part.from == anchor.ch) == (part.level != 1) ? 0 : 1);\n if (boundary == 0 || boundary == order.length) { return range }\n\n // Compute the relative visual position of the head compared to the\n // anchor (<0 is to the left, >0 to the right)\n var leftSide;\n if (head.line != anchor.line) {\n leftSide = (head.line - anchor.line) * (cm.doc.direction == \"ltr\" ? 1 : -1) > 0;\n } else {\n var headIndex = getBidiPartAt(order, head.ch, head.sticky);\n var dir = headIndex - index || (head.ch - anchor.ch) * (part.level == 1 ? -1 : 1);\n if (headIndex == boundary - 1 || headIndex == boundary)\n { leftSide = dir < 0; }\n else\n { leftSide = dir > 0; }\n }\n\n var usePart = order[boundary + (leftSide ? -1 : 0)];\n var from = leftSide == (usePart.level == 1);\n var ch = from ? usePart.from : usePart.to, sticky = from ? \"after\" : \"before\";\n return anchor.ch == ch && anchor.sticky == sticky ? range : new Range(new Pos(anchor.line, ch, sticky), head)\n }\n\n\n // Determines whether an event happened in the gutter, and fires the\n // handlers for the corresponding event.\n function gutterEvent(cm, e, type, prevent) {\n var mX, mY;\n if (e.touches) {\n mX = e.touches[0].clientX;\n mY = e.touches[0].clientY;\n } else {\n try { mX = e.clientX; mY = e.clientY; }\n catch(e$1) { return false }\n }\n if (mX >= Math.floor(cm.display.gutters.getBoundingClientRect().right)) { return false }\n if (prevent) { e_preventDefault(e); }\n\n var display = cm.display;\n var lineBox = display.lineDiv.getBoundingClientRect();\n\n if (mY > lineBox.bottom || !hasHandler(cm, type)) { return e_defaultPrevented(e) }\n mY -= lineBox.top - display.viewOffset;\n\n for (var i = 0; i < cm.display.gutterSpecs.length; ++i) {\n var g = display.gutters.childNodes[i];\n if (g && g.getBoundingClientRect().right >= mX) {\n var line = lineAtHeight(cm.doc, mY);\n var gutter = cm.display.gutterSpecs[i];\n signal(cm, type, cm, line, gutter.className, e);\n return e_defaultPrevented(e)\n }\n }\n }\n\n function clickInGutter(cm, e) {\n return gutterEvent(cm, e, \"gutterClick\", true)\n }\n\n // CONTEXT MENU HANDLING\n\n // To make the context menu work, we need to briefly unhide the\n // textarea (making it as unobtrusive as possible) to let the\n // right-click take effect on it.\n function onContextMenu(cm, e) {\n if (eventInWidget(cm.display, e) || contextMenuInGutter(cm, e)) { return }\n if (signalDOMEvent(cm, e, \"contextmenu\")) { return }\n if (!captureRightClick) { cm.display.input.onContextMenu(e); }\n }\n\n function contextMenuInGutter(cm, e) {\n if (!hasHandler(cm, \"gutterContextMenu\")) { return false }\n return gutterEvent(cm, e, \"gutterContextMenu\", false)\n }\n\n function themeChanged(cm) {\n cm.display.wrapper.className = cm.display.wrapper.className.replace(/\\s*cm-s-\\S+/g, \"\") +\n cm.options.theme.replace(/(^|\\s)\\s*/g, \" cm-s-\");\n clearCaches(cm);\n }\n\n var Init = {toString: function(){return \"CodeMirror.Init\"}};\n\n var defaults = {};\n var optionHandlers = {};\n\n function defineOptions(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n function option(name, deflt, handle, notOnInit) {\n CodeMirror.defaults[name] = deflt;\n if (handle) { optionHandlers[name] =\n notOnInit ? function (cm, val, old) {if (old != Init) { handle(cm, val, old); }} : handle; }\n }\n\n CodeMirror.defineOption = option;\n\n // Passed to option handlers when there is no old value.\n CodeMirror.Init = Init;\n\n // These two are, on init, called from the constructor because they\n // have to be initialized before the editor can start at all.\n option(\"value\", \"\", function (cm, val) { return cm.setValue(val); }, true);\n option(\"mode\", null, function (cm, val) {\n cm.doc.modeOption = val;\n loadMode(cm);\n }, true);\n\n option(\"indentUnit\", 2, loadMode, true);\n option(\"indentWithTabs\", false);\n option(\"smartIndent\", true);\n option(\"tabSize\", 4, function (cm) {\n resetModeState(cm);\n clearCaches(cm);\n regChange(cm);\n }, true);\n\n option(\"lineSeparator\", null, function (cm, val) {\n cm.doc.lineSep = val;\n if (!val) { return }\n var newBreaks = [], lineNo = cm.doc.first;\n cm.doc.iter(function (line) {\n for (var pos = 0;;) {\n var found = line.text.indexOf(val, pos);\n if (found == -1) { break }\n pos = found + val.length;\n newBreaks.push(Pos(lineNo, found));\n }\n lineNo++;\n });\n for (var i = newBreaks.length - 1; i >= 0; i--)\n { replaceRange(cm.doc, val, newBreaks[i], Pos(newBreaks[i].line, newBreaks[i].ch + val.length)); }\n });\n option(\"specialChars\", /[\\u0000-\\u001f\\u007f-\\u009f\\u00ad\\u061c\\u200b\\u200e\\u200f\\u2028\\u2029\\ufeff\\ufff9-\\ufffc]/g, function (cm, val, old) {\n cm.state.specialChars = new RegExp(val.source + (val.test(\"\\t\") ? \"\" : \"|\\t\"), \"g\");\n if (old != Init) { cm.refresh(); }\n });\n option(\"specialCharPlaceholder\", defaultSpecialCharPlaceholder, function (cm) { return cm.refresh(); }, true);\n option(\"electricChars\", true);\n option(\"inputStyle\", mobile ? \"contenteditable\" : \"textarea\", function () {\n throw new Error(\"inputStyle can not (yet) be changed in a running editor\") // FIXME\n }, true);\n option(\"spellcheck\", false, function (cm, val) { return cm.getInputField().spellcheck = val; }, true);\n option(\"autocorrect\", false, function (cm, val) { return cm.getInputField().autocorrect = val; }, true);\n option(\"autocapitalize\", false, function (cm, val) { return cm.getInputField().autocapitalize = val; }, true);\n option(\"rtlMoveVisually\", !windows);\n option(\"wholeLineUpdateBefore\", true);\n\n option(\"theme\", \"default\", function (cm) {\n themeChanged(cm);\n updateGutters(cm);\n }, true);\n option(\"keyMap\", \"default\", function (cm, val, old) {\n var next = getKeyMap(val);\n var prev = old != Init && getKeyMap(old);\n if (prev && prev.detach) { prev.detach(cm, next); }\n if (next.attach) { next.attach(cm, prev || null); }\n });\n option(\"extraKeys\", null);\n option(\"configureMouse\", null);\n\n option(\"lineWrapping\", false, wrappingChanged, true);\n option(\"gutters\", [], function (cm, val) {\n cm.display.gutterSpecs = getGutters(val, cm.options.lineNumbers);\n updateGutters(cm);\n }, true);\n option(\"fixedGutter\", true, function (cm, val) {\n cm.display.gutters.style.left = val ? compensateForHScroll(cm.display) + \"px\" : \"0\";\n cm.refresh();\n }, true);\n option(\"coverGutterNextToScrollbar\", false, function (cm) { return updateScrollbars(cm); }, true);\n option(\"scrollbarStyle\", \"native\", function (cm) {\n initScrollbars(cm);\n updateScrollbars(cm);\n cm.display.scrollbars.setScrollTop(cm.doc.scrollTop);\n cm.display.scrollbars.setScrollLeft(cm.doc.scrollLeft);\n }, true);\n option(\"lineNumbers\", false, function (cm, val) {\n cm.display.gutterSpecs = getGutters(cm.options.gutters, val);\n updateGutters(cm);\n }, true);\n option(\"firstLineNumber\", 1, updateGutters, true);\n option(\"lineNumberFormatter\", function (integer) { return integer; }, updateGutters, true);\n option(\"showCursorWhenSelecting\", false, updateSelection, true);\n\n option(\"resetSelectionOnContextMenu\", true);\n option(\"lineWiseCopyCut\", true);\n option(\"pasteLinesPerSelection\", true);\n option(\"selectionsMayTouch\", false);\n\n option(\"readOnly\", false, function (cm, val) {\n if (val == \"nocursor\") {\n onBlur(cm);\n cm.display.input.blur();\n }\n cm.display.input.readOnlyChanged(val);\n });\n\n option(\"screenReaderLabel\", null, function (cm, val) {\n val = (val === '') ? null : val;\n cm.display.input.screenReaderLabelChanged(val);\n });\n\n option(\"disableInput\", false, function (cm, val) {if (!val) { cm.display.input.reset(); }}, true);\n option(\"dragDrop\", true, dragDropChanged);\n option(\"allowDropFileTypes\", null);\n\n option(\"cursorBlinkRate\", 530);\n option(\"cursorScrollMargin\", 0);\n option(\"cursorHeight\", 1, updateSelection, true);\n option(\"singleCursorHeightPerLine\", true, updateSelection, true);\n option(\"workTime\", 100);\n option(\"workDelay\", 100);\n option(\"flattenSpans\", true, resetModeState, true);\n option(\"addModeClass\", false, resetModeState, true);\n option(\"pollInterval\", 100);\n option(\"undoDepth\", 200, function (cm, val) { return cm.doc.history.undoDepth = val; });\n option(\"historyEventDelay\", 1250);\n option(\"viewportMargin\", 10, function (cm) { return cm.refresh(); }, true);\n option(\"maxHighlightLength\", 10000, resetModeState, true);\n option(\"moveInputWithCursor\", true, function (cm, val) {\n if (!val) { cm.display.input.resetPosition(); }\n });\n\n option(\"tabindex\", null, function (cm, val) { return cm.display.input.getField().tabIndex = val || \"\"; });\n option(\"autofocus\", null);\n option(\"direction\", \"ltr\", function (cm, val) { return cm.doc.setDirection(val); }, true);\n option(\"phrases\", null);\n }\n\n function dragDropChanged(cm, value, old) {\n var wasOn = old && old != Init;\n if (!value != !wasOn) {\n var funcs = cm.display.dragFunctions;\n var toggle = value ? on : off;\n toggle(cm.display.scroller, \"dragstart\", funcs.start);\n toggle(cm.display.scroller, \"dragenter\", funcs.enter);\n toggle(cm.display.scroller, \"dragover\", funcs.over);\n toggle(cm.display.scroller, \"dragleave\", funcs.leave);\n toggle(cm.display.scroller, \"drop\", funcs.drop);\n }\n }\n\n function wrappingChanged(cm) {\n if (cm.options.lineWrapping) {\n addClass(cm.display.wrapper, \"CodeMirror-wrap\");\n cm.display.sizer.style.minWidth = \"\";\n cm.display.sizerWidth = null;\n } else {\n rmClass(cm.display.wrapper, \"CodeMirror-wrap\");\n findMaxLine(cm);\n }\n estimateLineHeights(cm);\n regChange(cm);\n clearCaches(cm);\n setTimeout(function () { return updateScrollbars(cm); }, 100);\n }\n\n // A CodeMirror instance represents an editor. This is the object\n // that user code is usually dealing with.\n\n function CodeMirror(place, options) {\n var this$1 = this;\n\n if (!(this instanceof CodeMirror)) { return new CodeMirror(place, options) }\n\n this.options = options = options ? copyObj(options) : {};\n // Determine effective options based on given values and defaults.\n copyObj(defaults, options, false);\n\n var doc = options.value;\n if (typeof doc == \"string\") { doc = new Doc(doc, options.mode, null, options.lineSeparator, options.direction); }\n else if (options.mode) { doc.modeOption = options.mode; }\n this.doc = doc;\n\n var input = new CodeMirror.inputStyles[options.inputStyle](this);\n var display = this.display = new Display(place, doc, input, options);\n display.wrapper.CodeMirror = this;\n themeChanged(this);\n if (options.lineWrapping)\n { this.display.wrapper.className += \" CodeMirror-wrap\"; }\n initScrollbars(this);\n\n this.state = {\n keyMaps: [], // stores maps added by addKeyMap\n overlays: [], // highlighting overlays, as added by addOverlay\n modeGen: 0, // bumped when mode/overlay changes, used to invalidate highlighting info\n overwrite: false,\n delayingBlurEvent: false,\n focused: false,\n suppressEdits: false, // used to disable editing during key handlers when in readOnly mode\n pasteIncoming: -1, cutIncoming: -1, // help recognize paste/cut edits in input.poll\n selectingText: false,\n draggingText: false,\n highlight: new Delayed(), // stores highlight worker timeout\n keySeq: null, // Unfinished key sequence\n specialChars: null\n };\n\n if (options.autofocus && !mobile) { display.input.focus(); }\n\n // Override magic textarea content restore that IE sometimes does\n // on our hidden textarea on reload\n if (ie && ie_version < 11) { setTimeout(function () { return this$1.display.input.reset(true); }, 20); }\n\n registerEventHandlers(this);\n ensureGlobalHandlers();\n\n startOperation(this);\n this.curOp.forceUpdate = true;\n attachDoc(this, doc);\n\n if ((options.autofocus && !mobile) || this.hasFocus())\n { setTimeout(function () {\n if (this$1.hasFocus() && !this$1.state.focused) { onFocus(this$1); }\n }, 20); }\n else\n { onBlur(this); }\n\n for (var opt in optionHandlers) { if (optionHandlers.hasOwnProperty(opt))\n { optionHandlers[opt](this, options[opt], Init); } }\n maybeUpdateLineNumberWidth(this);\n if (options.finishInit) { options.finishInit(this); }\n for (var i = 0; i < initHooks.length; ++i) { initHooks[i](this); }\n endOperation(this);\n // Suppress optimizelegibility in Webkit, since it breaks text\n // measuring on line wrapping boundaries.\n if (webkit && options.lineWrapping &&\n getComputedStyle(display.lineDiv).textRendering == \"optimizelegibility\")\n { display.lineDiv.style.textRendering = \"auto\"; }\n }\n\n // The default configuration options.\n CodeMirror.defaults = defaults;\n // Functions to run when options are changed.\n CodeMirror.optionHandlers = optionHandlers;\n\n // Attach the necessary event handlers when initializing the editor\n function registerEventHandlers(cm) {\n var d = cm.display;\n on(d.scroller, \"mousedown\", operation(cm, onMouseDown));\n // Older IE's will not fire a second mousedown for a double click\n if (ie && ie_version < 11)\n { on(d.scroller, \"dblclick\", operation(cm, function (e) {\n if (signalDOMEvent(cm, e)) { return }\n var pos = posFromMouse(cm, e);\n if (!pos || clickInGutter(cm, e) || eventInWidget(cm.display, e)) { return }\n e_preventDefault(e);\n var word = cm.findWordAt(pos);\n extendSelection(cm.doc, word.anchor, word.head);\n })); }\n else\n { on(d.scroller, \"dblclick\", function (e) { return signalDOMEvent(cm, e) || e_preventDefault(e); }); }\n // Some browsers fire contextmenu *after* opening the menu, at\n // which point we can't mess with it anymore. Context menu is\n // handled in onMouseDown for these browsers.\n on(d.scroller, \"contextmenu\", function (e) { return onContextMenu(cm, e); });\n on(d.input.getField(), \"contextmenu\", function (e) {\n if (!d.scroller.contains(e.target)) { onContextMenu(cm, e); }\n });\n\n // Used to suppress mouse event handling when a touch happens\n var touchFinished, prevTouch = {end: 0};\n function finishTouch() {\n if (d.activeTouch) {\n touchFinished = setTimeout(function () { return d.activeTouch = null; }, 1000);\n prevTouch = d.activeTouch;\n prevTouch.end = +new Date;\n }\n }\n function isMouseLikeTouchEvent(e) {\n if (e.touches.length != 1) { return false }\n var touch = e.touches[0];\n return touch.radiusX <= 1 && touch.radiusY <= 1\n }\n function farAway(touch, other) {\n if (other.left == null) { return true }\n var dx = other.left - touch.left, dy = other.top - touch.top;\n return dx * dx + dy * dy > 20 * 20\n }\n on(d.scroller, \"touchstart\", function (e) {\n if (!signalDOMEvent(cm, e) && !isMouseLikeTouchEvent(e) && !clickInGutter(cm, e)) {\n d.input.ensurePolled();\n clearTimeout(touchFinished);\n var now = +new Date;\n d.activeTouch = {start: now, moved: false,\n prev: now - prevTouch.end <= 300 ? prevTouch : null};\n if (e.touches.length == 1) {\n d.activeTouch.left = e.touches[0].pageX;\n d.activeTouch.top = e.touches[0].pageY;\n }\n }\n });\n on(d.scroller, \"touchmove\", function () {\n if (d.activeTouch) { d.activeTouch.moved = true; }\n });\n on(d.scroller, \"touchend\", function (e) {\n var touch = d.activeTouch;\n if (touch && !eventInWidget(d, e) && touch.left != null &&\n !touch.moved && new Date - touch.start < 300) {\n var pos = cm.coordsChar(d.activeTouch, \"page\"), range;\n if (!touch.prev || farAway(touch, touch.prev)) // Single tap\n { range = new Range(pos, pos); }\n else if (!touch.prev.prev || farAway(touch, touch.prev.prev)) // Double tap\n { range = cm.findWordAt(pos); }\n else // Triple tap\n { range = new Range(Pos(pos.line, 0), clipPos(cm.doc, Pos(pos.line + 1, 0))); }\n cm.setSelection(range.anchor, range.head);\n cm.focus();\n e_preventDefault(e);\n }\n finishTouch();\n });\n on(d.scroller, \"touchcancel\", finishTouch);\n\n // Sync scrolling between fake scrollbars and real scrollable\n // area, ensure viewport is updated when scrolling.\n on(d.scroller, \"scroll\", function () {\n if (d.scroller.clientHeight) {\n updateScrollTop(cm, d.scroller.scrollTop);\n setScrollLeft(cm, d.scroller.scrollLeft, true);\n signal(cm, \"scroll\", cm);\n }\n });\n\n // Listen to wheel events in order to try and update the viewport on time.\n on(d.scroller, \"mousewheel\", function (e) { return onScrollWheel(cm, e); });\n on(d.scroller, \"DOMMouseScroll\", function (e) { return onScrollWheel(cm, e); });\n\n // Prevent wrapper from ever scrolling\n on(d.wrapper, \"scroll\", function () { return d.wrapper.scrollTop = d.wrapper.scrollLeft = 0; });\n\n d.dragFunctions = {\n enter: function (e) {if (!signalDOMEvent(cm, e)) { e_stop(e); }},\n over: function (e) {if (!signalDOMEvent(cm, e)) { onDragOver(cm, e); e_stop(e); }},\n start: function (e) { return onDragStart(cm, e); },\n drop: operation(cm, onDrop),\n leave: function (e) {if (!signalDOMEvent(cm, e)) { clearDragCursor(cm); }}\n };\n\n var inp = d.input.getField();\n on(inp, \"keyup\", function (e) { return onKeyUp.call(cm, e); });\n on(inp, \"keydown\", operation(cm, onKeyDown));\n on(inp, \"keypress\", operation(cm, onKeyPress));\n on(inp, \"focus\", function (e) { return onFocus(cm, e); });\n on(inp, \"blur\", function (e) { return onBlur(cm, e); });\n }\n\n var initHooks = [];\n CodeMirror.defineInitHook = function (f) { return initHooks.push(f); };\n\n // Indent the given line. The how parameter can be \"smart\",\n // \"add\"/null, \"subtract\", or \"prev\". When aggressive is false\n // (typically set to true for forced single-line indents), empty\n // lines are not indented, and places where the mode returns Pass\n // are left alone.\n function indentLine(cm, n, how, aggressive) {\n var doc = cm.doc, state;\n if (how == null) { how = \"add\"; }\n if (how == \"smart\") {\n // Fall back to \"prev\" when the mode doesn't have an indentation\n // method.\n if (!doc.mode.indent) { how = \"prev\"; }\n else { state = getContextBefore(cm, n).state; }\n }\n\n var tabSize = cm.options.tabSize;\n var line = getLine(doc, n), curSpace = countColumn(line.text, null, tabSize);\n if (line.stateAfter) { line.stateAfter = null; }\n var curSpaceString = line.text.match(/^\\s*/)[0], indentation;\n if (!aggressive && !/\\S/.test(line.text)) {\n indentation = 0;\n how = \"not\";\n } else if (how == \"smart\") {\n indentation = doc.mode.indent(state, line.text.slice(curSpaceString.length), line.text);\n if (indentation == Pass || indentation > 150) {\n if (!aggressive) { return }\n how = \"prev\";\n }\n }\n if (how == \"prev\") {\n if (n > doc.first) { indentation = countColumn(getLine(doc, n-1).text, null, tabSize); }\n else { indentation = 0; }\n } else if (how == \"add\") {\n indentation = curSpace + cm.options.indentUnit;\n } else if (how == \"subtract\") {\n indentation = curSpace - cm.options.indentUnit;\n } else if (typeof how == \"number\") {\n indentation = curSpace + how;\n }\n indentation = Math.max(0, indentation);\n\n var indentString = \"\", pos = 0;\n if (cm.options.indentWithTabs)\n { for (var i = Math.floor(indentation / tabSize); i; --i) {pos += tabSize; indentString += \"\\t\";} }\n if (pos < indentation) { indentString += spaceStr(indentation - pos); }\n\n if (indentString != curSpaceString) {\n replaceRange(doc, indentString, Pos(n, 0), Pos(n, curSpaceString.length), \"+input\");\n line.stateAfter = null;\n return true\n } else {\n // Ensure that, if the cursor was in the whitespace at the start\n // of the line, it is moved to the end of that space.\n for (var i$1 = 0; i$1 < doc.sel.ranges.length; i$1++) {\n var range = doc.sel.ranges[i$1];\n if (range.head.line == n && range.head.ch < curSpaceString.length) {\n var pos$1 = Pos(n, curSpaceString.length);\n replaceOneSelection(doc, i$1, new Range(pos$1, pos$1));\n break\n }\n }\n }\n }\n\n // This will be set to a {lineWise: bool, text: [string]} object, so\n // that, when pasting, we know what kind of selections the copied\n // text was made out of.\n var lastCopied = null;\n\n function setLastCopied(newLastCopied) {\n lastCopied = newLastCopied;\n }\n\n function applyTextInput(cm, inserted, deleted, sel, origin) {\n var doc = cm.doc;\n cm.display.shift = false;\n if (!sel) { sel = doc.sel; }\n\n var recent = +new Date - 200;\n var paste = origin == \"paste\" || cm.state.pasteIncoming > recent;\n var textLines = splitLinesAuto(inserted), multiPaste = null;\n // When pasting N lines into N selections, insert one line per selection\n if (paste && sel.ranges.length > 1) {\n if (lastCopied && lastCopied.text.join(\"\\n\") == inserted) {\n if (sel.ranges.length % lastCopied.text.length == 0) {\n multiPaste = [];\n for (var i = 0; i < lastCopied.text.length; i++)\n { multiPaste.push(doc.splitLines(lastCopied.text[i])); }\n }\n } else if (textLines.length == sel.ranges.length && cm.options.pasteLinesPerSelection) {\n multiPaste = map(textLines, function (l) { return [l]; });\n }\n }\n\n var updateInput = cm.curOp.updateInput;\n // Normal behavior is to insert the new text into every selection\n for (var i$1 = sel.ranges.length - 1; i$1 >= 0; i$1--) {\n var range = sel.ranges[i$1];\n var from = range.from(), to = range.to();\n if (range.empty()) {\n if (deleted && deleted > 0) // Handle deletion\n { from = Pos(from.line, from.ch - deleted); }\n else if (cm.state.overwrite && !paste) // Handle overwrite\n { to = Pos(to.line, Math.min(getLine(doc, to.line).text.length, to.ch + lst(textLines).length)); }\n else if (paste && lastCopied && lastCopied.lineWise && lastCopied.text.join(\"\\n\") == textLines.join(\"\\n\"))\n { from = to = Pos(from.line, 0); }\n }\n var changeEvent = {from: from, to: to, text: multiPaste ? multiPaste[i$1 % multiPaste.length] : textLines,\n origin: origin || (paste ? \"paste\" : cm.state.cutIncoming > recent ? \"cut\" : \"+input\")};\n makeChange(cm.doc, changeEvent);\n signalLater(cm, \"inputRead\", cm, changeEvent);\n }\n if (inserted && !paste)\n { triggerElectric(cm, inserted); }\n\n ensureCursorVisible(cm);\n if (cm.curOp.updateInput < 2) { cm.curOp.updateInput = updateInput; }\n cm.curOp.typing = true;\n cm.state.pasteIncoming = cm.state.cutIncoming = -1;\n }\n\n function handlePaste(e, cm) {\n var pasted = e.clipboardData && e.clipboardData.getData(\"Text\");\n if (pasted) {\n e.preventDefault();\n if (!cm.isReadOnly() && !cm.options.disableInput)\n { runInOp(cm, function () { return applyTextInput(cm, pasted, 0, null, \"paste\"); }); }\n return true\n }\n }\n\n function triggerElectric(cm, inserted) {\n // When an 'electric' character is inserted, immediately trigger a reindent\n if (!cm.options.electricChars || !cm.options.smartIndent) { return }\n var sel = cm.doc.sel;\n\n for (var i = sel.ranges.length - 1; i >= 0; i--) {\n var range = sel.ranges[i];\n if (range.head.ch > 100 || (i && sel.ranges[i - 1].head.line == range.head.line)) { continue }\n var mode = cm.getModeAt(range.head);\n var indented = false;\n if (mode.electricChars) {\n for (var j = 0; j < mode.electricChars.length; j++)\n { if (inserted.indexOf(mode.electricChars.charAt(j)) > -1) {\n indented = indentLine(cm, range.head.line, \"smart\");\n break\n } }\n } else if (mode.electricInput) {\n if (mode.electricInput.test(getLine(cm.doc, range.head.line).text.slice(0, range.head.ch)))\n { indented = indentLine(cm, range.head.line, \"smart\"); }\n }\n if (indented) { signalLater(cm, \"electricInput\", cm, range.head.line); }\n }\n }\n\n function copyableRanges(cm) {\n var text = [], ranges = [];\n for (var i = 0; i < cm.doc.sel.ranges.length; i++) {\n var line = cm.doc.sel.ranges[i].head.line;\n var lineRange = {anchor: Pos(line, 0), head: Pos(line + 1, 0)};\n ranges.push(lineRange);\n text.push(cm.getRange(lineRange.anchor, lineRange.head));\n }\n return {text: text, ranges: ranges}\n }\n\n function disableBrowserMagic(field, spellcheck, autocorrect, autocapitalize) {\n field.setAttribute(\"autocorrect\", autocorrect ? \"\" : \"off\");\n field.setAttribute(\"autocapitalize\", autocapitalize ? \"\" : \"off\");\n field.setAttribute(\"spellcheck\", !!spellcheck);\n }\n\n function hiddenTextarea() {\n var te = elt(\"textarea\", null, null, \"position: absolute; bottom: -1em; padding: 0; width: 1px; height: 1em; min-height: 1em; outline: none\");\n var div = elt(\"div\", [te], null, \"overflow: hidden; position: relative; width: 3px; height: 0px;\");\n // The textarea is kept positioned near the cursor to prevent the\n // fact that it'll be scrolled into view on input from scrolling\n // our fake cursor out of view. On webkit, when wrap=off, paste is\n // very slow. So make the area wide instead.\n if (webkit) { te.style.width = \"1000px\"; }\n else { te.setAttribute(\"wrap\", \"off\"); }\n // If border: 0; -- iOS fails to open keyboard (issue #1287)\n if (ios) { te.style.border = \"1px solid black\"; }\n disableBrowserMagic(te);\n return div\n }\n\n // The publicly visible API. Note that methodOp(f) means\n // 'wrap f in an operation, performed on its `this` parameter'.\n\n // This is not the complete set of editor methods. Most of the\n // methods defined on the Doc type are also injected into\n // CodeMirror.prototype, for backwards compatibility and\n // convenience.\n\n function addEditorMethods(CodeMirror) {\n var optionHandlers = CodeMirror.optionHandlers;\n\n var helpers = CodeMirror.helpers = {};\n\n CodeMirror.prototype = {\n constructor: CodeMirror,\n focus: function(){window.focus(); this.display.input.focus();},\n\n setOption: function(option, value) {\n var options = this.options, old = options[option];\n if (options[option] == value && option != \"mode\") { return }\n options[option] = value;\n if (optionHandlers.hasOwnProperty(option))\n { operation(this, optionHandlers[option])(this, value, old); }\n signal(this, \"optionChange\", this, option);\n },\n\n getOption: function(option) {return this.options[option]},\n getDoc: function() {return this.doc},\n\n addKeyMap: function(map, bottom) {\n this.state.keyMaps[bottom ? \"push\" : \"unshift\"](getKeyMap(map));\n },\n removeKeyMap: function(map) {\n var maps = this.state.keyMaps;\n for (var i = 0; i < maps.length; ++i)\n { if (maps[i] == map || maps[i].name == map) {\n maps.splice(i, 1);\n return true\n } }\n },\n\n addOverlay: methodOp(function(spec, options) {\n var mode = spec.token ? spec : CodeMirror.getMode(this.options, spec);\n if (mode.startState) { throw new Error(\"Overlays may not be stateful.\") }\n insertSorted(this.state.overlays,\n {mode: mode, modeSpec: spec, opaque: options && options.opaque,\n priority: (options && options.priority) || 0},\n function (overlay) { return overlay.priority; });\n this.state.modeGen++;\n regChange(this);\n }),\n removeOverlay: methodOp(function(spec) {\n var overlays = this.state.overlays;\n for (var i = 0; i < overlays.length; ++i) {\n var cur = overlays[i].modeSpec;\n if (cur == spec || typeof spec == \"string\" && cur.name == spec) {\n overlays.splice(i, 1);\n this.state.modeGen++;\n regChange(this);\n return\n }\n }\n }),\n\n indentLine: methodOp(function(n, dir, aggressive) {\n if (typeof dir != \"string\" && typeof dir != \"number\") {\n if (dir == null) { dir = this.options.smartIndent ? \"smart\" : \"prev\"; }\n else { dir = dir ? \"add\" : \"subtract\"; }\n }\n if (isLine(this.doc, n)) { indentLine(this, n, dir, aggressive); }\n }),\n indentSelection: methodOp(function(how) {\n var ranges = this.doc.sel.ranges, end = -1;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i];\n if (!range.empty()) {\n var from = range.from(), to = range.to();\n var start = Math.max(end, from.line);\n end = Math.min(this.lastLine(), to.line - (to.ch ? 0 : 1)) + 1;\n for (var j = start; j < end; ++j)\n { indentLine(this, j, how); }\n var newRanges = this.doc.sel.ranges;\n if (from.ch == 0 && ranges.length == newRanges.length && newRanges[i].from().ch > 0)\n { replaceOneSelection(this.doc, i, new Range(from, newRanges[i].to()), sel_dontScroll); }\n } else if (range.head.line > end) {\n indentLine(this, range.head.line, how, true);\n end = range.head.line;\n if (i == this.doc.sel.primIndex) { ensureCursorVisible(this); }\n }\n }\n }),\n\n // Fetch the parser token for a given character. Useful for hacks\n // that want to inspect the mode state (say, for completion).\n getTokenAt: function(pos, precise) {\n return takeToken(this, pos, precise)\n },\n\n getLineTokens: function(line, precise) {\n return takeToken(this, Pos(line), precise, true)\n },\n\n getTokenTypeAt: function(pos) {\n pos = clipPos(this.doc, pos);\n var styles = getLineStyles(this, getLine(this.doc, pos.line));\n var before = 0, after = (styles.length - 1) / 2, ch = pos.ch;\n var type;\n if (ch == 0) { type = styles[2]; }\n else { for (;;) {\n var mid = (before + after) >> 1;\n if ((mid ? styles[mid * 2 - 1] : 0) >= ch) { after = mid; }\n else if (styles[mid * 2 + 1] < ch) { before = mid + 1; }\n else { type = styles[mid * 2 + 2]; break }\n } }\n var cut = type ? type.indexOf(\"overlay \") : -1;\n return cut < 0 ? type : cut == 0 ? null : type.slice(0, cut - 1)\n },\n\n getModeAt: function(pos) {\n var mode = this.doc.mode;\n if (!mode.innerMode) { return mode }\n return CodeMirror.innerMode(mode, this.getTokenAt(pos).state).mode\n },\n\n getHelper: function(pos, type) {\n return this.getHelpers(pos, type)[0]\n },\n\n getHelpers: function(pos, type) {\n var found = [];\n if (!helpers.hasOwnProperty(type)) { return found }\n var help = helpers[type], mode = this.getModeAt(pos);\n if (typeof mode[type] == \"string\") {\n if (help[mode[type]]) { found.push(help[mode[type]]); }\n } else if (mode[type]) {\n for (var i = 0; i < mode[type].length; i++) {\n var val = help[mode[type][i]];\n if (val) { found.push(val); }\n }\n } else if (mode.helperType && help[mode.helperType]) {\n found.push(help[mode.helperType]);\n } else if (help[mode.name]) {\n found.push(help[mode.name]);\n }\n for (var i$1 = 0; i$1 < help._global.length; i$1++) {\n var cur = help._global[i$1];\n if (cur.pred(mode, this) && indexOf(found, cur.val) == -1)\n { found.push(cur.val); }\n }\n return found\n },\n\n getStateAfter: function(line, precise) {\n var doc = this.doc;\n line = clipLine(doc, line == null ? doc.first + doc.size - 1: line);\n return getContextBefore(this, line + 1, precise).state\n },\n\n cursorCoords: function(start, mode) {\n var pos, range = this.doc.sel.primary();\n if (start == null) { pos = range.head; }\n else if (typeof start == \"object\") { pos = clipPos(this.doc, start); }\n else { pos = start ? range.from() : range.to(); }\n return cursorCoords(this, pos, mode || \"page\")\n },\n\n charCoords: function(pos, mode) {\n return charCoords(this, clipPos(this.doc, pos), mode || \"page\")\n },\n\n coordsChar: function(coords, mode) {\n coords = fromCoordSystem(this, coords, mode || \"page\");\n return coordsChar(this, coords.left, coords.top)\n },\n\n lineAtHeight: function(height, mode) {\n height = fromCoordSystem(this, {top: height, left: 0}, mode || \"page\").top;\n return lineAtHeight(this.doc, height + this.display.viewOffset)\n },\n heightAtLine: function(line, mode, includeWidgets) {\n var end = false, lineObj;\n if (typeof line == \"number\") {\n var last = this.doc.first + this.doc.size - 1;\n if (line < this.doc.first) { line = this.doc.first; }\n else if (line > last) { line = last; end = true; }\n lineObj = getLine(this.doc, line);\n } else {\n lineObj = line;\n }\n return intoCoordSystem(this, lineObj, {top: 0, left: 0}, mode || \"page\", includeWidgets || end).top +\n (end ? this.doc.height - heightAtLine(lineObj) : 0)\n },\n\n defaultTextHeight: function() { return textHeight(this.display) },\n defaultCharWidth: function() { return charWidth(this.display) },\n\n getViewport: function() { return {from: this.display.viewFrom, to: this.display.viewTo}},\n\n addWidget: function(pos, node, scroll, vert, horiz) {\n var display = this.display;\n pos = cursorCoords(this, clipPos(this.doc, pos));\n var top = pos.bottom, left = pos.left;\n node.style.position = \"absolute\";\n node.setAttribute(\"cm-ignore-events\", \"true\");\n this.display.input.setUneditable(node);\n display.sizer.appendChild(node);\n if (vert == \"over\") {\n top = pos.top;\n } else if (vert == \"above\" || vert == \"near\") {\n var vspace = Math.max(display.wrapper.clientHeight, this.doc.height),\n hspace = Math.max(display.sizer.clientWidth, display.lineSpace.clientWidth);\n // Default to positioning above (if specified and possible); otherwise default to positioning below\n if ((vert == 'above' || pos.bottom + node.offsetHeight > vspace) && pos.top > node.offsetHeight)\n { top = pos.top - node.offsetHeight; }\n else if (pos.bottom + node.offsetHeight <= vspace)\n { top = pos.bottom; }\n if (left + node.offsetWidth > hspace)\n { left = hspace - node.offsetWidth; }\n }\n node.style.top = top + \"px\";\n node.style.left = node.style.right = \"\";\n if (horiz == \"right\") {\n left = display.sizer.clientWidth - node.offsetWidth;\n node.style.right = \"0px\";\n } else {\n if (horiz == \"left\") { left = 0; }\n else if (horiz == \"middle\") { left = (display.sizer.clientWidth - node.offsetWidth) / 2; }\n node.style.left = left + \"px\";\n }\n if (scroll)\n { scrollIntoView(this, {left: left, top: top, right: left + node.offsetWidth, bottom: top + node.offsetHeight}); }\n },\n\n triggerOnKeyDown: methodOp(onKeyDown),\n triggerOnKeyPress: methodOp(onKeyPress),\n triggerOnKeyUp: onKeyUp,\n triggerOnMouseDown: methodOp(onMouseDown),\n\n execCommand: function(cmd) {\n if (commands.hasOwnProperty(cmd))\n { return commands[cmd].call(null, this) }\n },\n\n triggerElectric: methodOp(function(text) { triggerElectric(this, text); }),\n\n findPosH: function(from, amount, unit, visually) {\n var dir = 1;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n cur = findPosH(this.doc, cur, dir, unit, visually);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveH: methodOp(function(dir, unit) {\n var this$1 = this;\n\n this.extendSelectionsBy(function (range) {\n if (this$1.display.shift || this$1.doc.extend || range.empty())\n { return findPosH(this$1.doc, range.head, dir, unit, this$1.options.rtlMoveVisually) }\n else\n { return dir < 0 ? range.from() : range.to() }\n }, sel_move);\n }),\n\n deleteH: methodOp(function(dir, unit) {\n var sel = this.doc.sel, doc = this.doc;\n if (sel.somethingSelected())\n { doc.replaceSelection(\"\", null, \"+delete\"); }\n else\n { deleteNearSelection(this, function (range) {\n var other = findPosH(doc, range.head, dir, unit, false);\n return dir < 0 ? {from: other, to: range.head} : {from: range.head, to: other}\n }); }\n }),\n\n findPosV: function(from, amount, unit, goalColumn) {\n var dir = 1, x = goalColumn;\n if (amount < 0) { dir = -1; amount = -amount; }\n var cur = clipPos(this.doc, from);\n for (var i = 0; i < amount; ++i) {\n var coords = cursorCoords(this, cur, \"div\");\n if (x == null) { x = coords.left; }\n else { coords.left = x; }\n cur = findPosV(this, coords, dir, unit);\n if (cur.hitSide) { break }\n }\n return cur\n },\n\n moveV: methodOp(function(dir, unit) {\n var this$1 = this;\n\n var doc = this.doc, goals = [];\n var collapse = !this.display.shift && !doc.extend && doc.sel.somethingSelected();\n doc.extendSelectionsBy(function (range) {\n if (collapse)\n { return dir < 0 ? range.from() : range.to() }\n var headPos = cursorCoords(this$1, range.head, \"div\");\n if (range.goalColumn != null) { headPos.left = range.goalColumn; }\n goals.push(headPos.left);\n var pos = findPosV(this$1, headPos, dir, unit);\n if (unit == \"page\" && range == doc.sel.primary())\n { addToScrollTop(this$1, charCoords(this$1, pos, \"div\").top - headPos.top); }\n return pos\n }, sel_move);\n if (goals.length) { for (var i = 0; i < doc.sel.ranges.length; i++)\n { doc.sel.ranges[i].goalColumn = goals[i]; } }\n }),\n\n // Find the word at the given position (as returned by coordsChar).\n findWordAt: function(pos) {\n var doc = this.doc, line = getLine(doc, pos.line).text;\n var start = pos.ch, end = pos.ch;\n if (line) {\n var helper = this.getHelper(pos, \"wordChars\");\n if ((pos.sticky == \"before\" || end == line.length) && start) { --start; } else { ++end; }\n var startChar = line.charAt(start);\n var check = isWordChar(startChar, helper)\n ? function (ch) { return isWordChar(ch, helper); }\n : /\\s/.test(startChar) ? function (ch) { return /\\s/.test(ch); }\n : function (ch) { return (!/\\s/.test(ch) && !isWordChar(ch)); };\n while (start > 0 && check(line.charAt(start - 1))) { --start; }\n while (end < line.length && check(line.charAt(end))) { ++end; }\n }\n return new Range(Pos(pos.line, start), Pos(pos.line, end))\n },\n\n toggleOverwrite: function(value) {\n if (value != null && value == this.state.overwrite) { return }\n if (this.state.overwrite = !this.state.overwrite)\n { addClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n else\n { rmClass(this.display.cursorDiv, \"CodeMirror-overwrite\"); }\n\n signal(this, \"overwriteToggle\", this, this.state.overwrite);\n },\n hasFocus: function() { return this.display.input.getField() == activeElt() },\n isReadOnly: function() { return !!(this.options.readOnly || this.doc.cantEdit) },\n\n scrollTo: methodOp(function (x, y) { scrollToCoords(this, x, y); }),\n getScrollInfo: function() {\n var scroller = this.display.scroller;\n return {left: scroller.scrollLeft, top: scroller.scrollTop,\n height: scroller.scrollHeight - scrollGap(this) - this.display.barHeight,\n width: scroller.scrollWidth - scrollGap(this) - this.display.barWidth,\n clientHeight: displayHeight(this), clientWidth: displayWidth(this)}\n },\n\n scrollIntoView: methodOp(function(range, margin) {\n if (range == null) {\n range = {from: this.doc.sel.primary().head, to: null};\n if (margin == null) { margin = this.options.cursorScrollMargin; }\n } else if (typeof range == \"number\") {\n range = {from: Pos(range, 0), to: null};\n } else if (range.from == null) {\n range = {from: range, to: null};\n }\n if (!range.to) { range.to = range.from; }\n range.margin = margin || 0;\n\n if (range.from.line != null) {\n scrollToRange(this, range);\n } else {\n scrollToCoordsRange(this, range.from, range.to, range.margin);\n }\n }),\n\n setSize: methodOp(function(width, height) {\n var this$1 = this;\n\n var interpret = function (val) { return typeof val == \"number\" || /^\\d+$/.test(String(val)) ? val + \"px\" : val; };\n if (width != null) { this.display.wrapper.style.width = interpret(width); }\n if (height != null) { this.display.wrapper.style.height = interpret(height); }\n if (this.options.lineWrapping) { clearLineMeasurementCache(this); }\n var lineNo = this.display.viewFrom;\n this.doc.iter(lineNo, this.display.viewTo, function (line) {\n if (line.widgets) { for (var i = 0; i < line.widgets.length; i++)\n { if (line.widgets[i].noHScroll) { regLineChange(this$1, lineNo, \"widget\"); break } } }\n ++lineNo;\n });\n this.curOp.forceUpdate = true;\n signal(this, \"refresh\", this);\n }),\n\n operation: function(f){return runInOp(this, f)},\n startOperation: function(){return startOperation(this)},\n endOperation: function(){return endOperation(this)},\n\n refresh: methodOp(function() {\n var oldHeight = this.display.cachedTextHeight;\n regChange(this);\n this.curOp.forceUpdate = true;\n clearCaches(this);\n scrollToCoords(this, this.doc.scrollLeft, this.doc.scrollTop);\n updateGutterSpace(this.display);\n if (oldHeight == null || Math.abs(oldHeight - textHeight(this.display)) > .5 || this.options.lineWrapping)\n { estimateLineHeights(this); }\n signal(this, \"refresh\", this);\n }),\n\n swapDoc: methodOp(function(doc) {\n var old = this.doc;\n old.cm = null;\n // Cancel the current text selection if any (#5821)\n if (this.state.selectingText) { this.state.selectingText(); }\n attachDoc(this, doc);\n clearCaches(this);\n this.display.input.reset();\n scrollToCoords(this, doc.scrollLeft, doc.scrollTop);\n this.curOp.forceScroll = true;\n signalLater(this, \"swapDoc\", this, old);\n return old\n }),\n\n phrase: function(phraseText) {\n var phrases = this.options.phrases;\n return phrases && Object.prototype.hasOwnProperty.call(phrases, phraseText) ? phrases[phraseText] : phraseText\n },\n\n getInputField: function(){return this.display.input.getField()},\n getWrapperElement: function(){return this.display.wrapper},\n getScrollerElement: function(){return this.display.scroller},\n getGutterElement: function(){return this.display.gutters}\n };\n eventMixin(CodeMirror);\n\n CodeMirror.registerHelper = function(type, name, value) {\n if (!helpers.hasOwnProperty(type)) { helpers[type] = CodeMirror[type] = {_global: []}; }\n helpers[type][name] = value;\n };\n CodeMirror.registerGlobalHelper = function(type, name, predicate, value) {\n CodeMirror.registerHelper(type, name, value);\n helpers[type]._global.push({pred: predicate, val: value});\n };\n }\n\n // Used for horizontal relative motion. Dir is -1 or 1 (left or\n // right), unit can be \"codepoint\", \"char\", \"column\" (like char, but\n // doesn't cross line boundaries), \"word\" (across next word), or\n // \"group\" (to the start of next group of word or\n // non-word-non-whitespace chars). The visually param controls\n // whether, in right-to-left text, direction 1 means to move towards\n // the next index in the string, or towards the character to the right\n // of the current position. The resulting position will have a\n // hitSide=true property if it reached the end of the document.\n function findPosH(doc, pos, dir, unit, visually) {\n var oldPos = pos;\n var origDir = dir;\n var lineObj = getLine(doc, pos.line);\n var lineDir = visually && doc.direction == \"rtl\" ? -dir : dir;\n function findNextLine() {\n var l = pos.line + lineDir;\n if (l < doc.first || l >= doc.first + doc.size) { return false }\n pos = new Pos(l, pos.ch, pos.sticky);\n return lineObj = getLine(doc, l)\n }\n function moveOnce(boundToLine) {\n var next;\n if (unit == \"codepoint\") {\n var ch = lineObj.text.charCodeAt(pos.ch + (dir > 0 ? 0 : -1));\n if (isNaN(ch)) {\n next = null;\n } else {\n var astral = dir > 0 ? ch >= 0xD800 && ch < 0xDC00 : ch >= 0xDC00 && ch < 0xDFFF;\n next = new Pos(pos.line, Math.max(0, Math.min(lineObj.text.length, pos.ch + dir * (astral ? 2 : 1))), -dir);\n }\n } else if (visually) {\n next = moveVisually(doc.cm, lineObj, pos, dir);\n } else {\n next = moveLogically(lineObj, pos, dir);\n }\n if (next == null) {\n if (!boundToLine && findNextLine())\n { pos = endOfLine(visually, doc.cm, lineObj, pos.line, lineDir); }\n else\n { return false }\n } else {\n pos = next;\n }\n return true\n }\n\n if (unit == \"char\" || unit == \"codepoint\") {\n moveOnce();\n } else if (unit == \"column\") {\n moveOnce(true);\n } else if (unit == \"word\" || unit == \"group\") {\n var sawType = null, group = unit == \"group\";\n var helper = doc.cm && doc.cm.getHelper(pos, \"wordChars\");\n for (var first = true;; first = false) {\n if (dir < 0 && !moveOnce(!first)) { break }\n var cur = lineObj.text.charAt(pos.ch) || \"\\n\";\n var type = isWordChar(cur, helper) ? \"w\"\n : group && cur == \"\\n\" ? \"n\"\n : !group || /\\s/.test(cur) ? null\n : \"p\";\n if (group && !first && !type) { type = \"s\"; }\n if (sawType && sawType != type) {\n if (dir < 0) {dir = 1; moveOnce(); pos.sticky = \"after\";}\n break\n }\n\n if (type) { sawType = type; }\n if (dir > 0 && !moveOnce(!first)) { break }\n }\n }\n var result = skipAtomic(doc, pos, oldPos, origDir, true);\n if (equalCursorPos(oldPos, result)) { result.hitSide = true; }\n return result\n }\n\n // For relative vertical movement. Dir may be -1 or 1. Unit can be\n // \"page\" or \"line\". The resulting position will have a hitSide=true\n // property if it reached the end of the document.\n function findPosV(cm, pos, dir, unit) {\n var doc = cm.doc, x = pos.left, y;\n if (unit == \"page\") {\n var pageSize = Math.min(cm.display.wrapper.clientHeight, window.innerHeight || document.documentElement.clientHeight);\n var moveAmount = Math.max(pageSize - .5 * textHeight(cm.display), 3);\n y = (dir > 0 ? pos.bottom : pos.top) + dir * moveAmount;\n\n } else if (unit == \"line\") {\n y = dir > 0 ? pos.bottom + 3 : pos.top - 3;\n }\n var target;\n for (;;) {\n target = coordsChar(cm, x, y);\n if (!target.outside) { break }\n if (dir < 0 ? y <= 0 : y >= doc.height) { target.hitSide = true; break }\n y += dir * 5;\n }\n return target\n }\n\n // CONTENTEDITABLE INPUT STYLE\n\n var ContentEditableInput = function(cm) {\n this.cm = cm;\n this.lastAnchorNode = this.lastAnchorOffset = this.lastFocusNode = this.lastFocusOffset = null;\n this.polling = new Delayed();\n this.composing = null;\n this.gracePeriod = false;\n this.readDOMTimeout = null;\n };\n\n ContentEditableInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = input.cm;\n var div = input.div = display.lineDiv;\n div.contentEditable = true;\n disableBrowserMagic(div, cm.options.spellcheck, cm.options.autocorrect, cm.options.autocapitalize);\n\n function belongsToInput(e) {\n for (var t = e.target; t; t = t.parentNode) {\n if (t == div) { return true }\n if (/\\bCodeMirror-(?:line)?widget\\b/.test(t.className)) { break }\n }\n return false\n }\n\n on(div, \"paste\", function (e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n // IE doesn't fire input events, so we schedule a read for the pasted content in this way\n if (ie_version <= 11) { setTimeout(operation(cm, function () { return this$1.updateFromDOM(); }), 20); }\n });\n\n on(div, \"compositionstart\", function (e) {\n this$1.composing = {data: e.data, done: false};\n });\n on(div, \"compositionupdate\", function (e) {\n if (!this$1.composing) { this$1.composing = {data: e.data, done: false}; }\n });\n on(div, \"compositionend\", function (e) {\n if (this$1.composing) {\n if (e.data != this$1.composing.data) { this$1.readFromDOMSoon(); }\n this$1.composing.done = true;\n }\n });\n\n on(div, \"touchstart\", function () { return input.forceCompositionEnd(); });\n\n on(div, \"input\", function () {\n if (!this$1.composing) { this$1.readFromDOMSoon(); }\n });\n\n function onCopyCut(e) {\n if (!belongsToInput(e) || signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n if (e.type == \"cut\") { cm.replaceSelection(\"\", null, \"cut\"); }\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.operation(function () {\n cm.setSelections(ranges.ranges, 0, sel_dontScroll);\n cm.replaceSelection(\"\", null, \"cut\");\n });\n }\n }\n if (e.clipboardData) {\n e.clipboardData.clearData();\n var content = lastCopied.text.join(\"\\n\");\n // iOS exposes the clipboard API, but seems to discard content inserted into it\n e.clipboardData.setData(\"Text\", content);\n if (e.clipboardData.getData(\"Text\") == content) {\n e.preventDefault();\n return\n }\n }\n // Old-fashioned briefly-focus-a-textarea hack\n var kludge = hiddenTextarea(), te = kludge.firstChild;\n cm.display.lineSpace.insertBefore(kludge, cm.display.lineSpace.firstChild);\n te.value = lastCopied.text.join(\"\\n\");\n var hadFocus = activeElt();\n selectInput(te);\n setTimeout(function () {\n cm.display.lineSpace.removeChild(kludge);\n hadFocus.focus();\n if (hadFocus == div) { input.showPrimarySelection(); }\n }, 50);\n }\n on(div, \"copy\", onCopyCut);\n on(div, \"cut\", onCopyCut);\n };\n\n ContentEditableInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.div.setAttribute('aria-label', label);\n } else {\n this.div.removeAttribute('aria-label');\n }\n };\n\n ContentEditableInput.prototype.prepareSelection = function () {\n var result = prepareSelection(this.cm, false);\n result.focus = activeElt() == this.div;\n return result\n };\n\n ContentEditableInput.prototype.showSelection = function (info, takeFocus) {\n if (!info || !this.cm.display.view.length) { return }\n if (info.focus || takeFocus) { this.showPrimarySelection(); }\n this.showMultipleSelections(info);\n };\n\n ContentEditableInput.prototype.getSelection = function () {\n return this.cm.display.wrapper.ownerDocument.getSelection()\n };\n\n ContentEditableInput.prototype.showPrimarySelection = function () {\n var sel = this.getSelection(), cm = this.cm, prim = cm.doc.sel.primary();\n var from = prim.from(), to = prim.to();\n\n if (cm.display.viewTo == cm.display.viewFrom || from.line >= cm.display.viewTo || to.line < cm.display.viewFrom) {\n sel.removeAllRanges();\n return\n }\n\n var curAnchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var curFocus = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (curAnchor && !curAnchor.bad && curFocus && !curFocus.bad &&\n cmp(minPos(curAnchor, curFocus), from) == 0 &&\n cmp(maxPos(curAnchor, curFocus), to) == 0)\n { return }\n\n var view = cm.display.view;\n var start = (from.line >= cm.display.viewFrom && posToDOM(cm, from)) ||\n {node: view[0].measure.map[2], offset: 0};\n var end = to.line < cm.display.viewTo && posToDOM(cm, to);\n if (!end) {\n var measure = view[view.length - 1].measure;\n var map = measure.maps ? measure.maps[measure.maps.length - 1] : measure.map;\n end = {node: map[map.length - 1], offset: map[map.length - 2] - map[map.length - 3]};\n }\n\n if (!start || !end) {\n sel.removeAllRanges();\n return\n }\n\n var old = sel.rangeCount && sel.getRangeAt(0), rng;\n try { rng = range(start.node, start.offset, end.offset, end.node); }\n catch(e) {} // Our model of the DOM might be outdated, in which case the range we try to set can be impossible\n if (rng) {\n if (!gecko && cm.state.focused) {\n sel.collapse(start.node, start.offset);\n if (!rng.collapsed) {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n } else {\n sel.removeAllRanges();\n sel.addRange(rng);\n }\n if (old && sel.anchorNode == null) { sel.addRange(old); }\n else if (gecko) { this.startGracePeriod(); }\n }\n this.rememberSelection();\n };\n\n ContentEditableInput.prototype.startGracePeriod = function () {\n var this$1 = this;\n\n clearTimeout(this.gracePeriod);\n this.gracePeriod = setTimeout(function () {\n this$1.gracePeriod = false;\n if (this$1.selectionChanged())\n { this$1.cm.operation(function () { return this$1.cm.curOp.selectionChanged = true; }); }\n }, 20);\n };\n\n ContentEditableInput.prototype.showMultipleSelections = function (info) {\n removeChildrenAndAdd(this.cm.display.cursorDiv, info.cursors);\n removeChildrenAndAdd(this.cm.display.selectionDiv, info.selection);\n };\n\n ContentEditableInput.prototype.rememberSelection = function () {\n var sel = this.getSelection();\n this.lastAnchorNode = sel.anchorNode; this.lastAnchorOffset = sel.anchorOffset;\n this.lastFocusNode = sel.focusNode; this.lastFocusOffset = sel.focusOffset;\n };\n\n ContentEditableInput.prototype.selectionInEditor = function () {\n var sel = this.getSelection();\n if (!sel.rangeCount) { return false }\n var node = sel.getRangeAt(0).commonAncestorContainer;\n return contains(this.div, node)\n };\n\n ContentEditableInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\") {\n if (!this.selectionInEditor() || activeElt() != this.div)\n { this.showSelection(this.prepareSelection(), true); }\n this.div.focus();\n }\n };\n ContentEditableInput.prototype.blur = function () { this.div.blur(); };\n ContentEditableInput.prototype.getField = function () { return this.div };\n\n ContentEditableInput.prototype.supportsTouch = function () { return true };\n\n ContentEditableInput.prototype.receivedFocus = function () {\n var this$1 = this;\n\n var input = this;\n if (this.selectionInEditor())\n { setTimeout(function () { return this$1.pollSelection(); }, 20); }\n else\n { runInOp(this.cm, function () { return input.cm.curOp.selectionChanged = true; }); }\n\n function poll() {\n if (input.cm.state.focused) {\n input.pollSelection();\n input.polling.set(input.cm.options.pollInterval, poll);\n }\n }\n this.polling.set(this.cm.options.pollInterval, poll);\n };\n\n ContentEditableInput.prototype.selectionChanged = function () {\n var sel = this.getSelection();\n return sel.anchorNode != this.lastAnchorNode || sel.anchorOffset != this.lastAnchorOffset ||\n sel.focusNode != this.lastFocusNode || sel.focusOffset != this.lastFocusOffset\n };\n\n ContentEditableInput.prototype.pollSelection = function () {\n if (this.readDOMTimeout != null || this.gracePeriod || !this.selectionChanged()) { return }\n var sel = this.getSelection(), cm = this.cm;\n // On Android Chrome (version 56, at least), backspacing into an\n // uneditable block element will put the cursor in that element,\n // and then, because it's not editable, hide the virtual keyboard.\n // Because Android doesn't allow us to actually detect backspace\n // presses in a sane way, this code checks for when that happens\n // and simulates a backspace press in this case.\n if (android && chrome && this.cm.display.gutterSpecs.length && isInGutter(sel.anchorNode)) {\n this.cm.triggerOnKeyDown({type: \"keydown\", keyCode: 8, preventDefault: Math.abs});\n this.blur();\n this.focus();\n return\n }\n if (this.composing) { return }\n this.rememberSelection();\n var anchor = domToPos(cm, sel.anchorNode, sel.anchorOffset);\n var head = domToPos(cm, sel.focusNode, sel.focusOffset);\n if (anchor && head) { runInOp(cm, function () {\n setSelection(cm.doc, simpleSelection(anchor, head), sel_dontScroll);\n if (anchor.bad || head.bad) { cm.curOp.selectionChanged = true; }\n }); }\n };\n\n ContentEditableInput.prototype.pollContent = function () {\n if (this.readDOMTimeout != null) {\n clearTimeout(this.readDOMTimeout);\n this.readDOMTimeout = null;\n }\n\n var cm = this.cm, display = cm.display, sel = cm.doc.sel.primary();\n var from = sel.from(), to = sel.to();\n if (from.ch == 0 && from.line > cm.firstLine())\n { from = Pos(from.line - 1, getLine(cm.doc, from.line - 1).length); }\n if (to.ch == getLine(cm.doc, to.line).text.length && to.line < cm.lastLine())\n { to = Pos(to.line + 1, 0); }\n if (from.line < display.viewFrom || to.line > display.viewTo - 1) { return false }\n\n var fromIndex, fromLine, fromNode;\n if (from.line == display.viewFrom || (fromIndex = findViewIndex(cm, from.line)) == 0) {\n fromLine = lineNo(display.view[0].line);\n fromNode = display.view[0].node;\n } else {\n fromLine = lineNo(display.view[fromIndex].line);\n fromNode = display.view[fromIndex - 1].node.nextSibling;\n }\n var toIndex = findViewIndex(cm, to.line);\n var toLine, toNode;\n if (toIndex == display.view.length - 1) {\n toLine = display.viewTo - 1;\n toNode = display.lineDiv.lastChild;\n } else {\n toLine = lineNo(display.view[toIndex + 1].line) - 1;\n toNode = display.view[toIndex + 1].node.previousSibling;\n }\n\n if (!fromNode) { return false }\n var newText = cm.doc.splitLines(domTextBetween(cm, fromNode, toNode, fromLine, toLine));\n var oldText = getBetween(cm.doc, Pos(fromLine, 0), Pos(toLine, getLine(cm.doc, toLine).text.length));\n while (newText.length > 1 && oldText.length > 1) {\n if (lst(newText) == lst(oldText)) { newText.pop(); oldText.pop(); toLine--; }\n else if (newText[0] == oldText[0]) { newText.shift(); oldText.shift(); fromLine++; }\n else { break }\n }\n\n var cutFront = 0, cutEnd = 0;\n var newTop = newText[0], oldTop = oldText[0], maxCutFront = Math.min(newTop.length, oldTop.length);\n while (cutFront < maxCutFront && newTop.charCodeAt(cutFront) == oldTop.charCodeAt(cutFront))\n { ++cutFront; }\n var newBot = lst(newText), oldBot = lst(oldText);\n var maxCutEnd = Math.min(newBot.length - (newText.length == 1 ? cutFront : 0),\n oldBot.length - (oldText.length == 1 ? cutFront : 0));\n while (cutEnd < maxCutEnd &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1))\n { ++cutEnd; }\n // Try to move start of change to start of selection if ambiguous\n if (newText.length == 1 && oldText.length == 1 && fromLine == from.line) {\n while (cutFront && cutFront > from.ch &&\n newBot.charCodeAt(newBot.length - cutEnd - 1) == oldBot.charCodeAt(oldBot.length - cutEnd - 1)) {\n cutFront--;\n cutEnd++;\n }\n }\n\n newText[newText.length - 1] = newBot.slice(0, newBot.length - cutEnd).replace(/^\\u200b+/, \"\");\n newText[0] = newText[0].slice(cutFront).replace(/\\u200b+$/, \"\");\n\n var chFrom = Pos(fromLine, cutFront);\n var chTo = Pos(toLine, oldText.length ? lst(oldText).length - cutEnd : 0);\n if (newText.length > 1 || newText[0] || cmp(chFrom, chTo)) {\n replaceRange(cm.doc, newText, chFrom, chTo, \"+input\");\n return true\n }\n };\n\n ContentEditableInput.prototype.ensurePolled = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.reset = function () {\n this.forceCompositionEnd();\n };\n ContentEditableInput.prototype.forceCompositionEnd = function () {\n if (!this.composing) { return }\n clearTimeout(this.readDOMTimeout);\n this.composing = null;\n this.updateFromDOM();\n this.div.blur();\n this.div.focus();\n };\n ContentEditableInput.prototype.readFromDOMSoon = function () {\n var this$1 = this;\n\n if (this.readDOMTimeout != null) { return }\n this.readDOMTimeout = setTimeout(function () {\n this$1.readDOMTimeout = null;\n if (this$1.composing) {\n if (this$1.composing.done) { this$1.composing = null; }\n else { return }\n }\n this$1.updateFromDOM();\n }, 80);\n };\n\n ContentEditableInput.prototype.updateFromDOM = function () {\n var this$1 = this;\n\n if (this.cm.isReadOnly() || !this.pollContent())\n { runInOp(this.cm, function () { return regChange(this$1.cm); }); }\n };\n\n ContentEditableInput.prototype.setUneditable = function (node) {\n node.contentEditable = \"false\";\n };\n\n ContentEditableInput.prototype.onKeyPress = function (e) {\n if (e.charCode == 0 || this.composing) { return }\n e.preventDefault();\n if (!this.cm.isReadOnly())\n { operation(this.cm, applyTextInput)(this.cm, String.fromCharCode(e.charCode == null ? e.keyCode : e.charCode), 0); }\n };\n\n ContentEditableInput.prototype.readOnlyChanged = function (val) {\n this.div.contentEditable = String(val != \"nocursor\");\n };\n\n ContentEditableInput.prototype.onContextMenu = function () {};\n ContentEditableInput.prototype.resetPosition = function () {};\n\n ContentEditableInput.prototype.needsContentAttribute = true;\n\n function posToDOM(cm, pos) {\n var view = findViewForLine(cm, pos.line);\n if (!view || view.hidden) { return null }\n var line = getLine(cm.doc, pos.line);\n var info = mapFromLineView(view, line, pos.line);\n\n var order = getOrder(line, cm.doc.direction), side = \"left\";\n if (order) {\n var partPos = getBidiPartAt(order, pos.ch);\n side = partPos % 2 ? \"right\" : \"left\";\n }\n var result = nodeAndOffsetInLineMap(info.map, pos.ch, side);\n result.offset = result.collapse == \"right\" ? result.end : result.start;\n return result\n }\n\n function isInGutter(node) {\n for (var scan = node; scan; scan = scan.parentNode)\n { if (/CodeMirror-gutter-wrapper/.test(scan.className)) { return true } }\n return false\n }\n\n function badPos(pos, bad) { if (bad) { pos.bad = true; } return pos }\n\n function domTextBetween(cm, from, to, fromLine, toLine) {\n var text = \"\", closing = false, lineSep = cm.doc.lineSeparator(), extraLinebreak = false;\n function recognizeMarker(id) { return function (marker) { return marker.id == id; } }\n function close() {\n if (closing) {\n text += lineSep;\n if (extraLinebreak) { text += lineSep; }\n closing = extraLinebreak = false;\n }\n }\n function addText(str) {\n if (str) {\n close();\n text += str;\n }\n }\n function walk(node) {\n if (node.nodeType == 1) {\n var cmText = node.getAttribute(\"cm-text\");\n if (cmText) {\n addText(cmText);\n return\n }\n var markerID = node.getAttribute(\"cm-marker\"), range;\n if (markerID) {\n var found = cm.findMarks(Pos(fromLine, 0), Pos(toLine + 1, 0), recognizeMarker(+markerID));\n if (found.length && (range = found[0].find(0)))\n { addText(getBetween(cm.doc, range.from, range.to).join(lineSep)); }\n return\n }\n if (node.getAttribute(\"contenteditable\") == \"false\") { return }\n var isBlock = /^(pre|div|p|li|table|br)$/i.test(node.nodeName);\n if (!/^br$/i.test(node.nodeName) && node.textContent.length == 0) { return }\n\n if (isBlock) { close(); }\n for (var i = 0; i < node.childNodes.length; i++)\n { walk(node.childNodes[i]); }\n\n if (/^(pre|p)$/i.test(node.nodeName)) { extraLinebreak = true; }\n if (isBlock) { closing = true; }\n } else if (node.nodeType == 3) {\n addText(node.nodeValue.replace(/\\u200b/g, \"\").replace(/\\u00a0/g, \" \"));\n }\n }\n for (;;) {\n walk(from);\n if (from == to) { break }\n from = from.nextSibling;\n extraLinebreak = false;\n }\n return text\n }\n\n function domToPos(cm, node, offset) {\n var lineNode;\n if (node == cm.display.lineDiv) {\n lineNode = cm.display.lineDiv.childNodes[offset];\n if (!lineNode) { return badPos(cm.clipPos(Pos(cm.display.viewTo - 1)), true) }\n node = null; offset = 0;\n } else {\n for (lineNode = node;; lineNode = lineNode.parentNode) {\n if (!lineNode || lineNode == cm.display.lineDiv) { return null }\n if (lineNode.parentNode && lineNode.parentNode == cm.display.lineDiv) { break }\n }\n }\n for (var i = 0; i < cm.display.view.length; i++) {\n var lineView = cm.display.view[i];\n if (lineView.node == lineNode)\n { return locateNodeInLineView(lineView, node, offset) }\n }\n }\n\n function locateNodeInLineView(lineView, node, offset) {\n var wrapper = lineView.text.firstChild, bad = false;\n if (!node || !contains(wrapper, node)) { return badPos(Pos(lineNo(lineView.line), 0), true) }\n if (node == wrapper) {\n bad = true;\n node = wrapper.childNodes[offset];\n offset = 0;\n if (!node) {\n var line = lineView.rest ? lst(lineView.rest) : lineView.line;\n return badPos(Pos(lineNo(line), line.text.length), bad)\n }\n }\n\n var textNode = node.nodeType == 3 ? node : null, topNode = node;\n if (!textNode && node.childNodes.length == 1 && node.firstChild.nodeType == 3) {\n textNode = node.firstChild;\n if (offset) { offset = textNode.nodeValue.length; }\n }\n while (topNode.parentNode != wrapper) { topNode = topNode.parentNode; }\n var measure = lineView.measure, maps = measure.maps;\n\n function find(textNode, topNode, offset) {\n for (var i = -1; i < (maps ? maps.length : 0); i++) {\n var map = i < 0 ? measure.map : maps[i];\n for (var j = 0; j < map.length; j += 3) {\n var curNode = map[j + 2];\n if (curNode == textNode || curNode == topNode) {\n var line = lineNo(i < 0 ? lineView.line : lineView.rest[i]);\n var ch = map[j] + offset;\n if (offset < 0 || curNode != textNode) { ch = map[j + (offset ? 1 : 0)]; }\n return Pos(line, ch)\n }\n }\n }\n }\n var found = find(textNode, topNode, offset);\n if (found) { return badPos(found, bad) }\n\n // FIXME this is all really shaky. might handle the few cases it needs to handle, but likely to cause problems\n for (var after = topNode.nextSibling, dist = textNode ? textNode.nodeValue.length - offset : 0; after; after = after.nextSibling) {\n found = find(after, after.firstChild, 0);\n if (found)\n { return badPos(Pos(found.line, found.ch - dist), bad) }\n else\n { dist += after.textContent.length; }\n }\n for (var before = topNode.previousSibling, dist$1 = offset; before; before = before.previousSibling) {\n found = find(before, before.firstChild, -1);\n if (found)\n { return badPos(Pos(found.line, found.ch + dist$1), bad) }\n else\n { dist$1 += before.textContent.length; }\n }\n }\n\n // TEXTAREA INPUT STYLE\n\n var TextareaInput = function(cm) {\n this.cm = cm;\n // See input.poll and input.reset\n this.prevInput = \"\";\n\n // Flag that indicates whether we expect input to appear real soon\n // now (after some event like 'keypress' or 'input') and are\n // polling intensively.\n this.pollingFast = false;\n // Self-resetting timeout for the poller\n this.polling = new Delayed();\n // Used to work around IE issue with selection being forgotten when focus moves away from textarea\n this.hasSelection = false;\n this.composing = null;\n };\n\n TextareaInput.prototype.init = function (display) {\n var this$1 = this;\n\n var input = this, cm = this.cm;\n this.createField(display);\n var te = this.textarea;\n\n display.wrapper.insertBefore(this.wrapper, display.wrapper.firstChild);\n\n // Needed to hide big blue blinking cursor on Mobile Safari (doesn't seem to work in iOS 8 anymore)\n if (ios) { te.style.width = \"0px\"; }\n\n on(te, \"input\", function () {\n if (ie && ie_version >= 9 && this$1.hasSelection) { this$1.hasSelection = null; }\n input.poll();\n });\n\n on(te, \"paste\", function (e) {\n if (signalDOMEvent(cm, e) || handlePaste(e, cm)) { return }\n\n cm.state.pasteIncoming = +new Date;\n input.fastPoll();\n });\n\n function prepareCopyCut(e) {\n if (signalDOMEvent(cm, e)) { return }\n if (cm.somethingSelected()) {\n setLastCopied({lineWise: false, text: cm.getSelections()});\n } else if (!cm.options.lineWiseCopyCut) {\n return\n } else {\n var ranges = copyableRanges(cm);\n setLastCopied({lineWise: true, text: ranges.text});\n if (e.type == \"cut\") {\n cm.setSelections(ranges.ranges, null, sel_dontScroll);\n } else {\n input.prevInput = \"\";\n te.value = ranges.text.join(\"\\n\");\n selectInput(te);\n }\n }\n if (e.type == \"cut\") { cm.state.cutIncoming = +new Date; }\n }\n on(te, \"cut\", prepareCopyCut);\n on(te, \"copy\", prepareCopyCut);\n\n on(display.scroller, \"paste\", function (e) {\n if (eventInWidget(display, e) || signalDOMEvent(cm, e)) { return }\n if (!te.dispatchEvent) {\n cm.state.pasteIncoming = +new Date;\n input.focus();\n return\n }\n\n // Pass the `paste` event to the textarea so it's handled by its event listener.\n var event = new Event(\"paste\");\n event.clipboardData = e.clipboardData;\n te.dispatchEvent(event);\n });\n\n // Prevent normal selection in the editor (we handle our own)\n on(display.lineSpace, \"selectstart\", function (e) {\n if (!eventInWidget(display, e)) { e_preventDefault(e); }\n });\n\n on(te, \"compositionstart\", function () {\n var start = cm.getCursor(\"from\");\n if (input.composing) { input.composing.range.clear(); }\n input.composing = {\n start: start,\n range: cm.markText(start, cm.getCursor(\"to\"), {className: \"CodeMirror-composing\"})\n };\n });\n on(te, \"compositionend\", function () {\n if (input.composing) {\n input.poll();\n input.composing.range.clear();\n input.composing = null;\n }\n });\n };\n\n TextareaInput.prototype.createField = function (_display) {\n // Wraps and hides input textarea\n this.wrapper = hiddenTextarea();\n // The semihidden textarea that is focused when the editor is\n // focused, and receives input.\n this.textarea = this.wrapper.firstChild;\n };\n\n TextareaInput.prototype.screenReaderLabelChanged = function (label) {\n // Label for screenreaders, accessibility\n if(label) {\n this.textarea.setAttribute('aria-label', label);\n } else {\n this.textarea.removeAttribute('aria-label');\n }\n };\n\n TextareaInput.prototype.prepareSelection = function () {\n // Redraw the selection and/or cursor\n var cm = this.cm, display = cm.display, doc = cm.doc;\n var result = prepareSelection(cm);\n\n // Move the hidden textarea near the cursor to prevent scrolling artifacts\n if (cm.options.moveInputWithCursor) {\n var headPos = cursorCoords(cm, doc.sel.primary().head, \"div\");\n var wrapOff = display.wrapper.getBoundingClientRect(), lineOff = display.lineDiv.getBoundingClientRect();\n result.teTop = Math.max(0, Math.min(display.wrapper.clientHeight - 10,\n headPos.top + lineOff.top - wrapOff.top));\n result.teLeft = Math.max(0, Math.min(display.wrapper.clientWidth - 10,\n headPos.left + lineOff.left - wrapOff.left));\n }\n\n return result\n };\n\n TextareaInput.prototype.showSelection = function (drawn) {\n var cm = this.cm, display = cm.display;\n removeChildrenAndAdd(display.cursorDiv, drawn.cursors);\n removeChildrenAndAdd(display.selectionDiv, drawn.selection);\n if (drawn.teTop != null) {\n this.wrapper.style.top = drawn.teTop + \"px\";\n this.wrapper.style.left = drawn.teLeft + \"px\";\n }\n };\n\n // Reset the input to correspond to the selection (or to be empty,\n // when not typing and nothing is selected)\n TextareaInput.prototype.reset = function (typing) {\n if (this.contextMenuPending || this.composing) { return }\n var cm = this.cm;\n if (cm.somethingSelected()) {\n this.prevInput = \"\";\n var content = cm.getSelection();\n this.textarea.value = content;\n if (cm.state.focused) { selectInput(this.textarea); }\n if (ie && ie_version >= 9) { this.hasSelection = content; }\n } else if (!typing) {\n this.prevInput = this.textarea.value = \"\";\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n }\n };\n\n TextareaInput.prototype.getField = function () { return this.textarea };\n\n TextareaInput.prototype.supportsTouch = function () { return false };\n\n TextareaInput.prototype.focus = function () {\n if (this.cm.options.readOnly != \"nocursor\" && (!mobile || activeElt() != this.textarea)) {\n try { this.textarea.focus(); }\n catch (e) {} // IE8 will throw if the textarea is display: none or not in DOM\n }\n };\n\n TextareaInput.prototype.blur = function () { this.textarea.blur(); };\n\n TextareaInput.prototype.resetPosition = function () {\n this.wrapper.style.top = this.wrapper.style.left = 0;\n };\n\n TextareaInput.prototype.receivedFocus = function () { this.slowPoll(); };\n\n // Poll for input changes, using the normal rate of polling. This\n // runs as long as the editor is focused.\n TextareaInput.prototype.slowPoll = function () {\n var this$1 = this;\n\n if (this.pollingFast) { return }\n this.polling.set(this.cm.options.pollInterval, function () {\n this$1.poll();\n if (this$1.cm.state.focused) { this$1.slowPoll(); }\n });\n };\n\n // When an event has just come in that is likely to add or change\n // something in the input textarea, we poll faster, to ensure that\n // the change appears on the screen quickly.\n TextareaInput.prototype.fastPoll = function () {\n var missed = false, input = this;\n input.pollingFast = true;\n function p() {\n var changed = input.poll();\n if (!changed && !missed) {missed = true; input.polling.set(60, p);}\n else {input.pollingFast = false; input.slowPoll();}\n }\n input.polling.set(20, p);\n };\n\n // Read input from the textarea, and update the document to match.\n // When something is selected, it is present in the textarea, and\n // selected (unless it is huge, in which case a placeholder is\n // used). When nothing is selected, the cursor sits after previously\n // seen text (can be empty), which is stored in prevInput (we must\n // not reset the textarea when typing, because that breaks IME).\n TextareaInput.prototype.poll = function () {\n var this$1 = this;\n\n var cm = this.cm, input = this.textarea, prevInput = this.prevInput;\n // Since this is called a *lot*, try to bail out as cheaply as\n // possible when it is clear that nothing happened. hasSelection\n // will be the case when there is a lot of text in the textarea,\n // in which case reading its value would be expensive.\n if (this.contextMenuPending || !cm.state.focused ||\n (hasSelection(input) && !prevInput && !this.composing) ||\n cm.isReadOnly() || cm.options.disableInput || cm.state.keySeq)\n { return false }\n\n var text = input.value;\n // If nothing changed, bail.\n if (text == prevInput && !cm.somethingSelected()) { return false }\n // Work around nonsensical selection resetting in IE9/10, and\n // inexplicable appearance of private area unicode characters on\n // some key combos in Mac (#2689).\n if (ie && ie_version >= 9 && this.hasSelection === text ||\n mac && /[\\uf700-\\uf7ff]/.test(text)) {\n cm.display.input.reset();\n return false\n }\n\n if (cm.doc.sel == cm.display.selForContextMenu) {\n var first = text.charCodeAt(0);\n if (first == 0x200b && !prevInput) { prevInput = \"\\u200b\"; }\n if (first == 0x21da) { this.reset(); return this.cm.execCommand(\"undo\") }\n }\n // Find the part of the input that is actually new\n var same = 0, l = Math.min(prevInput.length, text.length);\n while (same < l && prevInput.charCodeAt(same) == text.charCodeAt(same)) { ++same; }\n\n runInOp(cm, function () {\n applyTextInput(cm, text.slice(same), prevInput.length - same,\n null, this$1.composing ? \"*compose\" : null);\n\n // Don't leave long text in the textarea, since it makes further polling slow\n if (text.length > 1000 || text.indexOf(\"\\n\") > -1) { input.value = this$1.prevInput = \"\"; }\n else { this$1.prevInput = text; }\n\n if (this$1.composing) {\n this$1.composing.range.clear();\n this$1.composing.range = cm.markText(this$1.composing.start, cm.getCursor(\"to\"),\n {className: \"CodeMirror-composing\"});\n }\n });\n return true\n };\n\n TextareaInput.prototype.ensurePolled = function () {\n if (this.pollingFast && this.poll()) { this.pollingFast = false; }\n };\n\n TextareaInput.prototype.onKeyPress = function () {\n if (ie && ie_version >= 9) { this.hasSelection = null; }\n this.fastPoll();\n };\n\n TextareaInput.prototype.onContextMenu = function (e) {\n var input = this, cm = input.cm, display = cm.display, te = input.textarea;\n if (input.contextMenuPending) { input.contextMenuPending(); }\n var pos = posFromMouse(cm, e), scrollPos = display.scroller.scrollTop;\n if (!pos || presto) { return } // Opera is difficult.\n\n // Reset the current text selection only if the click is done outside of the selection\n // and 'resetSelectionOnContextMenu' option is true.\n var reset = cm.options.resetSelectionOnContextMenu;\n if (reset && cm.doc.sel.contains(pos) == -1)\n { operation(cm, setSelection)(cm.doc, simpleSelection(pos), sel_dontScroll); }\n\n var oldCSS = te.style.cssText, oldWrapperCSS = input.wrapper.style.cssText;\n var wrapperBox = input.wrapper.offsetParent.getBoundingClientRect();\n input.wrapper.style.cssText = \"position: static\";\n te.style.cssText = \"position: absolute; width: 30px; height: 30px;\\n top: \" + (e.clientY - wrapperBox.top - 5) + \"px; left: \" + (e.clientX - wrapperBox.left - 5) + \"px;\\n z-index: 1000; background: \" + (ie ? \"rgba(255, 255, 255, .05)\" : \"transparent\") + \";\\n outline: none; border-width: 0; outline: none; overflow: hidden; opacity: .05; filter: alpha(opacity=5);\";\n var oldScrollY;\n if (webkit) { oldScrollY = window.scrollY; } // Work around Chrome issue (#2712)\n display.input.focus();\n if (webkit) { window.scrollTo(null, oldScrollY); }\n display.input.reset();\n // Adds \"Select all\" to context menu in FF\n if (!cm.somethingSelected()) { te.value = input.prevInput = \" \"; }\n input.contextMenuPending = rehide;\n display.selForContextMenu = cm.doc.sel;\n clearTimeout(display.detectingSelectAll);\n\n // Select-all will be greyed out if there's nothing to select, so\n // this adds a zero-width space so that we can later check whether\n // it got selected.\n function prepareSelectAllHack() {\n if (te.selectionStart != null) {\n var selected = cm.somethingSelected();\n var extval = \"\\u200b\" + (selected ? te.value : \"\");\n te.value = \"\\u21da\"; // Used to catch context-menu undo\n te.value = extval;\n input.prevInput = selected ? \"\" : \"\\u200b\";\n te.selectionStart = 1; te.selectionEnd = extval.length;\n // Re-set this, in case some other handler touched the\n // selection in the meantime.\n display.selForContextMenu = cm.doc.sel;\n }\n }\n function rehide() {\n if (input.contextMenuPending != rehide) { return }\n input.contextMenuPending = false;\n input.wrapper.style.cssText = oldWrapperCSS;\n te.style.cssText = oldCSS;\n if (ie && ie_version < 9) { display.scrollbars.setScrollTop(display.scroller.scrollTop = scrollPos); }\n\n // Try to detect the user choosing select-all\n if (te.selectionStart != null) {\n if (!ie || (ie && ie_version < 9)) { prepareSelectAllHack(); }\n var i = 0, poll = function () {\n if (display.selForContextMenu == cm.doc.sel && te.selectionStart == 0 &&\n te.selectionEnd > 0 && input.prevInput == \"\\u200b\") {\n operation(cm, selectAll)(cm);\n } else if (i++ < 10) {\n display.detectingSelectAll = setTimeout(poll, 500);\n } else {\n display.selForContextMenu = null;\n display.input.reset();\n }\n };\n display.detectingSelectAll = setTimeout(poll, 200);\n }\n }\n\n if (ie && ie_version >= 9) { prepareSelectAllHack(); }\n if (captureRightClick) {\n e_stop(e);\n var mouseup = function () {\n off(window, \"mouseup\", mouseup);\n setTimeout(rehide, 20);\n };\n on(window, \"mouseup\", mouseup);\n } else {\n setTimeout(rehide, 50);\n }\n };\n\n TextareaInput.prototype.readOnlyChanged = function (val) {\n if (!val) { this.reset(); }\n this.textarea.disabled = val == \"nocursor\";\n this.textarea.readOnly = !!val;\n };\n\n TextareaInput.prototype.setUneditable = function () {};\n\n TextareaInput.prototype.needsContentAttribute = false;\n\n function fromTextArea(textarea, options) {\n options = options ? copyObj(options) : {};\n options.value = textarea.value;\n if (!options.tabindex && textarea.tabIndex)\n { options.tabindex = textarea.tabIndex; }\n if (!options.placeholder && textarea.placeholder)\n { options.placeholder = textarea.placeholder; }\n // Set autofocus to true if this textarea is focused, or if it has\n // autofocus and no other element is focused.\n if (options.autofocus == null) {\n var hasFocus = activeElt();\n options.autofocus = hasFocus == textarea ||\n textarea.getAttribute(\"autofocus\") != null && hasFocus == document.body;\n }\n\n function save() {textarea.value = cm.getValue();}\n\n var realSubmit;\n if (textarea.form) {\n on(textarea.form, \"submit\", save);\n // Deplorable hack to make the submit method do the right thing.\n if (!options.leaveSubmitMethodAlone) {\n var form = textarea.form;\n realSubmit = form.submit;\n try {\n var wrappedSubmit = form.submit = function () {\n save();\n form.submit = realSubmit;\n form.submit();\n form.submit = wrappedSubmit;\n };\n } catch(e) {}\n }\n }\n\n options.finishInit = function (cm) {\n cm.save = save;\n cm.getTextArea = function () { return textarea; };\n cm.toTextArea = function () {\n cm.toTextArea = isNaN; // Prevent this from being ran twice\n save();\n textarea.parentNode.removeChild(cm.getWrapperElement());\n textarea.style.display = \"\";\n if (textarea.form) {\n off(textarea.form, \"submit\", save);\n if (!options.leaveSubmitMethodAlone && typeof textarea.form.submit == \"function\")\n { textarea.form.submit = realSubmit; }\n }\n };\n };\n\n textarea.style.display = \"none\";\n var cm = CodeMirror(function (node) { return textarea.parentNode.insertBefore(node, textarea.nextSibling); },\n options);\n return cm\n }\n\n function addLegacyProps(CodeMirror) {\n CodeMirror.off = off;\n CodeMirror.on = on;\n CodeMirror.wheelEventPixels = wheelEventPixels;\n CodeMirror.Doc = Doc;\n CodeMirror.splitLines = splitLinesAuto;\n CodeMirror.countColumn = countColumn;\n CodeMirror.findColumn = findColumn;\n CodeMirror.isWordChar = isWordCharBasic;\n CodeMirror.Pass = Pass;\n CodeMirror.signal = signal;\n CodeMirror.Line = Line;\n CodeMirror.changeEnd = changeEnd;\n CodeMirror.scrollbarModel = scrollbarModel;\n CodeMirror.Pos = Pos;\n CodeMirror.cmpPos = cmp;\n CodeMirror.modes = modes;\n CodeMirror.mimeModes = mimeModes;\n CodeMirror.resolveMode = resolveMode;\n CodeMirror.getMode = getMode;\n CodeMirror.modeExtensions = modeExtensions;\n CodeMirror.extendMode = extendMode;\n CodeMirror.copyState = copyState;\n CodeMirror.startState = startState;\n CodeMirror.innerMode = innerMode;\n CodeMirror.commands = commands;\n CodeMirror.keyMap = keyMap;\n CodeMirror.keyName = keyName;\n CodeMirror.isModifierKey = isModifierKey;\n CodeMirror.lookupKey = lookupKey;\n CodeMirror.normalizeKeyMap = normalizeKeyMap;\n CodeMirror.StringStream = StringStream;\n CodeMirror.SharedTextMarker = SharedTextMarker;\n CodeMirror.TextMarker = TextMarker;\n CodeMirror.LineWidget = LineWidget;\n CodeMirror.e_preventDefault = e_preventDefault;\n CodeMirror.e_stopPropagation = e_stopPropagation;\n CodeMirror.e_stop = e_stop;\n CodeMirror.addClass = addClass;\n CodeMirror.contains = contains;\n CodeMirror.rmClass = rmClass;\n CodeMirror.keyNames = keyNames;\n }\n\n // EDITOR CONSTRUCTOR\n\n defineOptions(CodeMirror);\n\n addEditorMethods(CodeMirror);\n\n // Set up methods on CodeMirror's prototype to redirect to the editor's document.\n var dontDelegate = \"iter insert remove copy getEditor constructor\".split(\" \");\n for (var prop in Doc.prototype) { if (Doc.prototype.hasOwnProperty(prop) && indexOf(dontDelegate, prop) < 0)\n { CodeMirror.prototype[prop] = (function(method) {\n return function() {return method.apply(this.doc, arguments)}\n })(Doc.prototype[prop]); } }\n\n eventMixin(Doc);\n CodeMirror.inputStyles = {\"textarea\": TextareaInput, \"contenteditable\": ContentEditableInput};\n\n // Extra arguments are stored as the mode's dependencies, which is\n // used by (legacy) mechanisms like loadmode.js to automatically\n // load a mode. (Preferred mechanism is the require/define calls.)\n CodeMirror.defineMode = function(name/*, mode, …*/) {\n if (!CodeMirror.defaults.mode && name != \"null\") { CodeMirror.defaults.mode = name; }\n defineMode.apply(this, arguments);\n };\n\n CodeMirror.defineMIME = defineMIME;\n\n // Minimal default mode.\n CodeMirror.defineMode(\"null\", function () { return ({token: function (stream) { return stream.skipToEnd(); }}); });\n CodeMirror.defineMIME(\"text/plain\", \"null\");\n\n // EXTENSIONS\n\n CodeMirror.defineExtension = function (name, func) {\n CodeMirror.prototype[name] = func;\n };\n CodeMirror.defineDocExtension = function (name, func) {\n Doc.prototype[name] = func;\n };\n\n CodeMirror.fromTextArea = fromTextArea;\n\n addLegacyProps(CodeMirror);\n\n CodeMirror.version = \"5.65.3\";\n\n return CodeMirror;\n\n})));\n"],"names":["exports","userAgent","navigator","platform","gecko","test","ie_upto10","ie_11up","exec","edge","ie","ie_version","document","documentMode","webkit","qtwebkit","chrome","presto","safari","vendor","mac_geMountainLion","phantom","ios","maxTouchPoints","android","mobile","mac","chromeOS","windows","presto_version","match","Number","flipCtrlCmd","captureRightClick","classTest","cls","RegExp","__name","range","rmClass","node","current","className","after","slice","index","length","removeChildren","e","count","childNodes","removeChild","firstChild","removeChildrenAndAdd","parent","appendChild","elt","tag","content","style","createElement","cssText","createTextNode","i","eltP","setAttribute","contains","child","nodeType","parentNode","host","activeElt","activeElement","body","shadowRoot","addClass","joinClasses","a","b","as","split","createRange","start","end","endNode","r","setEnd","setStart","createTextRange","moveToElementText","collapse","moveEnd","moveStart","selectInput","select","bind","f","args","Array","prototype","call","arguments","apply","copyObj","obj","target","overwrite","prop","hasOwnProperty","countColumn","string","tabSize","startIndex","startValue","search","n","nextTab","indexOf","selectionStart","selectionEnd","value","Delayed","this","id","time","handler","onTimeout","array","self","Date","setTimeout","set","ms","clearTimeout","scrollerGap","Pass","toString","sel_dontScroll","scroll","sel_mouse","origin","sel_move","findColumn","goal","pos","col","skipped","Math","min","spaceStrs","spaceStr","push","lst","arr","map","out","insertSorted","score","priority","splice","nothing","createObj","base","props","inst","Object","create","nonASCIISingleCaseWordChar","isWordCharBasic","ch","toUpperCase","toLowerCase","isWordChar","helper","source","isEmpty","extendingChars","isExtendingChar","charCodeAt","skipExtendingChars","str","dir","charAt","findFirst","pred","from","to","midF","mid","ceil","floor","iterateBidiSections","order","found","part","max","level","bidiOther","getBidiPartAt","sticky","cur","bidiOrdering","lowTypes","arabicTypes","charType","code","bidiRE","isNeutral","isStrong","countsAsLeft","countsAsNum","BidiSpan","direction","outerType","len","types","i$1","prev","type","i$2","type$1","i$3","prev$1","type$2","i$4","type$3","replace","j","i$5","cur$1","type$4","i$6","end$1","before","replace$1","j$1","m","i$7","at","isRTL","j$2","nstart","unshift","reverse","getOrder","line","text","noHandlers","on","emitter","addEventListener","attachEvent","_handlers","concat","getHandlers","off","removeEventListener","detachEvent","signal","handlers","signalDOMEvent","cm","override","preventDefault","defaultPrevented","e_defaultPrevented","codemirrorIgnore","signalCursorActivity","cursorActivity","curOp","cursorActivityHandlers","hasHandler","eventMixin","ctor","e_preventDefault","returnValue","e_stopPropagation","stopPropagation","cancelBubble","e_stop","e_target","srcElement","e_button","which","button","ctrlKey","zwspSupported","badBidiRects","dragAndDrop","div","zeroWidthElement","measure","offsetHeight","offsetWidth","hasBadBidiRects","txt","r0","getBoundingClientRect","r1","left","right","splitLinesAuto","result","l","nl","rt","hasSelection","window","getSelection","te","ownerDocument","selection","parentElement","compareEndPoints","hasCopyEvent","oncopy","badZoomedRects","hasBadZoomedRects","normal","fromRange","abs","modes","mimeModes","defineMode","name","mode","dependencies","defineMIME","mime","spec","resolveMode","getMode","options","mfactory","modeObj","modeExtensions","exts","helperType","modeProps","prop$1","extendMode","properties","copyState","state","nstate","val","innerMode","info","startState","a1","a2","StringStream","lineOracle","lastColumnPos","lastColumnValue","lineStart","getLine","doc","first","size","Error","chunk","lines","children","sz","chunkSize","getBetween","iter","getLines","updateLineHeight","height","diff","lineNo","no","lineAtHeight","h","outer","lh","isLine","lineNumberFor","String","lineNumberFormatter","firstLineNumber","Pos","cmp","equalCursorPos","copyPos","x","maxPos","minPos","clipLine","clipPos","last","clipToLen","linelen","clipPosArray","eol","sol","peek","next","eat","eatWhile","eatSpace","skipToEnd","skipTo","backUp","column","indentation","pattern","consume","caseInsensitive","cased","substr","hideFirstChars","inner","lookAhead","oracle","baseToken","SavedContext","Context","maxLookAhead","baseTokens","baseTokenPos","highlightLine","context","forceToEnd","st","modeGen","lineClasses","runMode","loop","o","overlay","overlays","i_end","opaque","styles","classes","bgClass","textClass","getLineStyles","updateFrontier","getContextBefore","resetState","maxHighlightLength","stateAfter","save","styleClasses","highlightFrontier","modeFrontier","precise","display","findStartLine","saved","fromSaved","processLine","viewFrom","viewTo","nextLine","startAt","stream","callBlankLine","readToken","blankLine","token","copy","Token","takeToken","asArray","tokens","extractLineClasses","output","lineClass","flattenSpans","curStart","curStyle","addModeClass","mName","minindent","minline","lim","indented","retreatFrontier","sawReadOnlySpans","sawCollapsedSpans","seeReadOnlySpans","seeCollapsedSpans","MarkedSpan","marker","getMarkedSpanFor","spans","span","removeMarkedSpan","addMarkedSpan","op","inThisOp","WeakSet","markedSpans","has","add","attachLine","markedSpansBefore","old","startCh","isInsert","nw","inclusiveLeft","insertLeft","endsAfter","inclusiveRight","markedSpansAfter","endCh","startsBefore","stretchSpansOverChange","change","full","oldFirst","oldLast","sameLine","offset","span$1","clearEmptySpans","newMarkers","gapMarkers","gap","clearWhenEmpty","removeReadOnlyRanges","markers","mark","readOnly","parts","mk","find","p","newParts","dfrom","dto","detachMarkedSpans","detachLine","attachMarkedSpans","extraLeft","extraRight","compareCollapsedMarkers","lenDiff","aPos","bPos","fromCmp","collapsedSpanAtSide","sps","sp","collapsed","collapsedSpanAtStart","collapsedSpanAtEnd","collapsedSpanAround","conflictingCollapsedRange","toCmp","visualLine","merged","visualLineEnd","visualLineContinued","visualLineNo","lineN","vis","visualLineEndNo","lastLine","lineIsHidden","widgetNode","lineIsHiddenInner","heightAtLine","lineObj","lineLength","found$1","findMaxLine","d","maxLine","maxLineLength","maxLineChanged","Line","estimateHeight","updateLine","estHeight","cleanUpLine","styleToClassCache","styleToClassCacheWithMode","interpretTokenStyle","cache","buildLineContent","lineView","builder","pre","trailingSpace","splitSpaces","getOption","rest","addToken","buildToken","buildTokenBadBidi","insertLineContent","externalMeasured","maps","caches","lastChild","querySelector","defaultSpecialCharPlaceholder","t","title","startStyle","endStyle","css","attributes","displayText","special","specialChars","mustWrap","createDocumentFragment","lastIndex","txt$1","tabWidth","specialCharPlaceholder","fullStyle","attr","trailingBefore","spaceBefore","buildCollapsedSpan","ignoreWidget","widget","input","needsContentAttribute","setUneditable","allText","spanStyle","spanEndStyle","spanStartStyle","nextChange","foundBookmarks","endStyles","upto","tokenText","LineView","hidden","buildViewArray","nextPos","view","operationGroup","pushOperation","ops","ownsGroup","delayedCallbacks","fireCallbacksForOps","group","callbacks","cursorActivityCalled","finishOperation","endCb","orphanDelayedCallbacks","signalLater","list","fireOrphanDelayed","delayed","updateLineForChanges","dims","changes","updateLineText","updateLineGutter","updateLineClasses","updateLineWidgets","ensureLineWrapped","replaceChild","zIndex","updateLineBackground","background","wrap","insertBefore","getLineContent","ext","built","wrapClass","gutter","gutterBackground","gutterClass","fixedGutter","fixedPos","gutterTotalWidth","gutterMarkers","lineNumbers","wrap$1","gutterWrap","lineNumber","gutterLeft","lineNumInnerWidth","k","gutterSpecs","gutterWidth","alignable","isWidget","nextSibling","insertLineWidgets","buildLineElement","insertLineWidgetsFor","allowAbove","widgets","ws","handleMouseEvents","positionLineWidget","above","noHScroll","width","wrapperWidth","coverGutter","paddingLeft","position","marginLeft","widgetHeight","parentStyle","gutters","wrapper","clientWidth","eventInWidget","getAttribute","sizer","mover","paddingTop","lineSpace","offsetTop","paddingVert","paddingH","cachedPaddingH","getComputedStyle","currentStyle","data","parseInt","paddingRight","isNaN","scrollGap","nativeBarWidth","displayWidth","scroller","barWidth","displayHeight","clientHeight","barHeight","ensureLineHeights","rect","wrapping","lineWrapping","curWidth","heights","rects","getClientRects","bottom","top","mapFromLineView","updateExternalMeasurement","lineMeasure","measureChar","bias","measureCharPrepared","prepareMeasureForLine","findViewForLine","findViewIndex","getDimensions","forceUpdate","hasHeights","prepared","varHeight","key","measureCharInner","bogus","rtop","rbottom","measureText","nullRect","nodeAndOffsetInLineMap","mStart","mEnd","coverStart","coverEnd","getUsefulRect","place","maybeUpdateRectForZooming","rSpan","charWidth","rbot","bot","singleCursorHeightPerLine","screen","logicalXDPI","deviceXDPI","scaleX","scaleY","logicalYDPI","deviceYDPI","clearLineMeasurementCacheFor","clearLineMeasurementCache","externalMeasure","clearCaches","cachedCharWidth","cachedTextHeight","lineNumChars","pageScrollX","pageXOffset","documentElement","scrollLeft","pageScrollY","marginTop","pageYOffset","scrollTop","widgetTopHeight","intoCoordSystem","includeWidgets","yOff","viewOffset","lOff","xOff","fromCoordSystem","coords","localBox","lineSpaceBox","charCoords","cursorCoords","preparedMeasure","get","getBidi","partPos","invert","other","estimateCoords","PosWithInfo","outside","xRel","coordsChar","y","coordsCharInner","rangeEnd","wrappedLineExtent","begin","wrappedLineExtentChar","boxIsAfter","box","ltr","coordsBidiPartWrapped","coordsBidiPart","baseX","chAround","boxAround","atLeft","atStart","_lineNo","ref","closestDist","endX","dist","textHeight","anchor","clientLeft","offsetLeft","compensateForHScroll","th","perLine","widgetsHeight","estimateLineHeights","est","posFromMouse","liberal","forRect","space","clientX","clientY","colDiff","round","regChange","lendiff","updateLineNumbers","viewChanged","resetView","cut","viewCuttingPoint","cut$1","cutTop","cutBot","regLineChange","oldN","newN","adjustView","countDirtyView","dirty","updateSelection","showSelection","prepareSelection","primary","curFragment","cursors","selFragment","customCursor","$customCursor","sel","ranges","primIndex","empty","head","drawSelectionCursor","showCursorWhenSelecting","drawSelectionRange","cursor","cursorHeight","getWrapperElement","charPos","defaultCharWidth","otherCursor","cmpCoords","fragment","padding","leftSide","rightSide","sizerWidth","docLTR","drawForLine","fromArg","toArg","lineLen","wrapX","side","extent","fromPos","toPos","openStart","openEnd","openRight","topLeft","topRight","botLeft","botRight","sFrom","sTo","fromLine","toLine","singleVLine","leftEnd","rightStart","restartBlink","focused","clearInterval","blinker","cursorDiv","visibility","cursorBlinkRate","setInterval","hasFocus","onBlur","ensureFocus","focus","onFocus","delayBlurEvent","delayingBlurEvent","draggingText","selForContextMenu","reset","receivedFocus","shift","updateHeightsInViewport","prevBottom","lineDiv","viewTop","oldHeight","mustScroll","updateWidgetHeight","chWidth","w","visibleLines","viewport","ensure","ensureFrom","ensureTo","maybeScrollWindow","doScroll","innerHeight","scrollNode","scrollIntoView","scrollPosIntoView","margin","limit","changed","endCoords","scrollPos","calculateScrollPos","startTop","startLeft","updateScrollTop","setScrollLeft","snapMargin","screentop","docBottom","atTop","atBottom","newTop","gutterSpace","screenleft","screenw","tooWide","addToScrollTop","resolveScrollToPos","ensureCursorVisible","getCursor","scrollToPos","cursorScrollMargin","scrollToCoords","scrollToRange","scrollToCoordsRange","sPos","updateDisplaySimple","setScrollTop","startWorker","forceScroll","scrollHeight","scrollbars","isScroller","scrollWidth","alignHorizontally","measureForScrollbars","gutterW","docH","viewHeight","viewWidth","barLeft","docHeight","NativeScrollbars","vert","horiz","tabIndex","checkedZeroWidth","minHeight","minWidth","update","needsH","needsV","sWidth","totalHeight","totalWidth","zeroWidthHack","disableHoriz","enableZeroWidthBar","disableVert","pointerEvents","bar","delay","maybeDisable","elementFromPoint","clear","NullScrollbars","updateScrollbars","startWidth","startHeight","updateScrollbarsInner","sizes","paddingBottom","heightForcer","borderBottom","scrollbarFiller","coverGutterNextToScrollbar","gutterFiller","scrollbarModel","native","null","initScrollbars","scrollbarStyle","axis","nextOpId","startOperation","updateInput","typing","changeObjs","selectionChanged","updateMaxLine","markArrays","endOperation","endOperations","endOperation_R1","endOperation_W1","endOperation_R2","endOperation_W2","endOperation_finish","maybeClipScrollbars","mustUpdate","DisplayUpdate","updatedDisplay","updateDisplayIfNeeded","barMeasure","adjustWidthTo","maxScrollLeft","preparedSelection","takeFocus","setDocumentHeight","postUpdateDisplay","wheelStartX","wheelStartY","maybeHiddenMarkers","unhidden","maybeUnhiddenMarkers","finish","runInOp","operation","methodOp","docMethodOp","highlight","highlightWorker","workTime","changedLines","oldStyles","highlighted","oldCls","newCls","ischange","workDelay","force","visible","editorIsHidden","wrapperHeight","oldDisplayWidth","events","scrollbarsClipped","marginBottom","borderRightWidth","selectionSnapshot","active","anchorNode","extend","anchorOffset","focusNode","focusOffset","restoreSelection","snapshot","nodeName","removeAllRanges","addRange","renderedView","maybeUpdateLineNumberWidth","viewportMargin","different","lastWrapHeight","lastWrapWidth","toUpdate","selSnapshot","patchDisplay","selectionDiv","reportedViewFrom","reportedViewTo","updateNumbersFrom","container","rm","currentWheelTarget","updateNumber","updateGutterSpace","alignWidgets","comp","align","innerW","lineGutter","lineNumWidth","getGutters","sawLineNumbers","renderGutters","specs","gElt","updateGutters","Display","draggable","wheelDX","wheelDY","activeTouch","init","wheelSamples","wheelPixelsPerUnit","wheelEventDelta","dx","wheelDeltaX","dy","wheelDeltaY","detail","HORIZONTAL_AXIS","VERTICAL_AXIS","wheelDelta","wheelEventPixels","delta","onScrollWheel","pixelsPerUnit","deltaMode","deltaX","deltaY","canScrollX","canScrollY","pixels","movedX","movedY","sample","Selection","equals","here","there","deepCopy","Range","somethingSelected","normalizeSelection","mayTouch","selectionsMayTouch","prim","sort","inv","simpleSelection","changeEnd","adjustForChange","computeSelAfterChange","offsetPos","computeReplacedSel","hint","oldPrev","newPrev","loadMode","modeOption","resetModeState","isWholeLineUpdate","wholeLineUpdateBefore","updateDoc","spansFor","linesFor","firstLine","lastText","lastSpans","nlines","insert","remove","added","added$1","added$2","linkedDocs","sharedHistOnly","propagate","skip","sharedHist","linked","rel","shared","attachDoc","setDirectionClass","directionChanged","History","done","undone","undoDepth","lastModTime","lastSelTime","lastOp","lastSelOp","lastOrigin","lastSelOrigin","generation","maxGeneration","historyChangeFromChange","histChange","attachLocalSpans","clearSelectionEvents","pop","lastChangeEvent","hist","addChangeToHistory","selAfter","opId","history","historyEventDelay","pushSelectionToHistory","selectionEventCanBeMerged","addSelectionToHistory","clearRedo","dest","existing","removeClearedSpans","explicitlyCleared","getOldSpans","mergeOldSpans","stretched","oldCur","stretchCur","copyHistoryArray","newGroup","instantiateSel","event","newChanges","extendRange","posBefore","extendSelection","setSelection","extendSelections","heads","replaceOneSelection","setSimpleSelection","filterSelectionChange","setSelectionReplaceHistory","setSelectionNoUndo","NaN","setSelectionInner","skipAtomicInSelection","reCheckSelection","mayClear","newAnchor","skipAtomic","newHead","skipAtomicInner","oldPos","preventCursorLeft","selectLeft","preventCursorRight","selectRight","atomic","near","movePos","far","cantEdit","selectAll","filterChange","canceled","cancel","makeChange","ignoreReadOnly","suppressEdits","makeChangeInner","makeChangeSingleDoc","rebased","rebaseHist","makeChangeFromHistory","allowSelectionOnly","suppress","antiChanges","filter","returned","v","shiftDoc","distance","removed","makeChangeSingleDocInEditor","recomputeMaxLength","checkWidthStart","changesHandler","changeHandler","replaceRange","assign","splitLines","rebaseHistSelSingle","rebaseHistArray","sub","ok","copied","changeLine","handle","changeType","LeafChunk","BranchChunk","removeInner","insertInner","iterN","remaining","leaf","maybeSpill","me","sibling","myIndex","used","LineWidget","opt","adjustScrollWhenAboveVisible","addLineWidget","insertAt","aboveVisible","this$1","oldH","nextMarkerId","TextMarker","markText","markTextShared","replacedWith","addToHistory","curLine","clearOnEnter","clearHistory","withOp","visual","dHeight","SharedTextMarker","cloneNode","isParent","findSharedMarkers","findMarks","copySharedMarkers","mFrom","mTo","subMark","detachSharedMarkers","subMarker","nextDocId","Doc","lineSep","cleanGeneration","constructor","getValue","join","lineSeparator","setValue","getRange","getLineHandle","getLineNumber","getLineHandleVisualStart","lineCount","listSelections","setCursor","extendSelectionsBy","setSelections","addSelection","getSelections","replaceSelection","dup","replaceSelections","newSel","undo","redo","undoSelection","redoSelection","setExtending","getExtending","historySize","markClean","changeGeneration","forceSplit","isClean","gen","getHistory","setHistory","histData","setGutterMarker","gutterID","clearGutter","lineInfo","addLineClass","where","removeLineClass","removeLineWidget","setBookmark","realOpts","findMarksAt","getAllMarks","posFromIndex","sepSize","indexFromPos","copyHistory","linkedDoc","unlinkDoc","CodeMirror","splitIds","iterLinkedDocs","getEditor","setDirection","eachLine","lastDrop","onDrop","clearDragCursor","files","dataTransfer","isReadOnly","FileReader","File","read","markAsReadAndPasteIfAllFilesAreRead","readTextFromFile","file","allowDropFileTypes","reader","onerror","onload","readAsText","text$1","getData","selected","onDragStart","setData","effectAllowed","setDragImage","img","src","_top","onDragOver","frag","dragCursor","forEachCodeMirror","getElementsByClassName","byClass","editors","globalsRegistered","ensureGlobalHandlers","registerGlobalHandlers","resizeTimer","onResize","setSize","keyNames","fromCharCode","keyMap","normalizeKeyName","alt","ctrl","cmd","mod","normalizeKeyMap","keymap","keyname","keys","lookupKey","getKeyMap","fallthrough","isModifierKey","keyCode","addModifierNames","noShift","altKey","metaKey","shiftKey","keyName","char","altGraphKey","deleteNearSelection","compute","kill","toKill","replaced","moveCharLogically","moveLogically","endOfLine","visually","prep","targetTop","moveVisually","bidi","mv","getWrappedLineExtent","moveInStorageOrder","searchInVisualLine","getRes","res","nextCh","basic","Left","Right","Up","Down","End","Home","PageUp","PageDown","Delete","Backspace","Tab","Enter","Insert","Esc","pcDefault","emacsy","macDefault","default","commands","singleSelection","killLine","deleteLine","delLineLeft","delWrappedLineLeft","delWrappedLineRight","rightPos","goDocStart","goDocEnd","goLineStart","goLineStartSmart","lineStartSmart","goLineEnd","lineEnd","goLineRight","goLineLeft","goLineLeftSmart","goLineUp","moveV","goLineDown","goPageUp","goPageDown","goCharLeft","moveH","goCharRight","goColumnLeft","goColumnRight","goWordLeft","goGroupRight","goGroupLeft","goWordRight","delCharBefore","deleteH","delCharAfter","delWordBefore","delWordAfter","delGroupBefore","delGroupAfter","indentAuto","indentSelection","indentMore","indentLess","insertTab","insertSoftTab","spaces","defaultTab","execCommand","transposeChars","newlineAndIndent","sels","indentLine","openLine","toggleOverwrite","firstNonWS","inWS","doHandleBinding","bound","dropShift","ensurePolled","prevShift","lookupKeyForEditor","keyMaps","extraKeys","stopSeq","dispatchKey","seq","keySeq","dispatchKeyInner","handleKeyBinding","motion","handleCharBinding","lastStoppedKey","onKeyDown","getField","handled","showCrossHair","up","onKeyUp","onKeyPress","charCode","lastClick","lastDoubleClick","DOUBLECLICK_DELAY","PastClick","clickRepeat","now","compare","onMouseDown","supportsTouch","repeat","selectingText","handleMappedButton","leftButtonDown","onContextMenu","configureMouse","option","unit","addNew","moveOnDrag","contained","behavior","dragDrop","leftButtonStartDrag","leftButtonSelect","moved","dragEnd","mouseMove","dragStart","preventScroll","e2","rangeForUnit","findWordAt","ourRange","ourIndex","startSel","lastPos","extendTo","startCol","posCol","leftPos","oldRange","ranges$1","bidiSimplify","editorSize","counter","curCount","move","buttons","anchorLine","boundary","headIndex","usePart","gutterEvent","prevent","mX","mY","touches","lineBox","g","clickInGutter","contextMenuInGutter","themeChanged","theme","Init","defaults","optionHandlers","defineOptions","deflt","notOnInit","defineOption","newBreaks","refresh","getInputField","spellcheck","autocorrect","autocapitalize","detach","attach","wrappingChanged","integer","blur","readOnlyChanged","screenReaderLabelChanged","dragDropChanged","resetPosition","funcs","dragFunctions","toggle","enter","over","leave","drop","inputStyles","inputStyle","pasteIncoming","cutIncoming","autofocus","registerEventHandlers","finishInit","initHooks","textRendering","word","touchFinished","prevTouch","finishTouch","isMouseLikeTouchEvent","touch","radiusX","radiusY","farAway","pageX","pageY","inp","how","aggressive","indent","curSpace","curSpaceString","indentUnit","indentString","indentWithTabs","pos$1","defineInitHook","lastCopied","setLastCopied","newLastCopied","applyTextInput","inserted","deleted","recent","paste","textLines","multiPaste","pasteLinesPerSelection","lineWise","changeEvent","triggerElectric","handlePaste","pasted","clipboardData","disableInput","electricChars","smartIndent","getModeAt","electricInput","copyableRanges","lineRange","disableBrowserMagic","field","hiddenTextarea","border","addEditorMethods","helpers","setOption","getDoc","addKeyMap","removeKeyMap","addOverlay","modeSpec","removeOverlay","newRanges","getTokenAt","getLineTokens","getTokenTypeAt","getHelper","getHelpers","help","_global","getStateAfter","defaultTextHeight","getViewport","addWidget","vspace","hspace","triggerOnKeyDown","triggerOnKeyPress","triggerOnKeyUp","triggerOnMouseDown","findPosH","amount","hitSide","rtlMoveVisually","findPosV","goalColumn","goals","headPos","startChar","check","scrollTo","getScrollInfo","interpret","swapDoc","phrase","phraseText","phrases","getScrollerElement","getGutterElement","registerHelper","registerGlobalHelper","predicate","origDir","lineDir","findNextLine","moveOnce","boundToLine","astral","sawType","pageSize","moveAmount","ContentEditableInput","lastAnchorNode","lastAnchorOffset","lastFocusNode","lastFocusOffset","polling","composing","gracePeriod","readDOMTimeout","posToDOM","isInGutter","scan","badPos","bad","domTextBetween","closing","extraLinebreak","recognizeMarker","close","addText","walk","cmText","markerID","isBlock","textContent","nodeValue","domToPos","lineNode","locateNodeInLineView","textNode","topNode","curNode","previousSibling","dist$1","belongsToInput","onCopyCut","lineWiseCopyCut","clearData","kludge","hadFocus","showPrimarySelection","contentEditable","updateFromDOM","readFromDOMSoon","forceCompositionEnd","label","removeAttribute","showMultipleSelections","curAnchor","curFocus","rng","rangeCount","getRangeAt","startGracePeriod","rememberSelection","selectionInEditor","commonAncestorContainer","poll","pollSelection","pollInterval","pollContent","fromIndex","fromNode","toNode","toIndex","newText","oldText","cutFront","cutEnd","oldTop","maxCutFront","newBot","oldBot","maxCutEnd","chFrom","chTo","TextareaInput","prevInput","pollingFast","fromTextArea","textarea","tabindex","placeholder","realSubmit","form","leaveSubmitMethodAlone","submit","wrappedSubmit","getTextArea","toTextArea","addLegacyProps","cmpPos","createField","prepareCopyCut","fastPoll","dispatchEvent","Event","_display","moveInputWithCursor","wrapOff","lineOff","teTop","teLeft","drawn","contextMenuPending","slowPoll","missed","same","resetSelectionOnContextMenu","oldScrollY","oldCSS","oldWrapperCSS","wrapperBox","offsetParent","scrollY","rehide","detectingSelectAll","prepareSelectAllHack","mouseup","extval","disabled","dontDelegate","method","contenteditable","defineExtension","func","defineDocExtension","version"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/311.2b245394.chunk.js b/serv/web/build/static/js/311.2b245394.chunk.js new file mode 100644 index 00000000..85efc9db --- /dev/null +++ b/serv/web/build/static/js/311.2b245394.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[311,889,186],{9087:(e,t,n)=>{n.d(t,{a:()=>p,b:()=>s,c:()=>f,d:()=>m,e:()=>v,g:()=>u});var o=n(2572),i=n(8979),r=n(2269),a=Object.defineProperty,c=(e,t)=>a(e,"name",{value:t,configurable:!0});function u(e,t){const n={schema:e,type:null,parentType:null,inputType:null,directiveDef:null,fieldDef:null,argDef:null,argDefs:null,objectFieldDefs:null};return(0,r.f)(t,(t=>{var i,r;switch(t.kind){case"Query":case"ShortQuery":n.type=e.getQueryType();break;case"Mutation":n.type=e.getMutationType();break;case"Subscription":n.type=e.getSubscriptionType();break;case"InlineFragment":case"FragmentDefinition":t.type&&(n.type=e.getType(t.type));break;case"Field":case"AliasedField":n.fieldDef=n.type&&t.name?l(e,n.parentType,t.name):null,n.type=null===(i=n.fieldDef)||void 0===i?void 0:i.type;break;case"SelectionSet":n.parentType=n.type?(0,o.xC)(n.type):null;break;case"Directive":n.directiveDef=t.name?e.getDirective(t.name):null;break;case"Arguments":const a=t.prevState?"Field"===t.prevState.kind?n.fieldDef:"Directive"===t.prevState.kind?n.directiveDef:"AliasedField"===t.prevState.kind?t.prevState.name&&l(e,n.parentType,t.prevState.name):null:null;n.argDefs=a?a.args:null;break;case"Argument":if(n.argDef=null,n.argDefs)for(let e=0;ee.value===t.name)):null;break;case"ListValue":const u=n.inputType?(0,o.tf)(n.inputType):null;n.inputType=u instanceof o.p2?u.ofType:null;break;case"ObjectValue":const p=n.inputType?(0,o.xC)(n.inputType):null;n.objectFieldDefs=p instanceof o.sR?p.getFields():null;break;case"ObjectField":const s=t.name&&n.objectFieldDefs?n.objectFieldDefs[t.name]:null;n.inputType=null==s?void 0:s.type;break;case"NamedType":n.type=t.name?e.getType(t.name):null}})),n}function l(e,t,n){return n===i.Az.name&&e.getQueryType()===t?i.Az:n===i.tF.name&&e.getQueryType()===t?i.tF:n===i.hU.name&&(0,o.Gv)(t)?i.hU:t&&t.getFields?t.getFields()[n]:void 0}function d(e,t){for(let n=0;n{n.r(t),n.d(t,{C:()=>a,c:()=>c});var o=n(8308);function i(e,t){for(var n=0;no[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(i,"name",{value:"_mergeNamespaces",configurable:!0});var r=(0,o.r)();const a=(0,o.g)(r),c=i({__proto__:null,default:a},[r])},2269:(e,t,n)=>{n.d(t,{f:()=>o});function o(e,t){const n=[];let o=e;for(;null!=o&&o.kind;)n.push(o),o=o.prevState;for(let i=n.length-1;i>=0;i--)t(n[i])}(0,Object.defineProperty)(o,"name",{value:"forEachState",configurable:!0})},9186:(e,t,n)=>{n.r(t);var o=n(889),i=(n(8308),Object.defineProperty),r=(e,t)=>i(e,"name",{value:t,configurable:!0});function a(e){return{options:e instanceof Function?{render:e}:!0===e?{}:e}}function c(e){const{options:t}=e.state.info;return(null==t?void 0:t.hoverTime)||500}function u(e,t){const n=e.state.info,i=t.target||t.srcElement;if(!(i instanceof HTMLElement)||"SPAN"!==i.nodeName||void 0!==n.hoverTimeout)return;const a=i.getBoundingClientRect(),u=r((function(){clearTimeout(n.hoverTimeout),n.hoverTimeout=setTimeout(p,s)}),"onMouseMove"),d=r((function(){o.C.off(document,"mousemove",u),o.C.off(e.getWrapperElement(),"mouseout",d),clearTimeout(n.hoverTimeout),n.hoverTimeout=void 0}),"onMouseOut"),p=r((function(){o.C.off(document,"mousemove",u),o.C.off(e.getWrapperElement(),"mouseout",d),n.hoverTimeout=void 0,l(e,a)}),"onHover"),s=c(e);n.hoverTimeout=setTimeout(p,s),o.C.on(document,"mousemove",u),o.C.on(e.getWrapperElement(),"mouseout",d)}function l(e,t){const n=e.coordsChar({left:(t.left+t.right)/2,top:(t.top+t.bottom)/2},"window"),o=e.state.info,{options:i}=o,r=i.render||e.getHelper(n,"info");if(r){const o=e.getTokenAt(n,!0);if(o){const a=r(o,i,e,n);a&&d(e,t,a)}}}function d(e,t,n){const i=document.createElement("div");i.className="CodeMirror-info",i.append(n),document.body.append(i);const a=i.getBoundingClientRect(),c=window.getComputedStyle(i),u=a.right-a.left+parseFloat(c.marginLeft)+parseFloat(c.marginRight),l=a.bottom-a.top+parseFloat(c.marginTop)+parseFloat(c.marginBottom);let d=t.bottom;l>window.innerHeight-t.bottom-15&&t.top>window.innerHeight-t.bottom&&(d=t.top-l),d<0&&(d=t.bottom);let p,s=Math.max(0,window.innerWidth-u-15);s>t.left&&(s=t.left),i.style.opacity="1",i.style.top=d+"px",i.style.left=s+"px";const f=r((function(){clearTimeout(p)}),"onMouseOverPopup"),m=r((function(){clearTimeout(p),p=setTimeout(v,200)}),"onMouseOut"),v=r((function(){o.C.off(i,"mouseover",f),o.C.off(i,"mouseout",m),o.C.off(e.getWrapperElement(),"mouseout",m),i.style.opacity?(i.style.opacity="0",setTimeout((()=>{i.parentNode&&i.remove()}),600)):i.parentNode&&i.remove()}),"hidePopup");o.C.on(i,"mouseover",f),o.C.on(i,"mouseout",m),o.C.on(e.getWrapperElement(),"mouseout",m)}o.C.defineOption("info",!1,((e,t,n)=>{if(n&&n!==o.C.Init){const t=e.state.info.onMouseOver;o.C.off(e.getWrapperElement(),"mouseover",t),clearTimeout(e.state.info.hoverTimeout),delete e.state.info}if(t){const n=e.state.info=a(t);n.onMouseOver=u.bind(null,e),o.C.on(e.getWrapperElement(),"mouseover",n.onMouseOver)}})),r(a,"createState"),r(c,"getHoverTime"),r(u,"onMouseOver"),r(l,"onMouseHover"),r(d,"showPopup")},311:(e,t,n)=>{n.r(t);var o=n(2572),i=n(889),r=n(9087),a=(n(9186),n(8308),n(2269),Object.defineProperty),c=(e,t)=>a(e,"name",{value:t,configurable:!0});function u(e,t,n){l(e,t,n),f(e,t,n,t.type)}function l(e,t,n){var o;y(e,(null===(o=t.fieldDef)||void 0===o?void 0:o.name)||"","field-name",n,(0,r.a)(t))}function d(e,t,n){var o;y(e,"@"+((null===(o=t.directiveDef)||void 0===o?void 0:o.name)||""),"directive-name",n,(0,r.b)(t))}function p(e,t,n){var o;y(e,(null===(o=t.argDef)||void 0===o?void 0:o.name)||"","arg-name",n,(0,r.c)(t)),f(e,t,n,t.inputType)}function s(e,t,n){var o;const i=(null===(o=t.enumValue)||void 0===o?void 0:o.name)||"";m(e,t,n,t.inputType),y(e,"."),y(e,i,"enum-value",n,(0,r.d)(t))}function f(e,t,n,i){const a=document.createElement("span");a.className="type-name-pill",i instanceof o.bM?(m(a,t,n,i.ofType),y(a,"!")):i instanceof o.p2?(y(a,"["),m(a,t,n,i.ofType),y(a,"]")):y(a,(null==i?void 0:i.name)||"","type-name",n,(0,r.e)(t,i)),e.append(a)}function m(e,t,n,i){i instanceof o.bM?(m(e,t,n,i.ofType),y(e,"!")):i instanceof o.p2?(y(e,"["),m(e,t,n,i.ofType),y(e,"]")):y(e,(null==i?void 0:i.name)||"","type-name",n,(0,r.e)(t,i))}function v(e,t,n){const{description:o}=n;if(o){const n=document.createElement("div");n.className="info-description",t.renderDescription?n.innerHTML=t.renderDescription(o):n.append(document.createTextNode(o)),e.append(n)}g(e,t,n)}function g(e,t,n){const o=n.deprecationReason;if(o){const n=document.createElement("div");n.className="info-deprecation",e.append(n);const i=document.createElement("span");i.className="info-deprecation-label",i.append(document.createTextNode("Deprecated")),n.append(i);const r=document.createElement("div");r.className="info-deprecation-reason",t.renderDescription?r.innerHTML=t.renderDescription(o):r.append(document.createTextNode(o)),n.append(r)}}function y(e,t){let n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{onClick:null},i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;if(n){const{onClick:r}=o;let a;r?(a=document.createElement("a"),a.href="javascript:void 0",a.addEventListener("click",(e=>{r(i,e)}))):a=document.createElement("span"),a.className=n,a.append(document.createTextNode(t)),e.append(a)}else e.append(document.createTextNode(t))}i.C.registerHelper("info","graphql",((e,t)=>{if(!t.schema||!e.state)return;const{kind:n,step:o}=e.state,i=(0,r.g)(t.schema,e.state);if("Field"===n&&0===o&&i.fieldDef||"AliasedField"===n&&2===o&&i.fieldDef){const e=document.createElement("div");e.className="CodeMirror-info-header",u(e,i,t);const n=document.createElement("div");return n.append(e),v(n,t,i.fieldDef),n}if("Directive"===n&&1===o&&i.directiveDef){const e=document.createElement("div");e.className="CodeMirror-info-header",d(e,i,t);const n=document.createElement("div");return n.append(e),v(n,t,i.directiveDef),n}if("Argument"===n&&0===o&&i.argDef){const e=document.createElement("div");e.className="CodeMirror-info-header",p(e,i,t);const n=document.createElement("div");return n.append(e),v(n,t,i.argDef),n}if("EnumValue"===n&&i.enumValue&&i.enumValue.description){const e=document.createElement("div");e.className="CodeMirror-info-header",s(e,i,t);const n=document.createElement("div");return n.append(e),v(n,t,i.enumValue),n}if("NamedType"===n&&i.type&&i.type.description){const e=document.createElement("div");e.className="CodeMirror-info-header",m(e,i,t,i.type);const n=document.createElement("div");return n.append(e),v(n,t,i.type),n}})),c(u,"renderField"),c(l,"renderQualifiedField"),c(d,"renderDirective"),c(p,"renderArg"),c(s,"renderEnumValue"),c(f,"renderTypeAnnotation"),c(m,"renderType"),c(v,"renderDescription"),c(g,"renderDeprecation"),c(y,"text")}}]); +//# sourceMappingURL=311.2b245394.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/311.2b245394.chunk.js.map b/serv/web/build/static/js/311.2b245394.chunk.js.map new file mode 100644 index 00000000..e830eca9 --- /dev/null +++ b/serv/web/build/static/js/311.2b245394.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/311.2b245394.chunk.js","mappings":"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","sources":["../node_modules/@graphiql/codemirror-graphql/esm/utils/getTypeInfo.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/SchemaReference.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/forEachState.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/info-addon.js","../node_modules/@graphiql/codemirror-graphql/esm/info.js"],"sourcesContent":["import { isCompositeType, getNullableType, getNamedType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef, } from 'graphql';\nimport forEachState from './forEachState';\nexport default function getTypeInfo(schema, tokenState) {\n const info = {\n schema,\n type: null,\n parentType: null,\n inputType: null,\n directiveDef: null,\n fieldDef: null,\n argDef: null,\n argDefs: null,\n objectFieldDefs: null,\n };\n forEachState(tokenState, (state) => {\n var _a, _b;\n switch (state.kind) {\n case 'Query':\n case 'ShortQuery':\n info.type = schema.getQueryType();\n break;\n case 'Mutation':\n info.type = schema.getMutationType();\n break;\n case 'Subscription':\n info.type = schema.getSubscriptionType();\n break;\n case 'InlineFragment':\n case 'FragmentDefinition':\n if (state.type) {\n info.type = schema.getType(state.type);\n }\n break;\n case 'Field':\n case 'AliasedField':\n info.fieldDef =\n info.type && state.name\n ? getFieldDef(schema, info.parentType, state.name)\n : null;\n info.type = (_a = info.fieldDef) === null || _a === void 0 ? void 0 : _a.type;\n break;\n case 'SelectionSet':\n info.parentType = info.type ? getNamedType(info.type) : null;\n break;\n case 'Directive':\n info.directiveDef = state.name ? schema.getDirective(state.name) : null;\n break;\n case 'Arguments':\n const parentDef = state.prevState\n ? state.prevState.kind === 'Field'\n ? info.fieldDef\n : state.prevState.kind === 'Directive'\n ? info.directiveDef\n : state.prevState.kind === 'AliasedField'\n ? state.prevState.name &&\n getFieldDef(schema, info.parentType, state.prevState.name)\n : null\n : null;\n info.argDefs = parentDef ? parentDef.args : null;\n break;\n case 'Argument':\n info.argDef = null;\n if (info.argDefs) {\n for (let i = 0; i < info.argDefs.length; i++) {\n if (info.argDefs[i].name === state.name) {\n info.argDef = info.argDefs[i];\n break;\n }\n }\n }\n info.inputType = (_b = info.argDef) === null || _b === void 0 ? void 0 : _b.type;\n break;\n case 'EnumValue':\n const enumType = info.inputType ? getNamedType(info.inputType) : null;\n info.enumValue =\n enumType instanceof GraphQLEnumType\n ? find(enumType.getValues(), val => val.value === state.name)\n : null;\n break;\n case 'ListValue':\n const nullableType = info.inputType\n ? getNullableType(info.inputType)\n : null;\n info.inputType =\n nullableType instanceof GraphQLList ? nullableType.ofType : null;\n break;\n case 'ObjectValue':\n const objectType = info.inputType ? getNamedType(info.inputType) : null;\n info.objectFieldDefs =\n objectType instanceof GraphQLInputObjectType\n ? objectType.getFields()\n : null;\n break;\n case 'ObjectField':\n const objectField = state.name && info.objectFieldDefs\n ? info.objectFieldDefs[state.name]\n : null;\n info.inputType = objectField === null || objectField === void 0 ? void 0 : objectField.type;\n break;\n case 'NamedType':\n info.type = state.name ? schema.getType(state.name) : null;\n break;\n }\n });\n return info;\n}\nfunction getFieldDef(schema, type, fieldName) {\n if (fieldName === SchemaMetaFieldDef.name && schema.getQueryType() === type) {\n return SchemaMetaFieldDef;\n }\n if (fieldName === TypeMetaFieldDef.name && schema.getQueryType() === type) {\n return TypeMetaFieldDef;\n }\n if (fieldName === TypeNameMetaFieldDef.name && isCompositeType(type)) {\n return TypeNameMetaFieldDef;\n }\n if (type && type.getFields) {\n return type.getFields()[fieldName];\n }\n}\nfunction find(array, predicate) {\n for (let i = 0; i < array.length; i++) {\n if (predicate(array[i])) {\n return array[i];\n }\n }\n}\n//# sourceMappingURL=getTypeInfo.js.map","import { getNamedType } from 'graphql';\nexport function getFieldReference(typeInfo) {\n return {\n kind: 'Field',\n schema: typeInfo.schema,\n field: typeInfo.fieldDef,\n type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType,\n };\n}\nexport function getDirectiveReference(typeInfo) {\n return {\n kind: 'Directive',\n schema: typeInfo.schema,\n directive: typeInfo.directiveDef,\n };\n}\nexport function getArgumentReference(typeInfo) {\n return typeInfo.directiveDef\n ? {\n kind: 'Argument',\n schema: typeInfo.schema,\n argument: typeInfo.argDef,\n directive: typeInfo.directiveDef,\n }\n : {\n kind: 'Argument',\n schema: typeInfo.schema,\n argument: typeInfo.argDef,\n field: typeInfo.fieldDef,\n type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType,\n };\n}\nexport function getEnumValueReference(typeInfo) {\n return {\n kind: 'EnumValue',\n value: typeInfo.enumValue || undefined,\n type: typeInfo.inputType\n ? getNamedType(typeInfo.inputType)\n : undefined,\n };\n}\nexport function getTypeReference(typeInfo, type) {\n return {\n kind: 'Type',\n schema: typeInfo.schema,\n type: type || typeInfo.type,\n };\n}\nfunction isMetaField(fieldDef) {\n return fieldDef.name.slice(0, 2) === '__';\n}\n//# sourceMappingURL=SchemaReference.js.map","export default function forEachState(stack, fn) {\n const reverseStateStack = [];\n let state = stack;\n while (state === null || state === void 0 ? void 0 : state.kind) {\n reverseStateStack.push(state);\n state = state.prevState;\n }\n for (let i = reverseStateStack.length - 1; i >= 0; i--) {\n fn(reverseStateStack[i]);\n }\n}\n//# sourceMappingURL=forEachState.js.map","import CodeMirror from 'codemirror';\nCodeMirror.defineOption('info', false, (cm, options, old) => {\n if (old && old !== CodeMirror.Init) {\n const oldOnMouseOver = cm.state.info.onMouseOver;\n CodeMirror.off(cm.getWrapperElement(), 'mouseover', oldOnMouseOver);\n clearTimeout(cm.state.info.hoverTimeout);\n delete cm.state.info;\n }\n if (options) {\n const state = (cm.state.info = createState(options));\n state.onMouseOver = onMouseOver.bind(null, cm);\n CodeMirror.on(cm.getWrapperElement(), 'mouseover', state.onMouseOver);\n }\n});\nfunction createState(options) {\n return {\n options: options instanceof Function\n ? { render: options }\n : options === true\n ? {}\n : options,\n };\n}\nfunction getHoverTime(cm) {\n const { options } = cm.state.info;\n return (options === null || options === void 0 ? void 0 : options.hoverTime) || 500;\n}\nfunction onMouseOver(cm, e) {\n const state = cm.state.info;\n const target = e.target || e.srcElement;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n if (target.nodeName !== 'SPAN' || state.hoverTimeout !== undefined) {\n return;\n }\n const box = target.getBoundingClientRect();\n const onMouseMove = function () {\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n };\n const onMouseOut = function () {\n CodeMirror.off(document, 'mousemove', onMouseMove);\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = undefined;\n };\n const onHover = function () {\n CodeMirror.off(document, 'mousemove', onMouseMove);\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n state.hoverTimeout = undefined;\n onMouseHover(cm, box);\n };\n const hoverTime = getHoverTime(cm);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n CodeMirror.on(document, 'mousemove', onMouseMove);\n CodeMirror.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n}\nfunction onMouseHover(cm, box) {\n const pos = cm.coordsChar({\n left: (box.left + box.right) / 2,\n top: (box.top + box.bottom) / 2,\n }, 'window');\n const state = cm.state.info;\n const { options } = state;\n const render = options.render || cm.getHelper(pos, 'info');\n if (render) {\n const token = cm.getTokenAt(pos, true);\n if (token) {\n const info = render(token, options, cm, pos);\n if (info) {\n showPopup(cm, box, info);\n }\n }\n }\n}\nfunction showPopup(cm, box, info) {\n const popup = document.createElement('div');\n popup.className = 'CodeMirror-info';\n popup.append(info);\n document.body.append(popup);\n const popupBox = popup.getBoundingClientRect();\n const popupStyle = window.getComputedStyle(popup);\n const popupWidth = popupBox.right -\n popupBox.left +\n parseFloat(popupStyle.marginLeft) +\n parseFloat(popupStyle.marginRight);\n const popupHeight = popupBox.bottom -\n popupBox.top +\n parseFloat(popupStyle.marginTop) +\n parseFloat(popupStyle.marginBottom);\n let topPos = box.bottom;\n if (popupHeight > window.innerHeight - box.bottom - 15 &&\n box.top > window.innerHeight - box.bottom) {\n topPos = box.top - popupHeight;\n }\n if (topPos < 0) {\n topPos = box.bottom;\n }\n let leftPos = Math.max(0, window.innerWidth - popupWidth - 15);\n if (leftPos > box.left) {\n leftPos = box.left;\n }\n popup.style.opacity = '1';\n popup.style.top = topPos + 'px';\n popup.style.left = leftPos + 'px';\n let popupTimeout;\n const onMouseOverPopup = function () {\n clearTimeout(popupTimeout);\n };\n const onMouseOut = function () {\n clearTimeout(popupTimeout);\n popupTimeout = setTimeout(hidePopup, 200);\n };\n const hidePopup = function () {\n CodeMirror.off(popup, 'mouseover', onMouseOverPopup);\n CodeMirror.off(popup, 'mouseout', onMouseOut);\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n if (popup.style.opacity) {\n popup.style.opacity = '0';\n setTimeout(() => {\n if (popup.parentNode) {\n popup.remove();\n }\n }, 600);\n }\n else if (popup.parentNode) {\n popup.remove();\n }\n };\n CodeMirror.on(popup, 'mouseover', onMouseOverPopup);\n CodeMirror.on(popup, 'mouseout', onMouseOut);\n CodeMirror.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n}\n//# sourceMappingURL=info-addon.js.map","import { GraphQLList, GraphQLNonNull, } from 'graphql';\nimport CodeMirror from 'codemirror';\nimport getTypeInfo from './utils/getTypeInfo';\nimport { getArgumentReference, getDirectiveReference, getEnumValueReference, getFieldReference, getTypeReference, } from './utils/SchemaReference';\nimport './utils/info-addon';\nCodeMirror.registerHelper('info', 'graphql', (token, options) => {\n if (!options.schema || !token.state) {\n return;\n }\n const { kind, step } = token.state;\n const typeInfo = getTypeInfo(options.schema, token.state);\n if ((kind === 'Field' && step === 0 && typeInfo.fieldDef) ||\n (kind === 'AliasedField' && step === 2 && typeInfo.fieldDef)) {\n const header = document.createElement('div');\n header.className = 'CodeMirror-info-header';\n renderField(header, typeInfo, options);\n const into = document.createElement('div');\n into.append(header);\n renderDescription(into, options, typeInfo.fieldDef);\n return into;\n }\n if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) {\n const header = document.createElement('div');\n header.className = 'CodeMirror-info-header';\n renderDirective(header, typeInfo, options);\n const into = document.createElement('div');\n into.append(header);\n renderDescription(into, options, typeInfo.directiveDef);\n return into;\n }\n if (kind === 'Argument' && step === 0 && typeInfo.argDef) {\n const header = document.createElement('div');\n header.className = 'CodeMirror-info-header';\n renderArg(header, typeInfo, options);\n const into = document.createElement('div');\n into.append(header);\n renderDescription(into, options, typeInfo.argDef);\n return into;\n }\n if (kind === 'EnumValue' &&\n typeInfo.enumValue &&\n typeInfo.enumValue.description) {\n const header = document.createElement('div');\n header.className = 'CodeMirror-info-header';\n renderEnumValue(header, typeInfo, options);\n const into = document.createElement('div');\n into.append(header);\n renderDescription(into, options, typeInfo.enumValue);\n return into;\n }\n if (kind === 'NamedType' &&\n typeInfo.type &&\n typeInfo.type.description) {\n const header = document.createElement('div');\n header.className = 'CodeMirror-info-header';\n renderType(header, typeInfo, options, typeInfo.type);\n const into = document.createElement('div');\n into.append(header);\n renderDescription(into, options, typeInfo.type);\n return into;\n }\n});\nfunction renderField(into, typeInfo, options) {\n renderQualifiedField(into, typeInfo, options);\n renderTypeAnnotation(into, typeInfo, options, typeInfo.type);\n}\nfunction renderQualifiedField(into, typeInfo, options) {\n var _a;\n const fieldName = ((_a = typeInfo.fieldDef) === null || _a === void 0 ? void 0 : _a.name) || '';\n text(into, fieldName, 'field-name', options, getFieldReference(typeInfo));\n}\nfunction renderDirective(into, typeInfo, options) {\n var _a;\n const name = '@' + (((_a = typeInfo.directiveDef) === null || _a === void 0 ? void 0 : _a.name) || '');\n text(into, name, 'directive-name', options, getDirectiveReference(typeInfo));\n}\nfunction renderArg(into, typeInfo, options) {\n var _a;\n const name = ((_a = typeInfo.argDef) === null || _a === void 0 ? void 0 : _a.name) || '';\n text(into, name, 'arg-name', options, getArgumentReference(typeInfo));\n renderTypeAnnotation(into, typeInfo, options, typeInfo.inputType);\n}\nfunction renderEnumValue(into, typeInfo, options) {\n var _a;\n const name = ((_a = typeInfo.enumValue) === null || _a === void 0 ? void 0 : _a.name) || '';\n renderType(into, typeInfo, options, typeInfo.inputType);\n text(into, '.');\n text(into, name, 'enum-value', options, getEnumValueReference(typeInfo));\n}\nfunction renderTypeAnnotation(into, typeInfo, options, t) {\n const typeSpan = document.createElement('span');\n typeSpan.className = 'type-name-pill';\n if (t instanceof GraphQLNonNull) {\n renderType(typeSpan, typeInfo, options, t.ofType);\n text(typeSpan, '!');\n }\n else if (t instanceof GraphQLList) {\n text(typeSpan, '[');\n renderType(typeSpan, typeInfo, options, t.ofType);\n text(typeSpan, ']');\n }\n else {\n text(typeSpan, (t === null || t === void 0 ? void 0 : t.name) || '', 'type-name', options, getTypeReference(typeInfo, t));\n }\n into.append(typeSpan);\n}\nfunction renderType(into, typeInfo, options, t) {\n if (t instanceof GraphQLNonNull) {\n renderType(into, typeInfo, options, t.ofType);\n text(into, '!');\n }\n else if (t instanceof GraphQLList) {\n text(into, '[');\n renderType(into, typeInfo, options, t.ofType);\n text(into, ']');\n }\n else {\n text(into, (t === null || t === void 0 ? void 0 : t.name) || '', 'type-name', options, getTypeReference(typeInfo, t));\n }\n}\nfunction renderDescription(into, options, def) {\n const { description } = def;\n if (description) {\n const descriptionDiv = document.createElement('div');\n descriptionDiv.className = 'info-description';\n if (options.renderDescription) {\n descriptionDiv.innerHTML = options.renderDescription(description);\n }\n else {\n descriptionDiv.append(document.createTextNode(description));\n }\n into.append(descriptionDiv);\n }\n renderDeprecation(into, options, def);\n}\nfunction renderDeprecation(into, options, def) {\n const reason = def.deprecationReason;\n if (reason) {\n const deprecationDiv = document.createElement('div');\n deprecationDiv.className = 'info-deprecation';\n into.append(deprecationDiv);\n const label = document.createElement('span');\n label.className = 'info-deprecation-label';\n label.append(document.createTextNode('Deprecated'));\n deprecationDiv.append(label);\n const reasonDiv = document.createElement('div');\n reasonDiv.className = 'info-deprecation-reason';\n if (options.renderDescription) {\n reasonDiv.innerHTML = options.renderDescription(reason);\n }\n else {\n reasonDiv.append(document.createTextNode(reason));\n }\n deprecationDiv.append(reasonDiv);\n }\n}\nfunction text(into, content, className = '', options = { onClick: null }, ref = null) {\n if (className) {\n const { onClick } = options;\n let node;\n if (onClick) {\n node = document.createElement('a');\n node.href = 'javascript:void 0';\n node.addEventListener('click', (e) => {\n onClick(ref, e);\n });\n }\n else {\n node = document.createElement('span');\n }\n node.className = className;\n node.append(document.createTextNode(content));\n into.append(node);\n }\n else {\n into.append(document.createTextNode(content));\n }\n}\n//# sourceMappingURL=info.js.map"],"names":["E","n","l","e","schema","type","parentType","inputType","directiveDef","fieldDef","argDef","argDefs","objectFieldDefs","j","i","a","p","kind","getQueryType","getMutationType","getSubscriptionType","getType","name","T","u","getDirective","f","prevState","args","t","length","d","enumValue","S","Q","getValues","value","g","k","F","ofType","s","v","getFields","c","y","D","m","h","L","field","o","R","directive","_","argument","G","O","slice","r","push","options","Function","render","state","info","hoverTime","M","target","srcElement","HTMLElement","nodeName","hoverTimeout","getBoundingClientRect","clearTimeout","setTimeout","off","document","getWrapperElement","w","on","coordsChar","left","right","top","bottom","getHelper","getTokenAt","createElement","className","append","body","window","getComputedStyle","parseFloat","marginLeft","marginRight","marginTop","marginBottom","innerHeight","Math","max","innerWidth","style","opacity","parentNode","remove","defineOption","Init","onMouseOver","bind","V","x","C","description","renderDescription","innerHTML","createTextNode","deprecationReason","arguments","undefined","onClick","href","addEventListener","registerHelper","step","N"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/311.5b6cf101.chunk.js b/serv/web/build/static/js/311.5b6cf101.chunk.js deleted file mode 100644 index 6aee2019..00000000 --- a/serv/web/build/static/js/311.5b6cf101.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[311,889,186],{9087:function(e,n,t){t.d(n,{a:function(){return d},b:function(){return p},c:function(){return m},d:function(){return s},e:function(){return v},g:function(){return c}});var r=t(2572),i=t(8979),o=t(2269),a=Object.defineProperty,u=function(e,n){return a(e,"name",{value:n,configurable:!0})};function c(e,n){var t={schema:e,type:null,parentType:null,inputType:null,directiveDef:null,fieldDef:null,argDef:null,argDefs:null,objectFieldDefs:null};return(0,o.f)(n,(function(n){var i,o;switch(n.kind){case"Query":case"ShortQuery":t.type=e.getQueryType();break;case"Mutation":t.type=e.getMutationType();break;case"Subscription":t.type=e.getSubscriptionType();break;case"InlineFragment":case"FragmentDefinition":n.type&&(t.type=e.getType(n.type));break;case"Field":case"AliasedField":t.fieldDef=t.type&&n.name?l(e,t.parentType,n.name):null,t.type=null===(i=t.fieldDef)||void 0===i?void 0:i.type;break;case"SelectionSet":t.parentType=t.type?(0,r.xC)(t.type):null;break;case"Directive":t.directiveDef=n.name?e.getDirective(n.name):null;break;case"Arguments":var a=n.prevState?"Field"===n.prevState.kind?t.fieldDef:"Directive"===n.prevState.kind?t.directiveDef:"AliasedField"===n.prevState.kind?n.prevState.name&&l(e,t.parentType,n.prevState.name):null:null;t.argDefs=a?a.args:null;break;case"Argument":if(t.argDef=null,t.argDefs)for(var u=0;u=0;i--)n(t[i])}(0,Object.defineProperty)(r,"name",{value:"forEachState",configurable:!0})},9186:function(e,n,t){t.r(n);var r=t(889),i=(t(8308),Object.defineProperty),o=function(e,n){return i(e,"name",{value:n,configurable:!0})};function a(e){return{options:e instanceof Function?{render:e}:!0===e?{}:e}}function u(e){var n=e.state.info.options;return(null==n?void 0:n.hoverTime)||500}function c(e,n){var t=e.state.info,i=n.target||n.srcElement;if(i instanceof HTMLElement&&"SPAN"===i.nodeName&&void 0===t.hoverTimeout){var a=i.getBoundingClientRect(),c=o((function(){clearTimeout(t.hoverTimeout),t.hoverTimeout=setTimeout(d,p)}),"onMouseMove"),f=o((function(){r.C.off(document,"mousemove",c),r.C.off(e.getWrapperElement(),"mouseout",f),clearTimeout(t.hoverTimeout),t.hoverTimeout=void 0}),"onMouseOut"),d=o((function(){r.C.off(document,"mousemove",c),r.C.off(e.getWrapperElement(),"mouseout",f),t.hoverTimeout=void 0,l(e,a)}),"onHover"),p=u(e);t.hoverTimeout=setTimeout(d,p),r.C.on(document,"mousemove",c),r.C.on(e.getWrapperElement(),"mouseout",f)}}function l(e,n){var t=e.coordsChar({left:(n.left+n.right)/2,top:(n.top+n.bottom)/2},"window"),r=e.state.info.options,i=r.render||e.getHelper(t,"info");if(i){var o=e.getTokenAt(t,!0);if(o){var a=i(o,r,e,t);a&&f(e,n,a)}}}function f(e,n,t){var i=document.createElement("div");i.className="CodeMirror-info",i.append(t),document.body.append(i);var a=i.getBoundingClientRect(),u=window.getComputedStyle(i),c=a.right-a.left+parseFloat(u.marginLeft)+parseFloat(u.marginRight),l=a.bottom-a.top+parseFloat(u.marginTop)+parseFloat(u.marginBottom),f=n.bottom;l>window.innerHeight-n.bottom-15&&n.top>window.innerHeight-n.bottom&&(f=n.top-l),f<0&&(f=n.bottom);var d,p=Math.max(0,window.innerWidth-c-15);p>n.left&&(p=n.left),i.style.opacity="1",i.style.top=f+"px",i.style.left=p+"px";var m=o((function(){clearTimeout(d)}),"onMouseOverPopup"),s=o((function(){clearTimeout(d),d=setTimeout(v,200)}),"onMouseOut"),v=o((function(){r.C.off(i,"mouseover",m),r.C.off(i,"mouseout",s),r.C.off(e.getWrapperElement(),"mouseout",s),i.style.opacity?(i.style.opacity="0",setTimeout((function(){i.parentNode&&i.remove()}),600)):i.parentNode&&i.remove()}),"hidePopup");r.C.on(i,"mouseover",m),r.C.on(i,"mouseout",s),r.C.on(e.getWrapperElement(),"mouseout",s)}r.C.defineOption("info",!1,(function(e,n,t){if(t&&t!==r.C.Init){var i=e.state.info.onMouseOver;r.C.off(e.getWrapperElement(),"mouseover",i),clearTimeout(e.state.info.hoverTimeout),delete e.state.info}if(n){var o=e.state.info=a(n);o.onMouseOver=c.bind(null,e),r.C.on(e.getWrapperElement(),"mouseover",o.onMouseOver)}})),o(a,"createState"),o(u,"getHoverTime"),o(c,"onMouseOver"),o(l,"onMouseHover"),o(f,"showPopup")},311:function(e,n,t){t.r(n);var r=t(2572),i=t(889),o=t(9087),a=(t(9186),t(8308),t(2269),Object.defineProperty),u=function(e,n){return a(e,"name",{value:n,configurable:!0})};function c(e,n,t){l(e,n,t),m(e,n,t,n.type)}function l(e,n,t){var r;y(e,(null===(r=n.fieldDef)||void 0===r?void 0:r.name)||"","field-name",t,(0,o.a)(n))}function f(e,n,t){var r;y(e,"@"+((null===(r=n.directiveDef)||void 0===r?void 0:r.name)||""),"directive-name",t,(0,o.b)(n))}function d(e,n,t){var r;y(e,(null===(r=n.argDef)||void 0===r?void 0:r.name)||"","arg-name",t,(0,o.c)(n)),m(e,n,t,n.inputType)}function p(e,n,t){var r,i=(null===(r=n.enumValue)||void 0===r?void 0:r.name)||"";s(e,n,t,n.inputType),y(e,"."),y(e,i,"enum-value",t,(0,o.d)(n))}function m(e,n,t,i){var a=document.createElement("span");a.className="type-name-pill",i instanceof r.bM?(s(a,n,t,i.ofType),y(a,"!")):i instanceof r.p2?(y(a,"["),s(a,n,t,i.ofType),y(a,"]")):y(a,(null==i?void 0:i.name)||"","type-name",t,(0,o.e)(n,i)),e.append(a)}function s(e,n,t,i){i instanceof r.bM?(s(e,n,t,i.ofType),y(e,"!")):i instanceof r.p2?(y(e,"["),s(e,n,t,i.ofType),y(e,"]")):y(e,(null==i?void 0:i.name)||"","type-name",t,(0,o.e)(n,i))}function v(e,n,t){var r=t.description;if(r){var i=document.createElement("div");i.className="info-description",n.renderDescription?i.innerHTML=n.renderDescription(r):i.append(document.createTextNode(r)),e.append(i)}g(e,n,t)}function g(e,n,t){var r=t.deprecationReason;if(r){var i=document.createElement("div");i.className="info-deprecation",e.append(i);var o=document.createElement("span");o.className="info-deprecation-label",o.append(document.createTextNode("Deprecated")),i.append(o);var a=document.createElement("div");a.className="info-deprecation-reason",n.renderDescription?a.innerHTML=n.renderDescription(r):a.append(document.createTextNode(r)),i.append(a)}}function y(e,n){var t=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",r=arguments.length>3&&void 0!==arguments[3]?arguments[3]:{onClick:null},i=arguments.length>4&&void 0!==arguments[4]?arguments[4]:null;if(t){var o,a=r.onClick;a?((o=document.createElement("a")).href="javascript:void 0",o.addEventListener("click",(function(e){a(i,e)}))):o=document.createElement("span"),o.className=t,o.append(document.createTextNode(n)),e.append(o)}else e.append(document.createTextNode(n))}i.C.registerHelper("info","graphql",(function(e,n){if(n.schema&&e.state){var t=e.state,r=t.kind,i=t.step,a=(0,o.g)(n.schema,e.state);if("Field"===r&&0===i&&a.fieldDef||"AliasedField"===r&&2===i&&a.fieldDef){var u=document.createElement("div");u.className="CodeMirror-info-header",c(u,a,n);var l=document.createElement("div");return l.append(u),v(l,n,a.fieldDef),l}if("Directive"===r&&1===i&&a.directiveDef){var m=document.createElement("div");m.className="CodeMirror-info-header",f(m,a,n);var g=document.createElement("div");return g.append(m),v(g,n,a.directiveDef),g}if("Argument"===r&&0===i&&a.argDef){var y=document.createElement("div");y.className="CodeMirror-info-header",d(y,a,n);var T=document.createElement("div");return T.append(y),v(T,n,a.argDef),T}if("EnumValue"===r&&a.enumValue&&a.enumValue.description){var D=document.createElement("div");D.className="CodeMirror-info-header",p(D,a,n);var b=document.createElement("div");return b.append(D),v(b,n,a.enumValue),b}if("NamedType"===r&&a.type&&a.type.description){var h=document.createElement("div");h.className="CodeMirror-info-header",s(h,a,n,a.type);var C=document.createElement("div");return C.append(h),v(C,n,a.type),C}}})),u(c,"renderField"),u(l,"renderQualifiedField"),u(f,"renderDirective"),u(d,"renderArg"),u(p,"renderEnumValue"),u(m,"renderTypeAnnotation"),u(s,"renderType"),u(v,"renderDescription"),u(g,"renderDeprecation"),u(y,"text")}}]); -//# sourceMappingURL=311.5b6cf101.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/311.5b6cf101.chunk.js.map b/serv/web/build/static/js/311.5b6cf101.chunk.js.map deleted file mode 100644 index 8e131239..00000000 --- a/serv/web/build/static/js/311.5b6cf101.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/311.5b6cf101.chunk.js","mappings":"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","sources":["../node_modules/@graphiql/codemirror-graphql/esm/utils/getTypeInfo.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/SchemaReference.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/forEachState.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/info-addon.js","../node_modules/@graphiql/codemirror-graphql/esm/info.js"],"sourcesContent":["import { isCompositeType, getNullableType, getNamedType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef, } from 'graphql';\nimport forEachState from './forEachState';\nexport default function getTypeInfo(schema, tokenState) {\n const info = {\n schema,\n type: null,\n parentType: null,\n inputType: null,\n directiveDef: null,\n fieldDef: null,\n argDef: null,\n argDefs: null,\n objectFieldDefs: null,\n };\n forEachState(tokenState, (state) => {\n var _a, _b;\n switch (state.kind) {\n case 'Query':\n case 'ShortQuery':\n info.type = schema.getQueryType();\n break;\n case 'Mutation':\n info.type = schema.getMutationType();\n break;\n case 'Subscription':\n info.type = schema.getSubscriptionType();\n break;\n case 'InlineFragment':\n case 'FragmentDefinition':\n if (state.type) {\n info.type = schema.getType(state.type);\n }\n break;\n case 'Field':\n case 'AliasedField':\n info.fieldDef =\n info.type && state.name\n ? getFieldDef(schema, info.parentType, state.name)\n : null;\n info.type = (_a = info.fieldDef) === null || _a === void 0 ? void 0 : _a.type;\n break;\n case 'SelectionSet':\n info.parentType = info.type ? getNamedType(info.type) : null;\n break;\n case 'Directive':\n info.directiveDef = state.name ? schema.getDirective(state.name) : null;\n break;\n case 'Arguments':\n const parentDef = state.prevState\n ? state.prevState.kind === 'Field'\n ? info.fieldDef\n : state.prevState.kind === 'Directive'\n ? info.directiveDef\n : state.prevState.kind === 'AliasedField'\n ? state.prevState.name &&\n getFieldDef(schema, info.parentType, state.prevState.name)\n : null\n : null;\n info.argDefs = parentDef ? parentDef.args : null;\n break;\n case 'Argument':\n info.argDef = null;\n if (info.argDefs) {\n for (let i = 0; i < info.argDefs.length; i++) {\n if (info.argDefs[i].name === state.name) {\n info.argDef = info.argDefs[i];\n break;\n }\n }\n }\n info.inputType = (_b = info.argDef) === null || _b === void 0 ? void 0 : _b.type;\n break;\n case 'EnumValue':\n const enumType = info.inputType ? getNamedType(info.inputType) : null;\n info.enumValue =\n enumType instanceof GraphQLEnumType\n ? find(enumType.getValues(), val => val.value === state.name)\n : null;\n break;\n case 'ListValue':\n const nullableType = info.inputType\n ? getNullableType(info.inputType)\n : null;\n info.inputType =\n nullableType instanceof GraphQLList ? nullableType.ofType : null;\n break;\n case 'ObjectValue':\n const objectType = info.inputType ? getNamedType(info.inputType) : null;\n info.objectFieldDefs =\n objectType instanceof GraphQLInputObjectType\n ? objectType.getFields()\n : null;\n break;\n case 'ObjectField':\n const objectField = state.name && info.objectFieldDefs\n ? info.objectFieldDefs[state.name]\n : null;\n info.inputType = objectField === null || objectField === void 0 ? void 0 : objectField.type;\n break;\n case 'NamedType':\n info.type = state.name ? schema.getType(state.name) : null;\n break;\n }\n });\n return info;\n}\nfunction getFieldDef(schema, type, fieldName) {\n if (fieldName === SchemaMetaFieldDef.name && schema.getQueryType() === type) {\n return SchemaMetaFieldDef;\n }\n if (fieldName === TypeMetaFieldDef.name && schema.getQueryType() === type) {\n return TypeMetaFieldDef;\n }\n if (fieldName === TypeNameMetaFieldDef.name && isCompositeType(type)) {\n return TypeNameMetaFieldDef;\n }\n if (type && type.getFields) {\n return type.getFields()[fieldName];\n }\n}\nfunction find(array, predicate) {\n for (let i = 0; i < array.length; i++) {\n if (predicate(array[i])) {\n return array[i];\n }\n }\n}\n//# sourceMappingURL=getTypeInfo.js.map","import { getNamedType } from 'graphql';\nexport function getFieldReference(typeInfo) {\n return {\n kind: 'Field',\n schema: typeInfo.schema,\n field: typeInfo.fieldDef,\n type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType,\n };\n}\nexport function getDirectiveReference(typeInfo) {\n return {\n kind: 'Directive',\n schema: typeInfo.schema,\n directive: typeInfo.directiveDef,\n };\n}\nexport function getArgumentReference(typeInfo) {\n return typeInfo.directiveDef\n ? {\n kind: 'Argument',\n schema: typeInfo.schema,\n argument: typeInfo.argDef,\n directive: typeInfo.directiveDef,\n }\n : {\n kind: 'Argument',\n schema: typeInfo.schema,\n argument: typeInfo.argDef,\n field: typeInfo.fieldDef,\n type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType,\n };\n}\nexport function getEnumValueReference(typeInfo) {\n return {\n kind: 'EnumValue',\n value: typeInfo.enumValue || undefined,\n type: typeInfo.inputType\n ? getNamedType(typeInfo.inputType)\n : undefined,\n };\n}\nexport function getTypeReference(typeInfo, type) {\n return {\n kind: 'Type',\n schema: typeInfo.schema,\n type: type || typeInfo.type,\n };\n}\nfunction isMetaField(fieldDef) {\n return fieldDef.name.slice(0, 2) === '__';\n}\n//# sourceMappingURL=SchemaReference.js.map","export default function forEachState(stack, fn) {\n const reverseStateStack = [];\n let state = stack;\n while (state === null || state === void 0 ? void 0 : state.kind) {\n reverseStateStack.push(state);\n state = state.prevState;\n }\n for (let i = reverseStateStack.length - 1; i >= 0; i--) {\n fn(reverseStateStack[i]);\n }\n}\n//# sourceMappingURL=forEachState.js.map","import CodeMirror from 'codemirror';\nCodeMirror.defineOption('info', false, (cm, options, old) => {\n if (old && old !== CodeMirror.Init) {\n const oldOnMouseOver = cm.state.info.onMouseOver;\n CodeMirror.off(cm.getWrapperElement(), 'mouseover', oldOnMouseOver);\n clearTimeout(cm.state.info.hoverTimeout);\n delete cm.state.info;\n }\n if (options) {\n const state = (cm.state.info = createState(options));\n state.onMouseOver = onMouseOver.bind(null, cm);\n CodeMirror.on(cm.getWrapperElement(), 'mouseover', state.onMouseOver);\n }\n});\nfunction createState(options) {\n return {\n options: options instanceof Function\n ? { render: options }\n : options === true\n ? {}\n : options,\n };\n}\nfunction getHoverTime(cm) {\n const { options } = cm.state.info;\n return (options === null || options === void 0 ? void 0 : options.hoverTime) || 500;\n}\nfunction onMouseOver(cm, e) {\n const state = cm.state.info;\n const target = e.target || e.srcElement;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n if (target.nodeName !== 'SPAN' || state.hoverTimeout !== undefined) {\n return;\n }\n const box = target.getBoundingClientRect();\n const onMouseMove = function () {\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n };\n const onMouseOut = function () {\n CodeMirror.off(document, 'mousemove', onMouseMove);\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n clearTimeout(state.hoverTimeout);\n state.hoverTimeout = undefined;\n };\n const onHover = function () {\n CodeMirror.off(document, 'mousemove', onMouseMove);\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n state.hoverTimeout = undefined;\n onMouseHover(cm, box);\n };\n const hoverTime = getHoverTime(cm);\n state.hoverTimeout = setTimeout(onHover, hoverTime);\n CodeMirror.on(document, 'mousemove', onMouseMove);\n CodeMirror.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n}\nfunction onMouseHover(cm, box) {\n const pos = cm.coordsChar({\n left: (box.left + box.right) / 2,\n top: (box.top + box.bottom) / 2,\n }, 'window');\n const state = cm.state.info;\n const { options } = state;\n const render = options.render || cm.getHelper(pos, 'info');\n if (render) {\n const token = cm.getTokenAt(pos, true);\n if (token) {\n const info = render(token, options, cm, pos);\n if (info) {\n showPopup(cm, box, info);\n }\n }\n }\n}\nfunction showPopup(cm, box, info) {\n const popup = document.createElement('div');\n popup.className = 'CodeMirror-info';\n popup.append(info);\n document.body.append(popup);\n const popupBox = popup.getBoundingClientRect();\n const popupStyle = window.getComputedStyle(popup);\n const popupWidth = popupBox.right -\n popupBox.left +\n parseFloat(popupStyle.marginLeft) +\n parseFloat(popupStyle.marginRight);\n const popupHeight = popupBox.bottom -\n popupBox.top +\n parseFloat(popupStyle.marginTop) +\n parseFloat(popupStyle.marginBottom);\n let topPos = box.bottom;\n if (popupHeight > window.innerHeight - box.bottom - 15 &&\n box.top > window.innerHeight - box.bottom) {\n topPos = box.top - popupHeight;\n }\n if (topPos < 0) {\n topPos = box.bottom;\n }\n let leftPos = Math.max(0, window.innerWidth - popupWidth - 15);\n if (leftPos > box.left) {\n leftPos = box.left;\n }\n popup.style.opacity = '1';\n popup.style.top = topPos + 'px';\n popup.style.left = leftPos + 'px';\n let popupTimeout;\n const onMouseOverPopup = function () {\n clearTimeout(popupTimeout);\n };\n const onMouseOut = function () {\n clearTimeout(popupTimeout);\n popupTimeout = setTimeout(hidePopup, 200);\n };\n const hidePopup = function () {\n CodeMirror.off(popup, 'mouseover', onMouseOverPopup);\n CodeMirror.off(popup, 'mouseout', onMouseOut);\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', onMouseOut);\n if (popup.style.opacity) {\n popup.style.opacity = '0';\n setTimeout(() => {\n if (popup.parentNode) {\n popup.remove();\n }\n }, 600);\n }\n else if (popup.parentNode) {\n popup.remove();\n }\n };\n CodeMirror.on(popup, 'mouseover', onMouseOverPopup);\n CodeMirror.on(popup, 'mouseout', onMouseOut);\n CodeMirror.on(cm.getWrapperElement(), 'mouseout', onMouseOut);\n}\n//# sourceMappingURL=info-addon.js.map","import { GraphQLList, GraphQLNonNull, } from 'graphql';\nimport CodeMirror from 'codemirror';\nimport getTypeInfo from './utils/getTypeInfo';\nimport { getArgumentReference, getDirectiveReference, getEnumValueReference, getFieldReference, getTypeReference, } from './utils/SchemaReference';\nimport './utils/info-addon';\nCodeMirror.registerHelper('info', 'graphql', (token, options) => {\n if (!options.schema || !token.state) {\n return;\n }\n const { kind, step } = token.state;\n const typeInfo = getTypeInfo(options.schema, token.state);\n if ((kind === 'Field' && step === 0 && typeInfo.fieldDef) ||\n (kind === 'AliasedField' && step === 2 && typeInfo.fieldDef)) {\n const header = document.createElement('div');\n header.className = 'CodeMirror-info-header';\n renderField(header, typeInfo, options);\n const into = document.createElement('div');\n into.append(header);\n renderDescription(into, options, typeInfo.fieldDef);\n return into;\n }\n if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) {\n const header = document.createElement('div');\n header.className = 'CodeMirror-info-header';\n renderDirective(header, typeInfo, options);\n const into = document.createElement('div');\n into.append(header);\n renderDescription(into, options, typeInfo.directiveDef);\n return into;\n }\n if (kind === 'Argument' && step === 0 && typeInfo.argDef) {\n const header = document.createElement('div');\n header.className = 'CodeMirror-info-header';\n renderArg(header, typeInfo, options);\n const into = document.createElement('div');\n into.append(header);\n renderDescription(into, options, typeInfo.argDef);\n return into;\n }\n if (kind === 'EnumValue' &&\n typeInfo.enumValue &&\n typeInfo.enumValue.description) {\n const header = document.createElement('div');\n header.className = 'CodeMirror-info-header';\n renderEnumValue(header, typeInfo, options);\n const into = document.createElement('div');\n into.append(header);\n renderDescription(into, options, typeInfo.enumValue);\n return into;\n }\n if (kind === 'NamedType' &&\n typeInfo.type &&\n typeInfo.type.description) {\n const header = document.createElement('div');\n header.className = 'CodeMirror-info-header';\n renderType(header, typeInfo, options, typeInfo.type);\n const into = document.createElement('div');\n into.append(header);\n renderDescription(into, options, typeInfo.type);\n return into;\n }\n});\nfunction renderField(into, typeInfo, options) {\n renderQualifiedField(into, typeInfo, options);\n renderTypeAnnotation(into, typeInfo, options, typeInfo.type);\n}\nfunction renderQualifiedField(into, typeInfo, options) {\n var _a;\n const fieldName = ((_a = typeInfo.fieldDef) === null || _a === void 0 ? void 0 : _a.name) || '';\n text(into, fieldName, 'field-name', options, getFieldReference(typeInfo));\n}\nfunction renderDirective(into, typeInfo, options) {\n var _a;\n const name = '@' + (((_a = typeInfo.directiveDef) === null || _a === void 0 ? void 0 : _a.name) || '');\n text(into, name, 'directive-name', options, getDirectiveReference(typeInfo));\n}\nfunction renderArg(into, typeInfo, options) {\n var _a;\n const name = ((_a = typeInfo.argDef) === null || _a === void 0 ? void 0 : _a.name) || '';\n text(into, name, 'arg-name', options, getArgumentReference(typeInfo));\n renderTypeAnnotation(into, typeInfo, options, typeInfo.inputType);\n}\nfunction renderEnumValue(into, typeInfo, options) {\n var _a;\n const name = ((_a = typeInfo.enumValue) === null || _a === void 0 ? void 0 : _a.name) || '';\n renderType(into, typeInfo, options, typeInfo.inputType);\n text(into, '.');\n text(into, name, 'enum-value', options, getEnumValueReference(typeInfo));\n}\nfunction renderTypeAnnotation(into, typeInfo, options, t) {\n const typeSpan = document.createElement('span');\n typeSpan.className = 'type-name-pill';\n if (t instanceof GraphQLNonNull) {\n renderType(typeSpan, typeInfo, options, t.ofType);\n text(typeSpan, '!');\n }\n else if (t instanceof GraphQLList) {\n text(typeSpan, '[');\n renderType(typeSpan, typeInfo, options, t.ofType);\n text(typeSpan, ']');\n }\n else {\n text(typeSpan, (t === null || t === void 0 ? void 0 : t.name) || '', 'type-name', options, getTypeReference(typeInfo, t));\n }\n into.append(typeSpan);\n}\nfunction renderType(into, typeInfo, options, t) {\n if (t instanceof GraphQLNonNull) {\n renderType(into, typeInfo, options, t.ofType);\n text(into, '!');\n }\n else if (t instanceof GraphQLList) {\n text(into, '[');\n renderType(into, typeInfo, options, t.ofType);\n text(into, ']');\n }\n else {\n text(into, (t === null || t === void 0 ? void 0 : t.name) || '', 'type-name', options, getTypeReference(typeInfo, t));\n }\n}\nfunction renderDescription(into, options, def) {\n const { description } = def;\n if (description) {\n const descriptionDiv = document.createElement('div');\n descriptionDiv.className = 'info-description';\n if (options.renderDescription) {\n descriptionDiv.innerHTML = options.renderDescription(description);\n }\n else {\n descriptionDiv.append(document.createTextNode(description));\n }\n into.append(descriptionDiv);\n }\n renderDeprecation(into, options, def);\n}\nfunction renderDeprecation(into, options, def) {\n const reason = def.deprecationReason;\n if (reason) {\n const deprecationDiv = document.createElement('div');\n deprecationDiv.className = 'info-deprecation';\n into.append(deprecationDiv);\n const label = document.createElement('span');\n label.className = 'info-deprecation-label';\n label.append(document.createTextNode('Deprecated'));\n deprecationDiv.append(label);\n const reasonDiv = document.createElement('div');\n reasonDiv.className = 'info-deprecation-reason';\n if (options.renderDescription) {\n reasonDiv.innerHTML = options.renderDescription(reason);\n }\n else {\n reasonDiv.append(document.createTextNode(reason));\n }\n deprecationDiv.append(reasonDiv);\n }\n}\nfunction text(into, content, className = '', options = { onClick: null }, ref = null) {\n if (className) {\n const { onClick } = options;\n let node;\n if (onClick) {\n node = document.createElement('a');\n node.href = 'javascript:void 0';\n node.addEventListener('click', (e) => {\n onClick(ref, e);\n });\n }\n else {\n node = document.createElement('span');\n }\n node.className = className;\n node.append(document.createTextNode(content));\n into.append(node);\n }\n else {\n into.append(document.createTextNode(content));\n }\n}\n//# sourceMappingURL=info.js.map"],"names":["getTypeInfo","schema","tokenState","info","type","parentType","inputType","directiveDef","fieldDef","argDef","argDefs","objectFieldDefs","f","state","_a","_b","kind","getQueryType","getMutationType","getSubscriptionType","getType","name","getFieldDef","getNamedType","getDirective","parentDef","prevState","args","i","length","enumType","enumValue","GraphQLEnumType","find","getValues","val","value","nullableType","getNullableType","GraphQLList","ofType","objectType","GraphQLInputObjectType","getFields","objectField","fieldName","SchemaMetaFieldDef","TypeMetaFieldDef","TypeNameMetaFieldDef","isCompositeType","array","predicate","getFieldReference","typeInfo","field","isMetaField","getDirectiveReference","directive","getArgumentReference","argument","getEnumValueReference","getTypeReference","slice","__name","forEachState","stack","fn","reverseStateStack","push","createState","options","Function","render","getHoverTime","cm","hoverTime","onMouseOver","e","target","srcElement","HTMLElement","nodeName","hoverTimeout","box","getBoundingClientRect","onMouseMove","clearTimeout","setTimeout","onHover","onMouseOut","CodeMirror","document","getWrapperElement","onMouseHover","pos","coordsChar","left","right","top","bottom","getHelper","token","getTokenAt","showPopup","popup","createElement","className","append","body","popupBox","popupStyle","window","getComputedStyle","popupWidth","parseFloat","marginLeft","marginRight","popupHeight","marginTop","marginBottom","topPos","innerHeight","popupTimeout","leftPos","Math","max","innerWidth","style","opacity","onMouseOverPopup","hidePopup","parentNode","remove","old","oldOnMouseOver","bind","renderField","into","renderQualifiedField","renderTypeAnnotation","text","renderDirective","renderArg","renderEnumValue","renderType","t","typeSpan","GraphQLNonNull","renderDescription","def","description","descriptionDiv","innerHTML","createTextNode","renderDeprecation","reason","deprecationReason","deprecationDiv","label","reasonDiv","content","onClick","ref","node","href","addEventListener","step","header"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/485.2101a0c7.chunk.js b/serv/web/build/static/js/485.2101a0c7.chunk.js deleted file mode 100644 index 57e73217..00000000 --- a/serv/web/build/static/js/485.2101a0c7.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[485,889],{9087:function(e,n,t){t.d(n,{a:function(){return p},b:function(){return s},c:function(){return d},d:function(){return m},e:function(){return g},g:function(){return l}});var r=t(2572),i=t(8979),u=t(2269),a=Object.defineProperty,o=function(e,n){return a(e,"name",{value:n,configurable:!0})};function l(e,n){var t={schema:e,type:null,parentType:null,inputType:null,directiveDef:null,fieldDef:null,argDef:null,argDefs:null,objectFieldDefs:null};return(0,u.f)(n,(function(n){var i,u;switch(n.kind){case"Query":case"ShortQuery":t.type=e.getQueryType();break;case"Mutation":t.type=e.getMutationType();break;case"Subscription":t.type=e.getSubscriptionType();break;case"InlineFragment":case"FragmentDefinition":n.type&&(t.type=e.getType(n.type));break;case"Field":case"AliasedField":t.fieldDef=t.type&&n.name?f(e,t.parentType,n.name):null,t.type=null===(i=t.fieldDef)||void 0===i?void 0:i.type;break;case"SelectionSet":t.parentType=t.type?(0,r.xC)(t.type):null;break;case"Directive":t.directiveDef=n.name?e.getDirective(n.name):null;break;case"Arguments":var a=n.prevState?"Field"===n.prevState.kind?t.fieldDef:"Directive"===n.prevState.kind?t.directiveDef:"AliasedField"===n.prevState.kind?n.prevState.name&&f(e,t.parentType,n.prevState.name):null:null;t.argDefs=a?a.args:null;break;case"Argument":if(t.argDef=null,t.argDefs)for(var o=0;o=0;i--)n(t[i])}(0,Object.defineProperty)(r,"name",{value:"forEachState",configurable:!0})},8485:function(e,n,t){t.r(n);var r=t(889),i=t(9087),u=(t(8308),t(2269),Object.defineProperty),a=function(e,n){return u(e,"name",{value:n,configurable:!0})};function o(e,n){var t=n.target||n.srcElement;if(t instanceof HTMLElement&&"SPAN"===(null==t?void 0:t.nodeName)){var r=t.getBoundingClientRect(),i={left:(r.left+r.right)/2,top:(r.top+r.bottom)/2};e.state.jump.cursor=i,e.state.jump.isHoldingModifier&&s(e)}}function l(e){e.state.jump.isHoldingModifier||!e.state.jump.cursor?e.state.jump.isHoldingModifier&&e.state.jump.marker&&d(e):e.state.jump.cursor=null}function f(e,n){if(!e.state.jump.isHoldingModifier&&p(n.key)){e.state.jump.isHoldingModifier=!0,e.state.jump.cursor&&s(e);var t=a((function(a){a.code===n.code&&(e.state.jump.isHoldingModifier=!1,e.state.jump.marker&&d(e),r.C.off(document,"keyup",t),r.C.off(document,"click",i),e.off("mousedown",u))}),"onKeyUp"),i=a((function(n){var t=e.state.jump,r=t.destination,i=t.options;r&&i.onClick(r,n)}),"onClick"),u=a((function(n,t){e.state.jump.destination&&(t.codemirrorIgnore=!0)}),"onMouseDown");r.C.on(document,"keyup",t),r.C.on(document,"click",i),e.on("mousedown",u)}}r.C.defineOption("jump",!1,(function(e,n,t){if(t&&t!==r.C.Init){var i=e.state.jump.onMouseOver;r.C.off(e.getWrapperElement(),"mouseover",i);var u=e.state.jump.onMouseOut;r.C.off(e.getWrapperElement(),"mouseout",u),r.C.off(document,"keydown",e.state.jump.onKeyDown),delete e.state.jump}if(n){var a=e.state.jump={options:n,onMouseOver:o.bind(null,e),onMouseOut:l.bind(null,e),onKeyDown:f.bind(null,e)};r.C.on(e.getWrapperElement(),"mouseover",a.onMouseOver),r.C.on(e.getWrapperElement(),"mouseout",a.onMouseOut),r.C.on(document,"keydown",a.onKeyDown)}})),a(o,"onMouseOver"),a(l,"onMouseOut"),a(f,"onKeyDown");var c=typeof navigator<"u"&&navigator&&navigator.appVersion.includes("Mac");function p(e){return e===(c?"Meta":"Control")}function s(e){if(!e.state.jump.marker){var n=e.state.jump,t=n.cursor,r=n.options,i=e.coordsChar(t),u=e.getTokenAt(i,!0),a=r.getDestination||e.getHelper(i,"jump");if(a){var o=a(u,r,e);if(o){var l=e.markText({line:i.line,ch:u.start},{line:i.line,ch:u.end},{className:"CodeMirror-jump-token"});e.state.jump.marker=l,e.state.jump.destination=o}}}}function d(e){var n=e.state.jump.marker;e.state.jump.marker=null,e.state.jump.destination=null,n.clear()}a(p,"isJumpModifier"),a(s,"enableJumpMode"),a(d,"disableJumpMode"),r.C.registerHelper("jump","graphql",(function(e,n){if(n.schema&&n.onClick&&e.state){var t=e.state,r=t.kind,u=t.step,a=(0,i.g)(n.schema,t);return"Field"===r&&0===u&&a.fieldDef||"AliasedField"===r&&2===u&&a.fieldDef?(0,i.a)(a):"Directive"===r&&1===u&&a.directiveDef?(0,i.b)(a):"Argument"===r&&0===u&&a.argDef?(0,i.c)(a):"EnumValue"===r&&a.enumValue?(0,i.d)(a):"NamedType"===r&&a.type?(0,i.e)(a):void 0}}))}}]); -//# sourceMappingURL=485.2101a0c7.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/485.2101a0c7.chunk.js.map b/serv/web/build/static/js/485.2101a0c7.chunk.js.map deleted file mode 100644 index 241dca94..00000000 --- a/serv/web/build/static/js/485.2101a0c7.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/485.2101a0c7.chunk.js","mappings":"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","sources":["../node_modules/@graphiql/codemirror-graphql/esm/utils/getTypeInfo.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/SchemaReference.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/forEachState.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/jump-addon.js","../node_modules/@graphiql/codemirror-graphql/esm/jump.js"],"sourcesContent":["import { isCompositeType, getNullableType, getNamedType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef, } from 'graphql';\nimport forEachState from './forEachState';\nexport default function getTypeInfo(schema, tokenState) {\n const info = {\n schema,\n type: null,\n parentType: null,\n inputType: null,\n directiveDef: null,\n fieldDef: null,\n argDef: null,\n argDefs: null,\n objectFieldDefs: null,\n };\n forEachState(tokenState, (state) => {\n var _a, _b;\n switch (state.kind) {\n case 'Query':\n case 'ShortQuery':\n info.type = schema.getQueryType();\n break;\n case 'Mutation':\n info.type = schema.getMutationType();\n break;\n case 'Subscription':\n info.type = schema.getSubscriptionType();\n break;\n case 'InlineFragment':\n case 'FragmentDefinition':\n if (state.type) {\n info.type = schema.getType(state.type);\n }\n break;\n case 'Field':\n case 'AliasedField':\n info.fieldDef =\n info.type && state.name\n ? getFieldDef(schema, info.parentType, state.name)\n : null;\n info.type = (_a = info.fieldDef) === null || _a === void 0 ? void 0 : _a.type;\n break;\n case 'SelectionSet':\n info.parentType = info.type ? getNamedType(info.type) : null;\n break;\n case 'Directive':\n info.directiveDef = state.name ? schema.getDirective(state.name) : null;\n break;\n case 'Arguments':\n const parentDef = state.prevState\n ? state.prevState.kind === 'Field'\n ? info.fieldDef\n : state.prevState.kind === 'Directive'\n ? info.directiveDef\n : state.prevState.kind === 'AliasedField'\n ? state.prevState.name &&\n getFieldDef(schema, info.parentType, state.prevState.name)\n : null\n : null;\n info.argDefs = parentDef ? parentDef.args : null;\n break;\n case 'Argument':\n info.argDef = null;\n if (info.argDefs) {\n for (let i = 0; i < info.argDefs.length; i++) {\n if (info.argDefs[i].name === state.name) {\n info.argDef = info.argDefs[i];\n break;\n }\n }\n }\n info.inputType = (_b = info.argDef) === null || _b === void 0 ? void 0 : _b.type;\n break;\n case 'EnumValue':\n const enumType = info.inputType ? getNamedType(info.inputType) : null;\n info.enumValue =\n enumType instanceof GraphQLEnumType\n ? find(enumType.getValues(), val => val.value === state.name)\n : null;\n break;\n case 'ListValue':\n const nullableType = info.inputType\n ? getNullableType(info.inputType)\n : null;\n info.inputType =\n nullableType instanceof GraphQLList ? nullableType.ofType : null;\n break;\n case 'ObjectValue':\n const objectType = info.inputType ? getNamedType(info.inputType) : null;\n info.objectFieldDefs =\n objectType instanceof GraphQLInputObjectType\n ? objectType.getFields()\n : null;\n break;\n case 'ObjectField':\n const objectField = state.name && info.objectFieldDefs\n ? info.objectFieldDefs[state.name]\n : null;\n info.inputType = objectField === null || objectField === void 0 ? void 0 : objectField.type;\n break;\n case 'NamedType':\n info.type = state.name ? schema.getType(state.name) : null;\n break;\n }\n });\n return info;\n}\nfunction getFieldDef(schema, type, fieldName) {\n if (fieldName === SchemaMetaFieldDef.name && schema.getQueryType() === type) {\n return SchemaMetaFieldDef;\n }\n if (fieldName === TypeMetaFieldDef.name && schema.getQueryType() === type) {\n return TypeMetaFieldDef;\n }\n if (fieldName === TypeNameMetaFieldDef.name && isCompositeType(type)) {\n return TypeNameMetaFieldDef;\n }\n if (type && type.getFields) {\n return type.getFields()[fieldName];\n }\n}\nfunction find(array, predicate) {\n for (let i = 0; i < array.length; i++) {\n if (predicate(array[i])) {\n return array[i];\n }\n }\n}\n//# sourceMappingURL=getTypeInfo.js.map","import { getNamedType } from 'graphql';\nexport function getFieldReference(typeInfo) {\n return {\n kind: 'Field',\n schema: typeInfo.schema,\n field: typeInfo.fieldDef,\n type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType,\n };\n}\nexport function getDirectiveReference(typeInfo) {\n return {\n kind: 'Directive',\n schema: typeInfo.schema,\n directive: typeInfo.directiveDef,\n };\n}\nexport function getArgumentReference(typeInfo) {\n return typeInfo.directiveDef\n ? {\n kind: 'Argument',\n schema: typeInfo.schema,\n argument: typeInfo.argDef,\n directive: typeInfo.directiveDef,\n }\n : {\n kind: 'Argument',\n schema: typeInfo.schema,\n argument: typeInfo.argDef,\n field: typeInfo.fieldDef,\n type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType,\n };\n}\nexport function getEnumValueReference(typeInfo) {\n return {\n kind: 'EnumValue',\n value: typeInfo.enumValue || undefined,\n type: typeInfo.inputType\n ? getNamedType(typeInfo.inputType)\n : undefined,\n };\n}\nexport function getTypeReference(typeInfo, type) {\n return {\n kind: 'Type',\n schema: typeInfo.schema,\n type: type || typeInfo.type,\n };\n}\nfunction isMetaField(fieldDef) {\n return fieldDef.name.slice(0, 2) === '__';\n}\n//# sourceMappingURL=SchemaReference.js.map","export default function forEachState(stack, fn) {\n const reverseStateStack = [];\n let state = stack;\n while (state === null || state === void 0 ? void 0 : state.kind) {\n reverseStateStack.push(state);\n state = state.prevState;\n }\n for (let i = reverseStateStack.length - 1; i >= 0; i--) {\n fn(reverseStateStack[i]);\n }\n}\n//# sourceMappingURL=forEachState.js.map","import CodeMirror from 'codemirror';\nCodeMirror.defineOption('jump', false, (cm, options, old) => {\n if (old && old !== CodeMirror.Init) {\n const oldOnMouseOver = cm.state.jump.onMouseOver;\n CodeMirror.off(cm.getWrapperElement(), 'mouseover', oldOnMouseOver);\n const oldOnMouseOut = cm.state.jump.onMouseOut;\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', oldOnMouseOut);\n CodeMirror.off(document, 'keydown', cm.state.jump.onKeyDown);\n delete cm.state.jump;\n }\n if (options) {\n const state = (cm.state.jump = {\n options,\n onMouseOver: onMouseOver.bind(null, cm),\n onMouseOut: onMouseOut.bind(null, cm),\n onKeyDown: onKeyDown.bind(null, cm),\n });\n CodeMirror.on(cm.getWrapperElement(), 'mouseover', state.onMouseOver);\n CodeMirror.on(cm.getWrapperElement(), 'mouseout', state.onMouseOut);\n CodeMirror.on(document, 'keydown', state.onKeyDown);\n }\n});\nfunction onMouseOver(cm, event) {\n const target = event.target || event.srcElement;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n if ((target === null || target === void 0 ? void 0 : target.nodeName) !== 'SPAN') {\n return;\n }\n const box = target.getBoundingClientRect();\n const cursor = {\n left: (box.left + box.right) / 2,\n top: (box.top + box.bottom) / 2,\n };\n cm.state.jump.cursor = cursor;\n if (cm.state.jump.isHoldingModifier) {\n enableJumpMode(cm);\n }\n}\nfunction onMouseOut(cm) {\n if (!cm.state.jump.isHoldingModifier && cm.state.jump.cursor) {\n cm.state.jump.cursor = null;\n return;\n }\n if (cm.state.jump.isHoldingModifier && cm.state.jump.marker) {\n disableJumpMode(cm);\n }\n}\nfunction onKeyDown(cm, event) {\n if (cm.state.jump.isHoldingModifier || !isJumpModifier(event.key)) {\n return;\n }\n cm.state.jump.isHoldingModifier = true;\n if (cm.state.jump.cursor) {\n enableJumpMode(cm);\n }\n const onKeyUp = (upEvent) => {\n if (upEvent.code !== event.code) {\n return;\n }\n cm.state.jump.isHoldingModifier = false;\n if (cm.state.jump.marker) {\n disableJumpMode(cm);\n }\n CodeMirror.off(document, 'keyup', onKeyUp);\n CodeMirror.off(document, 'click', onClick);\n cm.off('mousedown', onMouseDown);\n };\n const onClick = (clickEvent) => {\n const { destination, options } = cm.state.jump;\n if (destination) {\n options.onClick(destination, clickEvent);\n }\n };\n const onMouseDown = (_, downEvent) => {\n if (cm.state.jump.destination) {\n downEvent.codemirrorIgnore = true;\n }\n };\n CodeMirror.on(document, 'keyup', onKeyUp);\n CodeMirror.on(document, 'click', onClick);\n cm.on('mousedown', onMouseDown);\n}\nconst isMac = typeof navigator !== 'undefined' &&\n navigator &&\n navigator.appVersion.includes('Mac');\nfunction isJumpModifier(key) {\n return key === (isMac ? 'Meta' : 'Control');\n}\nfunction enableJumpMode(cm) {\n if (cm.state.jump.marker) {\n return;\n }\n const { cursor, options } = cm.state.jump;\n const pos = cm.coordsChar(cursor);\n const token = cm.getTokenAt(pos, true);\n const getDestination = options.getDestination || cm.getHelper(pos, 'jump');\n if (getDestination) {\n const destination = getDestination(token, options, cm);\n if (destination) {\n const marker = cm.markText({ line: pos.line, ch: token.start }, { line: pos.line, ch: token.end }, { className: 'CodeMirror-jump-token' });\n cm.state.jump.marker = marker;\n cm.state.jump.destination = destination;\n }\n }\n}\nfunction disableJumpMode(cm) {\n const { marker } = cm.state.jump;\n cm.state.jump.marker = null;\n cm.state.jump.destination = null;\n marker.clear();\n}\n//# sourceMappingURL=jump-addon.js.map","import CodeMirror from 'codemirror';\nimport getTypeInfo from './utils/getTypeInfo';\nimport { getArgumentReference, getDirectiveReference, getEnumValueReference, getFieldReference, getTypeReference, } from './utils/SchemaReference';\nimport './utils/jump-addon';\nCodeMirror.registerHelper('jump', 'graphql', (token, options) => {\n if (!options.schema || !options.onClick || !token.state) {\n return;\n }\n const { state } = token;\n const { kind, step } = state;\n const typeInfo = getTypeInfo(options.schema, state);\n if ((kind === 'Field' && step === 0 && typeInfo.fieldDef) ||\n (kind === 'AliasedField' && step === 2 && typeInfo.fieldDef)) {\n return getFieldReference(typeInfo);\n }\n if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) {\n return getDirectiveReference(typeInfo);\n }\n if (kind === 'Argument' && step === 0 && typeInfo.argDef) {\n return getArgumentReference(typeInfo);\n }\n if (kind === 'EnumValue' && typeInfo.enumValue) {\n return getEnumValueReference(typeInfo);\n }\n if (kind === 'NamedType' && typeInfo.type) {\n return getTypeReference(typeInfo);\n }\n});\n//# sourceMappingURL=jump.js.map"],"names":["getTypeInfo","schema","tokenState","info","type","parentType","inputType","directiveDef","fieldDef","argDef","argDefs","objectFieldDefs","f","state","_a","_b","kind","getQueryType","getMutationType","getSubscriptionType","getType","name","getFieldDef","getNamedType","getDirective","parentDef","prevState","args","i","length","enumType","enumValue","GraphQLEnumType","find","getValues","val","value","nullableType","getNullableType","GraphQLList","ofType","objectType","GraphQLInputObjectType","getFields","objectField","fieldName","SchemaMetaFieldDef","TypeMetaFieldDef","TypeNameMetaFieldDef","isCompositeType","array","predicate","getFieldReference","typeInfo","field","isMetaField","getDirectiveReference","directive","getArgumentReference","argument","getEnumValueReference","getTypeReference","slice","__name","forEachState","stack","fn","reverseStateStack","push","onMouseOver","cm","event","target","srcElement","HTMLElement","nodeName","box","getBoundingClientRect","cursor","left","right","top","bottom","jump","isHoldingModifier","enableJumpMode","onMouseOut","marker","disableJumpMode","onKeyDown","isJumpModifier","key","onKeyUp","upEvent","code","CodeMirror","document","onClick","off","onMouseDown","clickEvent","destination","options","_","downEvent","codemirrorIgnore","on","old","oldOnMouseOver","getWrapperElement","oldOnMouseOut","bind","isMac","navigator","appVersion","includes","pos","coordsChar","token","getTokenAt","getDestination","getHelper","markText","line","ch","start","end","className","clear","step"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/485.7dd1e903.chunk.js b/serv/web/build/static/js/485.7dd1e903.chunk.js new file mode 100644 index 00000000..decd0f0f --- /dev/null +++ b/serv/web/build/static/js/485.7dd1e903.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[485,889],{9087:(e,t,n)=>{n.d(t,{a:()=>p,b:()=>f,c:()=>d,d:()=>m,e:()=>g,g:()=>l});var i=n(2572),r=n(8979),a=n(2269),o=Object.defineProperty,u=(e,t)=>o(e,"name",{value:t,configurable:!0});function l(e,t){const n={schema:e,type:null,parentType:null,inputType:null,directiveDef:null,fieldDef:null,argDef:null,argDefs:null,objectFieldDefs:null};return(0,a.f)(t,(t=>{var r,a;switch(t.kind){case"Query":case"ShortQuery":n.type=e.getQueryType();break;case"Mutation":n.type=e.getMutationType();break;case"Subscription":n.type=e.getSubscriptionType();break;case"InlineFragment":case"FragmentDefinition":t.type&&(n.type=e.getType(t.type));break;case"Field":case"AliasedField":n.fieldDef=n.type&&t.name?s(e,n.parentType,t.name):null,n.type=null===(r=n.fieldDef)||void 0===r?void 0:r.type;break;case"SelectionSet":n.parentType=n.type?(0,i.xC)(n.type):null;break;case"Directive":n.directiveDef=t.name?e.getDirective(t.name):null;break;case"Arguments":const o=t.prevState?"Field"===t.prevState.kind?n.fieldDef:"Directive"===t.prevState.kind?n.directiveDef:"AliasedField"===t.prevState.kind?t.prevState.name&&s(e,n.parentType,t.prevState.name):null:null;n.argDefs=o?o.args:null;break;case"Argument":if(n.argDef=null,n.argDefs)for(let e=0;ee.value===t.name)):null;break;case"ListValue":const l=n.inputType?(0,i.tf)(n.inputType):null;n.inputType=l instanceof i.p2?l.ofType:null;break;case"ObjectValue":const p=n.inputType?(0,i.xC)(n.inputType):null;n.objectFieldDefs=p instanceof i.sR?p.getFields():null;break;case"ObjectField":const f=t.name&&n.objectFieldDefs?n.objectFieldDefs[t.name]:null;n.inputType=null==f?void 0:f.type;break;case"NamedType":n.type=t.name?e.getType(t.name):null}})),n}function s(e,t,n){return n===r.Az.name&&e.getQueryType()===t?r.Az:n===r.tF.name&&e.getQueryType()===t?r.tF:n===r.hU.name&&(0,i.Gv)(t)?r.hU:t&&t.getFields?t.getFields()[n]:void 0}function c(e,t){for(let n=0;n{n.r(t),n.d(t,{C:()=>o,c:()=>u});var i=n(8308);function r(e,t){for(var n=0;ni[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(r,"name",{value:"_mergeNamespaces",configurable:!0});var a=(0,i.r)();const o=(0,i.g)(a),u=r({__proto__:null,default:o},[a])},2269:(e,t,n)=>{n.d(t,{f:()=>i});function i(e,t){const n=[];let i=e;for(;null!=i&&i.kind;)n.push(i),i=i.prevState;for(let r=n.length-1;r>=0;r--)t(n[r])}(0,Object.defineProperty)(i,"name",{value:"forEachState",configurable:!0})},8485:(e,t,n)=>{n.r(t);var i=n(889),r=n(9087),a=(n(8308),n(2269),Object.defineProperty),o=(e,t)=>a(e,"name",{value:t,configurable:!0});function u(e,t){const n=t.target||t.srcElement;if(!(n instanceof HTMLElement)||"SPAN"!==(null==n?void 0:n.nodeName))return;const i=n.getBoundingClientRect(),r={left:(i.left+i.right)/2,top:(i.top+i.bottom)/2};e.state.jump.cursor=r,e.state.jump.isHoldingModifier&&f(e)}function l(e){e.state.jump.isHoldingModifier||!e.state.jump.cursor?e.state.jump.isHoldingModifier&&e.state.jump.marker&&d(e):e.state.jump.cursor=null}function s(e,t){if(e.state.jump.isHoldingModifier||!p(t.key))return;e.state.jump.isHoldingModifier=!0,e.state.jump.cursor&&f(e);const n=o((o=>{o.code===t.code&&(e.state.jump.isHoldingModifier=!1,e.state.jump.marker&&d(e),i.C.off(document,"keyup",n),i.C.off(document,"click",r),e.off("mousedown",a))}),"onKeyUp"),r=o((t=>{const{destination:n,options:i}=e.state.jump;n&&i.onClick(n,t)}),"onClick"),a=o(((t,n)=>{e.state.jump.destination&&(n.codemirrorIgnore=!0)}),"onMouseDown");i.C.on(document,"keyup",n),i.C.on(document,"click",r),e.on("mousedown",a)}i.C.defineOption("jump",!1,((e,t,n)=>{if(n&&n!==i.C.Init){const t=e.state.jump.onMouseOver;i.C.off(e.getWrapperElement(),"mouseover",t);const n=e.state.jump.onMouseOut;i.C.off(e.getWrapperElement(),"mouseout",n),i.C.off(document,"keydown",e.state.jump.onKeyDown),delete e.state.jump}if(t){const n=e.state.jump={options:t,onMouseOver:u.bind(null,e),onMouseOut:l.bind(null,e),onKeyDown:s.bind(null,e)};i.C.on(e.getWrapperElement(),"mouseover",n.onMouseOver),i.C.on(e.getWrapperElement(),"mouseout",n.onMouseOut),i.C.on(document,"keydown",n.onKeyDown)}})),o(u,"onMouseOver"),o(l,"onMouseOut"),o(s,"onKeyDown");const c=typeof navigator<"u"&&navigator&&navigator.appVersion.includes("Mac");function p(e){return e===(c?"Meta":"Control")}function f(e){if(e.state.jump.marker)return;const{cursor:t,options:n}=e.state.jump,i=e.coordsChar(t),r=e.getTokenAt(i,!0),a=n.getDestination||e.getHelper(i,"jump");if(a){const t=a(r,n,e);if(t){const n=e.markText({line:i.line,ch:r.start},{line:i.line,ch:r.end},{className:"CodeMirror-jump-token"});e.state.jump.marker=n,e.state.jump.destination=t}}}function d(e){const{marker:t}=e.state.jump;e.state.jump.marker=null,e.state.jump.destination=null,t.clear()}o(p,"isJumpModifier"),o(f,"enableJumpMode"),o(d,"disableJumpMode"),i.C.registerHelper("jump","graphql",((e,t)=>{if(!t.schema||!t.onClick||!e.state)return;const{state:n}=e,{kind:i,step:a}=n,o=(0,r.g)(t.schema,n);return"Field"===i&&0===a&&o.fieldDef||"AliasedField"===i&&2===a&&o.fieldDef?(0,r.a)(o):"Directive"===i&&1===a&&o.directiveDef?(0,r.b)(o):"Argument"===i&&0===a&&o.argDef?(0,r.c)(o):"EnumValue"===i&&o.enumValue?(0,r.d)(o):"NamedType"===i&&o.type?(0,r.e)(o):void 0}))}}]); +//# sourceMappingURL=485.7dd1e903.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/485.7dd1e903.chunk.js.map b/serv/web/build/static/js/485.7dd1e903.chunk.js.map new file mode 100644 index 00000000..a4d803af --- /dev/null +++ b/serv/web/build/static/js/485.7dd1e903.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/485.7dd1e903.chunk.js","mappings":"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","sources":["../node_modules/@graphiql/codemirror-graphql/esm/utils/getTypeInfo.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/SchemaReference.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/forEachState.js","../node_modules/@graphiql/codemirror-graphql/esm/utils/jump-addon.js","../node_modules/@graphiql/codemirror-graphql/esm/jump.js"],"sourcesContent":["import { isCompositeType, getNullableType, getNamedType, GraphQLEnumType, GraphQLInputObjectType, GraphQLList, SchemaMetaFieldDef, TypeMetaFieldDef, TypeNameMetaFieldDef, } from 'graphql';\nimport forEachState from './forEachState';\nexport default function getTypeInfo(schema, tokenState) {\n const info = {\n schema,\n type: null,\n parentType: null,\n inputType: null,\n directiveDef: null,\n fieldDef: null,\n argDef: null,\n argDefs: null,\n objectFieldDefs: null,\n };\n forEachState(tokenState, (state) => {\n var _a, _b;\n switch (state.kind) {\n case 'Query':\n case 'ShortQuery':\n info.type = schema.getQueryType();\n break;\n case 'Mutation':\n info.type = schema.getMutationType();\n break;\n case 'Subscription':\n info.type = schema.getSubscriptionType();\n break;\n case 'InlineFragment':\n case 'FragmentDefinition':\n if (state.type) {\n info.type = schema.getType(state.type);\n }\n break;\n case 'Field':\n case 'AliasedField':\n info.fieldDef =\n info.type && state.name\n ? getFieldDef(schema, info.parentType, state.name)\n : null;\n info.type = (_a = info.fieldDef) === null || _a === void 0 ? void 0 : _a.type;\n break;\n case 'SelectionSet':\n info.parentType = info.type ? getNamedType(info.type) : null;\n break;\n case 'Directive':\n info.directiveDef = state.name ? schema.getDirective(state.name) : null;\n break;\n case 'Arguments':\n const parentDef = state.prevState\n ? state.prevState.kind === 'Field'\n ? info.fieldDef\n : state.prevState.kind === 'Directive'\n ? info.directiveDef\n : state.prevState.kind === 'AliasedField'\n ? state.prevState.name &&\n getFieldDef(schema, info.parentType, state.prevState.name)\n : null\n : null;\n info.argDefs = parentDef ? parentDef.args : null;\n break;\n case 'Argument':\n info.argDef = null;\n if (info.argDefs) {\n for (let i = 0; i < info.argDefs.length; i++) {\n if (info.argDefs[i].name === state.name) {\n info.argDef = info.argDefs[i];\n break;\n }\n }\n }\n info.inputType = (_b = info.argDef) === null || _b === void 0 ? void 0 : _b.type;\n break;\n case 'EnumValue':\n const enumType = info.inputType ? getNamedType(info.inputType) : null;\n info.enumValue =\n enumType instanceof GraphQLEnumType\n ? find(enumType.getValues(), val => val.value === state.name)\n : null;\n break;\n case 'ListValue':\n const nullableType = info.inputType\n ? getNullableType(info.inputType)\n : null;\n info.inputType =\n nullableType instanceof GraphQLList ? nullableType.ofType : null;\n break;\n case 'ObjectValue':\n const objectType = info.inputType ? getNamedType(info.inputType) : null;\n info.objectFieldDefs =\n objectType instanceof GraphQLInputObjectType\n ? objectType.getFields()\n : null;\n break;\n case 'ObjectField':\n const objectField = state.name && info.objectFieldDefs\n ? info.objectFieldDefs[state.name]\n : null;\n info.inputType = objectField === null || objectField === void 0 ? void 0 : objectField.type;\n break;\n case 'NamedType':\n info.type = state.name ? schema.getType(state.name) : null;\n break;\n }\n });\n return info;\n}\nfunction getFieldDef(schema, type, fieldName) {\n if (fieldName === SchemaMetaFieldDef.name && schema.getQueryType() === type) {\n return SchemaMetaFieldDef;\n }\n if (fieldName === TypeMetaFieldDef.name && schema.getQueryType() === type) {\n return TypeMetaFieldDef;\n }\n if (fieldName === TypeNameMetaFieldDef.name && isCompositeType(type)) {\n return TypeNameMetaFieldDef;\n }\n if (type && type.getFields) {\n return type.getFields()[fieldName];\n }\n}\nfunction find(array, predicate) {\n for (let i = 0; i < array.length; i++) {\n if (predicate(array[i])) {\n return array[i];\n }\n }\n}\n//# sourceMappingURL=getTypeInfo.js.map","import { getNamedType } from 'graphql';\nexport function getFieldReference(typeInfo) {\n return {\n kind: 'Field',\n schema: typeInfo.schema,\n field: typeInfo.fieldDef,\n type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType,\n };\n}\nexport function getDirectiveReference(typeInfo) {\n return {\n kind: 'Directive',\n schema: typeInfo.schema,\n directive: typeInfo.directiveDef,\n };\n}\nexport function getArgumentReference(typeInfo) {\n return typeInfo.directiveDef\n ? {\n kind: 'Argument',\n schema: typeInfo.schema,\n argument: typeInfo.argDef,\n directive: typeInfo.directiveDef,\n }\n : {\n kind: 'Argument',\n schema: typeInfo.schema,\n argument: typeInfo.argDef,\n field: typeInfo.fieldDef,\n type: isMetaField(typeInfo.fieldDef) ? null : typeInfo.parentType,\n };\n}\nexport function getEnumValueReference(typeInfo) {\n return {\n kind: 'EnumValue',\n value: typeInfo.enumValue || undefined,\n type: typeInfo.inputType\n ? getNamedType(typeInfo.inputType)\n : undefined,\n };\n}\nexport function getTypeReference(typeInfo, type) {\n return {\n kind: 'Type',\n schema: typeInfo.schema,\n type: type || typeInfo.type,\n };\n}\nfunction isMetaField(fieldDef) {\n return fieldDef.name.slice(0, 2) === '__';\n}\n//# sourceMappingURL=SchemaReference.js.map","export default function forEachState(stack, fn) {\n const reverseStateStack = [];\n let state = stack;\n while (state === null || state === void 0 ? void 0 : state.kind) {\n reverseStateStack.push(state);\n state = state.prevState;\n }\n for (let i = reverseStateStack.length - 1; i >= 0; i--) {\n fn(reverseStateStack[i]);\n }\n}\n//# sourceMappingURL=forEachState.js.map","import CodeMirror from 'codemirror';\nCodeMirror.defineOption('jump', false, (cm, options, old) => {\n if (old && old !== CodeMirror.Init) {\n const oldOnMouseOver = cm.state.jump.onMouseOver;\n CodeMirror.off(cm.getWrapperElement(), 'mouseover', oldOnMouseOver);\n const oldOnMouseOut = cm.state.jump.onMouseOut;\n CodeMirror.off(cm.getWrapperElement(), 'mouseout', oldOnMouseOut);\n CodeMirror.off(document, 'keydown', cm.state.jump.onKeyDown);\n delete cm.state.jump;\n }\n if (options) {\n const state = (cm.state.jump = {\n options,\n onMouseOver: onMouseOver.bind(null, cm),\n onMouseOut: onMouseOut.bind(null, cm),\n onKeyDown: onKeyDown.bind(null, cm),\n });\n CodeMirror.on(cm.getWrapperElement(), 'mouseover', state.onMouseOver);\n CodeMirror.on(cm.getWrapperElement(), 'mouseout', state.onMouseOut);\n CodeMirror.on(document, 'keydown', state.onKeyDown);\n }\n});\nfunction onMouseOver(cm, event) {\n const target = event.target || event.srcElement;\n if (!(target instanceof HTMLElement)) {\n return;\n }\n if ((target === null || target === void 0 ? void 0 : target.nodeName) !== 'SPAN') {\n return;\n }\n const box = target.getBoundingClientRect();\n const cursor = {\n left: (box.left + box.right) / 2,\n top: (box.top + box.bottom) / 2,\n };\n cm.state.jump.cursor = cursor;\n if (cm.state.jump.isHoldingModifier) {\n enableJumpMode(cm);\n }\n}\nfunction onMouseOut(cm) {\n if (!cm.state.jump.isHoldingModifier && cm.state.jump.cursor) {\n cm.state.jump.cursor = null;\n return;\n }\n if (cm.state.jump.isHoldingModifier && cm.state.jump.marker) {\n disableJumpMode(cm);\n }\n}\nfunction onKeyDown(cm, event) {\n if (cm.state.jump.isHoldingModifier || !isJumpModifier(event.key)) {\n return;\n }\n cm.state.jump.isHoldingModifier = true;\n if (cm.state.jump.cursor) {\n enableJumpMode(cm);\n }\n const onKeyUp = (upEvent) => {\n if (upEvent.code !== event.code) {\n return;\n }\n cm.state.jump.isHoldingModifier = false;\n if (cm.state.jump.marker) {\n disableJumpMode(cm);\n }\n CodeMirror.off(document, 'keyup', onKeyUp);\n CodeMirror.off(document, 'click', onClick);\n cm.off('mousedown', onMouseDown);\n };\n const onClick = (clickEvent) => {\n const { destination, options } = cm.state.jump;\n if (destination) {\n options.onClick(destination, clickEvent);\n }\n };\n const onMouseDown = (_, downEvent) => {\n if (cm.state.jump.destination) {\n downEvent.codemirrorIgnore = true;\n }\n };\n CodeMirror.on(document, 'keyup', onKeyUp);\n CodeMirror.on(document, 'click', onClick);\n cm.on('mousedown', onMouseDown);\n}\nconst isMac = typeof navigator !== 'undefined' &&\n navigator &&\n navigator.appVersion.includes('Mac');\nfunction isJumpModifier(key) {\n return key === (isMac ? 'Meta' : 'Control');\n}\nfunction enableJumpMode(cm) {\n if (cm.state.jump.marker) {\n return;\n }\n const { cursor, options } = cm.state.jump;\n const pos = cm.coordsChar(cursor);\n const token = cm.getTokenAt(pos, true);\n const getDestination = options.getDestination || cm.getHelper(pos, 'jump');\n if (getDestination) {\n const destination = getDestination(token, options, cm);\n if (destination) {\n const marker = cm.markText({ line: pos.line, ch: token.start }, { line: pos.line, ch: token.end }, { className: 'CodeMirror-jump-token' });\n cm.state.jump.marker = marker;\n cm.state.jump.destination = destination;\n }\n }\n}\nfunction disableJumpMode(cm) {\n const { marker } = cm.state.jump;\n cm.state.jump.marker = null;\n cm.state.jump.destination = null;\n marker.clear();\n}\n//# sourceMappingURL=jump-addon.js.map","import CodeMirror from 'codemirror';\nimport getTypeInfo from './utils/getTypeInfo';\nimport { getArgumentReference, getDirectiveReference, getEnumValueReference, getFieldReference, getTypeReference, } from './utils/SchemaReference';\nimport './utils/jump-addon';\nCodeMirror.registerHelper('jump', 'graphql', (token, options) => {\n if (!options.schema || !options.onClick || !token.state) {\n return;\n }\n const { state } = token;\n const { kind, step } = state;\n const typeInfo = getTypeInfo(options.schema, state);\n if ((kind === 'Field' && step === 0 && typeInfo.fieldDef) ||\n (kind === 'AliasedField' && step === 2 && typeInfo.fieldDef)) {\n return getFieldReference(typeInfo);\n }\n if (kind === 'Directive' && step === 1 && typeInfo.directiveDef) {\n return getDirectiveReference(typeInfo);\n }\n if (kind === 'Argument' && step === 0 && typeInfo.argDef) {\n return getArgumentReference(typeInfo);\n }\n if (kind === 'EnumValue' && typeInfo.enumValue) {\n return getEnumValueReference(typeInfo);\n }\n if (kind === 'NamedType' && typeInfo.type) {\n return getTypeReference(typeInfo);\n }\n});\n//# sourceMappingURL=jump.js.map"],"names":["E","n","l","e","schema","type","parentType","inputType","directiveDef","fieldDef","argDef","argDefs","objectFieldDefs","j","i","a","p","kind","getQueryType","getMutationType","getSubscriptionType","getType","name","T","u","getDirective","f","prevState","args","t","length","d","enumValue","S","Q","getValues","value","g","k","F","ofType","s","v","getFields","c","y","D","m","h","L","field","o","R","directive","_","argument","G","O","slice","r","push","target","srcElement","HTMLElement","nodeName","getBoundingClientRect","left","right","top","bottom","state","jump","cursor","isHoldingModifier","marker","w","key","code","off","document","destination","options","onClick","codemirrorIgnore","on","defineOption","Init","onMouseOver","getWrapperElement","onMouseOut","onKeyDown","bind","navigator","appVersion","includes","coordsChar","getTokenAt","getDestination","getHelper","markText","line","ch","start","end","className","clear","registerHelper","step","M"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/557.2b1777f5.chunk.js b/serv/web/build/static/js/557.2b1777f5.chunk.js deleted file mode 100644 index 3147af38..00000000 --- a/serv/web/build/static/js/557.2b1777f5.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[557,889,237],{889:function(t,e,i){i.r(e),i.d(e,{C:function(){return r},c:function(){return c}});var n=i(8308);function o(t,e){for(var i=function(){var i=e[n];if("string"!=typeof i&&!Array.isArray(i)){var o=function(e){if("default"!==e&&!(e in t)){var n=Object.getOwnPropertyDescriptor(i,e);n&&Object.defineProperty(t,e,n.get?n:{enumerable:!0,get:function(){return i[e]}})}};for(var s in i)o(s)}},n=0;n0&&(h.from=n.C.Pos(h.from.line,h.from.ch),h.to=n.C.Pos(h.to.line,h.to.ch),n.C.signal(t,"hasCompletion",t,h,c)),h}}))},9237:function(t,e,i){i.r(e),i.d(e,{s:function(){return l}});var n=i(8308),o=Object.defineProperty,s=function(t,e){return o(t,"name",{value:e,configurable:!0})};function r(t,e){for(var i=function(){var i=e[n];if("string"!=typeof i&&!Array.isArray(i)){var o=function(e){if("default"!==e&&!(e in t)){var n=Object.getOwnPropertyDescriptor(i,e);n&&Object.defineProperty(t,e,n.get?n:{enumerable:!0,get:function(){return i[e]}})}};for(var s in i)o(s)}},n=0;n1)){if(this.somethingSelected()){if(!e.hint.supportsSelection)return;for(var o=0;of.clientHeight+1;if(setTimeout((function(){P=r.getScrollInfo()})),N.bottom-M>0){var E=N.bottom-N.top;if(w.top-(w.bottom-N.top)-E>0)f.style.top=(C=w.top-E-O)+"px",H=!1;else if(E>M){f.style.height=M-5+"px",f.style.top=(C=w.bottom-N.top-O)+"px";var R=r.getCursor();o.from.ch!=R.ch&&(w=r.cursorCoords(R),f.style.left=(A=w.left-k)+"px",N=f.getBoundingClientRect())}}var W,_=N.right-F;if(I&&(_+=r.display.nativeBarWidth),_>0&&(N.right-N.left>F&&(f.style.width=F-5+"px",_-=N.right-N.left-F),f.style.left=(A=w.left-_-k)+"px"),I)for(var j=f.firstChild;j;j=j.nextSibling)j.style.paddingRight=r.display.nativeBarWidth+"px";r.addKeyMap(this.keyMap=a(n,{moveFocus:function(t,e){s.changeActive(s.selectedHint+t,e)},setFocus:function(t){s.changeActive(t)},menuSize:function(){return s.screenAmount()},length:p.length,close:function(){n.close()},pick:function(){s.pick()},data:o})),n.options.closeOnUnfocus&&(r.on("blur",this.onBlur=function(){W=setTimeout((function(){n.close()}),100)}),r.on("focus",this.onFocus=function(){clearTimeout(W)})),r.on("scroll",this.onScroll=function(){var t=r.getScrollInfo(),e=r.getWrapperElement().getBoundingClientRect();P||(P=r.getScrollInfo());var i=C+P.top-t.top,o=i-(u.pageYOffset||(c.documentElement||c.body).scrollTop);if(H||(o+=f.offsetHeight),o<=e.top||o>=e.bottom)return n.close();f.style.top=i+"px",f.style.left=A+P.left-t.left+"px"}),t.on(f,"dblclick",(function(t){var e=h(f,t.target||t.srcElement);e&&null!=e.hintId&&(s.changeActive(e.hintId),s.pick())})),t.on(f,"click",(function(t){var e=h(f,t.target||t.srcElement);e&&null!=e.hintId&&(s.changeActive(e.hintId),n.options.completeOnSingleClick&&s.pick())})),t.on(f,"mousedown",(function(){setTimeout((function(){r.focus()}),20)}));var B=this.getSelectedHintRange();return(0!==B.from||0!==B.to)&&this.scrollToActive(),t.signal(o,"select",p[this.selectedHint],f.childNodes[this.selectedHint]),!0}function f(t,e){if(!t.somethingSelected())return e;for(var i=[],n=0;n0?e(t):r(o+1)}))}s(r,"run"),r(0)}),"resolved");return r.async=!0,r.supportsSelection=!0,r}return(n=e.getHelper(e.getCursor(),"hintWords"))?function(e){return t.hint.fromList(e,{words:n})}:t.hint.anyword?function(e,i){return t.hint.anyword(e,i)}:function(){}}n.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.options.updateOnCursorActivity&&this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&t.signal(this.data,"close"),this.widget&&this.widget.close(),t.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(e,i){var n=e.list[i],o=this;this.cm.operation((function(){n.hint?n.hint(o.cm,e,n):o.cm.replaceRange(l(n),n.from||e.from,n.to||e.to,"complete"),t.signal(e,"pick",n),o.cm.scrollIntoView()})),this.options.closeOnPick&&this.close()},cursorActivity:function(){this.debounce&&(r(this.debounce),this.debounce=0);var t=this.startPos;this.data&&(t=this.data.from);var e=this.cm.getCursor(),i=this.cm.getLine(e.line);if(e.line!=this.startPos.line||i.length-e.ch!=this.startLen-this.startPos.ch||e.ch=this.data.list.length?e=n?this.data.list.length-1:0:e<0&&(e=n?0:this.data.list.length-1),this.selectedHint!=e){var o=this.hints.childNodes[this.selectedHint];o&&(o.className=o.className.replace(" "+i,""),o.removeAttribute("aria-selected")),(o=this.hints.childNodes[this.selectedHint=e]).className+=" "+i,o.setAttribute("aria-selected","true"),this.completion.cm.getInputField().setAttribute("aria-activedescendant",o.id),this.scrollToActive(),t.signal(this.data,"select",this.data.list[this.selectedHint],o)}},scrollToActive:function(){var t=this.getSelectedHintRange(),e=this.hints.childNodes[t.from],i=this.hints.childNodes[t.to],n=this.hints.firstChild;e.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=i.offsetTop+i.offsetHeight-this.hints.clientHeight+n.offsetTop)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1},getSelectedHintRange:function(){var t=this.completion.options.scrollMargin||0;return{from:Math.max(0,this.selectedHint-t),to:Math.min(this.data.list.length-1,this.selectedHint+t)}}},s(f,"applicableHelpers"),s(d,"fetchHints"),s(p,"resolveAutoHints"),t.registerHelper("hint","auto",{resolve:p}),t.registerHelper("hint","fromList",(function(e,i){var n,o=e.getCursor(),s=e.getTokenAt(o),r=t.Pos(o.line,s.start),c=o;s.start,]/,closeOnPick:!0,closeOnUnfocus:!0,updateOnCursorActivity:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null,paddingForScrollbar:!0,moveOnOverlap:!0};t.defineOption("hintOptions",null)}((0,n.r)());var c={},l=r({__proto__:null,default:(0,n.g)(c)},[c])}}]); -//# sourceMappingURL=557.2b1777f5.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/557.2b1777f5.chunk.js.map b/serv/web/build/static/js/557.2b1777f5.chunk.js.map deleted file mode 100644 index ba7345ce..00000000 --- a/serv/web/build/static/js/557.2b1777f5.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/557.2b1777f5.chunk.js","mappings":"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","sources":["../node_modules/@graphiql/codemirror-graphql/esm/hint.js","../node_modules/node_modules/codemirror/addon/hint/show-hint.js"],"sourcesContent":["import CodeMirror from 'codemirror';\nimport 'codemirror/addon/hint/show-hint';\nimport { getAutocompleteSuggestions, Position } from 'graphql-language-service';\nCodeMirror.registerHelper('hint', 'graphql', (editor, options) => {\n const { schema, externalFragments } = options;\n if (!schema) {\n return;\n }\n const cur = editor.getCursor();\n const token = editor.getTokenAt(cur);\n const tokenStart = token.type !== null && /\"|\\w/.test(token.string[0])\n ? token.start\n : token.end;\n const position = new Position(cur.line, tokenStart);\n const rawResults = getAutocompleteSuggestions(schema, editor.getValue(), position, token, externalFragments);\n const results = {\n list: rawResults.map(item => ({\n text: item.label,\n type: item.type,\n description: item.documentation,\n isDeprecated: item.isDeprecated,\n deprecationReason: item.deprecationReason,\n })),\n from: { line: cur.line, ch: tokenStart },\n to: { line: cur.line, ch: token.end },\n };\n if ((results === null || results === void 0 ? void 0 : results.list) && results.list.length > 0) {\n results.from = CodeMirror.Pos(results.from.line, results.from.ch);\n results.to = CodeMirror.Pos(results.to.line, results.to.ch);\n CodeMirror.signal(editor, 'hasCompletion', editor, results, token);\n }\n return results;\n});\n//# sourceMappingURL=hint.js.map","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// declare global: DOMRect\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n CodeMirror.defineExtension(\"closeHint\", function() {\n if (this.state.completionActive) this.state.completionActive.close()\n })\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n if (this.options.updateOnCursorActivity) {\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n if (this.options.updateOnCursorActivity) {\n this.cm.off(\"cursorActivity\", this.activityFunc);\n }\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i], self = this;\n this.cm.operation(function() {\n if (completion.hint)\n completion.hint(self.cm, data, completion);\n else\n self.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n self.cm.scrollIntoView();\n });\n if (this.options.closeOnPick) {\n this.close();\n }\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var identStart = this.startPos;\n if(this.data) {\n identStart = this.data.from;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < identStart.ch || this.cm.somethingSelected() ||\n (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function() {handle.moveFocus(-1);};\n baseMap[\"Ctrl-N\"] = function() {handle.moveFocus(1);};\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.id = \"cm-complete-\" + Math.floor(Math.random(1e6))\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n hints.setAttribute(\"role\", \"listbox\")\n hints.setAttribute(\"aria-expanded\", \"true\")\n hints.id = this.id\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (i == this.selectedHint) elt.setAttribute(\"aria-selected\", \"true\")\n elt.id = this.id + \"-\" + i\n elt.setAttribute(\"role\", \"option\")\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var container = completion.options.container || ownerDocument.body;\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n var offsetLeft = 0, offsetTop = 0;\n if (container !== ownerDocument.body) {\n // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n var offsetParent = isContainerPositioned ? container : container.offsetParent;\n var offsetParentPosition = offsetParent.getBoundingClientRect();\n var bodyPosition = ownerDocument.body.getBoundingClientRect();\n offsetLeft = (offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft);\n offsetTop = (offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop);\n }\n hints.style.left = (left - offsetLeft) + \"px\";\n hints.style.top = (top - offsetTop) + \"px\";\n\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n container.appendChild(hints);\n cm.getInputField().setAttribute(\"aria-autocomplete\", \"list\")\n cm.getInputField().setAttribute(\"aria-owns\", this.id)\n cm.getInputField().setAttribute(\"aria-activedescendant\", this.id + \"-\" + this.selectedHint)\n\n var box = completion.options.moveOnOverlap ? hints.getBoundingClientRect() : new DOMRect();\n var scrolls = completion.options.paddingForScrollbar ? hints.scrollHeight > hints.clientHeight + 1 : false;\n\n // Compute in the timeout to avoid reflow on init\n var startScroll;\n setTimeout(function() { startScroll = cm.getScrollInfo(); });\n\n var overlapY = box.bottom - winH;\n if (overlapY > 0) {\n var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n if (curTop - height > 0) { // Fits above cursor\n hints.style.top = (top = pos.top - height - offsetTop) + \"px\";\n below = false;\n } else if (height > winH) {\n hints.style.height = (winH - 5) + \"px\";\n hints.style.top = (top = pos.bottom - box.top - offsetTop) + \"px\";\n var cursor = cm.getCursor();\n if (data.from.ch != cursor.ch) {\n pos = cm.cursorCoords(cursor);\n hints.style.left = (left = pos.left - offsetLeft) + \"px\";\n box = hints.getBoundingClientRect();\n }\n }\n }\n var overlapX = box.right - winW;\n if (scrolls) overlapX += cm.display.nativeBarWidth;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = pos.left - overlapX - offsetLeft) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n if (!startScroll) startScroll = cm.getScrollInfo();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n // The first hint doesn't need to be scrolled to on init\n var selectedHintRange = this.getSelectedHintRange();\n if (selectedHintRange.from !== 0 || selectedHintRange.to !== 0) {\n this.scrollToActive();\n }\n\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n if (this.hints.parentNode) this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n var input = this.completion.cm.getInputField()\n input.removeAttribute(\"aria-activedescendant\")\n input.removeAttribute(\"aria-owns\")\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n if (node) {\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node.removeAttribute(\"aria-selected\")\n }\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n node.setAttribute(\"aria-selected\", \"true\")\n this.completion.cm.getInputField().setAttribute(\"aria-activedescendant\", node.id)\n this.scrollToActive()\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n scrollToActive: function() {\n var selectedHintRange = this.getSelectedHintRange();\n var node1 = this.hints.childNodes[selectedHintRange.from];\n var node2 = this.hints.childNodes[selectedHintRange.to];\n var firstNode = this.hints.firstChild;\n if (node1.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;\n else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n },\n\n getSelectedHintRange: function() {\n var margin = this.completion.options.scrollMargin || 0;\n return {\n from: Math.max(0, this.selectedHint - margin),\n to: Math.min(this.data.list.length - 1, this.selectedHint + margin),\n };\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start)\n } else {\n term = \"\"\n from = cur\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnPick: true,\n closeOnUnfocus: true,\n updateOnCursorActivity: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null,\n paddingForScrollbar: true,\n moveOnOverlap: true,\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n"],"names":["CodeMirror","editor","options","schema","externalFragments","cur","getCursor","token","getTokenAt","tokenStart","type","test","string","start","end","position","Position","line","results","list","getAutocompleteSuggestions","getValue","map","item","text","label","description","documentation","isDeprecated","deprecationReason","from","ch","to","length","HINT_ELEMENT_CLASS","ACTIVE_HINT_ELEMENT_CLASS","Completion","cm","this","widget","debounce","tick","startPos","startLen","getLine","getSelection","updateOnCursorActivity","self","on","activityFunc","cursorActivity","showHint","getHints","async","newOpts","hint","prop","defineExtension","parseOptions","selections","listSelections","somethingSelected","supportsSelection","i","head","anchor","state","completionActive","close","completion","signal","update","__name","requestAnimationFrame","window","fn","setTimeout","cancelAnimationFrame","clearTimeout","pos","hintOptions","out","defaultOptions","resolve","getText","buildKeyMap","handle","baseMap","Up","moveFocus","Down","PageUp","menuSize","PageDown","Home","setFocus","End","Enter","pick","Tab","Esc","navigator","platform","custom","customKeys","ourMap","addBinding","key","val","bound","hasOwnProperty","extra","extraKeys","getHintElement","hintsElement","el","nodeName","toUpperCase","parentNode","Widget","data","id","Math","floor","random","picked","ownerDocument","getInputField","parentWindow","defaultView","hints","createElement","setAttribute","theme","className","selectedHint","completions","elt","appendChild","render","createTextNode","displayText","hintId","container","body","cursorCoords","alignWithWord","left","top","bottom","below","offsetLeft","offsetTop","offsetParent","indexOf","getComputedStyle","offsetParentPosition","getBoundingClientRect","bodyPosition","scrollLeft","scrollTop","style","winW","innerWidth","max","offsetWidth","documentElement","winH","innerHeight","offsetHeight","startScroll","box","moveOnOverlap","DOMRect","scrolls","paddingForScrollbar","scrollHeight","clientHeight","getScrollInfo","height","cursor","closingOnBlur","overlapX","right","display","nativeBarWidth","width","node","firstChild","nextSibling","paddingRight","addKeyMap","keyMap","n","avoidWrap","changeActive","screenAmount","closeOnUnfocus","onBlur","onFocus","onScroll","curScroll","getWrapperElement","newTop","point","pageYOffset","e","t","target","srcElement","completeOnSingleClick","focus","selectedHintRange","getSelectedHintRange","scrollToActive","childNodes","applicableHelpers","helpers","result","push","fetchHints","callback","then","resolveAutoHints","words","getHelpers","resolved","app","run","getHelper","fromList","anyword","prototype","active","off","operation","replaceRange","scrollIntoView","closeOnPick","identStart","closeCharacters","charAt","disable","first","myTick","finishUpdate","completeSingle","removeChild","removeKeyMap","input","removeAttribute","replace","node1","node2","firstNode","margin","scrollMargin","min","registerHelper","term","Pos","substr","found","word","slice","commands","autocomplete","auto","defineOption","mod","require$$0"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/557.dbc48a86.chunk.js b/serv/web/build/static/js/557.dbc48a86.chunk.js new file mode 100644 index 00000000..8b334800 --- /dev/null +++ b/serv/web/build/static/js/557.dbc48a86.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[557,889,237],{889:(t,e,i)=>{i.r(e),i.d(e,{C:()=>r,c:()=>c});var n=i(8308);function o(t,e){for(var i=0;in[e]})}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(o,"name",{value:"_mergeNamespaces",configurable:!0});var s=(0,n.r)();const r=(0,n.g)(s),c=o({__proto__:null,default:r},[s])},9557:(t,e,i)=>{i.r(e);var n=i(889),o=(i(9237),i(4652));i(8308);n.C.registerHelper("hint","graphql",((t,e)=>{const{schema:i,externalFragments:s}=e;if(!i)return;const r=t.getCursor(),c=t.getTokenAt(r),l=null!==c.type&&/"|\w/.test(c.string[0])?c.start:c.end,a=new o.Ly(r.line,l),h={list:(0,o.$1)(i,t.getValue(),a,c,s).map((t=>({text:t.label,type:t.type,description:t.documentation,isDeprecated:t.isDeprecated,deprecationReason:t.deprecationReason}))),from:{line:r.line,ch:l},to:{line:r.line,ch:c.end}};return null!=h&&h.list&&h.list.length>0&&(h.from=n.C.Pos(h.from.line,h.from.ch),h.to=n.C.Pos(h.to.line,h.to.ch),n.C.signal(t,"hasCompletion",t,h,c)),h}))},9237:(t,e,i)=>{i.r(e),i.d(e,{s:()=>l});var n=i(8308),o=Object.defineProperty,s=(t,e)=>o(t,"name",{value:e,configurable:!0});function r(t,e){for(var i=0;in[e]})}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}s(r,"_mergeNamespaces");!function(t){var e="CodeMirror-hint",i="CodeMirror-hint-active";function n(t,e){if(this.cm=t,this.options=e,this.widget=null,this.debounce=0,this.tick=0,this.startPos=this.cm.getCursor("start"),this.startLen=this.cm.getLine(this.startPos.line).length-this.cm.getSelection().length,this.options.updateOnCursorActivity){var i=this;t.on("cursorActivity",this.activityFunc=function(){i.cursorActivity()})}}t.showHint=function(t,e,i){if(!e)return t.showHint(i);i&&i.async&&(e.async=!0);var n={hint:e};if(i)for(var o in i)n[o]=i[o];return t.showHint(n)},t.defineExtension("showHint",(function(e){e=c(this,this.getCursor("start"),e);var i=this.listSelections();if(!(i.length>1)){if(this.somethingSelected()){if(!e.hint.supportsSelection)return;for(var o=0;of.clientHeight+1;if(setTimeout((function(){P=r.getScrollInfo()})),N.bottom-M>0){var E=N.bottom-N.top;if(w.top-(w.bottom-N.top)-E>0)f.style.top=(C=w.top-E-O)+"px",H=!1;else if(E>M){f.style.height=M-5+"px",f.style.top=(C=w.bottom-N.top-O)+"px";var R=r.getCursor();o.from.ch!=R.ch&&(w=r.cursorCoords(R),f.style.left=(A=w.left-k)+"px",N=f.getBoundingClientRect())}}var W,_=N.right-F;if(I&&(_+=r.display.nativeBarWidth),_>0&&(N.right-N.left>F&&(f.style.width=F-5+"px",_-=N.right-N.left-F),f.style.left=(A=w.left-_-k)+"px"),I)for(var j=f.firstChild;j;j=j.nextSibling)j.style.paddingRight=r.display.nativeBarWidth+"px";r.addKeyMap(this.keyMap=a(n,{moveFocus:function(t,e){s.changeActive(s.selectedHint+t,e)},setFocus:function(t){s.changeActive(t)},menuSize:function(){return s.screenAmount()},length:p.length,close:function(){n.close()},pick:function(){s.pick()},data:o})),n.options.closeOnUnfocus&&(r.on("blur",this.onBlur=function(){W=setTimeout((function(){n.close()}),100)}),r.on("focus",this.onFocus=function(){clearTimeout(W)})),r.on("scroll",this.onScroll=function(){var t=r.getScrollInfo(),e=r.getWrapperElement().getBoundingClientRect();P||(P=r.getScrollInfo());var i=C+P.top-t.top,o=i-(u.pageYOffset||(c.documentElement||c.body).scrollTop);if(H||(o+=f.offsetHeight),o<=e.top||o>=e.bottom)return n.close();f.style.top=i+"px",f.style.left=A+P.left-t.left+"px"}),t.on(f,"dblclick",(function(t){var e=h(f,t.target||t.srcElement);e&&null!=e.hintId&&(s.changeActive(e.hintId),s.pick())})),t.on(f,"click",(function(t){var e=h(f,t.target||t.srcElement);e&&null!=e.hintId&&(s.changeActive(e.hintId),n.options.completeOnSingleClick&&s.pick())})),t.on(f,"mousedown",(function(){setTimeout((function(){r.focus()}),20)}));var B=this.getSelectedHintRange();return(0!==B.from||0!==B.to)&&this.scrollToActive(),t.signal(o,"select",p[this.selectedHint],f.childNodes[this.selectedHint]),!0}function f(t,e){if(!t.somethingSelected())return e;for(var i=[],n=0;n0?e(t):r(o+1)}))}s(r,"run"),r(0)}),"resolved");return r.async=!0,r.supportsSelection=!0,r}return(n=e.getHelper(e.getCursor(),"hintWords"))?function(e){return t.hint.fromList(e,{words:n})}:t.hint.anyword?function(e,i){return t.hint.anyword(e,i)}:function(){}}n.prototype={close:function(){this.active()&&(this.cm.state.completionActive=null,this.tick=null,this.options.updateOnCursorActivity&&this.cm.off("cursorActivity",this.activityFunc),this.widget&&this.data&&t.signal(this.data,"close"),this.widget&&this.widget.close(),t.signal(this.cm,"endCompletion",this.cm))},active:function(){return this.cm.state.completionActive==this},pick:function(e,i){var n=e.list[i],o=this;this.cm.operation((function(){n.hint?n.hint(o.cm,e,n):o.cm.replaceRange(l(n),n.from||e.from,n.to||e.to,"complete"),t.signal(e,"pick",n),o.cm.scrollIntoView()})),this.options.closeOnPick&&this.close()},cursorActivity:function(){this.debounce&&(r(this.debounce),this.debounce=0);var t=this.startPos;this.data&&(t=this.data.from);var e=this.cm.getCursor(),i=this.cm.getLine(e.line);if(e.line!=this.startPos.line||i.length-e.ch!=this.startLen-this.startPos.ch||e.ch=this.data.list.length?e=n?this.data.list.length-1:0:e<0&&(e=n?0:this.data.list.length-1),this.selectedHint!=e){var o=this.hints.childNodes[this.selectedHint];o&&(o.className=o.className.replace(" "+i,""),o.removeAttribute("aria-selected")),(o=this.hints.childNodes[this.selectedHint=e]).className+=" "+i,o.setAttribute("aria-selected","true"),this.completion.cm.getInputField().setAttribute("aria-activedescendant",o.id),this.scrollToActive(),t.signal(this.data,"select",this.data.list[this.selectedHint],o)}},scrollToActive:function(){var t=this.getSelectedHintRange(),e=this.hints.childNodes[t.from],i=this.hints.childNodes[t.to],n=this.hints.firstChild;e.offsetTopthis.hints.scrollTop+this.hints.clientHeight&&(this.hints.scrollTop=i.offsetTop+i.offsetHeight-this.hints.clientHeight+n.offsetTop)},screenAmount:function(){return Math.floor(this.hints.clientHeight/this.hints.firstChild.offsetHeight)||1},getSelectedHintRange:function(){var t=this.completion.options.scrollMargin||0;return{from:Math.max(0,this.selectedHint-t),to:Math.min(this.data.list.length-1,this.selectedHint+t)}}},s(f,"applicableHelpers"),s(d,"fetchHints"),s(p,"resolveAutoHints"),t.registerHelper("hint","auto",{resolve:p}),t.registerHelper("hint","fromList",(function(e,i){var n,o=e.getCursor(),s=e.getTokenAt(o),r=t.Pos(o.line,s.start),c=o;s.start,]/,closeOnPick:!0,closeOnUnfocus:!0,updateOnCursorActivity:!0,completeOnSingleClick:!0,container:null,customKeys:null,extraKeys:null,paddingForScrollbar:!0,moveOnOverlap:!0};t.defineOption("hintOptions",null)}((0,n.r)());var c={};const l=r({__proto__:null,default:(0,n.g)(c)},[c])}}]); +//# sourceMappingURL=557.dbc48a86.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/557.dbc48a86.chunk.js.map b/serv/web/build/static/js/557.dbc48a86.chunk.js.map new file mode 100644 index 00000000..85895cc0 --- /dev/null +++ b/serv/web/build/static/js/557.dbc48a86.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/557.dbc48a86.chunk.js","mappings":"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","sources":["../node_modules/@graphiql/codemirror-graphql/esm/hint.js","../node_modules/node_modules/codemirror/addon/hint/show-hint.js"],"sourcesContent":["import CodeMirror from 'codemirror';\nimport 'codemirror/addon/hint/show-hint';\nimport { getAutocompleteSuggestions, Position } from 'graphql-language-service';\nCodeMirror.registerHelper('hint', 'graphql', (editor, options) => {\n const { schema, externalFragments } = options;\n if (!schema) {\n return;\n }\n const cur = editor.getCursor();\n const token = editor.getTokenAt(cur);\n const tokenStart = token.type !== null && /\"|\\w/.test(token.string[0])\n ? token.start\n : token.end;\n const position = new Position(cur.line, tokenStart);\n const rawResults = getAutocompleteSuggestions(schema, editor.getValue(), position, token, externalFragments);\n const results = {\n list: rawResults.map(item => ({\n text: item.label,\n type: item.type,\n description: item.documentation,\n isDeprecated: item.isDeprecated,\n deprecationReason: item.deprecationReason,\n })),\n from: { line: cur.line, ch: tokenStart },\n to: { line: cur.line, ch: token.end },\n };\n if ((results === null || results === void 0 ? void 0 : results.list) && results.list.length > 0) {\n results.from = CodeMirror.Pos(results.from.line, results.from.ch);\n results.to = CodeMirror.Pos(results.to.line, results.to.ch);\n CodeMirror.signal(editor, 'hasCompletion', editor, results, token);\n }\n return results;\n});\n//# sourceMappingURL=hint.js.map","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// declare global: DOMRect\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var HINT_ELEMENT_CLASS = \"CodeMirror-hint\";\n var ACTIVE_HINT_ELEMENT_CLASS = \"CodeMirror-hint-active\";\n\n // This is the old interface, kept around for now to stay\n // backwards-compatible.\n CodeMirror.showHint = function(cm, getHints, options) {\n if (!getHints) return cm.showHint(options);\n if (options && options.async) getHints.async = true;\n var newOpts = {hint: getHints};\n if (options) for (var prop in options) newOpts[prop] = options[prop];\n return cm.showHint(newOpts);\n };\n\n CodeMirror.defineExtension(\"showHint\", function(options) {\n options = parseOptions(this, this.getCursor(\"start\"), options);\n var selections = this.listSelections()\n if (selections.length > 1) return;\n // By default, don't allow completion when something is selected.\n // A hint function can have a `supportsSelection` property to\n // indicate that it can handle selections.\n if (this.somethingSelected()) {\n if (!options.hint.supportsSelection) return;\n // Don't try with cross-line selections\n for (var i = 0; i < selections.length; i++)\n if (selections[i].head.line != selections[i].anchor.line) return;\n }\n\n if (this.state.completionActive) this.state.completionActive.close();\n var completion = this.state.completionActive = new Completion(this, options);\n if (!completion.options.hint) return;\n\n CodeMirror.signal(this, \"startCompletion\", this);\n completion.update(true);\n });\n\n CodeMirror.defineExtension(\"closeHint\", function() {\n if (this.state.completionActive) this.state.completionActive.close()\n })\n\n function Completion(cm, options) {\n this.cm = cm;\n this.options = options;\n this.widget = null;\n this.debounce = 0;\n this.tick = 0;\n this.startPos = this.cm.getCursor(\"start\");\n this.startLen = this.cm.getLine(this.startPos.line).length - this.cm.getSelection().length;\n\n if (this.options.updateOnCursorActivity) {\n var self = this;\n cm.on(\"cursorActivity\", this.activityFunc = function() { self.cursorActivity(); });\n }\n }\n\n var requestAnimationFrame = window.requestAnimationFrame || function(fn) {\n return setTimeout(fn, 1000/60);\n };\n var cancelAnimationFrame = window.cancelAnimationFrame || clearTimeout;\n\n Completion.prototype = {\n close: function() {\n if (!this.active()) return;\n this.cm.state.completionActive = null;\n this.tick = null;\n if (this.options.updateOnCursorActivity) {\n this.cm.off(\"cursorActivity\", this.activityFunc);\n }\n\n if (this.widget && this.data) CodeMirror.signal(this.data, \"close\");\n if (this.widget) this.widget.close();\n CodeMirror.signal(this.cm, \"endCompletion\", this.cm);\n },\n\n active: function() {\n return this.cm.state.completionActive == this;\n },\n\n pick: function(data, i) {\n var completion = data.list[i], self = this;\n this.cm.operation(function() {\n if (completion.hint)\n completion.hint(self.cm, data, completion);\n else\n self.cm.replaceRange(getText(completion), completion.from || data.from,\n completion.to || data.to, \"complete\");\n CodeMirror.signal(data, \"pick\", completion);\n self.cm.scrollIntoView();\n });\n if (this.options.closeOnPick) {\n this.close();\n }\n },\n\n cursorActivity: function() {\n if (this.debounce) {\n cancelAnimationFrame(this.debounce);\n this.debounce = 0;\n }\n\n var identStart = this.startPos;\n if(this.data) {\n identStart = this.data.from;\n }\n\n var pos = this.cm.getCursor(), line = this.cm.getLine(pos.line);\n if (pos.line != this.startPos.line || line.length - pos.ch != this.startLen - this.startPos.ch ||\n pos.ch < identStart.ch || this.cm.somethingSelected() ||\n (!pos.ch || this.options.closeCharacters.test(line.charAt(pos.ch - 1)))) {\n this.close();\n } else {\n var self = this;\n this.debounce = requestAnimationFrame(function() {self.update();});\n if (this.widget) this.widget.disable();\n }\n },\n\n update: function(first) {\n if (this.tick == null) return\n var self = this, myTick = ++this.tick\n fetchHints(this.options.hint, this.cm, this.options, function(data) {\n if (self.tick == myTick) self.finishUpdate(data, first)\n })\n },\n\n finishUpdate: function(data, first) {\n if (this.data) CodeMirror.signal(this.data, \"update\");\n\n var picked = (this.widget && this.widget.picked) || (first && this.options.completeSingle);\n if (this.widget) this.widget.close();\n\n this.data = data;\n\n if (data && data.list.length) {\n if (picked && data.list.length == 1) {\n this.pick(data, 0);\n } else {\n this.widget = new Widget(this, data);\n CodeMirror.signal(data, \"shown\");\n }\n }\n }\n };\n\n function parseOptions(cm, pos, options) {\n var editor = cm.options.hintOptions;\n var out = {};\n for (var prop in defaultOptions) out[prop] = defaultOptions[prop];\n if (editor) for (var prop in editor)\n if (editor[prop] !== undefined) out[prop] = editor[prop];\n if (options) for (var prop in options)\n if (options[prop] !== undefined) out[prop] = options[prop];\n if (out.hint.resolve) out.hint = out.hint.resolve(cm, pos)\n return out;\n }\n\n function getText(completion) {\n if (typeof completion == \"string\") return completion;\n else return completion.text;\n }\n\n function buildKeyMap(completion, handle) {\n var baseMap = {\n Up: function() {handle.moveFocus(-1);},\n Down: function() {handle.moveFocus(1);},\n PageUp: function() {handle.moveFocus(-handle.menuSize() + 1, true);},\n PageDown: function() {handle.moveFocus(handle.menuSize() - 1, true);},\n Home: function() {handle.setFocus(0);},\n End: function() {handle.setFocus(handle.length - 1);},\n Enter: handle.pick,\n Tab: handle.pick,\n Esc: handle.close\n };\n\n var mac = /Mac/.test(navigator.platform);\n\n if (mac) {\n baseMap[\"Ctrl-P\"] = function() {handle.moveFocus(-1);};\n baseMap[\"Ctrl-N\"] = function() {handle.moveFocus(1);};\n }\n\n var custom = completion.options.customKeys;\n var ourMap = custom ? {} : baseMap;\n function addBinding(key, val) {\n var bound;\n if (typeof val != \"string\")\n bound = function(cm) { return val(cm, handle); };\n // This mechanism is deprecated\n else if (baseMap.hasOwnProperty(val))\n bound = baseMap[val];\n else\n bound = val;\n ourMap[key] = bound;\n }\n if (custom)\n for (var key in custom) if (custom.hasOwnProperty(key))\n addBinding(key, custom[key]);\n var extra = completion.options.extraKeys;\n if (extra)\n for (var key in extra) if (extra.hasOwnProperty(key))\n addBinding(key, extra[key]);\n return ourMap;\n }\n\n function getHintElement(hintsElement, el) {\n while (el && el != hintsElement) {\n if (el.nodeName.toUpperCase() === \"LI\" && el.parentNode == hintsElement) return el;\n el = el.parentNode;\n }\n }\n\n function Widget(completion, data) {\n this.id = \"cm-complete-\" + Math.floor(Math.random(1e6))\n this.completion = completion;\n this.data = data;\n this.picked = false;\n var widget = this, cm = completion.cm;\n var ownerDocument = cm.getInputField().ownerDocument;\n var parentWindow = ownerDocument.defaultView || ownerDocument.parentWindow;\n\n var hints = this.hints = ownerDocument.createElement(\"ul\");\n hints.setAttribute(\"role\", \"listbox\")\n hints.setAttribute(\"aria-expanded\", \"true\")\n hints.id = this.id\n var theme = completion.cm.options.theme;\n hints.className = \"CodeMirror-hints \" + theme;\n this.selectedHint = data.selectedHint || 0;\n\n var completions = data.list;\n for (var i = 0; i < completions.length; ++i) {\n var elt = hints.appendChild(ownerDocument.createElement(\"li\")), cur = completions[i];\n var className = HINT_ELEMENT_CLASS + (i != this.selectedHint ? \"\" : \" \" + ACTIVE_HINT_ELEMENT_CLASS);\n if (cur.className != null) className = cur.className + \" \" + className;\n elt.className = className;\n if (i == this.selectedHint) elt.setAttribute(\"aria-selected\", \"true\")\n elt.id = this.id + \"-\" + i\n elt.setAttribute(\"role\", \"option\")\n if (cur.render) cur.render(elt, data, cur);\n else elt.appendChild(ownerDocument.createTextNode(cur.displayText || getText(cur)));\n elt.hintId = i;\n }\n\n var container = completion.options.container || ownerDocument.body;\n var pos = cm.cursorCoords(completion.options.alignWithWord ? data.from : null);\n var left = pos.left, top = pos.bottom, below = true;\n var offsetLeft = 0, offsetTop = 0;\n if (container !== ownerDocument.body) {\n // We offset the cursor position because left and top are relative to the offsetParent's top left corner.\n var isContainerPositioned = ['absolute', 'relative', 'fixed'].indexOf(parentWindow.getComputedStyle(container).position) !== -1;\n var offsetParent = isContainerPositioned ? container : container.offsetParent;\n var offsetParentPosition = offsetParent.getBoundingClientRect();\n var bodyPosition = ownerDocument.body.getBoundingClientRect();\n offsetLeft = (offsetParentPosition.left - bodyPosition.left - offsetParent.scrollLeft);\n offsetTop = (offsetParentPosition.top - bodyPosition.top - offsetParent.scrollTop);\n }\n hints.style.left = (left - offsetLeft) + \"px\";\n hints.style.top = (top - offsetTop) + \"px\";\n\n // If we're at the edge of the screen, then we want the menu to appear on the left of the cursor.\n var winW = parentWindow.innerWidth || Math.max(ownerDocument.body.offsetWidth, ownerDocument.documentElement.offsetWidth);\n var winH = parentWindow.innerHeight || Math.max(ownerDocument.body.offsetHeight, ownerDocument.documentElement.offsetHeight);\n container.appendChild(hints);\n cm.getInputField().setAttribute(\"aria-autocomplete\", \"list\")\n cm.getInputField().setAttribute(\"aria-owns\", this.id)\n cm.getInputField().setAttribute(\"aria-activedescendant\", this.id + \"-\" + this.selectedHint)\n\n var box = completion.options.moveOnOverlap ? hints.getBoundingClientRect() : new DOMRect();\n var scrolls = completion.options.paddingForScrollbar ? hints.scrollHeight > hints.clientHeight + 1 : false;\n\n // Compute in the timeout to avoid reflow on init\n var startScroll;\n setTimeout(function() { startScroll = cm.getScrollInfo(); });\n\n var overlapY = box.bottom - winH;\n if (overlapY > 0) {\n var height = box.bottom - box.top, curTop = pos.top - (pos.bottom - box.top);\n if (curTop - height > 0) { // Fits above cursor\n hints.style.top = (top = pos.top - height - offsetTop) + \"px\";\n below = false;\n } else if (height > winH) {\n hints.style.height = (winH - 5) + \"px\";\n hints.style.top = (top = pos.bottom - box.top - offsetTop) + \"px\";\n var cursor = cm.getCursor();\n if (data.from.ch != cursor.ch) {\n pos = cm.cursorCoords(cursor);\n hints.style.left = (left = pos.left - offsetLeft) + \"px\";\n box = hints.getBoundingClientRect();\n }\n }\n }\n var overlapX = box.right - winW;\n if (scrolls) overlapX += cm.display.nativeBarWidth;\n if (overlapX > 0) {\n if (box.right - box.left > winW) {\n hints.style.width = (winW - 5) + \"px\";\n overlapX -= (box.right - box.left) - winW;\n }\n hints.style.left = (left = pos.left - overlapX - offsetLeft) + \"px\";\n }\n if (scrolls) for (var node = hints.firstChild; node; node = node.nextSibling)\n node.style.paddingRight = cm.display.nativeBarWidth + \"px\"\n\n cm.addKeyMap(this.keyMap = buildKeyMap(completion, {\n moveFocus: function(n, avoidWrap) { widget.changeActive(widget.selectedHint + n, avoidWrap); },\n setFocus: function(n) { widget.changeActive(n); },\n menuSize: function() { return widget.screenAmount(); },\n length: completions.length,\n close: function() { completion.close(); },\n pick: function() { widget.pick(); },\n data: data\n }));\n\n if (completion.options.closeOnUnfocus) {\n var closingOnBlur;\n cm.on(\"blur\", this.onBlur = function() { closingOnBlur = setTimeout(function() { completion.close(); }, 100); });\n cm.on(\"focus\", this.onFocus = function() { clearTimeout(closingOnBlur); });\n }\n\n cm.on(\"scroll\", this.onScroll = function() {\n var curScroll = cm.getScrollInfo(), editor = cm.getWrapperElement().getBoundingClientRect();\n if (!startScroll) startScroll = cm.getScrollInfo();\n var newTop = top + startScroll.top - curScroll.top;\n var point = newTop - (parentWindow.pageYOffset || (ownerDocument.documentElement || ownerDocument.body).scrollTop);\n if (!below) point += hints.offsetHeight;\n if (point <= editor.top || point >= editor.bottom) return completion.close();\n hints.style.top = newTop + \"px\";\n hints.style.left = (left + startScroll.left - curScroll.left) + \"px\";\n });\n\n CodeMirror.on(hints, \"dblclick\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {widget.changeActive(t.hintId); widget.pick();}\n });\n\n CodeMirror.on(hints, \"click\", function(e) {\n var t = getHintElement(hints, e.target || e.srcElement);\n if (t && t.hintId != null) {\n widget.changeActive(t.hintId);\n if (completion.options.completeOnSingleClick) widget.pick();\n }\n });\n\n CodeMirror.on(hints, \"mousedown\", function() {\n setTimeout(function(){cm.focus();}, 20);\n });\n\n // The first hint doesn't need to be scrolled to on init\n var selectedHintRange = this.getSelectedHintRange();\n if (selectedHintRange.from !== 0 || selectedHintRange.to !== 0) {\n this.scrollToActive();\n }\n\n CodeMirror.signal(data, \"select\", completions[this.selectedHint], hints.childNodes[this.selectedHint]);\n return true;\n }\n\n Widget.prototype = {\n close: function() {\n if (this.completion.widget != this) return;\n this.completion.widget = null;\n if (this.hints.parentNode) this.hints.parentNode.removeChild(this.hints);\n this.completion.cm.removeKeyMap(this.keyMap);\n var input = this.completion.cm.getInputField()\n input.removeAttribute(\"aria-activedescendant\")\n input.removeAttribute(\"aria-owns\")\n\n var cm = this.completion.cm;\n if (this.completion.options.closeOnUnfocus) {\n cm.off(\"blur\", this.onBlur);\n cm.off(\"focus\", this.onFocus);\n }\n cm.off(\"scroll\", this.onScroll);\n },\n\n disable: function() {\n this.completion.cm.removeKeyMap(this.keyMap);\n var widget = this;\n this.keyMap = {Enter: function() { widget.picked = true; }};\n this.completion.cm.addKeyMap(this.keyMap);\n },\n\n pick: function() {\n this.completion.pick(this.data, this.selectedHint);\n },\n\n changeActive: function(i, avoidWrap) {\n if (i >= this.data.list.length)\n i = avoidWrap ? this.data.list.length - 1 : 0;\n else if (i < 0)\n i = avoidWrap ? 0 : this.data.list.length - 1;\n if (this.selectedHint == i) return;\n var node = this.hints.childNodes[this.selectedHint];\n if (node) {\n node.className = node.className.replace(\" \" + ACTIVE_HINT_ELEMENT_CLASS, \"\");\n node.removeAttribute(\"aria-selected\")\n }\n node = this.hints.childNodes[this.selectedHint = i];\n node.className += \" \" + ACTIVE_HINT_ELEMENT_CLASS;\n node.setAttribute(\"aria-selected\", \"true\")\n this.completion.cm.getInputField().setAttribute(\"aria-activedescendant\", node.id)\n this.scrollToActive()\n CodeMirror.signal(this.data, \"select\", this.data.list[this.selectedHint], node);\n },\n\n scrollToActive: function() {\n var selectedHintRange = this.getSelectedHintRange();\n var node1 = this.hints.childNodes[selectedHintRange.from];\n var node2 = this.hints.childNodes[selectedHintRange.to];\n var firstNode = this.hints.firstChild;\n if (node1.offsetTop < this.hints.scrollTop)\n this.hints.scrollTop = node1.offsetTop - firstNode.offsetTop;\n else if (node2.offsetTop + node2.offsetHeight > this.hints.scrollTop + this.hints.clientHeight)\n this.hints.scrollTop = node2.offsetTop + node2.offsetHeight - this.hints.clientHeight + firstNode.offsetTop;\n },\n\n screenAmount: function() {\n return Math.floor(this.hints.clientHeight / this.hints.firstChild.offsetHeight) || 1;\n },\n\n getSelectedHintRange: function() {\n var margin = this.completion.options.scrollMargin || 0;\n return {\n from: Math.max(0, this.selectedHint - margin),\n to: Math.min(this.data.list.length - 1, this.selectedHint + margin),\n };\n }\n };\n\n function applicableHelpers(cm, helpers) {\n if (!cm.somethingSelected()) return helpers\n var result = []\n for (var i = 0; i < helpers.length; i++)\n if (helpers[i].supportsSelection) result.push(helpers[i])\n return result\n }\n\n function fetchHints(hint, cm, options, callback) {\n if (hint.async) {\n hint(cm, callback, options)\n } else {\n var result = hint(cm, options)\n if (result && result.then) result.then(callback)\n else callback(result)\n }\n }\n\n function resolveAutoHints(cm, pos) {\n var helpers = cm.getHelpers(pos, \"hint\"), words\n if (helpers.length) {\n var resolved = function(cm, callback, options) {\n var app = applicableHelpers(cm, helpers);\n function run(i) {\n if (i == app.length) return callback(null)\n fetchHints(app[i], cm, options, function(result) {\n if (result && result.list.length > 0) callback(result)\n else run(i + 1)\n })\n }\n run(0)\n }\n resolved.async = true\n resolved.supportsSelection = true\n return resolved\n } else if (words = cm.getHelper(cm.getCursor(), \"hintWords\")) {\n return function(cm) { return CodeMirror.hint.fromList(cm, {words: words}) }\n } else if (CodeMirror.hint.anyword) {\n return function(cm, options) { return CodeMirror.hint.anyword(cm, options) }\n } else {\n return function() {}\n }\n }\n\n CodeMirror.registerHelper(\"hint\", \"auto\", {\n resolve: resolveAutoHints\n });\n\n CodeMirror.registerHelper(\"hint\", \"fromList\", function(cm, options) {\n var cur = cm.getCursor(), token = cm.getTokenAt(cur)\n var term, from = CodeMirror.Pos(cur.line, token.start), to = cur\n if (token.start < cur.ch && /\\w/.test(token.string.charAt(cur.ch - token.start - 1))) {\n term = token.string.substr(0, cur.ch - token.start)\n } else {\n term = \"\"\n from = cur\n }\n var found = [];\n for (var i = 0; i < options.words.length; i++) {\n var word = options.words[i];\n if (word.slice(0, term.length) == term)\n found.push(word);\n }\n\n if (found.length) return {list: found, from: from, to: to};\n });\n\n CodeMirror.commands.autocomplete = CodeMirror.showHint;\n\n var defaultOptions = {\n hint: CodeMirror.hint.auto,\n completeSingle: true,\n alignWithWord: true,\n closeCharacters: /[\\s()\\[\\]{};:>,]/,\n closeOnPick: true,\n closeOnUnfocus: true,\n updateOnCursorActivity: true,\n completeOnSingleClick: true,\n container: null,\n customKeys: null,\n extraKeys: null,\n paddingForScrollbar: true,\n moveOnOverlap: true,\n };\n\n CodeMirror.defineOption(\"hintOptions\", null);\n});\n"],"names":["r","registerHelper","o","a","schema","i","externalFragments","c","s","getCursor","e","getTokenAt","l","type","test","string","start","end","p","u","line","t","list","g","getValue","map","n","text","label","description","documentation","isDeprecated","deprecationReason","from","ch","to","length","Pos","signal","w","v","b","this","cm","options","widget","debounce","tick","startPos","startLen","getLine","getSelection","updateOnCursorActivity","on","activityFunc","cursorActivity","showHint","async","hint","defineExtension","Z","listSelections","somethingSelected","supportsSelection","head","anchor","state","completionActive","close","update","J","window","requestAnimationFrame","setTimeout","Q","cancelAnimationFrame","clearTimeout","hintOptions","D","resolve","_","tt","Up","moveFocus","Down","PageUp","menuSize","PageDown","Home","setFocus","End","Enter","pick","Tab","Esc","navigator","platform","customKeys","S","hasOwnProperty","f","h","extraKeys","B","nodeName","toUpperCase","parentNode","K","id","Math","floor","random","completion","data","picked","getInputField","ownerDocument","defaultView","parentWindow","hints","createElement","setAttribute","theme","className","selectedHint","appendChild","render","createTextNode","displayText","hintId","x","container","body","y","cursorCoords","alignWithWord","k","left","O","bottom","j","F","E","W","indexOf","getComputedStyle","position","offsetParent","M","getBoundingClientRect","z","scrollLeft","top","scrollTop","style","N","innerWidth","max","offsetWidth","documentElement","L","innerHeight","offsetHeight","T","m","moveOnOverlap","DOMRect","q","paddingForScrollbar","scrollHeight","clientHeight","getScrollInfo","P","height","V","Y","C","right","display","nativeBarWidth","width","I","firstChild","nextSibling","paddingRight","addKeyMap","keyMap","d","changeActive","screenAmount","closeOnUnfocus","onBlur","onFocus","onScroll","getWrapperElement","X","R","pageYOffset","target","srcElement","completeOnSingleClick","focus","$","getSelectedHintRange","scrollToActive","childNodes","et","push","U","then","it","getHelpers","getHelper","fromList","words","anyword","prototype","active","off","operation","replaceRange","scrollIntoView","closeOnPick","closeCharacters","charAt","disable","finishUpdate","completeSingle","removeChild","removeKeyMap","removeAttribute","replace","offsetTop","scrollMargin","min","substr","slice","commands","autocomplete","auto","defineOption","ct"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/594.1aa776ab.chunk.js b/serv/web/build/static/js/594.1aa776ab.chunk.js deleted file mode 100644 index 9b9b303a..00000000 --- a/serv/web/build/static/js/594.1aa776ab.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[594],{6594:function(e,r,n){n.r(r),n.d(r,{b:function(){return a}});var t=n(8308),i=Object.defineProperty,o=function(e,r){return i(e,"name",{value:r,configurable:!0})};function f(e,r){for(var n=function(){var n=r[t];if("string"!=typeof n&&!Array.isArray(n)){var i=function(r){if("default"!==r&&!(r in e)){var t=Object.getOwnPropertyDescriptor(n,r);t&&Object.defineProperty(e,r,t.get?t:{enumerable:!0,get:function(){return n[r]}})}};for(var o in n)i(o)}},t=0;tr.lastLine())return null;var t=r.getTokenAt(e.Pos(n,1));if(/\S/.test(t.string)||(t=r.getTokenAt(e.Pos(n,t.end+1))),"keyword"!=t.type||"import"!=t.string)return null;for(var i=n,o=Math.min(r.lastLine(),n+10);i<=o;++i){var f=r.getLine(i).indexOf(";");if(-1!=f)return{startCh:t.end,end:e.Pos(i,f)}}}o(t,"hasImport");var i,f=n.line,l=t(f);if(!l||t(f-1)||(i=t(f-2))&&i.end.line==f-1)return null;for(var a=l.end;;){var u=t(a.line+1);if(null==u)break;a=u.end}return{from:r.clipPos(e.Pos(f,l.startCh+1)),to:a}})),e.registerHelper("fold","include",(function(r,n){function t(n){if(nr.lastLine())return null;var t=r.getTokenAt(e.Pos(n,1));return/\S/.test(t.string)||(t=r.getTokenAt(e.Pos(n,t.end+1))),"meta"==t.type&&"#include"==t.string.slice(0,8)?t.start+8:void 0}o(t,"hasInclude");var i=n.line,f=t(i);if(null==f||null!=t(i-1))return null;for(var l=i;null!=t(l+1);)++l;return{from:e.Pos(i,f+1),to:r.clipPos(e.Pos(l))}}))}((0,t.r)());var l={},a=f({__proto__:null,default:(0,t.g)(l)},[l])}}]); -//# sourceMappingURL=594.1aa776ab.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/594.1aa776ab.chunk.js.map b/serv/web/build/static/js/594.1aa776ab.chunk.js.map deleted file mode 100644 index 268b2e0c..00000000 --- a/serv/web/build/static/js/594.1aa776ab.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/594.1aa776ab.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/fold/brace-fold.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nfunction bracketFolding(pairs) {\n return function(cm, start) {\n var line = start.line, lineText = cm.getLine(line);\n\n function findOpening(pair) {\n var tokenType;\n for (var at = start.ch, pass = 0;;) {\n var found = at <= 0 ? -1 : lineText.lastIndexOf(pair[0], at - 1);\n if (found == -1) {\n if (pass == 1) break;\n pass = 1;\n at = lineText.length;\n continue;\n }\n if (pass == 1 && found < start.ch) break;\n tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n if (!/^(comment|string)/.test(tokenType)) return {ch: found + 1, tokenType: tokenType, pair: pair};\n at = found - 1;\n }\n }\n\n function findRange(found) {\n var count = 1, lastLine = cm.lastLine(), end, startCh = found.ch, endCh\n outer: for (var i = line; i <= lastLine; ++i) {\n var text = cm.getLine(i), pos = i == line ? startCh : 0;\n for (;;) {\n var nextOpen = text.indexOf(found.pair[0], pos), nextClose = text.indexOf(found.pair[1], pos);\n if (nextOpen < 0) nextOpen = text.length;\n if (nextClose < 0) nextClose = text.length;\n pos = Math.min(nextOpen, nextClose);\n if (pos == text.length) break;\n if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == found.tokenType) {\n if (pos == nextOpen) ++count;\n else if (!--count) { end = i; endCh = pos; break outer; }\n }\n ++pos;\n }\n }\n\n if (end == null || line == end) return null\n return {from: CodeMirror.Pos(line, startCh),\n to: CodeMirror.Pos(end, endCh)};\n }\n\n var found = []\n for (var i = 0; i < pairs.length; i++) {\n var open = findOpening(pairs[i])\n if (open) found.push(open)\n }\n found.sort(function(a, b) { return a.ch - b.ch })\n for (var i = 0; i < found.length; i++) {\n var range = findRange(found[i])\n if (range) return range\n }\n return null\n }\n}\n\nCodeMirror.registerHelper(\"fold\", \"brace\", bracketFolding([[\"{\", \"}\"], [\"[\", \"]\"]]));\n\nCodeMirror.registerHelper(\"fold\", \"brace-paren\", bracketFolding([[\"{\", \"}\"], [\"[\", \"]\"], [\"(\", \")\"]]));\n\nCodeMirror.registerHelper(\"fold\", \"import\", function(cm, start) {\n function hasImport(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type != \"keyword\" || start.string != \"import\") return null;\n // Now find closing semicolon, return its position\n for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n var text = cm.getLine(i), semi = text.indexOf(\";\");\n if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)};\n }\n }\n\n var startLine = start.line, has = hasImport(startLine), prev;\n if (!has || hasImport(startLine - 1) || ((prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1))\n return null;\n for (var end = has.end;;) {\n var next = hasImport(end.line + 1);\n if (next == null) break;\n end = next.end;\n }\n return {from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)), to: end};\n});\n\nCodeMirror.registerHelper(\"fold\", \"include\", function(cm, start) {\n function hasInclude(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type == \"meta\" && start.string.slice(0, 8) == \"#include\") return start.start + 8;\n }\n\n var startLine = start.line, has = hasInclude(startLine);\n if (has == null || hasInclude(startLine - 1) != null) return null;\n for (var end = startLine;;) {\n var next = hasInclude(end + 1);\n if (next == null) break;\n ++end;\n }\n return {from: CodeMirror.Pos(startLine, has + 1),\n to: cm.clipPos(CodeMirror.Pos(end))};\n});\n\n});\n"],"names":["CodeMirror","bracketFolding","pairs","cm","start","line","lineText","getLine","findOpening","pair","tokenType","at","ch","pass","found","lastIndexOf","getTokenTypeAt","Pos","test","length","findRange","end","endCh","count","lastLine","startCh","outer","i","text","pos","nextOpen","indexOf","nextClose","Math","min","from","to","__name","open","push","sort","a","b","range","registerHelper","hasImport","firstLine","getTokenAt","string","type","e","semi","prev","startLine","has","next","clipPos","hasInclude","slice","mod","require$$0"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/594.c09eef4c.chunk.js b/serv/web/build/static/js/594.c09eef4c.chunk.js new file mode 100644 index 00000000..627ed9d0 --- /dev/null +++ b/serv/web/build/static/js/594.c09eef4c.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[594],{6594:(e,r,n)=>{n.r(r),n.d(r,{b:()=>a});var t=n(8308),i=Object.defineProperty,o=(e,r)=>i(e,"name",{value:r,configurable:!0});function l(e,r){for(var n=0;nt[r]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}o(l,"_mergeNamespaces");!function(e){function r(r){return function(n,t){var i=t.line,l=n.getLine(i);function f(r){for(var o,f=t.ch,a=0;;){var s=f<=0?-1:l.lastIndexOf(r[0],f-1);if(-1!=s){if(1==a&&sr.lastLine())return null;var t=r.getTokenAt(e.Pos(n,1));if(/\S/.test(t.string)||(t=r.getTokenAt(e.Pos(n,t.end+1))),"keyword"!=t.type||"import"!=t.string)return null;for(var i=n,o=Math.min(r.lastLine(),n+10);i<=o;++i){var l=r.getLine(i).indexOf(";");if(-1!=l)return{startCh:t.end,end:e.Pos(i,l)}}}o(t,"hasImport");var i,l=n.line,f=t(l);if(!f||t(l-1)||(i=t(l-2))&&i.end.line==l-1)return null;for(var a=f.end;;){var s=t(a.line+1);if(null==s)break;a=s.end}return{from:r.clipPos(e.Pos(l,f.startCh+1)),to:a}})),e.registerHelper("fold","include",(function(r,n){function t(n){if(nr.lastLine())return null;var t=r.getTokenAt(e.Pos(n,1));return/\S/.test(t.string)||(t=r.getTokenAt(e.Pos(n,t.end+1))),"meta"==t.type&&"#include"==t.string.slice(0,8)?t.start+8:void 0}o(t,"hasInclude");var i=n.line,l=t(i);if(null==l||null!=t(i-1))return null;for(var f=i;null!=t(f+1);)++f;return{from:e.Pos(i,l+1),to:r.clipPos(e.Pos(f))}}))}((0,t.r)());var f={};const a=l({__proto__:null,default:(0,t.g)(f)},[f])}}]); +//# sourceMappingURL=594.c09eef4c.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/594.c09eef4c.chunk.js.map b/serv/web/build/static/js/594.c09eef4c.chunk.js.map new file mode 100644 index 00000000..2240946c --- /dev/null +++ b/serv/web/build/static/js/594.c09eef4c.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/594.c09eef4c.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/fold/brace-fold.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n\"use strict\";\n\nfunction bracketFolding(pairs) {\n return function(cm, start) {\n var line = start.line, lineText = cm.getLine(line);\n\n function findOpening(pair) {\n var tokenType;\n for (var at = start.ch, pass = 0;;) {\n var found = at <= 0 ? -1 : lineText.lastIndexOf(pair[0], at - 1);\n if (found == -1) {\n if (pass == 1) break;\n pass = 1;\n at = lineText.length;\n continue;\n }\n if (pass == 1 && found < start.ch) break;\n tokenType = cm.getTokenTypeAt(CodeMirror.Pos(line, found + 1));\n if (!/^(comment|string)/.test(tokenType)) return {ch: found + 1, tokenType: tokenType, pair: pair};\n at = found - 1;\n }\n }\n\n function findRange(found) {\n var count = 1, lastLine = cm.lastLine(), end, startCh = found.ch, endCh\n outer: for (var i = line; i <= lastLine; ++i) {\n var text = cm.getLine(i), pos = i == line ? startCh : 0;\n for (;;) {\n var nextOpen = text.indexOf(found.pair[0], pos), nextClose = text.indexOf(found.pair[1], pos);\n if (nextOpen < 0) nextOpen = text.length;\n if (nextClose < 0) nextClose = text.length;\n pos = Math.min(nextOpen, nextClose);\n if (pos == text.length) break;\n if (cm.getTokenTypeAt(CodeMirror.Pos(i, pos + 1)) == found.tokenType) {\n if (pos == nextOpen) ++count;\n else if (!--count) { end = i; endCh = pos; break outer; }\n }\n ++pos;\n }\n }\n\n if (end == null || line == end) return null\n return {from: CodeMirror.Pos(line, startCh),\n to: CodeMirror.Pos(end, endCh)};\n }\n\n var found = []\n for (var i = 0; i < pairs.length; i++) {\n var open = findOpening(pairs[i])\n if (open) found.push(open)\n }\n found.sort(function(a, b) { return a.ch - b.ch })\n for (var i = 0; i < found.length; i++) {\n var range = findRange(found[i])\n if (range) return range\n }\n return null\n }\n}\n\nCodeMirror.registerHelper(\"fold\", \"brace\", bracketFolding([[\"{\", \"}\"], [\"[\", \"]\"]]));\n\nCodeMirror.registerHelper(\"fold\", \"brace-paren\", bracketFolding([[\"{\", \"}\"], [\"[\", \"]\"], [\"(\", \")\"]]));\n\nCodeMirror.registerHelper(\"fold\", \"import\", function(cm, start) {\n function hasImport(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type != \"keyword\" || start.string != \"import\") return null;\n // Now find closing semicolon, return its position\n for (var i = line, e = Math.min(cm.lastLine(), line + 10); i <= e; ++i) {\n var text = cm.getLine(i), semi = text.indexOf(\";\");\n if (semi != -1) return {startCh: start.end, end: CodeMirror.Pos(i, semi)};\n }\n }\n\n var startLine = start.line, has = hasImport(startLine), prev;\n if (!has || hasImport(startLine - 1) || ((prev = hasImport(startLine - 2)) && prev.end.line == startLine - 1))\n return null;\n for (var end = has.end;;) {\n var next = hasImport(end.line + 1);\n if (next == null) break;\n end = next.end;\n }\n return {from: cm.clipPos(CodeMirror.Pos(startLine, has.startCh + 1)), to: end};\n});\n\nCodeMirror.registerHelper(\"fold\", \"include\", function(cm, start) {\n function hasInclude(line) {\n if (line < cm.firstLine() || line > cm.lastLine()) return null;\n var start = cm.getTokenAt(CodeMirror.Pos(line, 1));\n if (!/\\S/.test(start.string)) start = cm.getTokenAt(CodeMirror.Pos(line, start.end + 1));\n if (start.type == \"meta\" && start.string.slice(0, 8) == \"#include\") return start.start + 8;\n }\n\n var startLine = start.line, has = hasInclude(startLine);\n if (has == null || hasInclude(startLine - 1) != null) return null;\n for (var end = startLine;;) {\n var next = hasInclude(end + 1);\n if (next == null) break;\n ++end;\n }\n return {from: CodeMirror.Pos(startLine, has + 1),\n to: cm.clipPos(CodeMirror.Pos(end))};\n});\n\n});\n"],"names":["e","c","t","a","f","r","line","s","getLine","v","l","u","g","ch","h","p","lastIndexOf","getTokenTypeAt","Pos","test","tokenType","pair","length","k","j","lastLine","L","A","b","O","indexOf","F","Math","min","from","to","y","i","n","o","push","sort","P","registerHelper","firstLine","getTokenAt","string","end","type","startCh","clipPos","slice","start","S"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/598.60488e41.chunk.js b/serv/web/build/static/js/598.60488e41.chunk.js deleted file mode 100644 index 43e5524e..00000000 --- a/serv/web/build/static/js/598.60488e41.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[598],{9598:function(e,n,t){t.r(n),t.d(n,{c:function(){return l}});var r=t(8308),i=Object.defineProperty,a=function(e,n){return i(e,"name",{value:n,configurable:!0})};function o(e,n){for(var t=function(){var t=n[r];if("string"!=typeof t&&!Array.isArray(t)){var i=function(n){if("default"!==n&&!(n in e)){var r=Object.getOwnPropertyDescriptor(t,n);r&&Object.defineProperty(e,n,r.get?r:{enumerable:!0,get:function(){return t[n]}})}};for(var a in t)i(a)}},r=0;r",triples:"",explode:"[]{}"},t=e.Pos;function r(e,t){return"pairs"==t&&"string"==typeof e?e:"object"==typeof e&&null!=e[t]?e[t]:n[t]}e.defineOption("autoCloseBrackets",!1,(function(n,t,a){a&&a!=e.Init&&(n.removeKeyMap(i),n.state.closeBrackets=null),t&&(o(r(t,"pairs")),n.state.closeBrackets=t,n.addKeyMap(i))})),a(r,"getOption");var i={Backspace:c,Enter:u};function o(e){for(var n=0;n=0;s--){var u=o[s].head;n.replaceRange("",t(u.line,u.ch-1),t(u.line,u.ch+1),"+delete")}}function u(n){var t=l(n),i=t&&r(t,"explode");if(!i||n.getOption("disableInput"))return e.Pass;for(var a=n.listSelections(),o=0;o0?{line:o.head.line,ch:o.head.ch+n}:{line:o.head.line-1};t.push({anchor:s,head:s})}e.setSelections(t,i)}function h(n){var r=e.cmpPos(n.anchor,n.head)>0;return{anchor:new t(n.anchor.line,n.anchor.ch+(r?-1:1)),head:new t(n.head.line,n.head.ch+(r?1:-1))}}function d(n,i){var a=l(n);if(!a||n.getOption("disableInput"))return e.Pass;var o=r(a,"pairs"),s=o.indexOf(i);if(-1==s)return e.Pass;for(var c,u=r(a,"closeBefore"),d=r(a,"triples"),p=o.charAt(s+1)==i,v=n.listSelections(),b=s%2==0,S=0;S1&&d.indexOf(i)>=0&&n.getRange(t(P.line,P.ch-2),P)==i+i){if(P.ch>2&&/\bstring/.test(n.getTokenTypeAt(t(P.line,P.ch-2))))return e.Pass;k="addFour"}else if(p){var A=0==P.ch?" ":n.getRange(t(P.line,P.ch-1),P);if(e.isWordChar(O)||A==i||e.isWordChar(A))return e.Pass;k="both"}else{if(!b||!(0===O.length||/\s/.test(O)||u.indexOf(O)>-1))return e.Pass;k="both"}else k=p&&g(n,P)?"both":d.indexOf(i)>=0&&n.getRange(P,t(P.line,P.ch+3))==i+i+i?"skipThree":"skip";if(c){if(c!=k)return e.Pass}else c=k}var m=s%2?o.charAt(s-1):i,B=s%2?i:o.charAt(s+1);n.operation((function(){if("skip"==c)f(n,1);else if("skipThree"==c)f(n,3);else if("surround"==c){for(var e=n.getSelections(),t=0;t\",\n triples: \"\",\n explode: \"[]{}\"\n };\n\n var Pos = CodeMirror.Pos;\n\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n if (val) {\n ensureBound(getOption(val, \"pairs\"))\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n\n var keyMap = {Backspace: handleBackspace, Enter: handleEnter};\n function ensureBound(chars) {\n for (var i = 0; i < chars.length; i++) {\n var ch = chars.charAt(i), key = \"'\" + ch + \"'\"\n if (!keyMap[key]) keyMap[key] = handler(ch)\n }\n }\n ensureBound(defaults.pairs + \"`\")\n\n function handler(ch) {\n return function(cm) { return handleChar(cm, ch); };\n }\n\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n for (var i = ranges.length - 1; i >= 0; i--) {\n var cur = ranges[i].head;\n cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n }\n }\n\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n cm.operation(function() {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n moveSel(cm, -1)\n ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var line = ranges[i].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n\n function moveSel(cm, dir) {\n var newRanges = [], ranges = cm.listSelections(), primary = 0\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i]\n if (range.head == cm.getCursor()) primary = i\n var pos = range.head.ch || dir > 0 ? {line: range.head.line, ch: range.head.ch + dir} : {line: range.head.line - 1}\n newRanges.push({anchor: pos, head: pos})\n }\n cm.setSelections(newRanges, primary)\n }\n\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))};\n }\n\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n\n var closeBefore = getOption(conf,\"closeBefore\");\n\n var triples = getOption(conf, \"triples\");\n\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n\n var type;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], cur = range.head, curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n if (opening && !range.empty()) {\n curType = \"surround\";\n } else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur))\n curType = \"both\";\n else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch)\n curType = \"skipThree\";\n else\n curType = \"skip\";\n } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 &&\n cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur)\n if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";\n else return CodeMirror.Pass;\n } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n curType = \"both\";\n } else {\n return CodeMirror.Pass;\n }\n if (!type) type = curType;\n else if (type != curType) return CodeMirror.Pass;\n }\n\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function() {\n if (type == \"skip\") {\n moveSel(cm, 1)\n } else if (type == \"skipThree\") {\n moveSel(cm, 3)\n } else if (type == \"surround\") {\n var sels = cm.getSelections();\n for (var i = 0; i < sels.length; i++)\n sels[i] = left + sels[i] + right;\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n for (var i = 0; i < sels.length; i++)\n sels[i] = contractSelection(sels[i]);\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n moveSel(cm, -1)\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n moveSel(cm, 1)\n }\n });\n }\n\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1),\n Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1))\n return /\\bstring/.test(token.type) && token.start == pos.ch &&\n (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)))\n }\n});\n"],"names":["CodeMirror","defaults","pairs","closeBefore","triples","explode","Pos","getOption","conf","name","defineOption","cm","val","old","Init","removeKeyMap","keyMap","state","closeBrackets","ensureBound","addKeyMap","__name","Backspace","handleBackspace","Enter","handleEnter","chars","i","length","ch","charAt","key","handler","handleChar","getConfig","deflt","override","getModeAt","getCursor","Pass","ranges","listSelections","empty","around","charsAround","head","indexOf","cur","replaceRange","line","operation","linesep","lineSeparator","replaceSelection","moveSel","indentLine","dir","newRanges","primary","range","pos","push","anchor","setSelections","contractSelection","sel","inverted","cmpPos","type","identical","opening","curType","next","getRange","test","getTokenTypeAt","prev","isWordChar","stringStartsAfter","left","right","sels","getSelections","replaceSelections","slice","triggerElectric","str","token","getTokenAt","start","mod","require$$0"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/598.ef83eb66.chunk.js b/serv/web/build/static/js/598.ef83eb66.chunk.js new file mode 100644 index 00000000..f3918a82 --- /dev/null +++ b/serv/web/build/static/js/598.ef83eb66.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[598],{9598:(e,t,n)=>{n.r(t),n.d(t,{c:()=>l});var r=n(8308),i=Object.defineProperty,a=(e,t)=>i(e,"name",{value:t,configurable:!0});function s(e,t){for(var n=0;nr[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}a(s,"_mergeNamespaces");!function(e){var t={pairs:"()[]{}''\"\"",closeBefore:")]}'\":;>",triples:"",explode:"[]{}"},n=e.Pos;function r(e,n){return"pairs"==n&&"string"==typeof e?e:"object"==typeof e&&null!=e[n]?e[n]:t[n]}e.defineOption("autoCloseBrackets",!1,(function(t,n,a){a&&a!=e.Init&&(t.removeKeyMap(i),t.state.closeBrackets=null),n&&(s(r(n,"pairs")),t.state.closeBrackets=n,t.addKeyMap(i))})),a(r,"getOption");var i={Backspace:c,Enter:u};function s(e){for(var t=0;t=0;o--){var u=s[o].head;t.replaceRange("",n(u.line,u.ch-1),n(u.line,u.ch+1),"+delete")}}function u(t){var n=l(t),i=n&&r(n,"explode");if(!i||t.getOption("disableInput"))return e.Pass;for(var a=t.listSelections(),s=0;s0?{line:s.head.line,ch:s.head.ch+t}:{line:s.head.line-1};n.push({anchor:o,head:o})}e.setSelections(n,i)}function h(t){var r=e.cmpPos(t.anchor,t.head)>0;return{anchor:new n(t.anchor.line,t.anchor.ch+(r?-1:1)),head:new n(t.head.line,t.head.ch+(r?1:-1))}}function d(t,i){var a=l(t);if(!a||t.getOption("disableInput"))return e.Pass;var s=r(a,"pairs"),o=s.indexOf(i);if(-1==o)return e.Pass;for(var c,u=r(a,"closeBefore"),d=r(a,"triples"),p=s.charAt(o+1)==i,v=t.listSelections(),b=o%2==0,S=0;S1&&d.indexOf(i)>=0&&t.getRange(n(P.line,P.ch-2),P)==i+i){if(P.ch>2&&/\bstring/.test(t.getTokenTypeAt(n(P.line,P.ch-2))))return e.Pass;k="addFour"}else if(p){var A=0==P.ch?" ":t.getRange(n(P.line,P.ch-1),P);if(e.isWordChar(O)||A==i||e.isWordChar(A))return e.Pass;k="both"}else{if(!b||!(0===O.length||/\s/.test(O)||u.indexOf(O)>-1))return e.Pass;k="both"}else k=p&&g(t,P)?"both":d.indexOf(i)>=0&&t.getRange(P,n(P.line,P.ch+3))==i+i+i?"skipThree":"skip";if(c){if(c!=k)return e.Pass}else c=k}var m=o%2?s.charAt(o-1):i,B=o%2?i:s.charAt(o+1);t.operation((function(){if("skip"==c)f(t,1);else if("skipThree"==c)f(t,3);else if("surround"==c){for(var e=t.getSelections(),n=0;n\",\n triples: \"\",\n explode: \"[]{}\"\n };\n\n var Pos = CodeMirror.Pos;\n\n CodeMirror.defineOption(\"autoCloseBrackets\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n cm.removeKeyMap(keyMap);\n cm.state.closeBrackets = null;\n }\n if (val) {\n ensureBound(getOption(val, \"pairs\"))\n cm.state.closeBrackets = val;\n cm.addKeyMap(keyMap);\n }\n });\n\n function getOption(conf, name) {\n if (name == \"pairs\" && typeof conf == \"string\") return conf;\n if (typeof conf == \"object\" && conf[name] != null) return conf[name];\n return defaults[name];\n }\n\n var keyMap = {Backspace: handleBackspace, Enter: handleEnter};\n function ensureBound(chars) {\n for (var i = 0; i < chars.length; i++) {\n var ch = chars.charAt(i), key = \"'\" + ch + \"'\"\n if (!keyMap[key]) keyMap[key] = handler(ch)\n }\n }\n ensureBound(defaults.pairs + \"`\")\n\n function handler(ch) {\n return function(cm) { return handleChar(cm, ch); };\n }\n\n function getConfig(cm) {\n var deflt = cm.state.closeBrackets;\n if (!deflt || deflt.override) return deflt;\n var mode = cm.getModeAt(cm.getCursor());\n return mode.closeBrackets || deflt;\n }\n\n function handleBackspace(cm) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || pairs.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n for (var i = ranges.length - 1; i >= 0; i--) {\n var cur = ranges[i].head;\n cm.replaceRange(\"\", Pos(cur.line, cur.ch - 1), Pos(cur.line, cur.ch + 1), \"+delete\");\n }\n }\n\n function handleEnter(cm) {\n var conf = getConfig(cm);\n var explode = conf && getOption(conf, \"explode\");\n if (!explode || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n if (!ranges[i].empty()) return CodeMirror.Pass;\n var around = charsAround(cm, ranges[i].head);\n if (!around || explode.indexOf(around) % 2 != 0) return CodeMirror.Pass;\n }\n cm.operation(function() {\n var linesep = cm.lineSeparator() || \"\\n\";\n cm.replaceSelection(linesep + linesep, null);\n moveSel(cm, -1)\n ranges = cm.listSelections();\n for (var i = 0; i < ranges.length; i++) {\n var line = ranges[i].head.line;\n cm.indentLine(line, null, true);\n cm.indentLine(line + 1, null, true);\n }\n });\n }\n\n function moveSel(cm, dir) {\n var newRanges = [], ranges = cm.listSelections(), primary = 0\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i]\n if (range.head == cm.getCursor()) primary = i\n var pos = range.head.ch || dir > 0 ? {line: range.head.line, ch: range.head.ch + dir} : {line: range.head.line - 1}\n newRanges.push({anchor: pos, head: pos})\n }\n cm.setSelections(newRanges, primary)\n }\n\n function contractSelection(sel) {\n var inverted = CodeMirror.cmpPos(sel.anchor, sel.head) > 0;\n return {anchor: new Pos(sel.anchor.line, sel.anchor.ch + (inverted ? -1 : 1)),\n head: new Pos(sel.head.line, sel.head.ch + (inverted ? 1 : -1))};\n }\n\n function handleChar(cm, ch) {\n var conf = getConfig(cm);\n if (!conf || cm.getOption(\"disableInput\")) return CodeMirror.Pass;\n\n var pairs = getOption(conf, \"pairs\");\n var pos = pairs.indexOf(ch);\n if (pos == -1) return CodeMirror.Pass;\n\n var closeBefore = getOption(conf,\"closeBefore\");\n\n var triples = getOption(conf, \"triples\");\n\n var identical = pairs.charAt(pos + 1) == ch;\n var ranges = cm.listSelections();\n var opening = pos % 2 == 0;\n\n var type;\n for (var i = 0; i < ranges.length; i++) {\n var range = ranges[i], cur = range.head, curType;\n var next = cm.getRange(cur, Pos(cur.line, cur.ch + 1));\n if (opening && !range.empty()) {\n curType = \"surround\";\n } else if ((identical || !opening) && next == ch) {\n if (identical && stringStartsAfter(cm, cur))\n curType = \"both\";\n else if (triples.indexOf(ch) >= 0 && cm.getRange(cur, Pos(cur.line, cur.ch + 3)) == ch + ch + ch)\n curType = \"skipThree\";\n else\n curType = \"skip\";\n } else if (identical && cur.ch > 1 && triples.indexOf(ch) >= 0 &&\n cm.getRange(Pos(cur.line, cur.ch - 2), cur) == ch + ch) {\n if (cur.ch > 2 && /\\bstring/.test(cm.getTokenTypeAt(Pos(cur.line, cur.ch - 2)))) return CodeMirror.Pass;\n curType = \"addFour\";\n } else if (identical) {\n var prev = cur.ch == 0 ? \" \" : cm.getRange(Pos(cur.line, cur.ch - 1), cur)\n if (!CodeMirror.isWordChar(next) && prev != ch && !CodeMirror.isWordChar(prev)) curType = \"both\";\n else return CodeMirror.Pass;\n } else if (opening && (next.length === 0 || /\\s/.test(next) || closeBefore.indexOf(next) > -1)) {\n curType = \"both\";\n } else {\n return CodeMirror.Pass;\n }\n if (!type) type = curType;\n else if (type != curType) return CodeMirror.Pass;\n }\n\n var left = pos % 2 ? pairs.charAt(pos - 1) : ch;\n var right = pos % 2 ? ch : pairs.charAt(pos + 1);\n cm.operation(function() {\n if (type == \"skip\") {\n moveSel(cm, 1)\n } else if (type == \"skipThree\") {\n moveSel(cm, 3)\n } else if (type == \"surround\") {\n var sels = cm.getSelections();\n for (var i = 0; i < sels.length; i++)\n sels[i] = left + sels[i] + right;\n cm.replaceSelections(sels, \"around\");\n sels = cm.listSelections().slice();\n for (var i = 0; i < sels.length; i++)\n sels[i] = contractSelection(sels[i]);\n cm.setSelections(sels);\n } else if (type == \"both\") {\n cm.replaceSelection(left + right, null);\n cm.triggerElectric(left + right);\n moveSel(cm, -1)\n } else if (type == \"addFour\") {\n cm.replaceSelection(left + left + left + left, \"before\");\n moveSel(cm, 1)\n }\n });\n }\n\n function charsAround(cm, pos) {\n var str = cm.getRange(Pos(pos.line, pos.ch - 1),\n Pos(pos.line, pos.ch + 1));\n return str.length == 2 ? str : null;\n }\n\n function stringStartsAfter(cm, pos) {\n var token = cm.getTokenAt(Pos(pos.line, pos.ch + 1))\n return /\\bstring/.test(token.type) && token.start == pos.ch &&\n (pos.ch == 0 || !/\\bstring/.test(cm.getTokenTypeAt(pos)))\n }\n});\n"],"names":["a","c","pairs","closeBefore","triples","explode","i","Pos","v","e","t","defineOption","n","Init","removeKeyMap","y","state","closeBrackets","_","addKeyMap","f","Backspace","L","Enter","W","length","charAt","s","K","q","B","override","getModeAt","getCursor","getOption","Pass","listSelections","r","empty","h","w","head","indexOf","o","replaceRange","line","ch","operation","lineSeparator","replaceSelection","O","g","A","indentLine","push","anchor","setSelections","$","cmpPos","b","R","j","p","I","l","x","getRange","test","getTokenTypeAt","F","isWordChar","z","k","E","u","getSelections","d","replaceSelections","slice","triggerElectric","getTokenAt","type","start","H"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/601.b1f2c1ee.chunk.js b/serv/web/build/static/js/601.b1f2c1ee.chunk.js deleted file mode 100644 index dd2366e0..00000000 --- a/serv/web/build/static/js/601.b1f2c1ee.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[601,889],{889:function(e,t,r){r.r(t),r.d(t,{C:function(){return i},c:function(){return l}});var n=r(8308);function u(e,t){for(var r=function(){var r=t[n];if("string"!=typeof r&&!Array.isArray(r)){var u=function(t){if("default"!==t&&!(t in e)){var n=Object.getOwnPropertyDescriptor(r,t);n&&Object.defineProperty(e,t,n.get?n:{enumerable:!0,get:function(){return r[t]}})}};for(var a in r)u(a)}},n=0;n {\n const parser = onlineParser({\n eatWhitespace: stream => stream.eatSpace(),\n lexRules: LexRules,\n parseRules: ParseRules,\n editorConfig: { tabSize: config.tabSize },\n });\n return {\n config,\n startState: parser.startState,\n token: parser.token,\n indent,\n electricInput: /^\\s*[}\\]]/,\n fold: 'brace',\n closeBrackets: {\n pairs: '[]{}\"\"',\n explode: '[]{}',\n },\n };\n});\nconst LexRules = {\n Punctuation: /^\\[|]|\\{|\\}|:|,/,\n Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n Keyword: /^true|false|null/,\n};\nconst ParseRules = {\n Document: [p('{'), list('Entry', p(',')), p('}')],\n Entry: [t('String', 'def'), p(':'), 'Value'],\n Value(token) {\n switch (token.kind) {\n case 'Number':\n return 'NumberValue';\n case 'String':\n return 'StringValue';\n case 'Punctuation':\n switch (token.value) {\n case '[':\n return 'ListValue';\n case '{':\n return 'ObjectValue';\n }\n return null;\n case 'Keyword':\n switch (token.value) {\n case 'true':\n case 'false':\n return 'BooleanValue';\n case 'null':\n return 'NullValue';\n }\n return null;\n }\n },\n NumberValue: [t('Number', 'number')],\n StringValue: [t('String', 'string')],\n BooleanValue: [t('Keyword', 'builtin')],\n NullValue: [t('Keyword', 'keyword')],\n ListValue: [p('['), list('Value', p(',')), p(']')],\n ObjectValue: [p('{'), list('ObjectField', p(',')), p('}')],\n ObjectField: [t('String', 'property'), p(':'), 'Value'],\n};\n//# sourceMappingURL=mode.js.map"],"names":["indent","state","textAfter","_a","_b","levels","indentLevel","length","at","this","electricInput","test","config","indentUnit","__name","CodeMirror","parser","onlineParser","eatWhitespace","stream","eatSpace","lexRules","LexRules","parseRules","ParseRules","editorConfig","tabSize","startState","token","fold","closeBrackets","pairs","explode","Punctuation","Number","String","Keyword","Document","p","list","Entry","t","Value","kind","value","NumberValue","StringValue","BooleanValue","NullValue","ListValue","ObjectValue","ObjectField"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/601.e9bfc114.chunk.js b/serv/web/build/static/js/601.e9bfc114.chunk.js new file mode 100644 index 00000000..47df6fb8 --- /dev/null +++ b/serv/web/build/static/js/601.e9bfc114.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[601,889],{889:(e,t,r)=>{r.r(t),r.d(t,{C:()=>l,c:()=>i});var n=r(8308);function u(e,t){for(var r=0;rn[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(u,"name",{value:"_mergeNamespaces",configurable:!0});var a=(0,n.r)();const l=(0,n.g)(a),i=u({__proto__:null,default:l},[a])},5012:(e,t,r)=>{r.d(t,{i:()=>n});function n(e,t){var r,n;const{levels:u,indentLevel:a}=e;return((u&&0!==u.length?u.at(-1)-(null!==(r=this.electricInput)&&void 0!==r&&r.test(t)?1:0):a)||0)*((null===(n=this.config)||void 0===n?void 0:n.indentUnit)||0)}(0,Object.defineProperty)(n,"name",{value:"indent",configurable:!0})},7601:(e,t,r)=>{r.r(t);var n=r(889),u=r(4652),a=r(5012);r(8308);n.C.defineMode("graphql-results",(e=>{const t=(0,u.Xs)({eatWhitespace:e=>e.eatSpace(),lexRules:l,parseRules:i,editorConfig:{tabSize:e.tabSize}});return{config:e,startState:t.startState,token:t.token,indent:a.i,electricInput:/^\s*[}\]]/,fold:"brace",closeBrackets:{pairs:'[]{}""',explode:"[]{}"}}}));const l={Punctuation:/^\[|]|\{|\}|:|,/,Number:/^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,String:/^"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?/,Keyword:/^true|false|null/},i={Document:[(0,u.p)("{"),(0,u.pb)("Entry",(0,u.p)(",")),(0,u.p)("}")],Entry:[(0,u.t)("String","def"),(0,u.p)(":"),"Value"],Value(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue"}return null;case"Keyword":switch(e.value){case"true":case"false":return"BooleanValue";case"null":return"NullValue"}return null}},NumberValue:[(0,u.t)("Number","number")],StringValue:[(0,u.t)("String","string")],BooleanValue:[(0,u.t)("Keyword","builtin")],NullValue:[(0,u.t)("Keyword","keyword")],ListValue:[(0,u.p)("["),(0,u.pb)("Value",(0,u.p)(",")),(0,u.p)("]")],ObjectValue:[(0,u.p)("{"),(0,u.pb)("ObjectField",(0,u.p)(",")),(0,u.p)("}")],ObjectField:[(0,u.t)("String","property"),(0,u.p)(":"),"Value"]}}}]); +//# sourceMappingURL=601.e9bfc114.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/601.e9bfc114.chunk.js.map b/serv/web/build/static/js/601.e9bfc114.chunk.js.map new file mode 100644 index 00000000..35ec9972 --- /dev/null +++ b/serv/web/build/static/js/601.e9bfc114.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/601.e9bfc114.chunk.js","mappings":"2pBAAe,SAASA,EAAOC,EAAOC,GAClC,IAAIC,EAAIC,EACR,MAAQC,OAAAC,EAAQC,YAAAC,GAAgBP,EAIhC,QAHeK,GAA4B,IAAlBA,EAAOG,OAE1BH,EAAOI,IAAI,IAAqC,QAA7BP,EAAKQ,KAAKC,qBAAkC,IAAPT,GAAyBA,EAAGU,KAAKX,GAAc,EAAI,GAD3GM,IAEW,KAA8B,QAAtBJ,EAAKO,KAAKG,cAA2B,IAAPV,OAAgB,EAASA,EAAGW,aAAe,EACtG,E,yBAPwBf,E,cAAA,S,kFCGxBE,EAAAA,EAAWc,WAAW,mBAAmBhB,IACrC,MAAMiB,GAASC,EAAAA,EAAAA,IAAa,CACxBC,cAAeb,GAAUA,EAAOc,WAChCC,SAAUC,EACVC,WAAYC,EACZC,aAAc,CAAEC,QAAS1B,EAAO0B,WAEpC,MAAO,CACHZ,OAAAd,EACA2B,WAAYV,EAAOU,WACnBC,MAAOX,EAAOW,MACdC,OAAAzB,EAAAA,EACAQ,cAAe,YACfkB,KAAM,QACNC,cAAe,CACXC,MAAO,SACPC,QAAS,QAErB,IAEA,MAAMX,EAAW,CACbY,YAAa,kBACbC,OAAQ,4DACRC,OAAQ,0DACRC,QAAS,oBAEPb,EAAa,CACfc,SAAU,EAACrC,EAAAA,EAAAA,GAAE,MAAMsC,EAAAA,EAAAA,IAAK,SAAStC,EAAAA,EAAAA,GAAE,OAAOA,EAAAA,EAAAA,GAAE,MAC5CuC,MAAO,EAACrC,EAAAA,EAAAA,GAAE,SAAU,QAAQF,EAAAA,EAAAA,GAAE,KAAM,SACpCwC,KAAAA,CAAMzC,GACF,OAAQA,EAAM0C,MACV,IAAK,SACD,MAAO,cACX,IAAK,SACD,MAAO,cACX,IAAK,cACD,OAAQ1C,EAAM2C,OACV,IAAK,IACD,MAAO,YACX,IAAK,IACD,MAAO,cAEf,OAAO,KACX,IAAK,UACD,OAAQ3C,EAAM2C,OACV,IAAK,OACL,IAAK,QACD,MAAO,eACX,IAAK,OACD,MAAO,YAEf,OAAO,KAElB,EACDC,YAAa,EAACzC,EAAAA,EAAAA,GAAE,SAAU,WAC1B0C,YAAa,EAAC1C,EAAAA,EAAAA,GAAE,SAAU,WAC1B2C,aAAc,EAAC3C,EAAAA,EAAAA,GAAE,UAAW,YAC5B4C,UAAW,EAAC5C,EAAAA,EAAAA,GAAE,UAAW,YACzB6C,UAAW,EAAC/C,EAAAA,EAAAA,GAAE,MAAMsC,EAAAA,EAAAA,IAAK,SAAStC,EAAAA,EAAAA,GAAE,OAAOA,EAAAA,EAAAA,GAAE,MAC7CgD,YAAa,EAAChD,EAAAA,EAAAA,GAAE,MAAMsC,EAAAA,EAAAA,IAAK,eAAetC,EAAAA,EAAAA,GAAE,OAAOA,EAAAA,EAAAA,GAAE,MACrDiD,YAAa,EAAC/C,EAAAA,EAAAA,GAAE,SAAU,aAAaF,EAAAA,EAAAA,GAAE,KAAM,S","sources":["../node_modules/@graphiql/codemirror-graphql/esm/utils/mode-indent.js","../node_modules/@graphiql/codemirror-graphql/esm/results/mode.js"],"sourcesContent":["export default function indent(state, textAfter) {\n var _a, _b;\n const { levels, indentLevel } = state;\n const level = !levels || levels.length === 0\n ? indentLevel\n : levels.at(-1) - (((_a = this.electricInput) === null || _a === void 0 ? void 0 : _a.test(textAfter)) ? 1 : 0);\n return (level || 0) * (((_b = this.config) === null || _b === void 0 ? void 0 : _b.indentUnit) || 0);\n}\n//# sourceMappingURL=mode-indent.js.map","import CodeMirror from 'codemirror';\nimport { list, t, onlineParser, p } from 'graphql-language-service';\nimport indent from '../utils/mode-indent';\nCodeMirror.defineMode('graphql-results', config => {\n const parser = onlineParser({\n eatWhitespace: stream => stream.eatSpace(),\n lexRules: LexRules,\n parseRules: ParseRules,\n editorConfig: { tabSize: config.tabSize },\n });\n return {\n config,\n startState: parser.startState,\n token: parser.token,\n indent,\n electricInput: /^\\s*[}\\]]/,\n fold: 'brace',\n closeBrackets: {\n pairs: '[]{}\"\"',\n explode: '[]{}',\n },\n };\n});\nconst LexRules = {\n Punctuation: /^\\[|]|\\{|\\}|:|,/,\n Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n Keyword: /^true|false|null/,\n};\nconst ParseRules = {\n Document: [p('{'), list('Entry', p(',')), p('}')],\n Entry: [t('String', 'def'), p(':'), 'Value'],\n Value(token) {\n switch (token.kind) {\n case 'Number':\n return 'NumberValue';\n case 'String':\n return 'StringValue';\n case 'Punctuation':\n switch (token.value) {\n case '[':\n return 'ListValue';\n case '{':\n return 'ObjectValue';\n }\n return null;\n case 'Keyword':\n switch (token.value) {\n case 'true':\n case 'false':\n return 'BooleanValue';\n case 'null':\n return 'NullValue';\n }\n return null;\n }\n },\n NumberValue: [t('Number', 'number')],\n StringValue: [t('String', 'string')],\n BooleanValue: [t('Keyword', 'builtin')],\n NullValue: [t('Keyword', 'keyword')],\n ListValue: [p('['), list('Value', p(',')), p(']')],\n ObjectValue: [p('{'), list('ObjectField', p(',')), p('}')],\n ObjectField: [t('String', 'property'), p(':'), 'Value'],\n};\n//# sourceMappingURL=mode.js.map"],"names":["r","e","n","t","i","levels","l","indentLevel","v","length","at","this","electricInput","test","config","indentUnit","defineMode","u","s","eatWhitespace","eatSpace","lexRules","o","parseRules","c","editorConfig","tabSize","startState","token","indent","fold","closeBrackets","pairs","explode","Punctuation","Number","String","Keyword","Document","a","Entry","Value","kind","value","NumberValue","StringValue","BooleanValue","NullValue","ListValue","ObjectValue","ObjectField"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/621.c920b4e9.chunk.js b/serv/web/build/static/js/621.c920b4e9.chunk.js new file mode 100644 index 00000000..057712fd --- /dev/null +++ b/serv/web/build/static/js/621.c920b4e9.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[621],{8621:(t,e,n)=>{n.r(e),n.d(e,{l:()=>l});var o=n(8308),r=Object.defineProperty,i=(t,e)=>r(t,"name",{value:e,configurable:!0});function a(t,e){for(var n=0;no[e]})}}return Object.freeze(Object.defineProperty(t,Symbol.toStringTag,{value:"Module"}))}i(a,"_mergeNamespaces");!function(t){var e="CodeMirror-lint-markers",n="CodeMirror-lint-line-";function o(e,n,o){var r=document.createElement("div");function a(e){if(!r.parentNode)return t.off(document,"mousemove",a);r.style.top=Math.max(0,e.clientY-r.offsetHeight-5)+"px",r.style.left=e.clientX+5+"px"}return r.className="CodeMirror-lint-tooltip cm-s-"+e.options.theme,r.appendChild(o.cloneNode(!0)),e.state.lint.options.selfContain?e.getWrapperElement().appendChild(r):document.body.appendChild(r),i(a,"position"),t.on(document,"mousemove",a),a(n),null!=r.style.opacity&&(r.style.opacity=1),r}function r(t){t.parentNode&&t.parentNode.removeChild(t)}function a(t){t.parentNode&&(null==t.style.opacity&&r(t),t.style.opacity=0,setTimeout((function(){r(t)}),600))}function s(e,n,r,s){var l=o(e,n,r);function u(){t.off(s,"mouseout",u),l&&(a(l),l=null)}i(u,"hide");var c=setInterval((function(){if(l)for(var t=s;;t=t.parentNode){if(t&&11==t.nodeType&&(t=t.host),t==document.body)return;if(!t){u();break}}if(!l)return clearInterval(c)}),400);t.on(s,"mouseout",u)}function l(t,e,n){for(var o in this.marked=[],e instanceof Function&&(e={getAnnotations:e}),(!e||!0===e)&&(e={}),this.options={},this.linterOptions=e.options||{},u)this.options[o]=u[o];for(var o in e)u.hasOwnProperty(o)?null!=e[o]&&(this.options[o]=e[o]):e.options||(this.linterOptions[o]=e[o]);this.timeout=null,this.hasGutter=n,this.onMouseOver=function(e){k(t,e)},this.waitingFor=0}i(o,"showTooltip"),i(r,"rm"),i(a,"hideTooltip"),i(s,"showTooltipFor"),i(l,"LintState");var u={highlightLines:!1,tooltips:!0,delay:500,lintOnChange:!0,getAnnotations:null,async:!1,selfContain:null,formatAnnotation:null,onUpdateLinting:null};function c(t){var n=t.state.lint;n.hasGutter&&t.clearGutter(e),n.options.highlightLines&&f(t);for(var o=0;o-1)&&u.push(t.message)}));for(var f=null,g=r.hasGutter&&document.createDocumentFragment(),v=0;v1,i.tooltips)),i.highlightLines&&t.addLineClass(s,"wrap",n+f)}}i.onUpdateLinting&&i.onUpdateLinting(o,a,t)}}function y(t){var e=t.state.lint;e&&(clearTimeout(e.timeout),e.timeout=setTimeout((function(){v(t)}),e.options.delay))}function M(t,e,n){for(var o=n.target||n.srcElement,r=document.createDocumentFragment(),i=0;i -1 ? false : message.push(item.message) });\n\n var maxSeverity = null;\n var tipLabel = state.hasGutter && document.createDocumentFragment();\n\n for (var i = 0; i < anns.length; ++i) {\n var ann = anns[i];\n var severity = ann.severity;\n if (!severity) severity = \"error\";\n maxSeverity = getMaxSeverity(maxSeverity, severity);\n\n if (options.formatAnnotation) ann = options.formatAnnotation(ann);\n if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann));\n\n if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, {\n className: \"CodeMirror-lint-mark CodeMirror-lint-mark-\" + severity,\n __annotation: ann\n }));\n }\n // use original annotations[line] to show multiple messages\n if (state.hasGutter)\n cm.setGutterMarker(line, GUTTER_ID, makeMarker(cm, tipLabel, maxSeverity, annotations[line].length > 1,\n options.tooltips));\n\n if (options.highlightLines)\n cm.addLineClass(line, \"wrap\", LINT_LINE_ID + maxSeverity);\n }\n if (options.onUpdateLinting) options.onUpdateLinting(annotationsNotSorted, annotations, cm);\n }\n\n function onChange(cm) {\n var state = cm.state.lint;\n if (!state) return;\n clearTimeout(state.timeout);\n state.timeout = setTimeout(function(){startLinting(cm);}, state.options.delay);\n }\n\n function popupTooltips(cm, annotations, e) {\n var target = e.target || e.srcElement;\n var tooltip = document.createDocumentFragment();\n for (var i = 0; i < annotations.length; i++) {\n var ann = annotations[i];\n tooltip.appendChild(annotationTooltip(ann));\n }\n showTooltipFor(cm, e, tooltip, target);\n }\n\n function onMouseOver(cm, e) {\n var target = e.target || e.srcElement;\n if (!/\\bCodeMirror-lint-mark-/.test(target.className)) return;\n var box = target.getBoundingClientRect(), x = (box.left + box.right) / 2, y = (box.top + box.bottom) / 2;\n var spans = cm.findMarksAt(cm.coordsChar({left: x, top: y}, \"client\"));\n\n var annotations = [];\n for (var i = 0; i < spans.length; ++i) {\n var ann = spans[i].__annotation;\n if (ann) annotations.push(ann);\n }\n if (annotations.length) popupTooltips(cm, annotations, e);\n }\n\n CodeMirror.defineOption(\"lint\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n clearMarks(cm);\n if (cm.state.lint.options.lintOnChange !== false)\n cm.off(\"change\", onChange);\n CodeMirror.off(cm.getWrapperElement(), \"mouseover\", cm.state.lint.onMouseOver);\n clearTimeout(cm.state.lint.timeout);\n delete cm.state.lint;\n }\n\n if (val) {\n var gutters = cm.getOption(\"gutters\"), hasLintGutter = false;\n for (var i = 0; i < gutters.length; ++i) if (gutters[i] == GUTTER_ID) hasLintGutter = true;\n var state = cm.state.lint = new LintState(cm, val, hasLintGutter);\n if (state.options.lintOnChange)\n cm.on(\"change\", onChange);\n if (state.options.tooltips != false && state.options.tooltips != \"gutter\")\n CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n\n startLinting(cm);\n }\n });\n\n CodeMirror.defineExtension(\"performLint\", function() {\n startLinting(this);\n });\n});\n"],"names":["l","u","g","c","t","e","r","n","document","createElement","o","i","parentNode","off","style","top","Math","max","clientY","offsetHeight","left","clientX","className","options","theme","appendChild","cloneNode","state","lint","selfContain","getWrapperElement","body","s","on","opacity","L","removeChild","_","setTimeout","M","a","setInterval","f","nodeType","host","clearInterval","A","this","marked","Function","getAnnotations","linterOptions","C","hasOwnProperty","timeout","hasGutter","onMouseOver","P","waitingFor","highlightLines","tooltips","delay","lintOnChange","async","formatAnnotation","onUpdateLinting","E","clearGutter","F","length","clear","eachLine","wrapClass","exec","removeLineClass","G","I","D","from","line","push","N","severity","messageHTML","innerHTML","createTextNode","message","j","getValue","operation","O","k","getHelper","Pos","then","filter","x","indexOf","p","m","createDocumentFragment","T","d","y","to","markText","__annotation","setGutterMarker","addLineClass","b","clearTimeout","H","target","srcElement","test","getBoundingClientRect","right","bottom","findMarksAt","coordsChar","defineOption","Init","getOption","defineExtension","B"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/621.fab5d04c.chunk.js b/serv/web/build/static/js/621.fab5d04c.chunk.js deleted file mode 100644 index 8a7240b5..00000000 --- a/serv/web/build/static/js/621.fab5d04c.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[621],{8621:function(t,e,n){n.r(e),n.d(e,{l:function(){return s}});var o=n(8308),r=Object.defineProperty,i=function(t,e){return r(t,"name",{value:e,configurable:!0})};function a(t,e){for(var n=function(){var n=e[o];if("string"!=typeof n&&!Array.isArray(n)){var r=function(e){if("default"!==e&&!(e in t)){var o=Object.getOwnPropertyDescriptor(n,e);o&&Object.defineProperty(t,e,o.get?o:{enumerable:!0,get:function(){return n[e]}})}};for(var i in n)r(i)}},o=0;o-1)&&u.push(t.message)}));for(var f=null,g=r.hasGutter&&document.createDocumentFragment(),v=0;v1,i.tooltips)),i.highlightLines&&t.addLineClass(l,"wrap",n+f)}}i.onUpdateLinting&&i.onUpdateLinting(o,a,t)}}function y(t){var e=t.state.lint;e&&(clearTimeout(e.timeout),e.timeout=setTimeout((function(){v(t)}),e.options.delay))}function M(t,e,n){for(var o=n.target||n.srcElement,r=document.createDocumentFragment(),i=0;i -1 ? false : message.push(item.message) });\n\n var maxSeverity = null;\n var tipLabel = state.hasGutter && document.createDocumentFragment();\n\n for (var i = 0; i < anns.length; ++i) {\n var ann = anns[i];\n var severity = ann.severity;\n if (!severity) severity = \"error\";\n maxSeverity = getMaxSeverity(maxSeverity, severity);\n\n if (options.formatAnnotation) ann = options.formatAnnotation(ann);\n if (state.hasGutter) tipLabel.appendChild(annotationTooltip(ann));\n\n if (ann.to) state.marked.push(cm.markText(ann.from, ann.to, {\n className: \"CodeMirror-lint-mark CodeMirror-lint-mark-\" + severity,\n __annotation: ann\n }));\n }\n // use original annotations[line] to show multiple messages\n if (state.hasGutter)\n cm.setGutterMarker(line, GUTTER_ID, makeMarker(cm, tipLabel, maxSeverity, annotations[line].length > 1,\n options.tooltips));\n\n if (options.highlightLines)\n cm.addLineClass(line, \"wrap\", LINT_LINE_ID + maxSeverity);\n }\n if (options.onUpdateLinting) options.onUpdateLinting(annotationsNotSorted, annotations, cm);\n }\n\n function onChange(cm) {\n var state = cm.state.lint;\n if (!state) return;\n clearTimeout(state.timeout);\n state.timeout = setTimeout(function(){startLinting(cm);}, state.options.delay);\n }\n\n function popupTooltips(cm, annotations, e) {\n var target = e.target || e.srcElement;\n var tooltip = document.createDocumentFragment();\n for (var i = 0; i < annotations.length; i++) {\n var ann = annotations[i];\n tooltip.appendChild(annotationTooltip(ann));\n }\n showTooltipFor(cm, e, tooltip, target);\n }\n\n function onMouseOver(cm, e) {\n var target = e.target || e.srcElement;\n if (!/\\bCodeMirror-lint-mark-/.test(target.className)) return;\n var box = target.getBoundingClientRect(), x = (box.left + box.right) / 2, y = (box.top + box.bottom) / 2;\n var spans = cm.findMarksAt(cm.coordsChar({left: x, top: y}, \"client\"));\n\n var annotations = [];\n for (var i = 0; i < spans.length; ++i) {\n var ann = spans[i].__annotation;\n if (ann) annotations.push(ann);\n }\n if (annotations.length) popupTooltips(cm, annotations, e);\n }\n\n CodeMirror.defineOption(\"lint\", false, function(cm, val, old) {\n if (old && old != CodeMirror.Init) {\n clearMarks(cm);\n if (cm.state.lint.options.lintOnChange !== false)\n cm.off(\"change\", onChange);\n CodeMirror.off(cm.getWrapperElement(), \"mouseover\", cm.state.lint.onMouseOver);\n clearTimeout(cm.state.lint.timeout);\n delete cm.state.lint;\n }\n\n if (val) {\n var gutters = cm.getOption(\"gutters\"), hasLintGutter = false;\n for (var i = 0; i < gutters.length; ++i) if (gutters[i] == GUTTER_ID) hasLintGutter = true;\n var state = cm.state.lint = new LintState(cm, val, hasLintGutter);\n if (state.options.lintOnChange)\n cm.on(\"change\", onChange);\n if (state.options.tooltips != false && state.options.tooltips != \"gutter\")\n CodeMirror.on(cm.getWrapperElement(), \"mouseover\", state.onMouseOver);\n\n startLinting(cm);\n }\n });\n\n CodeMirror.defineExtension(\"performLint\", function() {\n startLinting(this);\n });\n});\n"],"names":["CodeMirror","GUTTER_ID","LINT_LINE_ID","showTooltip","cm","e","content","tt","document","createElement","position","parentNode","off","style","top","Math","max","clientY","offsetHeight","left","clientX","className","options","theme","appendChild","cloneNode","state","lint","selfContain","getWrapperElement","body","on","opacity","rm","elt","removeChild","hideTooltip","setTimeout","showTooltipFor","node","tooltip","hide","__name","poll","setInterval","n","nodeType","host","clearInterval","LintState","conf","hasGutter","prop","this","marked","Function","getAnnotations","linterOptions","defaults","hasOwnProperty","timeout","onMouseOver","waitingFor","highlightLines","tooltips","delay","lintOnChange","async","formatAnnotation","onUpdateLinting","clearMarks","clearGutter","clearErrorLines","i","length","clear","eachLine","line","has","wrapClass","exec","removeLineClass","makeMarker","labels","severity","multiple","marker","inner","getMaxSeverity","a","b","groupByLine","annotations","lines","ann","from","push","annotationTooltip","tip","messageHTML","innerHTML","createTextNode","message","lintAsync","id","abort","getValue","arg2","operation","updateLinting","startLinting","getHelper","Pos","then","issues","annotationsNotSorted","anns","filter","item","indexOf","maxSeverity","tipLabel","createDocumentFragment","to","markText","__annotation","setGutterMarker","addLineClass","onChange","clearTimeout","popupTooltips","target","srcElement","test","box","getBoundingClientRect","x","right","y","bottom","spans","findMarksAt","coordsChar","defineOption","val","old","Init","gutters","getOption","hasLintGutter","defineExtension","mod","require$$0"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/635.ae474726.chunk.js b/serv/web/build/static/js/635.ae474726.chunk.js new file mode 100644 index 00000000..1bd6090b --- /dev/null +++ b/serv/web/build/static/js/635.ae474726.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[635],{5635:(e,t,n)=>{n.r(t),n.d(t,{s:()=>c});var r=n(8308),i=n(3300);function o(e,t){for(var n=0;nr[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(o,"name",{value:"_mergeNamespaces",configurable:!0});var l=(0,i.r)();const c=o({__proto__:null,default:(0,r.g)(l)},[l])},3300:(e,t,n)=>{n.d(t,{r:()=>h});var r,i=n(8308),o=Object.defineProperty,l=(e,t)=>o(e,"name",{value:t,configurable:!0}),c={exports:{}};function h(){return r||(r=1,function(e){var t,n,r=e.Pos;function i(e){var t=e.flags;return null!==t&&void 0!==t?t:(e.ignoreCase?"i":"")+(e.global?"g":"")+(e.multiline?"m":"")}function o(e,t){for(var n=i(e),r=n,o=0;oa);f++){var u=e.getLine(s++);i=null==i?u:i+"\n"+u}l*=2,t.lastIndex=n.ch;var g=t.exec(i);if(g){var d=i.slice(0,g.index).split("\n"),p=g[0].split("\n"),v=n.line+d.length-1,m=d[d.length-1].length;return{from:r(v,m),to:r(v+p.length-1,1==p.length?m+p[0].length:p[p.length-1].length),match:g}}}}function a(e,t,n){for(var r,i=0;i<=e.length;){t.lastIndex=i;var o=t.exec(e);if(!o)break;var l=o.index+o[0].length;if(l>e.length-n)break;(!r||l>r.index+r[0].length)&&(r=o),i=o.index+1}return r}function f(e,t,n){t=o(t,"g");for(var i=n.line,l=n.ch,c=e.firstLine();i>=c;i--,l=-1){var h=e.getLine(i),s=a(h,t,l<0?0:h.length-l);if(s)return{from:r(i,s.index),to:r(i,s.index+s[0].length),match:s}}}function u(e,t,n){if(!c(t))return f(e,t,n);t=o(t,"gm");for(var i,l=1,h=e.getLine(n.line).length-n.ch,s=n.line,u=e.firstLine();s>=u;){for(var g=0;g=u;g++){var d=e.getLine(s--);i=null==i?d:d+"\n"+i}l*=2;var p=a(i,t,h);if(p){var v=i.slice(0,p.index).split("\n"),m=p[0].split("\n"),x=s+v.length,L=v[v.length-1].length;return{from:r(x,L),to:r(x+m.length-1,1==m.length?L+m[0].length:m[m.length-1].length),match:p}}}}function g(e,t,n,r){if(e.length==t.length)return n;for(var i=0,o=n+Math.max(0,e.length-t.length);;){if(i==o)return i;var l=i+o>>1,c=r(e.slice(0,l)).length;if(c==n)return l;c>n?o=l:i=l+1}}function d(e,i,o,l){if(!i.length)return null;var c=l?t:n,h=c(i).split(/\r|\n\r?/);e:for(var s=o.line,a=o.ch,f=e.lastLine()+1-h.length;s<=f;s++,a=0){var u=e.getLine(s).slice(a),d=c(u);if(1==h.length){var p=d.indexOf(h[0]);if(-1==p)continue e;return o=g(u,d,p,c)+a,{from:r(s,g(u,d,p,c)+a),to:r(s,g(u,d,p+h[0].length,c)+a)}}var v=d.length-h[0].length;if(d.slice(v)==h[0]){for(var m=1;m=f;s--,a=-1){var u=e.getLine(s);a>-1&&(u=u.slice(0,a));var d=c(u);if(1==h.length){var p=d.lastIndexOf(h[0]);if(-1==p)continue e;return{from:r(s,g(u,d,p,c)),to:r(s,g(u,d,p+h[0].length,c))}}var v=h[h.length-1];if(d.slice(0,v.length)==v){var m=1;for(o=s-h.length+1;m(this.doc.getLine(n.line)||"").length&&(n.ch=0,n.line++)),0!=e.cmpPos(n,this.doc.clipPos(n))))return this.atOccurrence=!1;var i=this.matches(t,n);if(this.afterEmptyMatch=i&&0==e.cmpPos(i.from,i.to),i)return this.pos=i,this.atOccurrence=!0,this.pos.match||!0;var o=r(t?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:o,to:o},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(t,n){if(this.atOccurrence){var i=e.splitLines(t);this.doc.replaceRange(i,this.pos.from,this.pos.to,n),this.pos.to=r(this.pos.from.line+i.length-1,i[i.length-1].length+(1==i.length?this.pos.from.ch:0))}}},e.defineExtension("getSearchCursor",(function(e,t,n){return new v(this.doc,e,t,n)})),e.defineDocExtension("getSearchCursor",(function(e,t,n){return new v(this,e,t,n)})),e.defineExtension("selectMatches",(function(t,n){for(var r=[],i=this.getSearchCursor(t,this.getCursor("from"),n);i.findNext()&&!(e.cmpPos(i.to(),this.getCursor("to"))>0);)r.push({anchor:i.from(),head:i.to()});r.length&&this.setSelections(r,0)}))}((0,i.r)())),c.exports}l(h,"requireSearchcursor")}}]); +//# sourceMappingURL=635.ae474726.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/635.ae474726.chunk.js.map b/serv/web/build/static/js/635.ae474726.chunk.js.map new file mode 100644 index 00000000..fd0c5321 --- /dev/null +++ b/serv/web/build/static/js/635.ae474726.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/635.ae474726.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/search/searchcursor.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.afterEmptyMatch = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n if (this.afterEmptyMatch && this.atOccurrence) {\n // do not return the same 0 width match twice\n head = Pos(head.line, head.ch)\n if (reverse) {\n head.ch--;\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false\n }\n }\n var result = this.matches(reverse, head)\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n"],"names":["m","P","k","s","Pos","B","e","t","flags","ignoreCase","global","multiline","F","n","r","l","length","indexOf","charAt","RegExp","source","R","test","I","line","ch","i","lastLine","lastIndex","h","getLine","f","exec","from","index","to","match","j","p","u","a","slice","split","c","g","v","z","D","firstLine","A","x","L","Math","max","y","O","S","C","lastIndexOf","w","this","atOccurrence","afterEmptyMatch","doc","clipPos","pos","caseFold","matches","o","String","prototype","normalize","toLowerCase","findNext","find","findPrevious","cmpPos","replace","splitLines","replaceRange","defineExtension","defineDocExtension","getSearchCursor","getCursor","push","anchor","head","setSelections","G","N","exports"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/635.af003210.chunk.js b/serv/web/build/static/js/635.af003210.chunk.js deleted file mode 100644 index e8d70c35..00000000 --- a/serv/web/build/static/js/635.af003210.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[635],{5635:function(e,t,n){n.r(t),n.d(t,{s:function(){return l}});var r=n(8308),i=n(3300);function o(e,t){for(var n=function(){var n=t[r];if("string"!=typeof n&&!Array.isArray(n)){var i=function(t){if("default"!==t&&!(t in e)){var r=Object.getOwnPropertyDescriptor(n,t);r&&Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:function(){return n[t]}})}};for(var o in n)i(o)}},r=0;ra);f++){var u=e.getLine(s++);i=null==i?u:i+"\n"+u}c*=2,t.lastIndex=n.ch;var g=t.exec(i);if(g){var d=i.slice(0,g.index).split("\n"),p=g[0].split("\n"),v=n.line+d.length-1,m=d[d.length-1].length;return{from:r(v,m),to:r(v+p.length-1,1==p.length?m+p[0].length:p[p.length-1].length),match:g}}}}function a(e,t,n){for(var r,i=0;i<=e.length;){t.lastIndex=i;var o=t.exec(e);if(!o)break;var c=o.index+o[0].length;if(c>e.length-n)break;(!r||c>r.index+r[0].length)&&(r=o),i=o.index+1}return r}function f(e,t,n){t=o(t,"g");for(var i=n.line,c=n.ch,l=e.firstLine();i>=l;i--,c=-1){var h=e.getLine(i),s=a(h,t,c<0?0:h.length-c);if(s)return{from:r(i,s.index),to:r(i,s.index+s[0].length),match:s}}}function u(e,t,n){if(!l(t))return f(e,t,n);t=o(t,"gm");for(var i,c=1,h=e.getLine(n.line).length-n.ch,s=n.line,u=e.firstLine();s>=u;){for(var g=0;g=u;g++){var d=e.getLine(s--);i=null==i?d:d+"\n"+i}c*=2;var p=a(i,t,h);if(p){var v=i.slice(0,p.index).split("\n"),m=p[0].split("\n"),x=s+v.length,L=v[v.length-1].length;return{from:r(x,L),to:r(x+m.length-1,1==m.length?L+m[0].length:m[m.length-1].length),match:p}}}}function g(e,t,n,r){if(e.length==t.length)return n;for(var i=0,o=n+Math.max(0,e.length-t.length);;){if(i==o)return i;var c=i+o>>1,l=r(e.slice(0,c)).length;if(l==n)return c;l>n?o=c:i=c+1}}function d(e,i,o,c){if(!i.length)return null;var l=c?t:n,h=l(i).split(/\r|\n\r?/);e:for(var s=o.line,a=o.ch,f=e.lastLine()+1-h.length;s<=f;s++,a=0){var u=e.getLine(s).slice(a),d=l(u);if(1==h.length){var p=d.indexOf(h[0]);if(-1==p)continue e;return o=g(u,d,p,l)+a,{from:r(s,g(u,d,p,l)+a),to:r(s,g(u,d,p+h[0].length,l)+a)}}var v=d.length-h[0].length;if(d.slice(v)==h[0]){for(var m=1;m=f;s--,a=-1){var u=e.getLine(s);a>-1&&(u=u.slice(0,a));var d=l(u);if(1==h.length){var p=d.lastIndexOf(h[0]);if(-1==p)continue e;return{from:r(s,g(u,d,p,l)),to:r(s,g(u,d,p+h[0].length,l))}}var v=h[h.length-1];if(d.slice(0,v.length)==v){var m=1;for(o=s-h.length+1;m(this.doc.getLine(n.line)||"").length&&(n.ch=0,n.line++)),0!=e.cmpPos(n,this.doc.clipPos(n))))return this.atOccurrence=!1;var i=this.matches(t,n);if(this.afterEmptyMatch=i&&0==e.cmpPos(i.from,i.to),i)return this.pos=i,this.atOccurrence=!0,this.pos.match||!0;var o=r(t?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:o,to:o},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(t,n){if(this.atOccurrence){var i=e.splitLines(t);this.doc.replaceRange(i,this.pos.from,this.pos.to,n),this.pos.to=r(this.pos.from.line+i.length-1,i[i.length-1].length+(1==i.length?this.pos.from.ch:0))}}},e.defineExtension("getSearchCursor",(function(e,t,n){return new v(this.doc,e,t,n)})),e.defineDocExtension("getSearchCursor",(function(e,t,n){return new v(this,e,t,n)})),e.defineExtension("selectMatches",(function(t,n){for(var r=[],i=this.getSearchCursor(t,this.getCursor("from"),n);i.findNext()&&!(e.cmpPos(i.to(),this.getCursor("to"))>0);)r.push({anchor:i.from(),head:i.to()});r.length&&this.setSelections(r,0)}))}((0,i.r)())),l.exports}c(h,"requireSearchcursor")}}]); -//# sourceMappingURL=635.af003210.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/635.af003210.chunk.js.map b/serv/web/build/static/js/635.af003210.chunk.js.map deleted file mode 100644 index 2dd5f636..00000000 --- a/serv/web/build/static/js/635.af003210.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/635.af003210.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/search/searchcursor.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.afterEmptyMatch = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n if (this.afterEmptyMatch && this.atOccurrence) {\n // do not return the same 0 width match twice\n head = Pos(head.line, head.ch)\n if (reverse) {\n head.ch--;\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false\n }\n }\n var result = this.matches(reverse, head)\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n"],"names":["CodeMirror","doFold","noFold","Pos","regexpFlags","regexp","flags","ignoreCase","global","multiline","ensureFlags","current","target","i","length","indexOf","charAt","RegExp","source","maybeMultiline","test","searchRegexpForward","doc","start","line","ch","last","lastLine","lastIndex","string","getLine","match","exec","from","index","to","searchRegexpForwardMultiline","chunk","curLine","before","slice","split","inside","startLine","startCh","lastMatchIn","endMargin","newMatch","end","searchRegexpBackward","first","firstLine","searchRegexpBackwardMultiline","chunkSize","adjustPos","orig","folded","pos","foldFunc","min","max","Math","mid","len","searchStringForward","query","caseFold","fold","lines","search","found","cutFrom","endString","searchStringBackward","lastIndexOf","top","topString","SearchCursor","options","this","atOccurrence","afterEmptyMatch","clipPos","matches","reverse","__name","String","prototype","normalize","str","toLowerCase","findNext","find","findPrevious","head","cmpPos","result","replace","newText","origin","splitLines","replaceRange","defineExtension","defineDocExtension","ranges","cur","getSearchCursor","getCursor","push","anchor","setSelections","mod","require$$0"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/69.5c9349a9.chunk.js b/serv/web/build/static/js/69.5c9349a9.chunk.js deleted file mode 100644 index 20b89c5b..00000000 --- a/serv/web/build/static/js/69.5c9349a9.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[69],{4497:function(e,n,t){t.d(n,{r:function(){return l}});var r,o=t(8308),i=Object.defineProperty,a=function(e,n){return i(e,"name",{value:n,configurable:!0})},c={exports:{}};function l(){return r||(r=1,function(e){function n(n,t,r){var o,i=n.getWrapperElement();return(o=i.appendChild(document.createElement("div"))).className=r?"CodeMirror-dialog CodeMirror-dialog-bottom":"CodeMirror-dialog CodeMirror-dialog-top","string"==typeof t?o.innerHTML=t:o.appendChild(t),e.addClass(i,"dialog-opened"),o}function t(e,n){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=n}a(n,"dialogDiv"),a(t,"closeNotification"),e.defineExtension("openDialog",(function(r,o,i){i||(i={}),t(this,null);var c=n(this,r,i.bottom),l=!1,s=this;function u(n){if("string"==typeof n)h.value=n;else{if(l)return;l=!0,e.rmClass(c.parentNode,"dialog-opened"),c.parentNode.removeChild(c),s.focus(),i.onClose&&i.onClose(c)}}a(u,"close");var f,h=c.getElementsByTagName("input")[0];return h?(h.focus(),i.value&&(h.value=i.value,!1!==i.selectValueOnOpen&&h.select()),i.onInput&&e.on(h,"input",(function(e){i.onInput(e,h.value,u)})),i.onKeyUp&&e.on(h,"keyup",(function(e){i.onKeyUp(e,h.value,u)})),e.on(h,"keydown",(function(n){i&&i.onKeyDown&&i.onKeyDown(n,h.value,u)||((27==n.keyCode||!1!==i.closeOnEnter&&13==n.keyCode)&&(h.blur(),e.e_stop(n),u()),13==n.keyCode&&o(h.value,n))})),!1!==i.closeOnBlur&&e.on(c,"focusout",(function(e){null!==e.relatedTarget&&u()}))):(f=c.getElementsByTagName("button")[0])&&(e.on(f,"click",(function(){u(),s.focus()})),!1!==i.closeOnBlur&&e.on(f,"blur",u),f.focus()),u})),e.defineExtension("openConfirm",(function(r,o,i){t(this,null);var c=n(this,r,i&&i.bottom),l=c.getElementsByTagName("button"),s=!1,u=this,f=1;function h(){s||(s=!0,e.rmClass(c.parentNode,"dialog-opened"),c.parentNode.removeChild(c),u.focus())}a(h,"close"),l[0].focus();for(var p=0;pn.cursorCoords(t,"window").top&&((f=r).style.opacity=.4)})))}),"searchNext");a(n,v(n),u,p,(function(t,o){var i=e.keyName(t),a=n.getOption("extraKeys"),c=a&&a[i]||e.keyMap[n.getOption("keyMap")][i];"findNext"==c||"findPrev"==c||"findPersistentNext"==c||"findPersistentPrev"==c?(e.e_stop(t),h(n,r(n),o),n.execCommand(c)):("find"==c||"findPersistent"==c)&&(e.e_stop(t),p(o,t))})),i&&u&&(h(n,s,u),g(n,t))}else l(n,v(n),"Search for:",u,(function(e){e&&!s.query&&n.operation((function(){h(n,s,e),s.posFrom=s.posTo=n.getCursor(),g(n,t)}))}))}function g(n,t,o){n.operation((function(){var a=r(n),c=i(n,a.query,t?a.posFrom:a.posTo);!c.find(t)&&!(c=i(n,a.query,t?e.Pos(n.lastLine()):e.Pos(n.firstLine(),0))).find(t)||(n.setSelection(c.from(),c.to()),n.scrollIntoView({from:c.from(),to:c.to()},20),a.posFrom=c.from(),a.posTo=c.to(),o&&o(c.from(),c.to()))}))}function d(e){e.operation((function(){var n=r(e);n.lastQuery=n.query,n.query&&(n.query=n.queryText=null,e.removeOverlay(n.overlay),n.annotate&&(n.annotate.clear(),n.annotate=null))}))}function m(e,n){var t=e?document.createElement(e):document.createDocumentFragment();for(var r in n)t[r]=n[r];for(var o=2;ou);f++){var h=e.getLine(s++);o=null==o?h:o+"\n"+h}a*=2,n.lastIndex=t.ch;var p=n.exec(o);if(p){var g=o.slice(0,p.index).split("\n"),d=p[0].split("\n"),m=t.line+g.length-1,v=g[g.length-1].length;return{from:r(m,v),to:r(m+d.length-1,1==d.length?v+d[0].length:d[d.length-1].length),match:p}}}}function u(e,n,t){for(var r,o=0;o<=e.length;){n.lastIndex=o;var i=n.exec(e);if(!i)break;var a=i.index+i[0].length;if(a>e.length-t)break;(!r||a>r.index+r[0].length)&&(r=i),o=i.index+1}return r}function f(e,n,t){n=i(n,"g");for(var o=t.line,a=t.ch,c=e.firstLine();o>=c;o--,a=-1){var l=e.getLine(o),s=u(l,n,a<0?0:l.length-a);if(s)return{from:r(o,s.index),to:r(o,s.index+s[0].length),match:s}}}function h(e,n,t){if(!c(n))return f(e,n,t);n=i(n,"gm");for(var o,a=1,l=e.getLine(t.line).length-t.ch,s=t.line,h=e.firstLine();s>=h;){for(var p=0;p=h;p++){var g=e.getLine(s--);o=null==o?g:g+"\n"+o}a*=2;var d=u(o,n,l);if(d){var m=o.slice(0,d.index).split("\n"),v=d[0].split("\n"),y=s+m.length,x=m[m.length-1].length;return{from:r(y,x),to:r(y+v.length-1,1==v.length?x+v[0].length:v[v.length-1].length),match:d}}}}function p(e,n,t,r){if(e.length==n.length)return t;for(var o=0,i=t+Math.max(0,e.length-n.length);;){if(o==i)return o;var a=o+i>>1,c=r(e.slice(0,a)).length;if(c==t)return a;c>t?i=a:o=a+1}}function g(e,o,i,a){if(!o.length)return null;var c=a?n:t,l=c(o).split(/\r|\n\r?/);e:for(var s=i.line,u=i.ch,f=e.lastLine()+1-l.length;s<=f;s++,u=0){var h=e.getLine(s).slice(u),g=c(h);if(1==l.length){var d=g.indexOf(l[0]);if(-1==d)continue e;return i=p(h,g,d,c)+u,{from:r(s,p(h,g,d,c)+u),to:r(s,p(h,g,d+l[0].length,c)+u)}}var m=g.length-l[0].length;if(g.slice(m)==l[0]){for(var v=1;v=f;s--,u=-1){var h=e.getLine(s);u>-1&&(h=h.slice(0,u));var g=c(h);if(1==l.length){var d=g.lastIndexOf(l[0]);if(-1==d)continue e;return{from:r(s,p(h,g,d,c)),to:r(s,p(h,g,d+l[0].length,c))}}var m=l[l.length-1];if(g.slice(0,m.length)==m){var v=1;for(i=s-l.length+1;v(this.doc.getLine(t.line)||"").length&&(t.ch=0,t.line++)),0!=e.cmpPos(t,this.doc.clipPos(t))))return this.atOccurrence=!1;var o=this.matches(n,t);if(this.afterEmptyMatch=o&&0==e.cmpPos(o.from,o.to),o)return this.pos=o,this.atOccurrence=!0,this.pos.match||!0;var i=r(n?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:i,to:i},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(n,t){if(this.atOccurrence){var o=e.splitLines(n);this.doc.replaceRange(o,this.pos.from,this.pos.to,t),this.pos.to=r(this.pos.from.line+o.length-1,o[o.length-1].length+(1==o.length?this.pos.from.ch:0))}}},e.defineExtension("getSearchCursor",(function(e,n,t){return new m(this.doc,e,n,t)})),e.defineDocExtension("getSearchCursor",(function(e,n,t){return new m(this,e,n,t)})),e.defineExtension("selectMatches",(function(n,t){for(var r=[],o=this.getSearchCursor(n,this.getCursor("from"),t);o.findNext()&&!(e.cmpPos(o.to(),this.getCursor("to"))>0);)r.push({anchor:o.from(),head:o.to()});r.length&&this.setSelections(r,0)}))}((0,o.r)())),c.exports}a(l,"requireSearchcursor")}}]); -//# sourceMappingURL=69.5c9349a9.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/69.5c9349a9.chunk.js.map b/serv/web/build/static/js/69.5c9349a9.chunk.js.map deleted file mode 100644 index ebb62490..00000000 --- a/serv/web/build/static/js/69.5c9349a9.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/69.5c9349a9.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/dialog/dialog.js","../node_modules/node_modules/codemirror/addon/search/search.js","../node_modules/node_modules/codemirror/addon/search/searchcursor.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n function dialogDiv(cm, template, bottom) {\n var wrap = cm.getWrapperElement();\n var dialog;\n dialog = wrap.appendChild(document.createElement(\"div\"));\n if (bottom)\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n else\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n if (typeof template == \"string\") {\n dialog.innerHTML = template;\n } else { // Assuming it's a detached DOM element.\n dialog.appendChild(template);\n }\n CodeMirror.addClass(wrap, 'dialog-opened');\n return dialog;\n }\n\n function closeNotification(cm, newVal) {\n if (cm.state.currentNotificationClose)\n cm.state.currentNotificationClose();\n cm.state.currentNotificationClose = newVal;\n }\n\n CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n if (!options) options = {};\n\n closeNotification(this, null);\n\n var dialog = dialogDiv(this, template, options.bottom);\n var closed = false, me = this;\n function close(newVal) {\n if (typeof newVal == 'string') {\n inp.value = newVal;\n } else {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n\n if (options.onClose) options.onClose(dialog);\n }\n }\n\n var inp = dialog.getElementsByTagName(\"input\")[0], button;\n if (inp) {\n inp.focus();\n\n if (options.value) {\n inp.value = options.value;\n if (options.selectValueOnOpen !== false) {\n inp.select();\n }\n }\n\n if (options.onInput)\n CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n if (options.onKeyUp)\n CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n CodeMirror.on(inp, \"keydown\", function(e) {\n if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n inp.blur();\n CodeMirror.e_stop(e);\n close();\n }\n if (e.keyCode == 13) callback(inp.value, e);\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(dialog, \"focusout\", function (evt) {\n if (evt.relatedTarget !== null) close();\n });\n } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n CodeMirror.on(button, \"click\", function() {\n close();\n me.focus();\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n button.focus();\n }\n return close;\n });\n\n CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n closeNotification(this, null);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var buttons = dialog.getElementsByTagName(\"button\");\n var closed = false, me = this, blurring = 1;\n function close() {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n }\n buttons[0].focus();\n for (var i = 0; i < buttons.length; ++i) {\n var b = buttons[i];\n (function(callback) {\n CodeMirror.on(b, \"click\", function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n if (callback) callback(me);\n });\n })(callbacks[i]);\n CodeMirror.on(b, \"blur\", function() {\n --blurring;\n setTimeout(function() { if (blurring <= 0) close(); }, 200);\n });\n CodeMirror.on(b, \"focus\", function() { ++blurring; });\n }\n });\n\n /*\n * openNotification\n * Opens a notification, that can be closed with an optional timer\n * (default 5000ms timer) and always closes on click.\n *\n * If a notification is opened while another is opened, it will close the\n * currently opened one and open the new one immediately.\n */\n CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n closeNotification(this, close);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var closed = false, doneTimer;\n var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n function close() {\n if (closed) return;\n closed = true;\n clearTimeout(doneTimer);\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n }\n\n CodeMirror.on(dialog, 'click', function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n });\n\n if (duration)\n doneTimer = setTimeout(close, duration);\n\n return close;\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Define search commands. Depends on dialog.js or another\n// implementation of the openDialog method.\n\n// Replace works a little oddly -- it will do the replace on the next\n// Ctrl-G (or whatever is bound to findNext) press. You prevent a\n// replace by making sure the match is no longer selected when hitting\n// Ctrl-G.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../dialog/dialog\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./searchcursor\", \"../dialog/dialog\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n // default search panel location\n CodeMirror.defineOption(\"search\", {bottom: false});\n\n function searchOverlay(query, caseInsensitive) {\n if (typeof query == \"string\")\n query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n else if (!query.global)\n query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n\n return {token: function(stream) {\n query.lastIndex = stream.pos;\n var match = query.exec(stream.string);\n if (match && match.index == stream.pos) {\n stream.pos += match[0].length || 1;\n return \"searching\";\n } else if (match) {\n stream.pos = match.index;\n } else {\n stream.skipToEnd();\n }\n }};\n }\n\n function SearchState() {\n this.posFrom = this.posTo = this.lastQuery = this.query = null;\n this.overlay = null;\n }\n\n function getSearchState(cm) {\n return cm.state.search || (cm.state.search = new SearchState());\n }\n\n function queryCaseInsensitive(query) {\n return typeof query == \"string\" && query == query.toLowerCase();\n }\n\n function getSearchCursor(cm, query, pos) {\n // Heuristic: if the query string is all lowercase, do a case insensitive search.\n return cm.getSearchCursor(query, pos, {caseFold: queryCaseInsensitive(query), multiline: true});\n }\n\n function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n cm.openDialog(text, onEnter, {\n value: deflt,\n selectValueOnOpen: true,\n closeOnEnter: false,\n onClose: function() { clearSearch(cm); },\n onKeyDown: onKeyDown,\n bottom: cm.options.search.bottom\n });\n }\n\n function dialog(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true, bottom: cm.options.search.bottom});\n else f(prompt(shortText, deflt));\n }\n\n function confirmDialog(cm, text, shortText, fs) {\n if (cm.openConfirm) cm.openConfirm(text, fs);\n else if (confirm(shortText)) fs[0]();\n }\n\n function parseString(string) {\n return string.replace(/\\\\([nrt\\\\])/g, function(match, ch) {\n if (ch == \"n\") return \"\\n\"\n if (ch == \"r\") return \"\\r\"\n if (ch == \"t\") return \"\\t\"\n if (ch == \"\\\\\") return \"\\\\\"\n return match\n })\n }\n\n function parseQuery(query) {\n var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n if (isRE) {\n try { query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\"); }\n catch(e) {} // Not a regular expression after all, do a string search\n } else {\n query = parseString(query)\n }\n if (typeof query == \"string\" ? query == \"\" : query.test(\"\"))\n query = /x^/;\n return query;\n }\n\n function startSearch(cm, state, query) {\n state.queryText = query;\n state.query = parseQuery(query);\n cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n cm.addOverlay(state.overlay);\n if (cm.showMatchesOnScrollbar) {\n if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n }\n }\n\n function doSearch(cm, rev, persistent, immediate) {\n var state = getSearchState(cm);\n if (state.query) return findNext(cm, rev);\n var q = cm.getSelection() || state.lastQuery;\n if (q instanceof RegExp && q.source == \"x^\") q = null\n if (persistent && cm.openDialog) {\n var hiding = null\n var searchNext = function(query, event) {\n CodeMirror.e_stop(event);\n if (!query) return;\n if (query != state.queryText) {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n }\n if (hiding) hiding.style.opacity = 1\n findNext(cm, event.shiftKey, function(_, to) {\n var dialog\n if (to.line < 3 && document.querySelector &&\n (dialog = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) &&\n dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top)\n (hiding = dialog).style.opacity = .4\n })\n };\n persistentDialog(cm, getQueryDialog(cm), q, searchNext, function(event, query) {\n var keyName = CodeMirror.keyName(event)\n var extra = cm.getOption('extraKeys'), cmd = (extra && extra[keyName]) || CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName]\n if (cmd == \"findNext\" || cmd == \"findPrev\" ||\n cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n CodeMirror.e_stop(event);\n startSearch(cm, getSearchState(cm), query);\n cm.execCommand(cmd);\n } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n CodeMirror.e_stop(event);\n searchNext(query, event);\n }\n });\n if (immediate && q) {\n startSearch(cm, state, q);\n findNext(cm, rev);\n }\n } else {\n dialog(cm, getQueryDialog(cm), \"Search for:\", q, function(query) {\n if (query && !state.query) cm.operation(function() {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n findNext(cm, rev);\n });\n });\n }\n }\n\n function findNext(cm, rev, callback) {cm.operation(function() {\n var state = getSearchState(cm);\n var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n if (!cursor.find(rev)) {\n cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n if (!cursor.find(rev)) return;\n }\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20);\n state.posFrom = cursor.from(); state.posTo = cursor.to();\n if (callback) callback(cursor.from(), cursor.to())\n });}\n\n function clearSearch(cm) {cm.operation(function() {\n var state = getSearchState(cm);\n state.lastQuery = state.query;\n if (!state.query) return;\n state.query = state.queryText = null;\n cm.removeOverlay(state.overlay);\n if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n });}\n\n function el(tag, attrs) {\n var element = tag ? document.createElement(tag) : document.createDocumentFragment();\n for (var key in attrs) {\n element[key] = attrs[key];\n }\n for (var i = 2; i < arguments.length; i++) {\n var child = arguments[i]\n element.appendChild(typeof child == \"string\" ? document.createTextNode(child) : child);\n }\n return element;\n }\n\n function getQueryDialog(cm) {\n return el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, cm.phrase(\"Search:\")), \" \",\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\"}), \" \",\n el(\"span\", {style: \"color: #888\", className: \"CodeMirror-search-hint\"},\n cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n }\n function getReplaceQueryDialog(cm) {\n return el(\"\", null, \" \",\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\"}), \" \",\n el(\"span\", {style: \"color: #888\", className: \"CodeMirror-search-hint\"},\n cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n }\n function getReplacementQueryDialog(cm) {\n return el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, cm.phrase(\"With:\")), \" \",\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\"}));\n }\n function getDoReplaceConfirm(cm) {\n return el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, cm.phrase(\"Replace?\")), \" \",\n el(\"button\", {}, cm.phrase(\"Yes\")), \" \",\n el(\"button\", {}, cm.phrase(\"No\")), \" \",\n el(\"button\", {}, cm.phrase(\"All\")), \" \",\n el(\"button\", {}, cm.phrase(\"Stop\")));\n }\n\n function replaceAll(cm, query, text) {\n cm.operation(function() {\n for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n if (typeof query != \"string\") {\n var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n } else cursor.replace(text);\n }\n });\n }\n\n function replace(cm, all) {\n if (cm.getOption(\"readOnly\")) return;\n var query = cm.getSelection() || getSearchState(cm).lastQuery;\n var dialogText = all ? cm.phrase(\"Replace all:\") : cm.phrase(\"Replace:\")\n var fragment = el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, dialogText),\n getReplaceQueryDialog(cm))\n dialog(cm, fragment, dialogText, query, function(query) {\n if (!query) return;\n query = parseQuery(query);\n dialog(cm, getReplacementQueryDialog(cm), cm.phrase(\"Replace with:\"), \"\", function(text) {\n text = parseString(text)\n if (all) {\n replaceAll(cm, query, text)\n } else {\n clearSearch(cm);\n var cursor = getSearchCursor(cm, query, cm.getCursor(\"from\"));\n var advance = function() {\n var start = cursor.from(), match;\n if (!(match = cursor.findNext())) {\n cursor = getSearchCursor(cm, query);\n if (!(match = cursor.findNext()) ||\n (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return;\n }\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({from: cursor.from(), to: cursor.to()});\n confirmDialog(cm, getDoReplaceConfirm(cm), cm.phrase(\"Replace?\"),\n [function() {doReplace(match);}, advance,\n function() {replaceAll(cm, query, text)}]);\n };\n var doReplace = function(match) {\n cursor.replace(typeof query == \"string\" ? text :\n text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n advance();\n };\n advance();\n }\n });\n });\n }\n\n CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};\n CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);};\n CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm, false, true, true);};\n CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true, true, true);};\n CodeMirror.commands.findNext = doSearch;\n CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};\n CodeMirror.commands.clearSearch = clearSearch;\n CodeMirror.commands.replace = replace;\n CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.afterEmptyMatch = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n if (this.afterEmptyMatch && this.atOccurrence) {\n // do not return the same 0 width match twice\n head = Pos(head.line, head.ch)\n if (reverse) {\n head.ch--;\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false\n }\n }\n var result = this.matches(reverse, head)\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n"],"names":["CodeMirror","dialogDiv","cm","template","bottom","dialog","wrap","getWrapperElement","appendChild","document","createElement","className","innerHTML","addClass","closeNotification","newVal","state","currentNotificationClose","__name","defineExtension","callback","options","this","closed","me","close","inp","value","rmClass","parentNode","removeChild","focus","onClose","button","getElementsByTagName","selectValueOnOpen","select","onInput","on","e","onKeyUp","onKeyDown","keyCode","closeOnEnter","blur","e_stop","closeOnBlur","evt","relatedTarget","callbacks","buttons","blurring","i","length","b","e_preventDefault","setTimeout","doneTimer","duration","clearTimeout","mod","require$$0","searchOverlay","query","caseInsensitive","RegExp","replace","global","source","ignoreCase","token","stream","lastIndex","pos","match","exec","string","index","skipToEnd","SearchState","posFrom","posTo","lastQuery","overlay","getSearchState","search","queryCaseInsensitive","toLowerCase","getSearchCursor","caseFold","multiline","persistentDialog","text","deflt","onEnter","openDialog","clearSearch","shortText","f","prompt","confirmDialog","fs","openConfirm","confirm","parseString","ch","parseQuery","isRE","indexOf","test","startSearch","queryText","removeOverlay","addOverlay","showMatchesOnScrollbar","annotate","clear","doSearch","rev","persistent","immediate","findNext","q","getSelection","hiding","searchNext","event","getCursor","style","opacity","shiftKey","_","to","line","querySelector","display","wrapper","getBoundingClientRect","cursorCoords","top","getQueryDialog","keyName","extra","getOption","cmd","keyMap","execCommand","operation","cursor","find","Pos","lastLine","firstLine","setSelection","from","scrollIntoView","el","tag","attrs","element","createDocumentFragment","key","arguments","child","createTextNode","phrase","type","getReplaceQueryDialog","getReplacementQueryDialog","getDoReplaceConfirm","replaceAll","getRange","all","dialogText","fragment","advance","start","doReplace","defineOption","commands","findPersistent","findPersistentNext","findPersistentPrev","findPrev","require$$1","require$$2","doFold","noFold","regexpFlags","regexp","flags","ensureFlags","current","target","charAt","maybeMultiline","searchRegexpForward","doc","last","getLine","searchRegexpForwardMultiline","chunk","curLine","before","slice","split","inside","startLine","startCh","lastMatchIn","endMargin","newMatch","end","searchRegexpBackward","first","searchRegexpBackwardMultiline","chunkSize","adjustPos","orig","folded","foldFunc","min","max","Math","mid","len","searchStringForward","fold","lines","found","cutFrom","endString","searchStringBackward","lastIndexOf","topString","SearchCursor","atOccurrence","afterEmptyMatch","clipPos","matches","reverse","String","prototype","normalize","str","findPrevious","head","cmpPos","result","newText","origin","splitLines","replaceRange","defineDocExtension","ranges","cur","push","anchor","setSelections"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/69.6a9a23ed.chunk.js b/serv/web/build/static/js/69.6a9a23ed.chunk.js new file mode 100644 index 00000000..4aa14867 --- /dev/null +++ b/serv/web/build/static/js/69.6a9a23ed.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[69],{4497:(e,t,n)=>{n.d(t,{r:()=>s});var r,o=n(8308),i=Object.defineProperty,a=(e,t)=>i(e,"name",{value:t,configurable:!0}),l={exports:{}};function s(){return r||(r=1,function(e){function t(t,n,r){var o,i=t.getWrapperElement();return(o=i.appendChild(document.createElement("div"))).className=r?"CodeMirror-dialog CodeMirror-dialog-bottom":"CodeMirror-dialog CodeMirror-dialog-top","string"==typeof n?o.innerHTML=n:o.appendChild(n),e.addClass(i,"dialog-opened"),o}function n(e,t){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=t}a(t,"dialogDiv"),a(n,"closeNotification"),e.defineExtension("openDialog",(function(r,o,i){i||(i={}),n(this,null);var l=t(this,r,i.bottom),s=!1,c=this;function u(t){if("string"==typeof t)h.value=t;else{if(s)return;s=!0,e.rmClass(l.parentNode,"dialog-opened"),l.parentNode.removeChild(l),c.focus(),i.onClose&&i.onClose(l)}}a(u,"close");var f,h=l.getElementsByTagName("input")[0];return h?(h.focus(),i.value&&(h.value=i.value,!1!==i.selectValueOnOpen&&h.select()),i.onInput&&e.on(h,"input",(function(e){i.onInput(e,h.value,u)})),i.onKeyUp&&e.on(h,"keyup",(function(e){i.onKeyUp(e,h.value,u)})),e.on(h,"keydown",(function(t){i&&i.onKeyDown&&i.onKeyDown(t,h.value,u)||((27==t.keyCode||!1!==i.closeOnEnter&&13==t.keyCode)&&(h.blur(),e.e_stop(t),u()),13==t.keyCode&&o(h.value,t))})),!1!==i.closeOnBlur&&e.on(l,"focusout",(function(e){null!==e.relatedTarget&&u()}))):(f=l.getElementsByTagName("button")[0])&&(e.on(f,"click",(function(){u(),c.focus()})),!1!==i.closeOnBlur&&e.on(f,"blur",u),f.focus()),u})),e.defineExtension("openConfirm",(function(r,o,i){n(this,null);var l=t(this,r,i&&i.bottom),s=l.getElementsByTagName("button"),c=!1,u=this,f=1;function h(){c||(c=!0,e.rmClass(l.parentNode,"dialog-opened"),l.parentNode.removeChild(l),u.focus())}a(h,"close"),s[0].focus();for(var p=0;p{n.r(t),n.d(t,{s:()=>u});var r=n(8308),o=n(3300),i=n(4497),a=Object.defineProperty,l=(e,t)=>a(e,"name",{value:t,configurable:!0});function s(e,t){for(var n=0;nr[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}l(s,"_mergeNamespaces");!function(e){function t(e,t){return"string"==typeof e?e=new RegExp(e.replace(/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g,"\\$&"),t?"gi":"g"):e.global||(e=new RegExp(e.source,e.ignoreCase?"gi":"g")),{token:function(t){e.lastIndex=t.pos;var n=e.exec(t.string);if(n&&n.index==t.pos)return t.pos+=n[0].length||1,"searching";n?t.pos=n.index:t.skipToEnd()}}}function n(){this.posFrom=this.posTo=this.lastQuery=this.query=null,this.overlay=null}function r(e){return e.state.search||(e.state.search=new n)}function o(e){return"string"==typeof e&&e==e.toLowerCase()}function i(e,t,n){return e.getSearchCursor(t,n,{caseFold:o(t),multiline:!0})}function a(e,t,n,r,o){e.openDialog(t,r,{value:n,selectValueOnOpen:!0,closeOnEnter:!1,onClose:function(){d(e)},onKeyDown:o,bottom:e.options.search.bottom})}function s(e,t,n,r,o){e.openDialog?e.openDialog(t,o,{value:r,selectValueOnOpen:!0,bottom:e.options.search.bottom}):o(prompt(n,r))}function c(e,t,n,r){e.openConfirm?e.openConfirm(t,r):confirm(n)&&r[0]()}function u(e){return e.replace(/\\([nrt\\])/g,(function(e,t){return"n"==t?"\n":"r"==t?"\r":"t"==t?"\t":"\\"==t?"\\":e}))}function f(e){var t=e.match(/^\/(.*)\/([a-z]*)$/);if(t)try{e=new RegExp(t[1],-1==t[2].indexOf("i")?"":"i")}catch{}else e=u(e);return("string"==typeof e?""==e:e.test(""))&&(e=/x^/),e}function h(e,n,r){n.queryText=r,n.query=f(r),e.removeOverlay(n.overlay,o(n.query)),n.overlay=t(n.query,o(n.query)),e.addOverlay(n.overlay),e.showMatchesOnScrollbar&&(n.annotate&&(n.annotate.clear(),n.annotate=null),n.annotate=e.showMatchesOnScrollbar(n.query,o(n.query)))}function p(t,n,o,i){var c=r(t);if(c.query)return g(t,n);var u=t.getSelection()||c.lastQuery;if(u instanceof RegExp&&"x^"==u.source&&(u=null),o&&t.openDialog){var f=null,p=l((function(n,r){e.e_stop(r),n&&(n!=c.queryText&&(h(t,c,n),c.posFrom=c.posTo=t.getCursor()),f&&(f.style.opacity=1),g(t,r.shiftKey,(function(e,n){var r;n.line<3&&document.querySelector&&(r=t.display.wrapper.querySelector(".CodeMirror-dialog"))&&r.getBoundingClientRect().bottom-4>t.cursorCoords(n,"window").top&&((f=r).style.opacity=.4)})))}),"searchNext");a(t,v(t),u,p,(function(n,o){var i=e.keyName(n),a=t.getOption("extraKeys"),l=a&&a[i]||e.keyMap[t.getOption("keyMap")][i];"findNext"==l||"findPrev"==l||"findPersistentNext"==l||"findPersistentPrev"==l?(e.e_stop(n),h(t,r(t),o),t.execCommand(l)):("find"==l||"findPersistent"==l)&&(e.e_stop(n),p(o,n))})),i&&u&&(h(t,c,u),g(t,n))}else s(t,v(t),"Search for:",u,(function(e){e&&!c.query&&t.operation((function(){h(t,c,e),c.posFrom=c.posTo=t.getCursor(),g(t,n)}))}))}function g(t,n,o){t.operation((function(){var a=r(t),l=i(t,a.query,n?a.posFrom:a.posTo);!l.find(n)&&!(l=i(t,a.query,n?e.Pos(t.lastLine()):e.Pos(t.firstLine(),0))).find(n)||(t.setSelection(l.from(),l.to()),t.scrollIntoView({from:l.from(),to:l.to()},20),a.posFrom=l.from(),a.posTo=l.to(),o&&o(l.from(),l.to()))}))}function d(e){e.operation((function(){var t=r(e);t.lastQuery=t.query,t.query&&(t.query=t.queryText=null,e.removeOverlay(t.overlay),t.annotate&&(t.annotate.clear(),t.annotate=null))}))}function m(e,t){var n=e?document.createElement(e):document.createDocumentFragment();for(var r in t)n[r]=t[r];for(var o=2;o{n.d(t,{r:()=>s});var r,o=n(8308),i=Object.defineProperty,a=(e,t)=>i(e,"name",{value:t,configurable:!0}),l={exports:{}};function s(){return r||(r=1,function(e){var t,n,r=e.Pos;function o(e){var t=e.flags;return null!==t&&void 0!==t?t:(e.ignoreCase?"i":"")+(e.global?"g":"")+(e.multiline?"m":"")}function i(e,t){for(var n=o(e),r=n,i=0;iu);f++){var h=e.getLine(c++);o=null==o?h:o+"\n"+h}a*=2,t.lastIndex=n.ch;var p=t.exec(o);if(p){var g=o.slice(0,p.index).split("\n"),d=p[0].split("\n"),m=n.line+g.length-1,v=g[g.length-1].length;return{from:r(m,v),to:r(m+d.length-1,1==d.length?v+d[0].length:d[d.length-1].length),match:p}}}}function u(e,t,n){for(var r,o=0;o<=e.length;){t.lastIndex=o;var i=t.exec(e);if(!i)break;var a=i.index+i[0].length;if(a>e.length-n)break;(!r||a>r.index+r[0].length)&&(r=i),o=i.index+1}return r}function f(e,t,n){t=i(t,"g");for(var o=n.line,a=n.ch,l=e.firstLine();o>=l;o--,a=-1){var s=e.getLine(o),c=u(s,t,a<0?0:s.length-a);if(c)return{from:r(o,c.index),to:r(o,c.index+c[0].length),match:c}}}function h(e,t,n){if(!l(t))return f(e,t,n);t=i(t,"gm");for(var o,a=1,s=e.getLine(n.line).length-n.ch,c=n.line,h=e.firstLine();c>=h;){for(var p=0;p=h;p++){var g=e.getLine(c--);o=null==o?g:g+"\n"+o}a*=2;var d=u(o,t,s);if(d){var m=o.slice(0,d.index).split("\n"),v=d[0].split("\n"),y=c+m.length,x=m[m.length-1].length;return{from:r(y,x),to:r(y+v.length-1,1==v.length?x+v[0].length:v[v.length-1].length),match:d}}}}function p(e,t,n,r){if(e.length==t.length)return n;for(var o=0,i=n+Math.max(0,e.length-t.length);;){if(o==i)return o;var a=o+i>>1,l=r(e.slice(0,a)).length;if(l==n)return a;l>n?i=a:o=a+1}}function g(e,o,i,a){if(!o.length)return null;var l=a?t:n,s=l(o).split(/\r|\n\r?/);e:for(var c=i.line,u=i.ch,f=e.lastLine()+1-s.length;c<=f;c++,u=0){var h=e.getLine(c).slice(u),g=l(h);if(1==s.length){var d=g.indexOf(s[0]);if(-1==d)continue e;return i=p(h,g,d,l)+u,{from:r(c,p(h,g,d,l)+u),to:r(c,p(h,g,d+s[0].length,l)+u)}}var m=g.length-s[0].length;if(g.slice(m)==s[0]){for(var v=1;v=f;c--,u=-1){var h=e.getLine(c);u>-1&&(h=h.slice(0,u));var g=l(h);if(1==s.length){var d=g.lastIndexOf(s[0]);if(-1==d)continue e;return{from:r(c,p(h,g,d,l)),to:r(c,p(h,g,d+s[0].length,l))}}var m=s[s.length-1];if(g.slice(0,m.length)==m){var v=1;for(i=c-s.length+1;v(this.doc.getLine(n.line)||"").length&&(n.ch=0,n.line++)),0!=e.cmpPos(n,this.doc.clipPos(n))))return this.atOccurrence=!1;var o=this.matches(t,n);if(this.afterEmptyMatch=o&&0==e.cmpPos(o.from,o.to),o)return this.pos=o,this.atOccurrence=!0,this.pos.match||!0;var i=r(t?this.doc.firstLine():this.doc.lastLine()+1,0);return this.pos={from:i,to:i},this.atOccurrence=!1},from:function(){if(this.atOccurrence)return this.pos.from},to:function(){if(this.atOccurrence)return this.pos.to},replace:function(t,n){if(this.atOccurrence){var o=e.splitLines(t);this.doc.replaceRange(o,this.pos.from,this.pos.to,n),this.pos.to=r(this.pos.from.line+o.length-1,o[o.length-1].length+(1==o.length?this.pos.from.ch:0))}}},e.defineExtension("getSearchCursor",(function(e,t,n){return new m(this.doc,e,t,n)})),e.defineDocExtension("getSearchCursor",(function(e,t,n){return new m(this,e,t,n)})),e.defineExtension("selectMatches",(function(t,n){for(var r=[],o=this.getSearchCursor(t,this.getCursor("from"),n);o.findNext()&&!(e.cmpPos(o.to(),this.getCursor("to"))>0);)r.push({anchor:o.from(),head:o.to()});r.length&&this.setSelections(r,0)}))}((0,o.r)())),l.exports}a(s,"requireSearchcursor")}}]); +//# sourceMappingURL=69.6a9a23ed.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/69.6a9a23ed.chunk.js.map b/serv/web/build/static/js/69.6a9a23ed.chunk.js.map new file mode 100644 index 00000000..ea3a86bc --- /dev/null +++ b/serv/web/build/static/js/69.6a9a23ed.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/69.6a9a23ed.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/dialog/dialog.js","../node_modules/node_modules/codemirror/addon/search/search.js","../node_modules/node_modules/codemirror/addon/search/searchcursor.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Open simple dialogs on top of an editor. Relies on dialog.css.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n function dialogDiv(cm, template, bottom) {\n var wrap = cm.getWrapperElement();\n var dialog;\n dialog = wrap.appendChild(document.createElement(\"div\"));\n if (bottom)\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-bottom\";\n else\n dialog.className = \"CodeMirror-dialog CodeMirror-dialog-top\";\n\n if (typeof template == \"string\") {\n dialog.innerHTML = template;\n } else { // Assuming it's a detached DOM element.\n dialog.appendChild(template);\n }\n CodeMirror.addClass(wrap, 'dialog-opened');\n return dialog;\n }\n\n function closeNotification(cm, newVal) {\n if (cm.state.currentNotificationClose)\n cm.state.currentNotificationClose();\n cm.state.currentNotificationClose = newVal;\n }\n\n CodeMirror.defineExtension(\"openDialog\", function(template, callback, options) {\n if (!options) options = {};\n\n closeNotification(this, null);\n\n var dialog = dialogDiv(this, template, options.bottom);\n var closed = false, me = this;\n function close(newVal) {\n if (typeof newVal == 'string') {\n inp.value = newVal;\n } else {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n\n if (options.onClose) options.onClose(dialog);\n }\n }\n\n var inp = dialog.getElementsByTagName(\"input\")[0], button;\n if (inp) {\n inp.focus();\n\n if (options.value) {\n inp.value = options.value;\n if (options.selectValueOnOpen !== false) {\n inp.select();\n }\n }\n\n if (options.onInput)\n CodeMirror.on(inp, \"input\", function(e) { options.onInput(e, inp.value, close);});\n if (options.onKeyUp)\n CodeMirror.on(inp, \"keyup\", function(e) {options.onKeyUp(e, inp.value, close);});\n\n CodeMirror.on(inp, \"keydown\", function(e) {\n if (options && options.onKeyDown && options.onKeyDown(e, inp.value, close)) { return; }\n if (e.keyCode == 27 || (options.closeOnEnter !== false && e.keyCode == 13)) {\n inp.blur();\n CodeMirror.e_stop(e);\n close();\n }\n if (e.keyCode == 13) callback(inp.value, e);\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(dialog, \"focusout\", function (evt) {\n if (evt.relatedTarget !== null) close();\n });\n } else if (button = dialog.getElementsByTagName(\"button\")[0]) {\n CodeMirror.on(button, \"click\", function() {\n close();\n me.focus();\n });\n\n if (options.closeOnBlur !== false) CodeMirror.on(button, \"blur\", close);\n\n button.focus();\n }\n return close;\n });\n\n CodeMirror.defineExtension(\"openConfirm\", function(template, callbacks, options) {\n closeNotification(this, null);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var buttons = dialog.getElementsByTagName(\"button\");\n var closed = false, me = this, blurring = 1;\n function close() {\n if (closed) return;\n closed = true;\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n me.focus();\n }\n buttons[0].focus();\n for (var i = 0; i < buttons.length; ++i) {\n var b = buttons[i];\n (function(callback) {\n CodeMirror.on(b, \"click\", function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n if (callback) callback(me);\n });\n })(callbacks[i]);\n CodeMirror.on(b, \"blur\", function() {\n --blurring;\n setTimeout(function() { if (blurring <= 0) close(); }, 200);\n });\n CodeMirror.on(b, \"focus\", function() { ++blurring; });\n }\n });\n\n /*\n * openNotification\n * Opens a notification, that can be closed with an optional timer\n * (default 5000ms timer) and always closes on click.\n *\n * If a notification is opened while another is opened, it will close the\n * currently opened one and open the new one immediately.\n */\n CodeMirror.defineExtension(\"openNotification\", function(template, options) {\n closeNotification(this, close);\n var dialog = dialogDiv(this, template, options && options.bottom);\n var closed = false, doneTimer;\n var duration = options && typeof options.duration !== \"undefined\" ? options.duration : 5000;\n\n function close() {\n if (closed) return;\n closed = true;\n clearTimeout(doneTimer);\n CodeMirror.rmClass(dialog.parentNode, 'dialog-opened');\n dialog.parentNode.removeChild(dialog);\n }\n\n CodeMirror.on(dialog, 'click', function(e) {\n CodeMirror.e_preventDefault(e);\n close();\n });\n\n if (duration)\n doneTimer = setTimeout(close, duration);\n\n return close;\n });\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n// Define search commands. Depends on dialog.js or another\n// implementation of the openDialog method.\n\n// Replace works a little oddly -- it will do the replace on the next\n// Ctrl-G (or whatever is bound to findNext) press. You prevent a\n// replace by making sure the match is no longer selected when hitting\n// Ctrl-G.\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"), require(\"./searchcursor\"), require(\"../dialog/dialog\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\", \"./searchcursor\", \"../dialog/dialog\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n // default search panel location\n CodeMirror.defineOption(\"search\", {bottom: false});\n\n function searchOverlay(query, caseInsensitive) {\n if (typeof query == \"string\")\n query = new RegExp(query.replace(/[\\-\\[\\]\\/\\{\\}\\(\\)\\*\\+\\?\\.\\\\\\^\\$\\|]/g, \"\\\\$&\"), caseInsensitive ? \"gi\" : \"g\");\n else if (!query.global)\n query = new RegExp(query.source, query.ignoreCase ? \"gi\" : \"g\");\n\n return {token: function(stream) {\n query.lastIndex = stream.pos;\n var match = query.exec(stream.string);\n if (match && match.index == stream.pos) {\n stream.pos += match[0].length || 1;\n return \"searching\";\n } else if (match) {\n stream.pos = match.index;\n } else {\n stream.skipToEnd();\n }\n }};\n }\n\n function SearchState() {\n this.posFrom = this.posTo = this.lastQuery = this.query = null;\n this.overlay = null;\n }\n\n function getSearchState(cm) {\n return cm.state.search || (cm.state.search = new SearchState());\n }\n\n function queryCaseInsensitive(query) {\n return typeof query == \"string\" && query == query.toLowerCase();\n }\n\n function getSearchCursor(cm, query, pos) {\n // Heuristic: if the query string is all lowercase, do a case insensitive search.\n return cm.getSearchCursor(query, pos, {caseFold: queryCaseInsensitive(query), multiline: true});\n }\n\n function persistentDialog(cm, text, deflt, onEnter, onKeyDown) {\n cm.openDialog(text, onEnter, {\n value: deflt,\n selectValueOnOpen: true,\n closeOnEnter: false,\n onClose: function() { clearSearch(cm); },\n onKeyDown: onKeyDown,\n bottom: cm.options.search.bottom\n });\n }\n\n function dialog(cm, text, shortText, deflt, f) {\n if (cm.openDialog) cm.openDialog(text, f, {value: deflt, selectValueOnOpen: true, bottom: cm.options.search.bottom});\n else f(prompt(shortText, deflt));\n }\n\n function confirmDialog(cm, text, shortText, fs) {\n if (cm.openConfirm) cm.openConfirm(text, fs);\n else if (confirm(shortText)) fs[0]();\n }\n\n function parseString(string) {\n return string.replace(/\\\\([nrt\\\\])/g, function(match, ch) {\n if (ch == \"n\") return \"\\n\"\n if (ch == \"r\") return \"\\r\"\n if (ch == \"t\") return \"\\t\"\n if (ch == \"\\\\\") return \"\\\\\"\n return match\n })\n }\n\n function parseQuery(query) {\n var isRE = query.match(/^\\/(.*)\\/([a-z]*)$/);\n if (isRE) {\n try { query = new RegExp(isRE[1], isRE[2].indexOf(\"i\") == -1 ? \"\" : \"i\"); }\n catch(e) {} // Not a regular expression after all, do a string search\n } else {\n query = parseString(query)\n }\n if (typeof query == \"string\" ? query == \"\" : query.test(\"\"))\n query = /x^/;\n return query;\n }\n\n function startSearch(cm, state, query) {\n state.queryText = query;\n state.query = parseQuery(query);\n cm.removeOverlay(state.overlay, queryCaseInsensitive(state.query));\n state.overlay = searchOverlay(state.query, queryCaseInsensitive(state.query));\n cm.addOverlay(state.overlay);\n if (cm.showMatchesOnScrollbar) {\n if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n state.annotate = cm.showMatchesOnScrollbar(state.query, queryCaseInsensitive(state.query));\n }\n }\n\n function doSearch(cm, rev, persistent, immediate) {\n var state = getSearchState(cm);\n if (state.query) return findNext(cm, rev);\n var q = cm.getSelection() || state.lastQuery;\n if (q instanceof RegExp && q.source == \"x^\") q = null\n if (persistent && cm.openDialog) {\n var hiding = null\n var searchNext = function(query, event) {\n CodeMirror.e_stop(event);\n if (!query) return;\n if (query != state.queryText) {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n }\n if (hiding) hiding.style.opacity = 1\n findNext(cm, event.shiftKey, function(_, to) {\n var dialog\n if (to.line < 3 && document.querySelector &&\n (dialog = cm.display.wrapper.querySelector(\".CodeMirror-dialog\")) &&\n dialog.getBoundingClientRect().bottom - 4 > cm.cursorCoords(to, \"window\").top)\n (hiding = dialog).style.opacity = .4\n })\n };\n persistentDialog(cm, getQueryDialog(cm), q, searchNext, function(event, query) {\n var keyName = CodeMirror.keyName(event)\n var extra = cm.getOption('extraKeys'), cmd = (extra && extra[keyName]) || CodeMirror.keyMap[cm.getOption(\"keyMap\")][keyName]\n if (cmd == \"findNext\" || cmd == \"findPrev\" ||\n cmd == \"findPersistentNext\" || cmd == \"findPersistentPrev\") {\n CodeMirror.e_stop(event);\n startSearch(cm, getSearchState(cm), query);\n cm.execCommand(cmd);\n } else if (cmd == \"find\" || cmd == \"findPersistent\") {\n CodeMirror.e_stop(event);\n searchNext(query, event);\n }\n });\n if (immediate && q) {\n startSearch(cm, state, q);\n findNext(cm, rev);\n }\n } else {\n dialog(cm, getQueryDialog(cm), \"Search for:\", q, function(query) {\n if (query && !state.query) cm.operation(function() {\n startSearch(cm, state, query);\n state.posFrom = state.posTo = cm.getCursor();\n findNext(cm, rev);\n });\n });\n }\n }\n\n function findNext(cm, rev, callback) {cm.operation(function() {\n var state = getSearchState(cm);\n var cursor = getSearchCursor(cm, state.query, rev ? state.posFrom : state.posTo);\n if (!cursor.find(rev)) {\n cursor = getSearchCursor(cm, state.query, rev ? CodeMirror.Pos(cm.lastLine()) : CodeMirror.Pos(cm.firstLine(), 0));\n if (!cursor.find(rev)) return;\n }\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({from: cursor.from(), to: cursor.to()}, 20);\n state.posFrom = cursor.from(); state.posTo = cursor.to();\n if (callback) callback(cursor.from(), cursor.to())\n });}\n\n function clearSearch(cm) {cm.operation(function() {\n var state = getSearchState(cm);\n state.lastQuery = state.query;\n if (!state.query) return;\n state.query = state.queryText = null;\n cm.removeOverlay(state.overlay);\n if (state.annotate) { state.annotate.clear(); state.annotate = null; }\n });}\n\n function el(tag, attrs) {\n var element = tag ? document.createElement(tag) : document.createDocumentFragment();\n for (var key in attrs) {\n element[key] = attrs[key];\n }\n for (var i = 2; i < arguments.length; i++) {\n var child = arguments[i]\n element.appendChild(typeof child == \"string\" ? document.createTextNode(child) : child);\n }\n return element;\n }\n\n function getQueryDialog(cm) {\n return el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, cm.phrase(\"Search:\")), \" \",\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\"}), \" \",\n el(\"span\", {style: \"color: #888\", className: \"CodeMirror-search-hint\"},\n cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n }\n function getReplaceQueryDialog(cm) {\n return el(\"\", null, \" \",\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\"}), \" \",\n el(\"span\", {style: \"color: #888\", className: \"CodeMirror-search-hint\"},\n cm.phrase(\"(Use /re/ syntax for regexp search)\")));\n }\n function getReplacementQueryDialog(cm) {\n return el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, cm.phrase(\"With:\")), \" \",\n el(\"input\", {type: \"text\", \"style\": \"width: 10em\", className: \"CodeMirror-search-field\"}));\n }\n function getDoReplaceConfirm(cm) {\n return el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, cm.phrase(\"Replace?\")), \" \",\n el(\"button\", {}, cm.phrase(\"Yes\")), \" \",\n el(\"button\", {}, cm.phrase(\"No\")), \" \",\n el(\"button\", {}, cm.phrase(\"All\")), \" \",\n el(\"button\", {}, cm.phrase(\"Stop\")));\n }\n\n function replaceAll(cm, query, text) {\n cm.operation(function() {\n for (var cursor = getSearchCursor(cm, query); cursor.findNext();) {\n if (typeof query != \"string\") {\n var match = cm.getRange(cursor.from(), cursor.to()).match(query);\n cursor.replace(text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n } else cursor.replace(text);\n }\n });\n }\n\n function replace(cm, all) {\n if (cm.getOption(\"readOnly\")) return;\n var query = cm.getSelection() || getSearchState(cm).lastQuery;\n var dialogText = all ? cm.phrase(\"Replace all:\") : cm.phrase(\"Replace:\")\n var fragment = el(\"\", null,\n el(\"span\", {className: \"CodeMirror-search-label\"}, dialogText),\n getReplaceQueryDialog(cm))\n dialog(cm, fragment, dialogText, query, function(query) {\n if (!query) return;\n query = parseQuery(query);\n dialog(cm, getReplacementQueryDialog(cm), cm.phrase(\"Replace with:\"), \"\", function(text) {\n text = parseString(text)\n if (all) {\n replaceAll(cm, query, text)\n } else {\n clearSearch(cm);\n var cursor = getSearchCursor(cm, query, cm.getCursor(\"from\"));\n var advance = function() {\n var start = cursor.from(), match;\n if (!(match = cursor.findNext())) {\n cursor = getSearchCursor(cm, query);\n if (!(match = cursor.findNext()) ||\n (start && cursor.from().line == start.line && cursor.from().ch == start.ch)) return;\n }\n cm.setSelection(cursor.from(), cursor.to());\n cm.scrollIntoView({from: cursor.from(), to: cursor.to()});\n confirmDialog(cm, getDoReplaceConfirm(cm), cm.phrase(\"Replace?\"),\n [function() {doReplace(match);}, advance,\n function() {replaceAll(cm, query, text)}]);\n };\n var doReplace = function(match) {\n cursor.replace(typeof query == \"string\" ? text :\n text.replace(/\\$(\\d)/g, function(_, i) {return match[i];}));\n advance();\n };\n advance();\n }\n });\n });\n }\n\n CodeMirror.commands.find = function(cm) {clearSearch(cm); doSearch(cm);};\n CodeMirror.commands.findPersistent = function(cm) {clearSearch(cm); doSearch(cm, false, true);};\n CodeMirror.commands.findPersistentNext = function(cm) {doSearch(cm, false, true, true);};\n CodeMirror.commands.findPersistentPrev = function(cm) {doSearch(cm, true, true, true);};\n CodeMirror.commands.findNext = doSearch;\n CodeMirror.commands.findPrev = function(cm) {doSearch(cm, true);};\n CodeMirror.commands.clearSearch = clearSearch;\n CodeMirror.commands.replace = replace;\n CodeMirror.commands.replaceAll = function(cm) {replace(cm, true);};\n});\n","// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"))\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod)\n else // Plain browser env\n mod(CodeMirror)\n})(function(CodeMirror) {\n \"use strict\"\n var Pos = CodeMirror.Pos\n\n function regexpFlags(regexp) {\n var flags = regexp.flags\n return flags != null ? flags : (regexp.ignoreCase ? \"i\" : \"\")\n + (regexp.global ? \"g\" : \"\")\n + (regexp.multiline ? \"m\" : \"\")\n }\n\n function ensureFlags(regexp, flags) {\n var current = regexpFlags(regexp), target = current\n for (var i = 0; i < flags.length; i++) if (target.indexOf(flags.charAt(i)) == -1)\n target += flags.charAt(i)\n return current == target ? regexp : new RegExp(regexp.source, target)\n }\n\n function maybeMultiline(regexp) {\n return /\\\\s|\\\\n|\\n|\\\\W|\\\\D|\\[\\^/.test(regexp.source)\n }\n\n function searchRegexpForward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, last = doc.lastLine(); line <= last; line++, ch = 0) {\n regexp.lastIndex = ch\n var string = doc.getLine(line), match = regexp.exec(string)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpForwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpForward(doc, regexp, start)\n\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunk = 1\n for (var line = start.line, last = doc.lastLine(); line <= last;) {\n // This grows the search buffer in exponentially-sized chunks\n // between matches, so that nearby matches are fast and don't\n // require concatenating the whole document (in case we're\n // searching for something that has tons of matches), but at the\n // same time, the amount of retries is limited.\n for (var i = 0; i < chunk; i++) {\n if (line > last) break\n var curLine = doc.getLine(line++)\n string = string == null ? curLine : string + \"\\n\" + curLine\n }\n chunk = chunk * 2\n regexp.lastIndex = start.ch\n var match = regexp.exec(string)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = start.line + before.length - 1, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n function lastMatchIn(string, regexp, endMargin) {\n var match, from = 0\n while (from <= string.length) {\n regexp.lastIndex = from\n var newMatch = regexp.exec(string)\n if (!newMatch) break\n var end = newMatch.index + newMatch[0].length\n if (end > string.length - endMargin) break\n if (!match || end > match.index + match[0].length)\n match = newMatch\n from = newMatch.index + 1\n }\n return match\n }\n\n function searchRegexpBackward(doc, regexp, start) {\n regexp = ensureFlags(regexp, \"g\")\n for (var line = start.line, ch = start.ch, first = doc.firstLine(); line >= first; line--, ch = -1) {\n var string = doc.getLine(line)\n var match = lastMatchIn(string, regexp, ch < 0 ? 0 : string.length - ch)\n if (match)\n return {from: Pos(line, match.index),\n to: Pos(line, match.index + match[0].length),\n match: match}\n }\n }\n\n function searchRegexpBackwardMultiline(doc, regexp, start) {\n if (!maybeMultiline(regexp)) return searchRegexpBackward(doc, regexp, start)\n regexp = ensureFlags(regexp, \"gm\")\n var string, chunkSize = 1, endMargin = doc.getLine(start.line).length - start.ch\n for (var line = start.line, first = doc.firstLine(); line >= first;) {\n for (var i = 0; i < chunkSize && line >= first; i++) {\n var curLine = doc.getLine(line--)\n string = string == null ? curLine : curLine + \"\\n\" + string\n }\n chunkSize *= 2\n\n var match = lastMatchIn(string, regexp, endMargin)\n if (match) {\n var before = string.slice(0, match.index).split(\"\\n\"), inside = match[0].split(\"\\n\")\n var startLine = line + before.length, startCh = before[before.length - 1].length\n return {from: Pos(startLine, startCh),\n to: Pos(startLine + inside.length - 1,\n inside.length == 1 ? startCh + inside[0].length : inside[inside.length - 1].length),\n match: match}\n }\n }\n }\n\n var doFold, noFold\n if (String.prototype.normalize) {\n doFold = function(str) { return str.normalize(\"NFD\").toLowerCase() }\n noFold = function(str) { return str.normalize(\"NFD\") }\n } else {\n doFold = function(str) { return str.toLowerCase() }\n noFold = function(str) { return str }\n }\n\n // Maps a position in a case-folded line back to a position in the original line\n // (compensating for codepoints increasing in number during folding)\n function adjustPos(orig, folded, pos, foldFunc) {\n if (orig.length == folded.length) return pos\n for (var min = 0, max = pos + Math.max(0, orig.length - folded.length);;) {\n if (min == max) return min\n var mid = (min + max) >> 1\n var len = foldFunc(orig.slice(0, mid)).length\n if (len == pos) return mid\n else if (len > pos) max = mid\n else min = mid + 1\n }\n }\n\n function searchStringForward(doc, query, start, caseFold) {\n // Empty string would match anything and never progress, so we\n // define it to match nothing instead.\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, last = doc.lastLine() + 1 - lines.length; line <= last; line++, ch = 0) {\n var orig = doc.getLine(line).slice(ch), string = fold(orig)\n if (lines.length == 1) {\n var found = string.indexOf(lines[0])\n if (found == -1) continue search\n var start = adjustPos(orig, string, found, fold) + ch\n return {from: Pos(line, adjustPos(orig, string, found, fold) + ch),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold) + ch)}\n } else {\n var cutFrom = string.length - lines[0].length\n if (string.slice(cutFrom) != lines[0]) continue search\n for (var i = 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(line + i)) != lines[i]) continue search\n var end = doc.getLine(line + lines.length - 1), endString = fold(end), lastLine = lines[lines.length - 1]\n if (endString.slice(0, lastLine.length) != lastLine) continue search\n return {from: Pos(line, adjustPos(orig, string, cutFrom, fold) + ch),\n to: Pos(line + lines.length - 1, adjustPos(end, endString, lastLine.length, fold))}\n }\n }\n }\n\n function searchStringBackward(doc, query, start, caseFold) {\n if (!query.length) return null\n var fold = caseFold ? doFold : noFold\n var lines = fold(query).split(/\\r|\\n\\r?/)\n\n search: for (var line = start.line, ch = start.ch, first = doc.firstLine() - 1 + lines.length; line >= first; line--, ch = -1) {\n var orig = doc.getLine(line)\n if (ch > -1) orig = orig.slice(0, ch)\n var string = fold(orig)\n if (lines.length == 1) {\n var found = string.lastIndexOf(lines[0])\n if (found == -1) continue search\n return {from: Pos(line, adjustPos(orig, string, found, fold)),\n to: Pos(line, adjustPos(orig, string, found + lines[0].length, fold))}\n } else {\n var lastLine = lines[lines.length - 1]\n if (string.slice(0, lastLine.length) != lastLine) continue search\n for (var i = 1, start = line - lines.length + 1; i < lines.length - 1; i++)\n if (fold(doc.getLine(start + i)) != lines[i]) continue search\n var top = doc.getLine(line + 1 - lines.length), topString = fold(top)\n if (topString.slice(topString.length - lines[0].length) != lines[0]) continue search\n return {from: Pos(line + 1 - lines.length, adjustPos(top, topString, top.length - lines[0].length, fold)),\n to: Pos(line, adjustPos(orig, string, lastLine.length, fold))}\n }\n }\n }\n\n function SearchCursor(doc, query, pos, options) {\n this.atOccurrence = false\n this.afterEmptyMatch = false\n this.doc = doc\n pos = pos ? doc.clipPos(pos) : Pos(0, 0)\n this.pos = {from: pos, to: pos}\n\n var caseFold\n if (typeof options == \"object\") {\n caseFold = options.caseFold\n } else { // Backwards compat for when caseFold was the 4th argument\n caseFold = options\n options = null\n }\n\n if (typeof query == \"string\") {\n if (caseFold == null) caseFold = false\n this.matches = function(reverse, pos) {\n return (reverse ? searchStringBackward : searchStringForward)(doc, query, pos, caseFold)\n }\n } else {\n query = ensureFlags(query, \"gm\")\n if (!options || options.multiline !== false)\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackwardMultiline : searchRegexpForwardMultiline)(doc, query, pos)\n }\n else\n this.matches = function(reverse, pos) {\n return (reverse ? searchRegexpBackward : searchRegexpForward)(doc, query, pos)\n }\n }\n }\n\n SearchCursor.prototype = {\n findNext: function() {return this.find(false)},\n findPrevious: function() {return this.find(true)},\n\n find: function(reverse) {\n var head = this.doc.clipPos(reverse ? this.pos.from : this.pos.to);\n if (this.afterEmptyMatch && this.atOccurrence) {\n // do not return the same 0 width match twice\n head = Pos(head.line, head.ch)\n if (reverse) {\n head.ch--;\n if (head.ch < 0) {\n head.line--;\n head.ch = (this.doc.getLine(head.line) || \"\").length;\n }\n } else {\n head.ch++;\n if (head.ch > (this.doc.getLine(head.line) || \"\").length) {\n head.ch = 0;\n head.line++;\n }\n }\n if (CodeMirror.cmpPos(head, this.doc.clipPos(head)) != 0) {\n return this.atOccurrence = false\n }\n }\n var result = this.matches(reverse, head)\n this.afterEmptyMatch = result && CodeMirror.cmpPos(result.from, result.to) == 0\n\n if (result) {\n this.pos = result\n this.atOccurrence = true\n return this.pos.match || true\n } else {\n var end = Pos(reverse ? this.doc.firstLine() : this.doc.lastLine() + 1, 0)\n this.pos = {from: end, to: end}\n return this.atOccurrence = false\n }\n },\n\n from: function() {if (this.atOccurrence) return this.pos.from},\n to: function() {if (this.atOccurrence) return this.pos.to},\n\n replace: function(newText, origin) {\n if (!this.atOccurrence) return\n var lines = CodeMirror.splitLines(newText)\n this.doc.replaceRange(lines, this.pos.from, this.pos.to, origin)\n this.pos.to = Pos(this.pos.from.line + lines.length - 1,\n lines[lines.length - 1].length + (lines.length == 1 ? this.pos.from.ch : 0))\n }\n }\n\n CodeMirror.defineExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this.doc, query, pos, caseFold)\n })\n CodeMirror.defineDocExtension(\"getSearchCursor\", function(query, pos, caseFold) {\n return new SearchCursor(this, query, pos, caseFold)\n })\n\n CodeMirror.defineExtension(\"selectMatches\", function(query, caseFold) {\n var ranges = []\n var cur = this.getSearchCursor(query, this.getCursor(\"from\"), caseFold)\n while (cur.findNext()) {\n if (CodeMirror.cmpPos(cur.to(), this.getCursor(\"to\")) > 0) break\n ranges.push({anchor: cur.from(), head: cur.to()})\n }\n if (ranges.length)\n this.setSelections(ranges, 0)\n })\n});\n"],"names":["n","d","o","f","e","l","u","getWrapperElement","appendChild","document","createElement","className","innerHTML","addClass","v","state","currentNotificationClose","r","defineExtension","this","bottom","c","i","t","a","value","rmClass","parentNode","removeChild","focus","onClose","s","getElementsByTagName","selectValueOnOpen","select","onInput","on","onKeyUp","onKeyDown","keyCode","closeOnEnter","blur","e_stop","closeOnBlur","relatedTarget","length","g","N","b","e_preventDefault","setTimeout","duration","clearTimeout","T","h","exports","y","RegExp","replace","global","source","ignoreCase","token","lastIndex","pos","exec","string","index","skipToEnd","posFrom","posTo","lastQuery","query","overlay","search","w","toLowerCase","m","getSearchCursor","caseFold","multiline","$","openDialog","options","R","prompt","j","openConfirm","confirm","C","match","indexOf","test","D","queryText","removeOverlay","addOverlay","showMatchesOnScrollbar","annotate","clear","P","getSelection","p","x","getCursor","style","opacity","shiftKey","line","querySelector","display","wrapper","getBoundingClientRect","cursorCoords","top","_","keyName","getOption","keyMap","execCommand","operation","find","Pos","lastLine","firstLine","setSelection","from","to","scrollIntoView","createDocumentFragment","arguments","createTextNode","phrase","type","k","A","I","E","findNext","getRange","F","ch","defineOption","commands","findPersistent","findPersistentNext","findPersistentPrev","findPrev","clearSearch","replaceAll","L","z","U","B","flags","charAt","getLine","slice","split","Math","max","O","S","lastIndexOf","atOccurrence","afterEmptyMatch","doc","clipPos","matches","String","prototype","normalize","findPrevious","cmpPos","splitLines","replaceRange","defineDocExtension","push","anchor","head","setSelections","G"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/818.71047f89.chunk.js b/serv/web/build/static/js/818.71047f89.chunk.js new file mode 100644 index 00000000..967e8002 --- /dev/null +++ b/serv/web/build/static/js/818.71047f89.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[818,889],{889:(e,t,r)=>{r.r(t),r.d(t,{C:()=>l,c:()=>i});var n=r(8308);function a(e,t){for(var r=0;rn[t]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(a,"name",{value:"_mergeNamespaces",configurable:!0});var u=(0,n.r)();const l=(0,n.g)(u),i=a({__proto__:null,default:l},[u])},5012:(e,t,r)=>{r.d(t,{i:()=>n});function n(e,t){var r,n;const{levels:a,indentLevel:u}=e;return((a&&0!==a.length?a.at(-1)-(null!==(r=this.electricInput)&&void 0!==r&&r.test(t)?1:0):u)||0)*((null===(n=this.config)||void 0===n?void 0:n.indentUnit)||0)}(0,Object.defineProperty)(n,"name",{value:"indent",configurable:!0})},9818:(e,t,r)=>{r.r(t);var n=r(889),a=r(4652),u=r(5012),l=(r(8308),Object.defineProperty);n.C.defineMode("graphql-variables",(e=>{const t=(0,a.Xs)({eatWhitespace:e=>e.eatSpace(),lexRules:i,parseRules:c,editorConfig:{tabSize:e.tabSize}});return{config:e,startState:t.startState,token:t.token,indent:u.i,electricInput:/^\s*[}\]]/,fold:"brace",closeBrackets:{pairs:'[]{}""',explode:"[]{}"}}}));const i={Punctuation:/^\[|]|\{|\}|:|,/,Number:/^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,String:/^"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?/,Keyword:/^true|false|null/},c={Document:[(0,a.p)("{"),(0,a.pb)("Variable",(0,a.MD)((0,a.p)(","))),(0,a.p)("}")],Variable:[o("variable"),(0,a.p)(":"),"Value"],Value(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue"}return null;case"Keyword":switch(e.value){case"true":case"false":return"BooleanValue";case"null":return"NullValue"}return null}},NumberValue:[(0,a.t)("Number","number")],StringValue:[(0,a.t)("String","string")],BooleanValue:[(0,a.t)("Keyword","builtin")],NullValue:[(0,a.t)("Keyword","keyword")],ListValue:[(0,a.p)("["),(0,a.pb)("Value",(0,a.MD)((0,a.p)(","))),(0,a.p)("]")],ObjectValue:[(0,a.p)("{"),(0,a.pb)("ObjectField",(0,a.MD)((0,a.p)(","))),(0,a.p)("}")],ObjectField:[o("attribute"),(0,a.p)(":"),"Value"]};function o(e){return{style:e,match:e=>"String"===e.kind,update(e,t){e.name=t.value.slice(1,-1)}}}l(o,"name",{value:"namedKey",configurable:!0})}}]); +//# sourceMappingURL=818.71047f89.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/818.71047f89.chunk.js.map b/serv/web/build/static/js/818.71047f89.chunk.js.map new file mode 100644 index 00000000..1d3850ea --- /dev/null +++ b/serv/web/build/static/js/818.71047f89.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/818.71047f89.chunk.js","mappings":"2pBAAe,SAASA,EAAOC,EAAOC,GAClC,IAAIC,EAAIC,EACR,MAAQC,OAAAC,EAAQC,YAAAC,GAAgBP,EAIhC,QAHeK,GAA4B,IAAlBA,EAAOG,OAE1BH,EAAOI,IAAI,IAAqC,QAA7BP,EAAKQ,KAAKC,qBAAkC,IAAPT,GAAyBA,EAAGU,KAAKX,GAAc,EAAI,GAD3GM,IAEW,KAA8B,QAAtBJ,EAAKO,KAAKG,cAA2B,IAAPV,OAAgB,EAASA,EAAGW,aAAe,EACtG,E,yBAPwBf,E,cAAA,S,4GCGxBgB,EAAAA,EAAWC,WAAW,qBAAqBjB,IACvC,MAAMG,GAASe,EAAAA,EAAAA,IAAa,CACxBC,cAAeC,GAAUA,EAAOC,WAChCC,SAAUC,EACVC,WAAYC,EACZC,aAAc,CAAEC,QAAS3B,EAAO2B,WAEpC,MAAO,CACHb,OAAAd,EACA4B,WAAYzB,EAAOyB,WACnBC,MAAO1B,EAAO0B,MACdC,OAAAC,EAAAA,EACAnB,cAAe,YACfoB,KAAM,QACNC,cAAe,CACXC,MAAO,SACPC,QAAS,QAErB,IAEA,MAAMZ,EAAW,CACba,YAAa,kBACbC,OAAQ,4DACRC,OAAQ,0DACRC,QAAS,oBAEPd,EAAa,CACfe,SAAU,EAACvC,EAAAA,EAAAA,GAAE,MAAMK,EAAAA,EAAAA,IAAK,YAAYJ,EAAAA,EAAAA,KAAID,EAAAA,EAAAA,GAAE,QAAQA,EAAAA,EAAAA,GAAE,MACpDwC,SAAU,CAACC,EAAS,aAAazC,EAAAA,EAAAA,GAAE,KAAM,SACzC0C,KAAAA,CAAM3C,GACF,OAAQA,EAAM4C,MACV,IAAK,SACD,MAAO,cACX,IAAK,SACD,MAAO,cACX,IAAK,cACD,OAAQ5C,EAAM6C,OACV,IAAK,IACD,MAAO,YACX,IAAK,IACD,MAAO,cAEf,OAAO,KACX,IAAK,UACD,OAAQ7C,EAAM6C,OACV,IAAK,OACL,IAAK,QACD,MAAO,eACX,IAAK,OACD,MAAO,YAEf,OAAO,KAElB,EACDC,YAAa,EAACC,EAAAA,EAAAA,GAAE,SAAU,WAC1BC,YAAa,EAACD,EAAAA,EAAAA,GAAE,SAAU,WAC1BE,aAAc,EAACF,EAAAA,EAAAA,GAAE,UAAW,YAC5BG,UAAW,EAACH,EAAAA,EAAAA,GAAE,UAAW,YACzBI,UAAW,EAAClD,EAAAA,EAAAA,GAAE,MAAMK,EAAAA,EAAAA,IAAK,SAASJ,EAAAA,EAAAA,KAAID,EAAAA,EAAAA,GAAE,QAAQA,EAAAA,EAAAA,GAAE,MAClDmD,YAAa,EAACnD,EAAAA,EAAAA,GAAE,MAAMK,EAAAA,EAAAA,IAAK,eAAeJ,EAAAA,EAAAA,KAAID,EAAAA,EAAAA,GAAE,QAAQA,EAAAA,EAAAA,GAAE,MAC1DoD,YAAa,CAACX,EAAS,cAAczC,EAAAA,EAAAA,GAAE,KAAM,UAEjD,SAASyC,EAAS1C,GACd,MAAO,CACHsD,MAAAtD,EACAuD,MAAQpD,GAAyB,WAAfA,EAAMyC,KACxBY,MAAAA,CAAOrD,EAAOiB,GACVjB,EAAMsD,KAAOrC,EAAMyB,MAAMa,MAAM,GAAI,EACtC,EAET,C,EARShB,E,cAAA,W","sources":["../node_modules/@graphiql/codemirror-graphql/esm/utils/mode-indent.js","../node_modules/@graphiql/codemirror-graphql/esm/variables/mode.js"],"sourcesContent":["export default function indent(state, textAfter) {\n var _a, _b;\n const { levels, indentLevel } = state;\n const level = !levels || levels.length === 0\n ? indentLevel\n : levels.at(-1) - (((_a = this.electricInput) === null || _a === void 0 ? void 0 : _a.test(textAfter)) ? 1 : 0);\n return (level || 0) * (((_b = this.config) === null || _b === void 0 ? void 0 : _b.indentUnit) || 0);\n}\n//# sourceMappingURL=mode-indent.js.map","import CodeMirror from 'codemirror';\nimport { list, t, onlineParser, opt, p, } from 'graphql-language-service';\nimport indent from '../utils/mode-indent';\nCodeMirror.defineMode('graphql-variables', config => {\n const parser = onlineParser({\n eatWhitespace: stream => stream.eatSpace(),\n lexRules: LexRules,\n parseRules: ParseRules,\n editorConfig: { tabSize: config.tabSize },\n });\n return {\n config,\n startState: parser.startState,\n token: parser.token,\n indent,\n electricInput: /^\\s*[}\\]]/,\n fold: 'brace',\n closeBrackets: {\n pairs: '[]{}\"\"',\n explode: '[]{}',\n },\n };\n});\nconst LexRules = {\n Punctuation: /^\\[|]|\\{|\\}|:|,/,\n Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n Keyword: /^true|false|null/,\n};\nconst ParseRules = {\n Document: [p('{'), list('Variable', opt(p(','))), p('}')],\n Variable: [namedKey('variable'), p(':'), 'Value'],\n Value(token) {\n switch (token.kind) {\n case 'Number':\n return 'NumberValue';\n case 'String':\n return 'StringValue';\n case 'Punctuation':\n switch (token.value) {\n case '[':\n return 'ListValue';\n case '{':\n return 'ObjectValue';\n }\n return null;\n case 'Keyword':\n switch (token.value) {\n case 'true':\n case 'false':\n return 'BooleanValue';\n case 'null':\n return 'NullValue';\n }\n return null;\n }\n },\n NumberValue: [t('Number', 'number')],\n StringValue: [t('String', 'string')],\n BooleanValue: [t('Keyword', 'builtin')],\n NullValue: [t('Keyword', 'keyword')],\n ListValue: [p('['), list('Value', opt(p(','))), p(']')],\n ObjectValue: [p('{'), list('ObjectField', opt(p(','))), p('}')],\n ObjectField: [namedKey('attribute'), p(':'), 'Value'],\n};\nfunction namedKey(style) {\n return {\n style,\n match: (token) => token.kind === 'String',\n update(state, token) {\n state.name = token.value.slice(1, -1);\n },\n };\n}\n//# sourceMappingURL=mode.js.map"],"names":["r","e","n","t","i","levels","l","indentLevel","v","length","at","this","electricInput","test","config","indentUnit","c","defineMode","b","eatWhitespace","u","eatSpace","lexRules","V","parseRules","m","editorConfig","tabSize","startState","token","indent","d","fold","closeBrackets","pairs","explode","Punctuation","Number","String","Keyword","Document","Variable","s","Value","kind","value","NumberValue","a","StringValue","BooleanValue","NullValue","ListValue","ObjectValue","ObjectField","style","match","update","name","slice"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/818.78e43826.chunk.js b/serv/web/build/static/js/818.78e43826.chunk.js deleted file mode 100644 index eef41788..00000000 --- a/serv/web/build/static/js/818.78e43826.chunk.js +++ /dev/null @@ -1,2 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[818,889],{889:function(e,t,n){n.r(t),n.d(t,{C:function(){return i},c:function(){return l}});var r=n(8308);function u(e,t){for(var n=function(){var n=t[r];if("string"!=typeof n&&!Array.isArray(n)){var u=function(t){if("default"!==t&&!(t in e)){var r=Object.getOwnPropertyDescriptor(n,t);r&&Object.defineProperty(e,t,r.get?r:{enumerable:!0,get:function(){return n[t]}})}};for(var a in n)u(a)}},r=0;r {\n const parser = onlineParser({\n eatWhitespace: stream => stream.eatSpace(),\n lexRules: LexRules,\n parseRules: ParseRules,\n editorConfig: { tabSize: config.tabSize },\n });\n return {\n config,\n startState: parser.startState,\n token: parser.token,\n indent,\n electricInput: /^\\s*[}\\]]/,\n fold: 'brace',\n closeBrackets: {\n pairs: '[]{}\"\"',\n explode: '[]{}',\n },\n };\n});\nconst LexRules = {\n Punctuation: /^\\[|]|\\{|\\}|:|,/,\n Number: /^-?(?:0|(?:[1-9][0-9]*))(?:\\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,\n String: /^\"(?:[^\"\\\\]|\\\\(?:\"|\\/|\\\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*\"?/,\n Keyword: /^true|false|null/,\n};\nconst ParseRules = {\n Document: [p('{'), list('Variable', opt(p(','))), p('}')],\n Variable: [namedKey('variable'), p(':'), 'Value'],\n Value(token) {\n switch (token.kind) {\n case 'Number':\n return 'NumberValue';\n case 'String':\n return 'StringValue';\n case 'Punctuation':\n switch (token.value) {\n case '[':\n return 'ListValue';\n case '{':\n return 'ObjectValue';\n }\n return null;\n case 'Keyword':\n switch (token.value) {\n case 'true':\n case 'false':\n return 'BooleanValue';\n case 'null':\n return 'NullValue';\n }\n return null;\n }\n },\n NumberValue: [t('Number', 'number')],\n StringValue: [t('String', 'string')],\n BooleanValue: [t('Keyword', 'builtin')],\n NullValue: [t('Keyword', 'keyword')],\n ListValue: [p('['), list('Value', opt(p(','))), p(']')],\n ObjectValue: [p('{'), list('ObjectField', opt(p(','))), p('}')],\n ObjectField: [namedKey('attribute'), p(':'), 'Value'],\n};\nfunction namedKey(style) {\n return {\n style,\n match: (token) => token.kind === 'String',\n update(state, token) {\n state.name = token.value.slice(1, -1);\n },\n };\n}\n//# sourceMappingURL=mode.js.map"],"names":["indent","state","textAfter","_a","_b","levels","indentLevel","length","at","this","electricInput","test","config","indentUnit","__name","CodeMirror","parser","onlineParser","eatWhitespace","stream","eatSpace","lexRules","LexRules","parseRules","ParseRules","editorConfig","tabSize","startState","token","fold","closeBrackets","pairs","explode","Punctuation","Number","String","Keyword","Document","p","list","opt","Variable","namedKey","Value","kind","value","NumberValue","t","StringValue","BooleanValue","NullValue","ListValue","ObjectValue","ObjectField","style","match","update","name","slice"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/824.d1ea505e.chunk.js b/serv/web/build/static/js/824.d1ea505e.chunk.js new file mode 100644 index 00000000..665ec89c --- /dev/null +++ b/serv/web/build/static/js/824.d1ea505e.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[824],{8824:(e,o,n)=>{n.r(o),n.d(o,{d:()=>a});var t=n(8308),r=n(4497);function i(e,o){for(var n=0;nt[o]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(i,"name",{value:"_mergeNamespaces",configurable:!0});var u=(0,r.r)();const a=i({__proto__:null,default:(0,t.g)(u)},[u])},4497:(e,o,n)=>{n.d(o,{r:()=>l});var t,r=n(8308),i=Object.defineProperty,u=(e,o)=>i(e,"name",{value:o,configurable:!0}),a={exports:{}};function l(){return t||(t=1,function(e){function o(o,n,t){var r,i=o.getWrapperElement();return(r=i.appendChild(document.createElement("div"))).className=t?"CodeMirror-dialog CodeMirror-dialog-bottom":"CodeMirror-dialog CodeMirror-dialog-top","string"==typeof n?r.innerHTML=n:r.appendChild(n),e.addClass(i,"dialog-opened"),r}function n(e,o){e.state.currentNotificationClose&&e.state.currentNotificationClose(),e.state.currentNotificationClose=o}u(o,"dialogDiv"),u(n,"closeNotification"),e.defineExtension("openDialog",(function(t,r,i){i||(i={}),n(this,null);var a=o(this,t,i.bottom),l=!1,c=this;function s(o){if("string"==typeof o)d.value=o;else{if(l)return;l=!0,e.rmClass(a.parentNode,"dialog-opened"),a.parentNode.removeChild(a),c.focus(),i.onClose&&i.onClose(a)}}u(s,"close");var f,d=a.getElementsByTagName("input")[0];return d?(d.focus(),i.value&&(d.value=i.value,!1!==i.selectValueOnOpen&&d.select()),i.onInput&&e.on(d,"input",(function(e){i.onInput(e,d.value,s)})),i.onKeyUp&&e.on(d,"keyup",(function(e){i.onKeyUp(e,d.value,s)})),e.on(d,"keydown",(function(o){i&&i.onKeyDown&&i.onKeyDown(o,d.value,s)||((27==o.keyCode||!1!==i.closeOnEnter&&13==o.keyCode)&&(d.blur(),e.e_stop(o),s()),13==o.keyCode&&r(d.value,o))})),!1!==i.closeOnBlur&&e.on(a,"focusout",(function(e){null!==e.relatedTarget&&s()}))):(f=a.getElementsByTagName("button")[0])&&(e.on(f,"click",(function(){s(),c.focus()})),!1!==i.closeOnBlur&&e.on(f,"blur",s),f.focus()),s})),e.defineExtension("openConfirm",(function(t,r,i){n(this,null);var a=o(this,t,i&&i.bottom),l=a.getElementsByTagName("button"),c=!1,s=this,f=1;function d(){c||(c=!0,e.rmClass(a.parentNode,"dialog-opened"),a.parentNode.removeChild(a),s.focus())}u(d,"close"),l[0].focus();for(var p=0;p{t.r(r),t.d(r,{C:()=>c,c:()=>i});var n=t(8308);function o(e,r){for(var t=0;tn[r]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}(0,Object.defineProperty)(o,"name",{value:"_mergeNamespaces",configurable:!0});var a=(0,n.r)();const c=(0,n.g)(a),i=o({__proto__:null,default:c},[a])}}]); \ No newline at end of file diff --git a/serv/web/build/static/js/889.ce200a0a.chunk.js b/serv/web/build/static/js/889.ce200a0a.chunk.js deleted file mode 100644 index 4487d063..00000000 --- a/serv/web/build/static/js/889.ce200a0a.chunk.js +++ /dev/null @@ -1 +0,0 @@ -"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[889],{889:function(e,r,t){t.r(r),t.d(r,{C:function(){return a},c:function(){return f}});var n=t(8308);function u(e,r){for(var t=function(){var t=r[n];if("string"!=typeof t&&!Array.isArray(t)){var u=function(r){if("default"!==r&&!(r in e)){var n=Object.getOwnPropertyDescriptor(t,r);n&&Object.defineProperty(e,r,n.get?n:{enumerable:!0,get:function(){return t[r]}})}};for(var i in t)u(i)}},n=0;n=0;a--){var c=r[a].from(),m=r[a].to();c.line>=l||(m.line>=l&&(m=i(l,0)),l=c.line,null==o?t.uncomment(c,m,e)?o="un":(t.lineComment(c,m,e),o="line"):"un"==o?t.uncomment(c,m,e):t.lineComment(c,m,e))}})),r(a,"probablyInsideString"),r(c,"getMode"),e.defineExtension("lineComment",(function(e,l,r){r||(r=n);var m=this,f=c(m,e),g=m.getLine(e.line);if(null!=g&&!a(m,e,g)){var s=r.lineComment||f.lineComment;if(!s)return void((r.blockCommentStart||f.blockCommentStart)&&(r.fullLines=!0,m.blockComment(e,l,r)));var u=Math.min(0!=l.ch||l.line==e.line?l.line+1:l.line,m.lastLine()+1),d=null==r.padding?" ":r.padding,h=r.commentBlankLines||e.line==l.line;m.operation((function(){if(r.indent){for(var n=null,l=e.line;la.length)&&(n=a)}for(l=e.line;ls||a.operation((function(){if(0!=o.fullLines){var n=t.test(a.getLine(s));a.replaceRange(u+g,i(s)),a.replaceRange(f+u,i(e.line,0));var c=o.blockCommentLead||m.blockCommentLead;if(null!=c)for(var d=e.line+1;d<=s;++d)(d!=s||n)&&a.replaceRange(c+u,i(d,0))}else{var h=0==l(a.getCursor("to"),r),v=!a.somethingSelected();a.replaceRange(g,r),h&&a.setSelection(v?r:a.getCursor("from"),r),a.replaceRange(f,e)}}))}}else(o.lineComment||m.lineComment)&&0!=o.fullLines&&a.lineComment(e,r,o)})),e.defineExtension("uncomment",(function(e,l,r){r||(r=n);var o,a=this,m=c(a,e),f=Math.min(0!=l.ch||l.line==e.line?l.line:l.line-1,a.lastLine()),g=Math.min(e.line,f),s=r.lineComment||m.lineComment,u=[],d=null==r.padding?" ":r.padding;e:if(s){for(var h=g;h<=f;++h){var v=a.getLine(h),p=v.indexOf(s);if(p>-1&&!/comment/.test(a.getTokenTypeAt(i(h,p+1)))&&(p=-1),-1==p&&t.test(v)||p>-1&&t.test(v.slice(0,p)))break e;u.push(v)}if(a.operation((function(){for(var e=g;e<=f;++e){var n=u[e-g],t=n.indexOf(s),l=t+s.length;t<0||(n.slice(l,l+d.length)==d&&(l+=d.length),o=!0,a.replaceRange("",i(e,t),i(e,l)))}})),o)return!0}var b=r.blockCommentStart||m.blockCommentStart,C=r.blockCommentEnd||m.blockCommentEnd;if(!b||!C)return!1;var k=r.blockCommentLead||m.blockCommentLead,L=a.getLine(g),O=L.indexOf(b);if(-1==O)return!1;var x=f==g?L:a.getLine(f),y=x.indexOf(C,f==g?O+b.length:0),S=i(g,O+1),R=i(f,y+1);if(-1==y||!/comment/.test(a.getTokenTypeAt(S))||!/comment/.test(a.getTokenTypeAt(R))||a.getRange(S,R,"\n").indexOf(C)>-1)return!1;var T=L.lastIndexOf(b,e.ch),M=-1==T?-1:L.slice(0,e.ch).indexOf(C,T+b.length);if(-1!=T&&-1!=M&&M+C.length!=e.ch)return!1;M=x.indexOf(C,l.ch);var A=x.slice(l.ch).lastIndexOf(b,M-l.ch);return T=-1==M||-1==A?-1:l.ch+A,(-1==M||-1==T||T==l.ch)&&(a.operation((function(){a.replaceRange("",i(f,y-(d&&x.slice(y-d.length,y)==d?d.length:0)),i(f,y+C.length));var e=O+b.length;if(d&&L.slice(e,e+d.length)==d&&(e+=d.length),a.replaceRange("",i(g,O),i(g,e)),k)for(var n=g+1;n<=f;++n){var l=a.getLine(n),r=l.indexOf(k);if(-1!=r&&!t.test(l.slice(0,r))){var o=r+k.length;d&&l.slice(o,o+d.length)==d&&(o+=d.length),a.replaceRange("",i(n,r),i(n,o))}}})),!0)}))}((0,i.r)());var a={},c=o({__proto__:null,default:(0,i.g)(a)},[a])}}]); -//# sourceMappingURL=942.b2e283cd.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/942.b2e283cd.chunk.js.map b/serv/web/build/static/js/942.b2e283cd.chunk.js.map deleted file mode 100644 index c80788b3..00000000 --- a/serv/web/build/static/js/942.b2e283cd.chunk.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"static/js/942.b2e283cd.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/comment/comment.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var noOptions = {};\n var nonWS = /[^\\s\\u00a0]/;\n var Pos = CodeMirror.Pos, cmp = CodeMirror.cmpPos;\n\n function firstNonWS(str) {\n var found = str.search(nonWS);\n return found == -1 ? 0 : found;\n }\n\n CodeMirror.commands.toggleComment = function(cm) {\n cm.toggleComment();\n };\n\n CodeMirror.defineExtension(\"toggleComment\", function(options) {\n if (!options) options = noOptions;\n var cm = this;\n var minLine = Infinity, ranges = this.listSelections(), mode = null;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var from = ranges[i].from(), to = ranges[i].to();\n if (from.line >= minLine) continue;\n if (to.line >= minLine) to = Pos(minLine, 0);\n minLine = from.line;\n if (mode == null) {\n if (cm.uncomment(from, to, options)) mode = \"un\";\n else { cm.lineComment(from, to, options); mode = \"line\"; }\n } else if (mode == \"un\") {\n cm.uncomment(from, to, options);\n } else {\n cm.lineComment(from, to, options);\n }\n }\n });\n\n // Rough heuristic to try and detect lines that are part of multi-line string\n function probablyInsideString(cm, pos, line) {\n return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line)\n }\n\n function getMode(cm, pos) {\n var mode = cm.getMode()\n return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos)\n }\n\n CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var firstLine = self.getLine(from.line);\n if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n\n var commentString = options.lineComment || mode.lineComment;\n if (!commentString) {\n if (options.blockCommentStart || mode.blockCommentStart) {\n options.fullLines = true;\n self.blockComment(from, to, options);\n }\n return;\n }\n\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n var pad = options.padding == null ? \" \" : options.padding;\n var blankLines = options.commentBlankLines || from.line == to.line;\n\n self.operation(function() {\n if (options.indent) {\n var baseString = null;\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i);\n var whitespace = line.slice(0, firstNonWS(line));\n if (baseString == null || baseString.length > whitespace.length) {\n baseString = whitespace;\n }\n }\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i), cut = baseString.length;\n if (!blankLines && !nonWS.test(line)) continue;\n if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n }\n } else {\n for (var i = from.line; i < end; ++i) {\n if (blankLines || nonWS.test(self.getLine(i)))\n self.replaceRange(commentString + pad, Pos(i, 0));\n }\n }\n });\n });\n\n CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) {\n if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n self.lineComment(from, to, options);\n return;\n }\n if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return\n\n var end = Math.min(to.line, self.lastLine());\n if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n var pad = options.padding == null ? \" \" : options.padding;\n if (from.line > end) return;\n\n self.operation(function() {\n if (options.fullLines != false) {\n var lastLineHasText = nonWS.test(self.getLine(end));\n self.replaceRange(pad + endString, Pos(end));\n self.replaceRange(startString + pad, Pos(from.line, 0));\n var lead = options.blockCommentLead || mode.blockCommentLead;\n if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n if (i != end || lastLineHasText)\n self.replaceRange(lead + pad, Pos(i, 0));\n } else {\n var atCursor = cmp(self.getCursor(\"to\"), to) == 0, empty = !self.somethingSelected()\n self.replaceRange(endString, to);\n if (atCursor) self.setSelection(empty ? to : self.getCursor(\"from\"), to)\n self.replaceRange(startString, from);\n }\n });\n });\n\n CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n // Try finding line comments\n var lineString = options.lineComment || mode.lineComment, lines = [];\n var pad = options.padding == null ? \" \" : options.padding, didSomething;\n lineComment: {\n if (!lineString) break lineComment;\n for (var i = start; i <= end; ++i) {\n var line = self.getLine(i);\n var found = line.indexOf(lineString);\n if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n if (found == -1 && nonWS.test(line)) break lineComment;\n if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n lines.push(line);\n }\n self.operation(function() {\n for (var i = start; i <= end; ++i) {\n var line = lines[i - start];\n var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n if (pos < 0) continue;\n if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n didSomething = true;\n self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n }\n });\n if (didSomething) return true;\n }\n\n // Try block comments\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) return false;\n var lead = options.blockCommentLead || mode.blockCommentLead;\n var startLine = self.getLine(start), open = startLine.indexOf(startString)\n if (open == -1) return false\n var endLine = end == start ? startLine : self.getLine(end)\n var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)\n if (close == -1 ||\n !/comment/.test(self.getTokenTypeAt(insideStart)) ||\n !/comment/.test(self.getTokenTypeAt(insideEnd)) ||\n self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1)\n return false;\n\n // Avoid killing block comments completely outside the selection.\n // Positions of the last startString before the start of the selection, and the first endString after it.\n var lastStart = startLine.lastIndexOf(startString, from.ch);\n var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n // Positions of the first endString after the end of the selection, and the last startString before it.\n firstEnd = endLine.indexOf(endString, to.ch);\n var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n self.operation(function() {\n self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n Pos(end, close + endString.length));\n var openEnd = open + startString.length;\n if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n if (lead) for (var i = start + 1; i <= end; ++i) {\n var line = self.getLine(i), found = line.indexOf(lead);\n if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n var foundEnd = found + lead.length;\n if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n }\n });\n return true;\n });\n});\n"],"names":["CodeMirror","noOptions","nonWS","Pos","cmp","cmpPos","firstNonWS","str","found","search","probablyInsideString","cm","pos","line","test","getTokenTypeAt","getMode","mode","useInnerComments","innerMode","getModeAt","__name","commands","toggleComment","defineExtension","options","this","minLine","ranges","listSelections","i","length","from","to","uncomment","lineComment","self","firstLine","getLine","commentString","blockCommentStart","fullLines","blockComment","end","Math","min","ch","lastLine","pad","padding","blankLines","commentBlankLines","operation","indent","baseString","whitespace","slice","cut","replaceRange","startString","endString","blockCommentEnd","lastLineHasText","lead","blockCommentLead","atCursor","getCursor","empty","somethingSelected","setSelection","didSomething","start","lineString","lines","indexOf","push","endPos","startLine","open","endLine","close","insideStart","insideEnd","getRange","lastStart","lastIndexOf","firstEnd","almostLastStart","openEnd","foundEnd","mod","require$$0"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/942.dd41bf7c.chunk.js b/serv/web/build/static/js/942.dd41bf7c.chunk.js new file mode 100644 index 00000000..b64bf5b8 --- /dev/null +++ b/serv/web/build/static/js/942.dd41bf7c.chunk.js @@ -0,0 +1,2 @@ +"use strict";(self.webpackChunkweb_ui=self.webpackChunkweb_ui||[]).push([[942],{1942:(e,n,t)=>{t.r(n),t.d(n,{c:()=>c});var i=t(8308),l=Object.defineProperty,o=(e,n)=>l(e,"name",{value:n,configurable:!0});function r(e,n){for(var t=0;ti[n]})}}return Object.freeze(Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}))}o(r,"_mergeNamespaces");!function(e){var n={},t=/[^\s\u00a0]/,i=e.Pos,l=e.cmpPos;function r(e){var n=e.search(t);return-1==n?0:n}function a(e,n,t){return/\bstring\b/.test(e.getTokenTypeAt(i(n.line,0)))&&!/^[\'\"\`]/.test(t)}function c(e,n){var t=e.getMode();return!1!==t.useInnerComments&&t.innerMode?e.getModeAt(n):t}o(r,"firstNonWS"),e.commands.toggleComment=function(e){e.toggleComment()},e.defineExtension("toggleComment",(function(e){e||(e=n);for(var t=this,l=1/0,o=this.listSelections(),r=null,a=o.length-1;a>=0;a--){var c=o[a].from(),m=o[a].to();c.line>=l||(m.line>=l&&(m=i(l,0)),l=c.line,null==r?t.uncomment(c,m,e)?r="un":(t.lineComment(c,m,e),r="line"):"un"==r?t.uncomment(c,m,e):t.lineComment(c,m,e))}})),o(a,"probablyInsideString"),o(c,"getMode"),e.defineExtension("lineComment",(function(e,l,o){o||(o=n);var m=this,g=c(m,e),s=m.getLine(e.line);if(null!=s&&!a(m,e,s)){var f=o.lineComment||g.lineComment;if(!f)return void((o.blockCommentStart||g.blockCommentStart)&&(o.fullLines=!0,m.blockComment(e,l,o)));var u=Math.min(0!=l.ch||l.line==e.line?l.line+1:l.line,m.lastLine()+1),d=null==o.padding?" ":o.padding,h=o.commentBlankLines||e.line==l.line;m.operation((function(){if(o.indent){for(var n=null,l=e.line;la.length)&&(n=a)}for(l=e.line;lf||a.operation((function(){if(0!=r.fullLines){var n=t.test(a.getLine(f));a.replaceRange(u+s,i(f)),a.replaceRange(g+u,i(e.line,0));var c=r.blockCommentLead||m.blockCommentLead;if(null!=c)for(var d=e.line+1;d<=f;++d)(d!=f||n)&&a.replaceRange(c+u,i(d,0))}else{var h=0==l(a.getCursor("to"),o),p=!a.somethingSelected();a.replaceRange(s,o),h&&a.setSelection(p?o:a.getCursor("from"),o),a.replaceRange(g,e)}}))}}else(r.lineComment||m.lineComment)&&0!=r.fullLines&&a.lineComment(e,o,r)})),e.defineExtension("uncomment",(function(e,l,o){o||(o=n);var r,a=this,m=c(a,e),g=Math.min(0!=l.ch||l.line==e.line?l.line:l.line-1,a.lastLine()),s=Math.min(e.line,g),f=o.lineComment||m.lineComment,u=[],d=null==o.padding?" ":o.padding;e:if(f){for(var h=s;h<=g;++h){var p=a.getLine(h),v=p.indexOf(f);if(v>-1&&!/comment/.test(a.getTokenTypeAt(i(h,v+1)))&&(v=-1),-1==v&&t.test(p)||v>-1&&t.test(p.slice(0,v)))break e;u.push(p)}if(a.operation((function(){for(var e=s;e<=g;++e){var n=u[e-s],t=n.indexOf(f),l=t+f.length;t<0||(n.slice(l,l+d.length)==d&&(l+=d.length),r=!0,a.replaceRange("",i(e,t),i(e,l)))}})),r)return!0}var b=o.blockCommentStart||m.blockCommentStart,C=o.blockCommentEnd||m.blockCommentEnd;if(!b||!C)return!1;var k=o.blockCommentLead||m.blockCommentLead,L=a.getLine(s),O=L.indexOf(b);if(-1==O)return!1;var x=g==s?L:a.getLine(g),y=x.indexOf(C,g==s?O+b.length:0),S=i(s,O+1),R=i(g,y+1);if(-1==y||!/comment/.test(a.getTokenTypeAt(S))||!/comment/.test(a.getTokenTypeAt(R))||a.getRange(S,R,"\n").indexOf(C)>-1)return!1;var T=L.lastIndexOf(b,e.ch),M=-1==T?-1:L.slice(0,e.ch).indexOf(C,T+b.length);if(-1!=T&&-1!=M&&M+C.length!=e.ch)return!1;M=x.indexOf(C,l.ch);var A=x.slice(l.ch).lastIndexOf(b,M-l.ch);return T=-1==M||-1==A?-1:l.ch+A,(-1==M||-1==T||T==l.ch)&&(a.operation((function(){a.replaceRange("",i(g,y-(d&&x.slice(y-d.length,y)==d?d.length:0)),i(g,y+C.length));var e=O+b.length;if(d&&L.slice(e,e+d.length)==d&&(e+=d.length),a.replaceRange("",i(s,O),i(s,e)),k)for(var n=s+1;n<=g;++n){var l=a.getLine(n),o=l.indexOf(k);if(-1!=o&&!t.test(l.slice(0,o))){var r=o+k.length;d&&l.slice(r,r+d.length)==d&&(r+=d.length),a.replaceRange("",i(n,o),i(n,r))}}})),!0)}))}((0,i.r)());var a={};const c=r({__proto__:null,default:(0,i.g)(a)},[a])}}]); +//# sourceMappingURL=942.dd41bf7c.chunk.js.map \ No newline at end of file diff --git a/serv/web/build/static/js/942.dd41bf7c.chunk.js.map b/serv/web/build/static/js/942.dd41bf7c.chunk.js.map new file mode 100644 index 00000000..602fc903 --- /dev/null +++ b/serv/web/build/static/js/942.dd41bf7c.chunk.js.map @@ -0,0 +1 @@ +{"version":3,"file":"static/js/942.dd41bf7c.chunk.js","mappings":"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","sources":["../node_modules/node_modules/codemirror/addon/comment/comment.js"],"sourcesContent":["// CodeMirror, copyright (c) by Marijn Haverbeke and others\n// Distributed under an MIT license: https://codemirror.net/LICENSE\n\n(function(mod) {\n if (typeof exports == \"object\" && typeof module == \"object\") // CommonJS\n mod(require(\"../../lib/codemirror\"));\n else if (typeof define == \"function\" && define.amd) // AMD\n define([\"../../lib/codemirror\"], mod);\n else // Plain browser env\n mod(CodeMirror);\n})(function(CodeMirror) {\n \"use strict\";\n\n var noOptions = {};\n var nonWS = /[^\\s\\u00a0]/;\n var Pos = CodeMirror.Pos, cmp = CodeMirror.cmpPos;\n\n function firstNonWS(str) {\n var found = str.search(nonWS);\n return found == -1 ? 0 : found;\n }\n\n CodeMirror.commands.toggleComment = function(cm) {\n cm.toggleComment();\n };\n\n CodeMirror.defineExtension(\"toggleComment\", function(options) {\n if (!options) options = noOptions;\n var cm = this;\n var minLine = Infinity, ranges = this.listSelections(), mode = null;\n for (var i = ranges.length - 1; i >= 0; i--) {\n var from = ranges[i].from(), to = ranges[i].to();\n if (from.line >= minLine) continue;\n if (to.line >= minLine) to = Pos(minLine, 0);\n minLine = from.line;\n if (mode == null) {\n if (cm.uncomment(from, to, options)) mode = \"un\";\n else { cm.lineComment(from, to, options); mode = \"line\"; }\n } else if (mode == \"un\") {\n cm.uncomment(from, to, options);\n } else {\n cm.lineComment(from, to, options);\n }\n }\n });\n\n // Rough heuristic to try and detect lines that are part of multi-line string\n function probablyInsideString(cm, pos, line) {\n return /\\bstring\\b/.test(cm.getTokenTypeAt(Pos(pos.line, 0))) && !/^[\\'\\\"\\`]/.test(line)\n }\n\n function getMode(cm, pos) {\n var mode = cm.getMode()\n return mode.useInnerComments === false || !mode.innerMode ? mode : cm.getModeAt(pos)\n }\n\n CodeMirror.defineExtension(\"lineComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var firstLine = self.getLine(from.line);\n if (firstLine == null || probablyInsideString(self, from, firstLine)) return;\n\n var commentString = options.lineComment || mode.lineComment;\n if (!commentString) {\n if (options.blockCommentStart || mode.blockCommentStart) {\n options.fullLines = true;\n self.blockComment(from, to, options);\n }\n return;\n }\n\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line + 1 : to.line, self.lastLine() + 1);\n var pad = options.padding == null ? \" \" : options.padding;\n var blankLines = options.commentBlankLines || from.line == to.line;\n\n self.operation(function() {\n if (options.indent) {\n var baseString = null;\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i);\n var whitespace = line.slice(0, firstNonWS(line));\n if (baseString == null || baseString.length > whitespace.length) {\n baseString = whitespace;\n }\n }\n for (var i = from.line; i < end; ++i) {\n var line = self.getLine(i), cut = baseString.length;\n if (!blankLines && !nonWS.test(line)) continue;\n if (line.slice(0, cut) != baseString) cut = firstNonWS(line);\n self.replaceRange(baseString + commentString + pad, Pos(i, 0), Pos(i, cut));\n }\n } else {\n for (var i = from.line; i < end; ++i) {\n if (blankLines || nonWS.test(self.getLine(i)))\n self.replaceRange(commentString + pad, Pos(i, 0));\n }\n }\n });\n });\n\n CodeMirror.defineExtension(\"blockComment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) {\n if ((options.lineComment || mode.lineComment) && options.fullLines != false)\n self.lineComment(from, to, options);\n return;\n }\n if (/\\bcomment\\b/.test(self.getTokenTypeAt(Pos(from.line, 0)))) return\n\n var end = Math.min(to.line, self.lastLine());\n if (end != from.line && to.ch == 0 && nonWS.test(self.getLine(end))) --end;\n\n var pad = options.padding == null ? \" \" : options.padding;\n if (from.line > end) return;\n\n self.operation(function() {\n if (options.fullLines != false) {\n var lastLineHasText = nonWS.test(self.getLine(end));\n self.replaceRange(pad + endString, Pos(end));\n self.replaceRange(startString + pad, Pos(from.line, 0));\n var lead = options.blockCommentLead || mode.blockCommentLead;\n if (lead != null) for (var i = from.line + 1; i <= end; ++i)\n if (i != end || lastLineHasText)\n self.replaceRange(lead + pad, Pos(i, 0));\n } else {\n var atCursor = cmp(self.getCursor(\"to\"), to) == 0, empty = !self.somethingSelected()\n self.replaceRange(endString, to);\n if (atCursor) self.setSelection(empty ? to : self.getCursor(\"from\"), to)\n self.replaceRange(startString, from);\n }\n });\n });\n\n CodeMirror.defineExtension(\"uncomment\", function(from, to, options) {\n if (!options) options = noOptions;\n var self = this, mode = getMode(self, from);\n var end = Math.min(to.ch != 0 || to.line == from.line ? to.line : to.line - 1, self.lastLine()), start = Math.min(from.line, end);\n\n // Try finding line comments\n var lineString = options.lineComment || mode.lineComment, lines = [];\n var pad = options.padding == null ? \" \" : options.padding, didSomething;\n lineComment: {\n if (!lineString) break lineComment;\n for (var i = start; i <= end; ++i) {\n var line = self.getLine(i);\n var found = line.indexOf(lineString);\n if (found > -1 && !/comment/.test(self.getTokenTypeAt(Pos(i, found + 1)))) found = -1;\n if (found == -1 && nonWS.test(line)) break lineComment;\n if (found > -1 && nonWS.test(line.slice(0, found))) break lineComment;\n lines.push(line);\n }\n self.operation(function() {\n for (var i = start; i <= end; ++i) {\n var line = lines[i - start];\n var pos = line.indexOf(lineString), endPos = pos + lineString.length;\n if (pos < 0) continue;\n if (line.slice(endPos, endPos + pad.length) == pad) endPos += pad.length;\n didSomething = true;\n self.replaceRange(\"\", Pos(i, pos), Pos(i, endPos));\n }\n });\n if (didSomething) return true;\n }\n\n // Try block comments\n var startString = options.blockCommentStart || mode.blockCommentStart;\n var endString = options.blockCommentEnd || mode.blockCommentEnd;\n if (!startString || !endString) return false;\n var lead = options.blockCommentLead || mode.blockCommentLead;\n var startLine = self.getLine(start), open = startLine.indexOf(startString)\n if (open == -1) return false\n var endLine = end == start ? startLine : self.getLine(end)\n var close = endLine.indexOf(endString, end == start ? open + startString.length : 0);\n var insideStart = Pos(start, open + 1), insideEnd = Pos(end, close + 1)\n if (close == -1 ||\n !/comment/.test(self.getTokenTypeAt(insideStart)) ||\n !/comment/.test(self.getTokenTypeAt(insideEnd)) ||\n self.getRange(insideStart, insideEnd, \"\\n\").indexOf(endString) > -1)\n return false;\n\n // Avoid killing block comments completely outside the selection.\n // Positions of the last startString before the start of the selection, and the first endString after it.\n var lastStart = startLine.lastIndexOf(startString, from.ch);\n var firstEnd = lastStart == -1 ? -1 : startLine.slice(0, from.ch).indexOf(endString, lastStart + startString.length);\n if (lastStart != -1 && firstEnd != -1 && firstEnd + endString.length != from.ch) return false;\n // Positions of the first endString after the end of the selection, and the last startString before it.\n firstEnd = endLine.indexOf(endString, to.ch);\n var almostLastStart = endLine.slice(to.ch).lastIndexOf(startString, firstEnd - to.ch);\n lastStart = (firstEnd == -1 || almostLastStart == -1) ? -1 : to.ch + almostLastStart;\n if (firstEnd != -1 && lastStart != -1 && lastStart != to.ch) return false;\n\n self.operation(function() {\n self.replaceRange(\"\", Pos(end, close - (pad && endLine.slice(close - pad.length, close) == pad ? pad.length : 0)),\n Pos(end, close + endString.length));\n var openEnd = open + startString.length;\n if (pad && startLine.slice(openEnd, openEnd + pad.length) == pad) openEnd += pad.length;\n self.replaceRange(\"\", Pos(start, open), Pos(start, openEnd));\n if (lead) for (var i = start + 1; i <= end; ++i) {\n var line = self.getLine(i), found = line.indexOf(lead);\n if (found == -1 || nonWS.test(line.slice(0, found))) continue;\n var foundEnd = found + lead.length;\n if (pad && line.slice(foundEnd, foundEnd + pad.length) == pad) foundEnd += pad.length;\n self.replaceRange(\"\", Pos(i, found), Pos(i, foundEnd));\n }\n });\n return true;\n });\n});\n"],"names":["u","C","s","r","Pos","B","cmpPos","N","t","l","search","F","n","test","getTokenTypeAt","line","P","getMode","useInnerComments","innerMode","getModeAt","I","commands","toggleComment","defineExtension","this","e","listSelections","f","m","length","a","from","i","to","uncomment","lineComment","getLine","blockCommentStart","fullLines","blockComment","Math","min","ch","lastLine","k","padding","g","commentBlankLines","operation","indent","d","c","h","v","slice","o","replaceRange","blockCommentEnd","blockCommentLead","getCursor","somethingSelected","setSelection","indexOf","push","b","x","p","L","S","D","A","j","_","y","W","$","getRange","R","lastIndexOf","T","q","M","H"],"sourceRoot":""} \ No newline at end of file diff --git a/serv/web/build/static/js/main.6166934a.js b/serv/web/build/static/js/main.6166934a.js deleted file mode 100644 index 4af0d302..00000000 --- a/serv/web/build/static/js/main.6166934a.js +++ /dev/null @@ -1,3 +0,0 @@ -/*! For license information please see main.6166934a.js.LICENSE.txt */ -!function(){var e={4056:function(e,t,n){"use strict";Object.defineProperty(t,"__esModule",{value:!0});var r="function"===typeof Symbol&&"symbol"===typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"===typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(e,t){if(Array.isArray(e))return e;if(Symbol.iterator in Object(e))return function(e,t){var n=[],r=!0,i=!1,o=void 0;try{for(var a,u=e[Symbol.iterator]();!(r=(a=u.next()).done)&&(n.push(a.value),!t||n.length!==t);r=!0);}catch(s){i=!0,o=s}finally{try{!r&&u.return&&u.return()}finally{if(i)throw o}}return n}(e,t);throw new TypeError("Invalid attempt to destructure non-iterable instance")},o=Object.assign||function(e){for(var t=1;t0?""+t+a:t;var l=r.type.toString(),f={kind:"VariableDefinition",variable:{kind:"Variable",name:{kind:"Name",value:u}},type:(0,s.parseType)(l),directives:[]},d=void 0,p={};if("undefined"!==typeof n&&null!==n){var v=(0,s.visit)(n,{Variable:function(t){var n,r=t.name.value,i=(n=r,(e.props.definition.variableDefinitions||[]).find((function(e){return e.variable.name.value===n})));if(p[r]=p[r]+1||1,i)return i.defaultValue}}),h="NonNullType"===f.type.kind?o({},f,{type:f.type.type}):f;d=o({},h,{defaultValue:v})}else d=f;var m=Object.entries(p).filter((function(e){var t=i(e,2);t[0];return t[1]<2})).map((function(e){var t=i(e,2),n=t[0];t[1];return n}));if(d){var y=e.props.setArgValue(d,!1);if(y){var g=y.definitions.find((function(t){return!!(t.operation&&t.name&&t.name.value&&e.props.definition.name&&e.props.definition.name.value)&&t.name.value===e.props.definition.name.value})),b=[].concat(c(g.variableDefinitions||[]),[d]).filter((function(e){return-1===m.indexOf(e.variable.name.value)})),E=o({},g,{variableDefinitions:b}),x=y.definitions.map((function(e){return g===e?E:e})),k=o({},y,{definitions:x});e.props.onCommit(k)}}},v=n&&"Variable"===n.kind,h=this.state.displayArgActions?u.createElement("button",{type:"submit",className:"toolbar-button",title:v?"Remove the variable":"Extract the current value into a GraphQL variable",onClick:function(t){t.preventDefault(),t.stopPropagation(),v?function(){if(n&&n.name&&n.name.value){var t=n.name.value,r=(e.props.definition.variableDefinitions||[]).find((function(e){return e.variable.name.value===t}));if(r){var i=r.defaultValue,a=e.props.setArgValue(i,{commit:!1});if(a){var u=a.definitions.find((function(t){return t.name.value===e.props.definition.name.value}));if(!u)return;var l=0;(0,s.visit)(u,{Variable:function(e){e.name.value===t&&(l+=1)}});var c=u.variableDefinitions||[];l<2&&(c=c.filter((function(e){return e.variable.name.value!==t})));var f=o({},u,{variableDefinitions:c}),d=a.definitions.map((function(e){return u===e?f:e})),p=o({},a,{definitions:d});e.props.onCommit(p)}}}}():p()},style:a.styles.actionButtonStyle},u.createElement("span",{style:{color:a.colors.variable}},"$")):null;return u.createElement("div",{style:{cursor:"pointer",minHeight:"16px",WebkitUserSelect:"none",userSelect:"none"},"data-arg-name":r.name,"data-arg-type":l.name,className:"graphiql-explorer-"+r.name},u.createElement("span",{style:{cursor:"pointer"},onClick:function(t){var r=!n;r?e.props.addArg(!0):e.props.removeArg(!0),e.setState({displayArgActions:r})}},(0,s.isInputObjectType)(l)?u.createElement("span",null,n?this.props.styleConfig.arrowOpen:this.props.styleConfig.arrowClosed):u.createElement(E,{checked:!!n,styleConfig:this.props.styleConfig}),u.createElement("span",{style:{color:a.colors.attribute},title:r.description,onMouseEnter:function(){null!==n&&"undefined"!==typeof n&&e.setState({displayArgActions:!0})},onMouseLeave:function(){return e.setState({displayArgActions:!1})}},r.name,k(r)?"*":"",": ",h," ")," "),f||u.createElement("span",null)," ")}}]),t}(u.PureComponent),L=function(e){function t(){var e,n,r;f(this,t);for(var i=arguments.length,o=Array(i),a=0;a0&&e.setState({displayFieldActions:!0})},onMouseLeave:function(){return e.setState({displayFieldActions:!1})}},(0,s.isObjectType)(d)?u.createElement("span",null,f?this.props.styleConfig.arrowOpen:this.props.styleConfig.arrowClosed):null,(0,s.isObjectType)(d)?null:u.createElement(E,{checked:!!f,styleConfig:this.props.styleConfig}),u.createElement("span",{style:{color:l.colors.property},className:"graphiql-explorer-field-view"},r.name),this.state.displayFieldActions?u.createElement("button",{type:"submit",className:"toolbar-button",title:"Extract selections into a new reusable fragment",onClick:function(t){t.preventDefault(),t.stopPropagation();var n=d.name+"Fragment",r=(h||[]).filter((function(e){return e.name.value.startsWith(n)})).length;r>0&&(n=""+n+r);var i=f&&f.selectionSet?f.selectionSet.selections:[],a=[{kind:"FragmentSpread",name:{kind:"Name",value:n},directives:[]}],u={kind:"FragmentDefinition",name:{kind:"Name",value:n},typeCondition:{kind:"NamedType",name:{kind:"Name",value:d.name}},directives:[],selectionSet:{kind:"SelectionSet",selections:i}},s=e._modifyChildSelections(a,!1);if(s){var l=o({},s,{definitions:[].concat(c(s.definitions),[u])});e.props.onCommit(l)}else console.warn("Unable to complete extractFragment operation")},style:o({},l.styles.actionButtonStyle)},u.createElement("span",null,"\u2026")):null),f&&p.length?u.createElement("div",{style:{marginLeft:16},className:"graphiql-explorer-graphql-arguments"},p.map((function(t){return u.createElement(N,{key:t.name,parentField:r,arg:t,selection:f,modifyArguments:e._setArguments,getDefaultScalarArgValue:e.props.getDefaultScalarArgValue,makeDefaultArg:e.props.makeDefaultArg,onRunOperation:e.props.onRunOperation,styleConfig:e.props.styleConfig,onCommit:e.props.onCommit,definition:e.props.definition})}))):null);if(f&&((0,s.isObjectType)(d)||(0,s.isInterfaceType)(d)||(0,s.isUnionType)(d))){var y=(0,s.isUnionType)(d)?{}:d.getFields(),g=f&&f.selectionSet?f.selectionSet.selections:[];return u.createElement("div",{className:"graphiql-explorer-"+r.name},m,u.createElement("div",{style:{marginLeft:16}},h?h.map((function(t){var n=i.getType(t.typeCondition.name.value),r=t.name.value;return n?u.createElement(R,{key:r,fragment:t,selections:g,modifySelections:e._modifyChildSelections,schema:i,styleConfig:e.props.styleConfig,onCommit:e.props.onCommit}):null})):null,Object.keys(y).sort().map((function(n){return u.createElement(t,{key:n,field:y[n],selections:g,modifySelections:e._modifyChildSelections,schema:i,getDefaultFieldNames:a,getDefaultScalarArgValue:e.props.getDefaultScalarArgValue,makeDefaultArg:e.props.makeDefaultArg,onRunOperation:e.props.onRunOperation,styleConfig:e.props.styleConfig,onCommit:e.props.onCommit,definition:e.props.definition,availableFragments:e.props.availableFragments})})),(0,s.isInterfaceType)(d)||(0,s.isUnionType)(d)?i.getPossibleTypes(d).map((function(t){return u.createElement(L,{key:t.name,implementingType:t,selections:g,modifySelections:e._modifyChildSelections,schema:i,getDefaultFieldNames:a,getDefaultScalarArgValue:e.props.getDefaultScalarArgValue,makeDefaultArg:e.props.makeDefaultArg,onRunOperation:e.props.onRunOperation,styleConfig:e.props.styleConfig,onCommit:e.props.onCommit,definition:e.props.definition})})):null))}return m}}]),t}(u.PureComponent);var j={kind:"Document",definitions:[{kind:"OperationDefinition",operation:"query",variableDefinitions:[],name:{kind:"Name",value:"MyQuery"},directives:[],selectionSet:{kind:"SelectionSet",selections:[]}}]},Z=null;function V(e){if(Z&&Z[0]===e)return Z[1];var t=function(e){try{return e.trim()?(0,s.parse)(e,{noLocation:!0}):null}catch(t){return new Error(t)}}(e);return t?t instanceof Error?Z?Z[1]:j:(Z=[e,t],t):j}var U={buttonStyle:{fontSize:"1.2em",padding:"0px",backgroundColor:"white",border:"none",margin:"5px 0px",height:"40px",width:"100%",display:"block",maxWidth:"none"},actionButtonStyle:{padding:"0px",backgroundColor:"white",border:"none",margin:"0px",maxWidth:"none",height:"15px",width:"15px",display:"inline-block",fontSize:"smaller"},explorerActionsStyle:{margin:"4px -8px -8px",paddingLeft:"8px",bottom:"0px",width:"100%",textAlign:"center",background:"none",borderTop:"none",borderBottom:"none"}},B=function(e){function t(){var e,n,r;f(this,t);for(var i=arguments.length,a=Array(i),u=0;u0&&(i.arguments=n),i},e.is=function(e){var t=e;return Re.defined(t)&&Re.string(t.title)&&Re.string(t.command)}}(x||(x={})),function(e){e.replace=function(e,t){return{range:e,newText:t}},e.insert=function(e,t){return{range:{start:e,end:e},newText:t}},e.del=function(e){return{range:e,newText:""}},e.is=function(e){var t=e;return Re.objectLiteral(t)&&Re.string(t.newText)&&s.is(t.range)}}(k||(k={})),function(e){e.create=function(e,t,n){var r={label:e};return void 0!==t&&(r.needsConfirmation=t),void 0!==n&&(r.description=n),r},e.is=function(e){var t=e;return Re.objectLiteral(t)&&Re.string(t.label)&&(Re.boolean(t.needsConfirmation)||void 0===t.needsConfirmation)&&(Re.string(t.description)||void 0===t.description)}}(w||(w={})),function(e){e.is=function(e){var t=e;return Re.string(t)}}(T||(T={})),function(e){e.replace=function(e,t,n){return{range:e,newText:t,annotationId:n}},e.insert=function(e,t,n){return{range:{start:e,end:e},newText:t,annotationId:n}},e.del=function(e,t){return{range:e,newText:"",annotationId:t}},e.is=function(e){var t=e;return k.is(t)&&(w.is(t.annotationId)||T.is(t.annotationId))}}(_||(_={})),function(e){e.create=function(e,t){return{textDocument:e,edits:t}},e.is=function(e){var t=e;return Re.defined(t)&&q.is(t.textDocument)&&Array.isArray(t.edits)}}(S||(S={})),function(e){e.create=function(e,t,n){var r={kind:"create",uri:e};return void 0===t||void 0===t.overwrite&&void 0===t.ignoreIfExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){var t=e;return t&&"create"===t.kind&&Re.string(t.uri)&&(void 0===t.options||(void 0===t.options.overwrite||Re.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Re.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||T.is(t.annotationId))}}(C||(C={})),function(e){e.create=function(e,t,n,r){var i={kind:"rename",oldUri:e,newUri:t};return void 0===n||void 0===n.overwrite&&void 0===n.ignoreIfExists||(i.options=n),void 0!==r&&(i.annotationId=r),i},e.is=function(e){var t=e;return t&&"rename"===t.kind&&Re.string(t.oldUri)&&Re.string(t.newUri)&&(void 0===t.options||(void 0===t.options.overwrite||Re.boolean(t.options.overwrite))&&(void 0===t.options.ignoreIfExists||Re.boolean(t.options.ignoreIfExists)))&&(void 0===t.annotationId||T.is(t.annotationId))}}(N||(N={})),function(e){e.create=function(e,t,n){var r={kind:"delete",uri:e};return void 0===t||void 0===t.recursive&&void 0===t.ignoreIfNotExists||(r.options=t),void 0!==n&&(r.annotationId=n),r},e.is=function(e){var t=e;return t&&"delete"===t.kind&&Re.string(t.uri)&&(void 0===t.options||(void 0===t.options.recursive||Re.boolean(t.options.recursive))&&(void 0===t.options.ignoreIfNotExists||Re.boolean(t.options.ignoreIfNotExists)))&&(void 0===t.annotationId||T.is(t.annotationId))}}(I||(I={})),function(e){e.is=function(e){var t=e;return t&&(void 0!==t.changes||void 0!==t.documentChanges)&&(void 0===t.documentChanges||t.documentChanges.every((function(e){return Re.string(e.kind)?C.is(e)||N.is(e)||I.is(e):S.is(e)})))}}(A||(A={}));var U,B,q,z,H,G,Q,W,X,Y,K,$,J,ee,te,ne,re,ie,oe,ae,ue,se,le,ce,fe,de,pe,ve,he,me,ye,ge,be,Ee,xe,ke,we,Te,_e,Se,Ce,Ne,Ie,Ae,Oe=function(){function e(e,t){this.edits=e,this.changeAnnotations=t}return e.prototype.insert=function(e,t,n){var r,i;if(void 0===n?r=k.insert(e,t):T.is(n)?(i=n,r=_.insert(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(n),r=_.insert(e,t,i)),this.edits.push(r),void 0!==i)return i},e.prototype.replace=function(e,t,n){var r,i;if(void 0===n?r=k.replace(e,t):T.is(n)?(i=n,r=_.replace(e,t,n)):(this.assertChangeAnnotations(this.changeAnnotations),i=this.changeAnnotations.manage(n),r=_.replace(e,t,i)),this.edits.push(r),void 0!==i)return i},e.prototype.delete=function(e,t){var n,r;if(void 0===t?n=k.del(e):T.is(t)?(r=t,n=_.del(e,t)):(this.assertChangeAnnotations(this.changeAnnotations),r=this.changeAnnotations.manage(t),n=_.del(e,r)),this.edits.push(n),void 0!==r)return r},e.prototype.add=function(e){this.edits.push(e)},e.prototype.all=function(){return this.edits},e.prototype.clear=function(){this.edits.splice(0,this.edits.length)},e.prototype.assertChangeAnnotations=function(e){if(void 0===e)throw new Error("Text edit change is not configured to manage change annotations.")},e}(),De=function(){function e(e){this._annotations=void 0===e?Object.create(null):e,this._counter=0,this._size=0}return e.prototype.all=function(){return this._annotations},Object.defineProperty(e.prototype,"size",{get:function(){return this._size},enumerable:!1,configurable:!0}),e.prototype.manage=function(e,t){var n;if(T.is(e)?n=e:(n=this.nextId(),t=e),void 0!==this._annotations[n])throw new Error("Id ".concat(n," is already in use."));if(void 0===t)throw new Error("No annotation provided for id ".concat(n));return this._annotations[n]=t,this._size++,n},e.prototype.nextId=function(){return this._counter++,this._counter.toString()},e}();!function(){function e(e){var t=this;this._textEditChanges=Object.create(null),void 0!==e?(this._workspaceEdit=e,e.documentChanges?(this._changeAnnotations=new De(e.changeAnnotations),e.changeAnnotations=this._changeAnnotations.all(),e.documentChanges.forEach((function(e){if(S.is(e)){var n=new Oe(e.edits,t._changeAnnotations);t._textEditChanges[e.textDocument.uri]=n}}))):e.changes&&Object.keys(e.changes).forEach((function(n){var r=new Oe(e.changes[n]);t._textEditChanges[n]=r}))):this._workspaceEdit={}}Object.defineProperty(e.prototype,"edit",{get:function(){return this.initDocumentChanges(),void 0!==this._changeAnnotations&&(0===this._changeAnnotations.size?this._workspaceEdit.changeAnnotations=void 0:this._workspaceEdit.changeAnnotations=this._changeAnnotations.all()),this._workspaceEdit},enumerable:!1,configurable:!0}),e.prototype.getTextEditChange=function(e){if(q.is(e)){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var t={uri:e.uri,version:e.version};if(!(r=this._textEditChanges[t.uri])){var n={textDocument:t,edits:i=[]};this._workspaceEdit.documentChanges.push(n),r=new Oe(i,this._changeAnnotations),this._textEditChanges[t.uri]=r}return r}if(this.initChanges(),void 0===this._workspaceEdit.changes)throw new Error("Workspace edit is not configured for normal text edit changes.");var r;if(!(r=this._textEditChanges[e])){var i=[];this._workspaceEdit.changes[e]=i,r=new Oe(i),this._textEditChanges[e]=r}return r},e.prototype.initDocumentChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._changeAnnotations=new De,this._workspaceEdit.documentChanges=[],this._workspaceEdit.changeAnnotations=this._changeAnnotations.all())},e.prototype.initChanges=function(){void 0===this._workspaceEdit.documentChanges&&void 0===this._workspaceEdit.changes&&(this._workspaceEdit.changes=Object.create(null))},e.prototype.createFile=function(e,t,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var r,i,o;if(w.is(t)||T.is(t)?r=t:n=t,void 0===r?i=C.create(e,n):(o=T.is(r)?r:this._changeAnnotations.manage(r),i=C.create(e,n,o)),this._workspaceEdit.documentChanges.push(i),void 0!==o)return o},e.prototype.renameFile=function(e,t,n,r){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var i,o,a;if(w.is(n)||T.is(n)?i=n:r=n,void 0===i?o=N.create(e,t,r):(a=T.is(i)?i:this._changeAnnotations.manage(i),o=N.create(e,t,r,a)),this._workspaceEdit.documentChanges.push(o),void 0!==a)return a},e.prototype.deleteFile=function(e,t,n){if(this.initDocumentChanges(),void 0===this._workspaceEdit.documentChanges)throw new Error("Workspace edit is not configured for document changes.");var r,i,o;if(w.is(t)||T.is(t)?r=t:n=t,void 0===r?i=I.create(e,n):(o=T.is(r)?r:this._changeAnnotations.manage(r),i=I.create(e,n,o)),this._workspaceEdit.documentChanges.push(i),void 0!==o)return o}}();!function(e){e.create=function(e){return{uri:e}},e.is=function(e){var t=e;return Re.defined(t)&&Re.string(t.uri)}}(U||(U={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){var t=e;return Re.defined(t)&&Re.string(t.uri)&&Re.integer(t.version)}}(B||(B={})),function(e){e.create=function(e,t){return{uri:e,version:t}},e.is=function(e){var t=e;return Re.defined(t)&&Re.string(t.uri)&&(null===t.version||Re.integer(t.version))}}(q||(q={})),function(e){e.create=function(e,t,n,r){return{uri:e,languageId:t,version:n,text:r}},e.is=function(e){var t=e;return Re.defined(t)&&Re.string(t.uri)&&Re.string(t.languageId)&&Re.integer(t.version)&&Re.string(t.text)}}(z||(z={})),function(e){e.PlainText="plaintext",e.Markdown="markdown",e.is=function(t){var n=t;return n===e.PlainText||n===e.Markdown}}(H||(H={})),function(e){e.is=function(e){var t=e;return Re.objectLiteral(e)&&H.is(t.kind)&&Re.string(t.value)}}(G||(G={})),function(e){e.Text=1,e.Method=2,e.Function=3,e.Constructor=4,e.Field=5,e.Variable=6,e.Class=7,e.Interface=8,e.Module=9,e.Property=10,e.Unit=11,e.Value=12,e.Enum=13,e.Keyword=14,e.Snippet=15,e.Color=16,e.File=17,e.Reference=18,e.Folder=19,e.EnumMember=20,e.Constant=21,e.Struct=22,e.Event=23,e.Operator=24,e.TypeParameter=25}(Q||(Q={})),function(e){e.PlainText=1,e.Snippet=2}(W||(W={})),function(e){e.Deprecated=1}(X||(X={})),function(e){e.create=function(e,t,n){return{newText:e,insert:t,replace:n}},e.is=function(e){var t=e;return t&&Re.string(t.newText)&&s.is(t.insert)&&s.is(t.replace)}}(Y||(Y={})),function(e){e.asIs=1,e.adjustIndentation=2}(K||(K={})),function(e){e.is=function(e){var t=e;return t&&(Re.string(t.detail)||void 0===t.detail)&&(Re.string(t.description)||void 0===t.description)}}($||($={})),function(e){e.create=function(e){return{label:e}}}(J||(J={})),function(e){e.create=function(e,t){return{items:e||[],isIncomplete:!!t}}}(ee||(ee={})),function(e){e.fromPlainText=function(e){return e.replace(/[\\`*_{}[\]()#+\-.!]/g,"\\$&")},e.is=function(e){var t=e;return Re.string(t)||Re.objectLiteral(t)&&Re.string(t.language)&&Re.string(t.value)}}(te||(te={})),function(e){e.is=function(e){var t=e;return!!t&&Re.objectLiteral(t)&&(G.is(t.contents)||te.is(t.contents)||Re.typedArray(t.contents,te.is))&&(void 0===e.range||s.is(e.range))}}(ne||(ne={})),function(e){e.create=function(e,t){return t?{label:e,documentation:t}:{label:e}}}(re||(re={})),function(e){e.create=function(e,t){for(var n=[],r=2;r=0;a--){var u=i[a],s=e.offsetAt(u.range.start),l=e.offsetAt(u.range.end);if(!(l<=o))throw new Error("Overlapping edit");r=r.substring(0,s)+u.newText+r.substring(l,r.length),o=s}return r}}(Le||(Le={}));var Re,Fe=function(){function e(e,t,n,r){this._uri=e,this._languageId=t,this._version=n,this._content=r,this._lineOffsets=void 0}return Object.defineProperty(e.prototype,"uri",{get:function(){return this._uri},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"languageId",{get:function(){return this._languageId},enumerable:!1,configurable:!0}),Object.defineProperty(e.prototype,"version",{get:function(){return this._version},enumerable:!1,configurable:!0}),e.prototype.getText=function(e){if(e){var t=this.offsetAt(e.start),n=this.offsetAt(e.end);return this._content.substring(t,n)}return this._content},e.prototype.update=function(e,t){this._content=e.text,this._version=t,this._lineOffsets=void 0},e.prototype.getLineOffsets=function(){if(void 0===this._lineOffsets){for(var e=[],t=this._content,n=!0,r=0;r0&&e.push(t.length),this._lineOffsets=e}return this._lineOffsets},e.prototype.positionAt=function(e){e=Math.max(Math.min(e,this._content.length),0);var t=this.getLineOffsets(),n=0,r=t.length;if(0===r)return u.create(0,e);for(;ne?r=i:n=i+1}var o=n-1;return u.create(o,e-t[o])},e.prototype.offsetAt=function(e){var t=this.getLineOffsets();if(e.line>=t.length)return this._content.length;if(e.line<0)return 0;var n=t[e.line],r=e.line+11&&void 0!==arguments[1])||arguments[1],r=arguments.length>2&&void 0!==arguments[2]&&arguments[2],i=null,o=null;if("string"===typeof e){var a=new RegExp(e,r?"i":"g");o=a.test(n._sourceText.slice(n._pos,n._pos+e.length)),i=e}else e instanceof RegExp&&(i=null===(o=n._sourceText.slice(n._pos).match(e))||void 0===o?void 0:o[0]);return!(null==o||!("string"===typeof e||o instanceof Array&&n._sourceText.startsWith(o[0],n._pos)))&&(t&&(n._start=n._pos,i&&i.length&&(n._pos+=i.length)),o)},this.backUp=function(e){n._pos-=e},this.column=function(){return n._pos},this.indentation=function(){var e=n._sourceText.match(/\s*/),t=0;if(e&&0!==e.length)for(var r=e[0],i=0;r.length>i;)9===r.charCodeAt(i)?t+=2:t++,i++;return t},this.current=function(){return n._sourceText.slice(n._start,n._pos)},this._start=0,this._pos=0,this._sourceText=t}return(0,Ze.Z)(e,[{key:"_testNextCharacter",value:function(e){var t=this._sourceText.charAt(this._pos);return"string"===typeof e?t===e:e instanceof RegExp?e.test(t):e(t)}}]),e}(),Ue=n(4942);function Be(e){return{ofRule:e}}function qe(e,t){return{ofRule:e,isList:!0,separator:t}}function ze(e,t){return{style:t,match:function(t){return t.kind===e}}}function He(e,t){return{style:t||"punctuation",match:function(t){return"Punctuation"===t.kind&&t.value===e}}}var Ge,Qe=function(e){return" "===e||"\t"===e||","===e||"\n"===e||"\r"===e||"\ufeff"===e||"\xa0"===e},We={Name:/^[_A-Za-z][_0-9A-Za-z]*/,Punctuation:/^(?:!|\$|\(|\)|\.\.\.|:|=|&|@|\[|]|\{|\||\})/,Number:/^-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]*)?(?:[eE][+-]?[0-9]+)?/,String:/^(?:"""(?:\\"""|[^"]|"[^"]|""[^"])*(?:""")?|"(?:[^"\\]|\\(?:"|\/|\\|b|f|n|r|t|u[0-9a-fA-F]{4}))*"?)/,Comment:/^#.*/},Xe=(Me={Document:[qe("Definition")],Definition:function(e){switch(e.value){case"{":return"ShortQuery";case"query":return"Query";case"mutation":return"Mutation";case"subscription":return"Subscription";case"fragment":return F.h.FRAGMENT_DEFINITION;case"schema":return"SchemaDef";case"scalar":return"ScalarDef";case"type":return"ObjectTypeDef";case"interface":return"InterfaceDef";case"union":return"UnionDef";case"enum":return"EnumDef";case"input":return"InputDef";case"extend":return"ExtendDef";case"directive":return"DirectiveDef"}},ShortQuery:["SelectionSet"],Query:[Ye("query"),Be(Ke("def")),Be("VariableDefinitions"),qe("Directive"),"SelectionSet"],Mutation:[Ye("mutation"),Be(Ke("def")),Be("VariableDefinitions"),qe("Directive"),"SelectionSet"],Subscription:[Ye("subscription"),Be(Ke("def")),Be("VariableDefinitions"),qe("Directive"),"SelectionSet"],VariableDefinitions:[He("("),qe("VariableDefinition"),He(")")],VariableDefinition:["Variable",He(":"),"Type",Be("DefaultValue")],Variable:[He("$","variable"),Ke("variable")],DefaultValue:[He("="),"Value"],SelectionSet:[He("{"),qe("Selection"),He("}")],Selection:function(e,t){return"..."===e.value?t.match(/[\s\u00a0,]*(on\b|@|{)/,!1)?"InlineFragment":"FragmentSpread":t.match(/[\s\u00a0,]*:/,!1)?"AliasedField":"Field"},AliasedField:[Ke("property"),He(":"),Ke("qualifier"),Be("Arguments"),qe("Directive"),Be("SelectionSet")],Field:[Ke("property"),Be("Arguments"),qe("Directive"),Be("SelectionSet")],Arguments:[He("("),qe("Argument"),He(")")],Argument:[Ke("attribute"),He(":"),"Value"],FragmentSpread:[He("..."),Ke("def"),qe("Directive")],InlineFragment:[He("..."),Be("TypeCondition"),qe("Directive"),"SelectionSet"],FragmentDefinition:[Ye("fragment"),Be(function(e,t){var n=e.match;return e.match=function(e){var r=!1;return n&&(r=n(e)),r&&t.every((function(t){return t.match&&!t.match(e)}))},e}(Ke("def"),[Ye("on")])),"TypeCondition",qe("Directive"),"SelectionSet"],TypeCondition:[Ye("on"),"NamedType"],Value:function(e){switch(e.kind){case"Number":return"NumberValue";case"String":return"StringValue";case"Punctuation":switch(e.value){case"[":return"ListValue";case"{":return"ObjectValue";case"$":return"Variable";case"&":return"NamedType"}return null;case"Name":switch(e.value){case"true":case"false":return"BooleanValue"}return"null"===e.value?"NullValue":"EnumValue"}},NumberValue:[ze("Number","number")],StringValue:[{style:"string",match:function(e){return"String"===e.kind},update:function(e,t){t.value.startsWith('"""')&&(e.inBlockstring=!t.value.slice(3).endsWith('"""'))}}],BooleanValue:[ze("Name","builtin")],NullValue:[ze("Name","keyword")],EnumValue:[Ke("string-2")],ListValue:[He("["),qe("Value"),He("]")],ObjectValue:[He("{"),qe("ObjectField"),He("}")],ObjectField:[Ke("attribute"),He(":"),"Value"],Type:function(e){return"["===e.value?"ListType":"NonNullType"},ListType:[He("["),"Type",He("]"),Be(He("!"))],NonNullType:["NamedType",Be(He("!"))],NamedType:[(Ge="atom",{style:Ge,match:function(e){return"Name"===e.kind},update:function(e,t){var n;(null===(n=e.prevState)||void 0===n?void 0:n.prevState)&&(e.name=t.value,e.prevState.prevState.type=t.value)}})],Directive:[He("@","meta"),Ke("meta"),Be("Arguments")],DirectiveDef:[Ye("directive"),He("@","meta"),Ke("meta"),Be("ArgumentsDef"),Ye("on"),qe("DirectiveLocation",He("|"))],InterfaceDef:[Ye("interface"),Ke("atom"),Be("Implements"),qe("Directive"),He("{"),qe("FieldDef"),He("}")],Implements:[Ye("implements"),qe("NamedType",He("&"))],DirectiveLocation:[Ke("string-2")],SchemaDef:[Ye("schema"),qe("Directive"),He("{"),qe("OperationTypeDef"),He("}")],OperationTypeDef:[Ke("keyword"),He(":"),Ke("atom")],ScalarDef:[Ye("scalar"),Ke("atom"),qe("Directive")],ObjectTypeDef:[Ye("type"),Ke("atom"),Be("Implements"),qe("Directive"),He("{"),qe("FieldDef"),He("}")],FieldDef:[Ke("property"),Be("ArgumentsDef"),He(":"),"Type",qe("Directive")],ArgumentsDef:[He("("),qe("InputValueDef"),He(")")],InputValueDef:[Ke("attribute"),He(":"),"Type",Be("DefaultValue"),qe("Directive")],UnionDef:[Ye("union"),Ke("atom"),qe("Directive"),He("="),qe("UnionMember",He("|"))],UnionMember:["NamedType"],EnumDef:[Ye("enum"),Ke("atom"),qe("Directive"),He("{"),qe("EnumValueDef"),He("}")],EnumValueDef:[Ke("string-2"),qe("Directive")],InputDef:[Ye("input"),Ke("atom"),qe("Directive"),He("{"),qe("InputValueDef"),He("}")],ExtendDef:[Ye("extend"),"ExtensionDefinition"],ExtensionDefinition:function(e){switch(e.value){case"schema":return F.h.SCHEMA_EXTENSION;case"scalar":return F.h.SCALAR_TYPE_EXTENSION;case"type":return F.h.OBJECT_TYPE_EXTENSION;case"interface":return F.h.INTERFACE_TYPE_EXTENSION;case"union":return F.h.UNION_TYPE_EXTENSION;case"enum":return F.h.ENUM_TYPE_EXTENSION;case"input":return F.h.INPUT_OBJECT_TYPE_EXTENSION}}},(0,Ue.Z)(Me,F.h.SCHEMA_EXTENSION,["SchemaDef"]),(0,Ue.Z)(Me,F.h.SCALAR_TYPE_EXTENSION,["ScalarDef"]),(0,Ue.Z)(Me,F.h.OBJECT_TYPE_EXTENSION,["ObjectTypeDef"]),(0,Ue.Z)(Me,F.h.INTERFACE_TYPE_EXTENSION,["InterfaceDef"]),(0,Ue.Z)(Me,F.h.UNION_TYPE_EXTENSION,["UnionDef"]),(0,Ue.Z)(Me,F.h.ENUM_TYPE_EXTENSION,["EnumDef"]),(0,Ue.Z)(Me,F.h.INPUT_OBJECT_TYPE_EXTENSION,["InputDef"]),Me);function Ye(e){return{style:"keyword",match:function(t){return"Name"===t.kind&&t.value===e}}}function Ke(e){return{style:e,match:function(e){return"Name"===e.kind},update:function(e,t){e.name=t.value}}}function $e(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{eatWhitespace:function(e){return e.eatWhile(Qe)},lexRules:We,parseRules:Xe,editorConfig:{}};return{startState:function(){var t={level:0,step:0,name:null,kind:null,type:null,rule:null,needsSeparator:!1,prevState:null};return nt(e.parseRules,t,F.h.DOCUMENT),t},token:function(t,n){return Je(t,n,e)}}}function Je(e,t,n){var r;if(t.inBlockstring)return e.match(/.*"""/)?(t.inBlockstring=!1,"string"):(e.skipToEnd(),"string");var i=n.lexRules,o=n.parseRules,a=n.eatWhitespace,u=n.editorConfig;if(t.rule&&0===t.rule.length?rt(t):t.needsAdvance&&(t.needsAdvance=!1,it(t,!0)),e.sol()){var s=(null===u||void 0===u?void 0:u.tabSize)||2;t.indentLevel=Math.floor(e.indentation()/s)}if(a(e))return"ws";var l=function(e,t){for(var n=Object.keys(e),r=0;r0&&f.at(-1)=0;i--)t(n[i])}function ct(e){for(var t=Object.keys(e),n=t.length,r=new Array(n),i=0;i1&&r>1&&e[n-1]===t[r-2]&&e[n-2]===t[r-1]&&(i[n][r]=Math.min(i[n][r],i[n-2][r-2]+u))}return i[o][a]}(t,e);return e.length>t.length&&(n-=e.length-t.length-1,n+=0===e.indexOf(t)?0:.5),n}var ht={command:"editor.action.triggerSuggest",title:"Suggestions"},mt=[F.h.SCHEMA_DEFINITION,F.h.OPERATION_TYPE_DEFINITION,F.h.SCALAR_TYPE_DEFINITION,F.h.OBJECT_TYPE_DEFINITION,F.h.INTERFACE_TYPE_DEFINITION,F.h.UNION_TYPE_DEFINITION,F.h.ENUM_TYPE_DEFINITION,F.h.INPUT_OBJECT_TYPE_DEFINITION,F.h.DIRECTIVE_DEFINITION,F.h.SCHEMA_EXTENSION,F.h.SCALAR_TYPE_EXTENSION,F.h.OBJECT_TYPE_EXTENSION,F.h.INTERFACE_TYPE_EXTENSION,F.h.UNION_TYPE_EXTENSION,F.h.ENUM_TYPE_EXTENSION,F.h.INPUT_OBJECT_TYPE_EXTENSION];function yt(e,t,n,r,i,o){var a,u=Object.assign(Object.assign({},o),{schema:e}),s=r||function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:0,r=null,i=null,o=null,a=xt(e,(function(e,a,u,s){if(s===t.line&&e.getCurrentPosition()+n>=t.character+1)return r=u,i=Object.assign({},a),o=e.current(),"BREAK"}));return{start:a.start,end:a.end,string:o||a.string,state:i||a.state,style:r||a.style}}(t,n,1),l="Invalid"===s.state.kind?s.state.prevState:s.state,c=(null===o||void 0===o?void 0:o.mode)||function(e,t){if(null===t||void 0===t?void 0:t.endsWith(".graphqls"))return bt.TYPE_SYSTEM;return function(e){var t=!1;if(e)try{(0,L.Vn)((0,R.Qc)(e),{enter:function(e){if("Document"!==e.kind)return!!mt.includes(e.kind)&&(t=!0,L.$_)}})}catch(a){return t}return t}(e)?bt.TYPE_SYSTEM:bt.EXECUTABLE}(t,null===o||void 0===o?void 0:o.uri);if(!l)return[];var f=l.kind,d=l.step,p=l.prevState,v=function(e,t){var n,r,i,o,a,u,s,l,c,f,d;return lt(t,(function(t){var p;switch(t.kind){case ut.QUERY:case"ShortQuery":f=e.getQueryType();break;case ut.MUTATION:f=e.getMutationType();break;case ut.SUBSCRIPTION:f=e.getSubscriptionType();break;case ut.INLINE_FRAGMENT:case ut.FRAGMENT_DEFINITION:t.type&&(f=e.getType(t.type));break;case ut.FIELD:case ut.ALIASED_FIELD:f&&t.name?(a=c?st(e,c,t.name):null,f=a?a.type:null):a=null;break;case ut.SELECTION_SET:c=(0,P.xC)(f);break;case ut.DIRECTIVE:i=t.name?e.getDirective(t.name):null;break;case ut.INTERFACE_DEF:t.name&&(s=null,d=new P.oW({name:t.name,interfaces:[],fields:{}}));break;case ut.OBJECT_TYPE_DEF:t.name&&(d=null,s=new P.h6({name:t.name,interfaces:[],fields:{}}));break;case ut.ARGUMENTS:if(t.prevState)switch(t.prevState.kind){case ut.FIELD:r=a&&a.args;break;case ut.DIRECTIVE:r=i&&i.args;break;case ut.ALIASED_FIELD:var v=null===(p=t.prevState)||void 0===p?void 0:p.name;if(!v){r=null;break}var h=c?st(e,c,v):null;if(!h){r=null;break}r=h.args;break;default:r=null}else r=null;break;case ut.ARGUMENT:if(r)for(var m=0;m0&&u.push.apply(u,(0,D.Z)(i));var s=u.filter((function(e){return o[e.typeCondition.name.value]&&!(a&&a.kind===ut.FRAGMENT_DEFINITION&&a.name===e.name.value)&&(0,P.Gv)(t.parentType)&&(0,P.Gv)(o[e.typeCondition.name.value])&&(0,Z.zR)(n,t.parentType,o[e.typeCondition.name.value])}));return ft(e,s.map((function(e){return{label:e.name.value,detail:String(o[e.typeCondition.name.value]),documentation:"fragment ".concat(e.name.value," on ").concat(e.typeCondition.name.value),kind:Pe.Field,type:o[e.typeCondition.name.value]}})))}(s,v,e,t,Array.isArray(i)?i:function(e){var t=[];if(e)try{(0,L.Vn)((0,R.Qc)(e),{FragmentDefinition:function(e){t.push(e)}})}catch(a){return[]}return t}(i));var b=kt(l);if(c===bt.TYPE_SYSTEM&&!b.needsAdvance&&f===ut.NAMED_TYPE||f===ut.LIST_TYPE){if(b.kind===ut.FIELD_DEF)return ft(s,Object.values(e.getTypeMap()).filter((function(e){return(0,P.SZ)(e)&&!e.name.startsWith("__")})).map((function(e){return{label:e.name,kind:Pe.Function}})));if(b.kind===ut.INPUT_VALUE_DEF)return ft(s,Object.values(e.getTypeMap()).filter((function(e){return(0,P.j$)(e)&&!e.name.startsWith("__")})).map((function(e){return{label:e.name,kind:Pe.Function}})))}return f===ut.VARIABLE_DEFINITION&&2===d||f===ut.LIST_TYPE&&1===d||f===ut.NAMED_TYPE&&p&&(p.kind===ut.VARIABLE_DEFINITION||p.kind===ut.LIST_TYPE||p.kind===ut.NON_NULL_TYPE)?function(e,t,n){var r=t.getTypeMap(),i=ct(r).filter(P.j$);return ft(e,i.map((function(e){return{label:e.name,documentation:e.description,kind:Pe.Variable}})))}(s,e):f===ut.DIRECTIVE?function(e,t,n,r){var i;if(null===(i=t.prevState)||void 0===i?void 0:i.kind){var o=n.getDirectives().filter((function(e){return function(e,t){if(!(null===e||void 0===e?void 0:e.kind))return!1;var n=e.kind,r=e.prevState,i=t.locations;switch(n){case ut.QUERY:return i.includes(V.B.QUERY);case ut.MUTATION:return i.includes(V.B.MUTATION);case ut.SUBSCRIPTION:return i.includes(V.B.SUBSCRIPTION);case ut.FIELD:case ut.ALIASED_FIELD:return i.includes(V.B.FIELD);case ut.FRAGMENT_DEFINITION:return i.includes(V.B.FRAGMENT_DEFINITION);case ut.FRAGMENT_SPREAD:return i.includes(V.B.FRAGMENT_SPREAD);case ut.INLINE_FRAGMENT:return i.includes(V.B.INLINE_FRAGMENT);case ut.SCHEMA_DEF:return i.includes(V.B.SCHEMA);case ut.SCALAR_DEF:return i.includes(V.B.SCALAR);case ut.OBJECT_TYPE_DEF:return i.includes(V.B.OBJECT);case ut.FIELD_DEF:return i.includes(V.B.FIELD_DEFINITION);case ut.INTERFACE_DEF:return i.includes(V.B.INTERFACE);case ut.UNION_DEF:return i.includes(V.B.UNION);case ut.ENUM_DEF:return i.includes(V.B.ENUM);case ut.ENUM_VALUE:return i.includes(V.B.ENUM_VALUE);case ut.INPUT_DEF:return i.includes(V.B.INPUT_OBJECT);case ut.INPUT_VALUE_DEF:switch(null===r||void 0===r?void 0:r.kind){case ut.ARGUMENTS_DEF:return i.includes(V.B.ARGUMENT_DEFINITION);case ut.INPUT_DEF:return i.includes(V.B.INPUT_FIELD_DEFINITION)}}return!1}(t.prevState,e)}));return ft(e,o.map((function(e){return{label:e.name,documentation:e.description||"",kind:Pe.Function}})))}return[]}(s,l,e):[]}var gt=" {\n $1\n}";var bt;function Et(e,t,n){var r,i=null,o=Object.create({});return xt(e,(function(e,a){if((null===a||void 0===a?void 0:a.kind)===ut.VARIABLE&&a.name&&(i=a.name),(null===a||void 0===a?void 0:a.kind)===ut.NAMED_TYPE&&i){var u=function(e,t){var n,r,i,o,a,u,s,l,c,f;return(null===(n=e.prevState)||void 0===n?void 0:n.kind)===t?e.prevState:(null===(i=null===(r=e.prevState)||void 0===r?void 0:r.prevState)||void 0===i?void 0:i.kind)===t?e.prevState.prevState:(null===(u=null===(a=null===(o=e.prevState)||void 0===o?void 0:o.prevState)||void 0===a?void 0:a.prevState)||void 0===u?void 0:u.kind)===t?e.prevState.prevState.prevState:(null===(f=null===(c=null===(l=null===(s=e.prevState)||void 0===s?void 0:s.prevState)||void 0===l?void 0:l.prevState)||void 0===c?void 0:c.prevState)||void 0===f?void 0:f.kind)===t?e.prevState.prevState.prevState.prevState:void 0}(a,ut.TYPE);(null===u||void 0===u?void 0:u.type)&&(r=t.getType(null===u||void 0===u?void 0:u.type))}i&&r&&!o[i]&&(o[i]={detail:r.toString(),insertText:"$"===n.string?i:"$"+i,label:i,type:r,kind:Pe.Variable},i=null,r=null)})),ct(o)}function xt(e,t){for(var n=e.split("\n"),r=$e(),i=r.startState(),o="",a=new Ve(""),u=0;u=e.character:r.start.line<=e.line&&r.end.line>=e.line},this.start=t,this.end=n}return(0,Ze.Z)(e,[{key:"setStart",value:function(e,t){this.start=new Ct(e,t)}},{key:"setEnd",value:function(e,t){this.end=new Ct(e,t)}}]),e}(),Ct=function(){function e(t,n){var r=this;(0,je.Z)(this,e),this.lessThanOrEqualTo=function(e){return r.line1&&void 0!==arguments[1]?arguments[1]:null,i=arguments.length>2?arguments[2]:void 0,o=arguments.length>3?arguments[3]:void 0,a=arguments.length>4?arguments[4]:void 0,u=null,s="";a&&(s="string"===typeof a?a:a.reduce((function(e,t){return e+(0,$t.S)(t)+"\n\n"}),""));var l=s?"".concat(e,"\n\n").concat(s):e;try{u=(0,R.Qc)(l)}catch(f){if(f instanceof Jt.__){var c=fn(null!==(n=null===(t=f.locations)||void 0===t?void 0:t[0])&&void 0!==n?n:{line:0,column:0},l);return[{severity:an.Error,message:f.message,source:"GraphQL: Syntax",range:c}]}throw f}return ln(u,r,i,o)}function ln(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=arguments.length>2?arguments[2]:void 0,r=arguments.length>3?arguments[3]:void 0;if(!t)return[];var i=Gt(t,e,n,r).flatMap((function(e){return cn(e,an.Error,"Validation")})),o=(0,zt.Gu)(t,e,[en.r]).flatMap((function(e){return cn(e,an.Warning,"Deprecation")}));return i.concat(o)}function cn(e,t,n){if(!e.nodes)return[];var r,i=[],o=(0,O.Z)(e.nodes.entries());try{for(o.s();!(r=o.n()).done;){var a=(0,Kt.Z)(r.value,2),u=a[0],s=a[1],l="Variable"!==s.kind&&"name"in s&&void 0!==s.name?s.name:"variable"in s&&void 0!==s.variable?s.variable:s;if(l){un(e.locations,"GraphQL validation error requires locations.");var c=e.locations[u],f=dn(l),d=c.column+(f.end-f.start);i.push({source:"GraphQL: ".concat(n),message:e.message,severity:t,range:new St(new Ct(c.line-1,c.column-1),new Ct(c.line-1,d))})}}}catch(p){o.e(p)}finally{o.f()}return i}function fn(e,t){var n=$e(),r=n.startState(),i=t.split("\n");un(i.length>=e.line,"Query text must have more lines than where the error happened");for(var o=null,a=0;a=3&&":"===e[t-3]||t>=3&&"/"===e[t-3]?0:r.match(n.re.no_http)[0].length:0}},"mailto:":{validate:function(e,t,n){var r=e.slice(t);return n.re.mailto||(n.re.mailto=new RegExp("^"+n.re.src_email_name+"@"+n.re.src_host_strict,"i")),n.re.mailto.test(r)?r.match(n.re.mailto)[0].length:0}}},l="biz|com|edu|gov|net|org|pro|web|xxx|aero|asia|coop|info|museum|name|shop|\u0440\u0444".split("|");function c(e){var t=e.re=n(1875)(e.__opts__),r=e.__tlds__.slice();function u(e){return e.replace("%TLDS%",t.src_tlds)}e.onCompile(),e.__tlds_replaced__||r.push("a[cdefgilmnoqrstuwxz]|b[abdefghijmnorstvwyz]|c[acdfghiklmnoruvwxyz]|d[ejkmoz]|e[cegrstu]|f[ijkmor]|g[abdefghilmnpqrstuwy]|h[kmnrtu]|i[delmnoqrst]|j[emop]|k[eghimnprwyz]|l[abcikrstuvy]|m[acdeghklmnopqrstuvwxyz]|n[acefgilopruz]|om|p[aefghklmnrstwy]|qa|r[eosuw]|s[abcdeghijklmnortuvxyz]|t[cdfghjklmnortvwz]|u[agksyz]|v[aceginu]|w[fs]|y[et]|z[amw]"),r.push(t.src_xn),t.src_tlds=r.join("|"),t.email_fuzzy=RegExp(u(t.tpl_email_fuzzy),"i"),t.link_fuzzy=RegExp(u(t.tpl_link_fuzzy),"i"),t.link_no_ip_fuzzy=RegExp(u(t.tpl_link_no_ip_fuzzy),"i"),t.host_fuzzy_test=RegExp(u(t.tpl_host_fuzzy_test),"i");var s=[];function l(e,t){throw new Error('(LinkifyIt) Invalid schema "'+e+'": '+t)}e.__compiled__={},Object.keys(e.__schemas__).forEach((function(t){var n=e.__schemas__[t];if(null!==n){var r={validate:null,link:null};if(e.__compiled__[t]=r,"[object Object]"===i(n))return!function(e){return"[object RegExp]"===i(e)}(n.validate)?o(n.validate)?r.validate=n.validate:l(t,n):r.validate=function(e){return function(t,n){var r=t.slice(n);return e.test(r)?r.match(e)[0].length:0}}(n.validate),void(o(n.normalize)?r.normalize=n.normalize:n.normalize?l(t,n):r.normalize=function(e,t){t.normalize(e)});!function(e){return"[object String]"===i(e)}(n)?l(t,n):s.push(t)}})),s.forEach((function(t){e.__compiled__[e.__schemas__[t]]&&(e.__compiled__[t].validate=e.__compiled__[e.__schemas__[t]].validate,e.__compiled__[t].normalize=e.__compiled__[e.__schemas__[t]].normalize)})),e.__compiled__[""]={validate:null,normalize:function(e,t){t.normalize(e)}};var c=Object.keys(e.__compiled__).filter((function(t){return t.length>0&&e.__compiled__[t]})).map(a).join("|");e.re.schema_test=RegExp("(^|(?!_)(?:[><\uff5c]|"+t.src_ZPCc+"))("+c+")","i"),e.re.schema_search=RegExp("(^|(?!_)(?:[><\uff5c]|"+t.src_ZPCc+"))("+c+")","ig"),e.re.pretest=RegExp("("+e.re.schema_test.source+")|("+e.re.host_fuzzy_test.source+")|@","i"),function(e){e.__index__=-1,e.__text_cache__=""}(e)}function f(e,t){var n=e.__index__,r=e.__last_index__,i=e.__text_cache__.slice(n,r);this.schema=e.__schema__.toLowerCase(),this.index=n+t,this.lastIndex=r+t,this.raw=i,this.text=i,this.url=i}function d(e,t){var n=new f(e,t);return e.__compiled__[n.schema].normalize(n,e),n}function p(e,t){if(!(this instanceof p))return new p(e,t);var n;t||(n=e,Object.keys(n||{}).reduce((function(e,t){return e||u.hasOwnProperty(t)}),!1)&&(t=e,e={})),this.__opts__=r({},u,t),this.__index__=-1,this.__last_index__=-1,this.__schema__="",this.__text_cache__="",this.__schemas__=r({},s,e),this.__compiled__={},this.__tlds__=l,this.__tlds_replaced__=!1,this.re={},c(this)}p.prototype.add=function(e,t){return this.__schemas__[e]=t,c(this),this},p.prototype.set=function(e){return this.__opts__=r(this.__opts__,e),this},p.prototype.test=function(e){if(this.__text_cache__=e,this.__index__=-1,!e.length)return!1;var t,n,r,i,o,a,u,s;if(this.re.schema_test.test(e))for((u=this.re.schema_search).lastIndex=0;null!==(t=u.exec(e));)if(i=this.testSchemaAt(e,t[2],u.lastIndex)){this.__schema__=t[2],this.__index__=t.index+t[1].length,this.__last_index__=t.index+t[0].length+i;break}return this.__opts__.fuzzyLink&&this.__compiled__["http:"]&&(s=e.search(this.re.host_fuzzy_test))>=0&&(this.__index__<0||s=0&&null!==(r=e.match(this.re.email_fuzzy))&&(o=r.index+r[1].length,a=r.index+r[0].length,(this.__index__<0||othis.__last_index__)&&(this.__schema__="mailto:",this.__index__=o,this.__last_index__=a)),this.__index__>=0},p.prototype.pretest=function(e){return this.re.pretest.test(e)},p.prototype.testSchemaAt=function(e,t,n){return this.__compiled__[t.toLowerCase()]?this.__compiled__[t.toLowerCase()].validate(e,n,this):0},p.prototype.match=function(e){var t=0,n=[];this.__index__>=0&&this.__text_cache__===e&&(n.push(d(this,t)),t=this.__last_index__);for(var r=t?e.slice(t):e;this.test(r);)n.push(d(this,t)),r=r.slice(this.__last_index__),t+=this.__last_index__;return n.length?n:null},p.prototype.tlds=function(e,t){return e=Array.isArray(e)?e:[e],t?(this.__tlds__=this.__tlds__.concat(e).sort().filter((function(e,t,n){return e!==n[t-1]})).reverse(),c(this),this):(this.__tlds__=e.slice(),this.__tlds_replaced__=!0,c(this),this)},p.prototype.normalize=function(e){e.schema||(e.url="http://"+e.url),"mailto:"!==e.schema||/^mailto:/i.test(e.url)||(e.url="mailto:"+e.url)},p.prototype.onCompile=function(){},e.exports=p},1875:function(e,t,n){"use strict";e.exports=function(e){var t={};t.src_Any=n(5510).source,t.src_Cc=n(538).source,t.src_Z=n(2426).source,t.src_P=n(3741).source,t.src_ZPCc=[t.src_Z,t.src_P,t.src_Cc].join("|"),t.src_ZCc=[t.src_Z,t.src_Cc].join("|");var r="[><\uff5c]";return t.src_pseudo_letter="(?:(?![><\uff5c]|"+t.src_ZPCc+")"+t.src_Any+")",t.src_ip4="(?:(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)",t.src_auth="(?:(?:(?!"+t.src_ZCc+"|[@/\\[\\]()]).)+@)?",t.src_port="(?::(?:6(?:[0-4]\\d{3}|5(?:[0-4]\\d{2}|5(?:[0-2]\\d|3[0-5])))|[1-5]?\\d{1,4}))?",t.src_host_terminator="(?=$|[><\uff5c]|"+t.src_ZPCc+")(?!-|_|:\\d|\\.-|\\.(?!$|"+t.src_ZPCc+"))",t.src_path="(?:[/?#](?:(?!"+t.src_ZCc+"|"+r+"|[()[\\]{}.,\"'?!\\-;]).|\\[(?:(?!"+t.src_ZCc+"|\\]).)*\\]|\\((?:(?!"+t.src_ZCc+"|[)]).)*\\)|\\{(?:(?!"+t.src_ZCc+'|[}]).)*\\}|\\"(?:(?!'+t.src_ZCc+'|["]).)+\\"|\\\'(?:(?!'+t.src_ZCc+"|[']).)+\\'|\\'(?="+t.src_pseudo_letter+"|[-]).|\\.{2,}[a-zA-Z0-9%/&]|\\.(?!"+t.src_ZCc+"|[.]).|"+(e&&e["---"]?"\\-(?!--(?:[^-]|$))(?:-*)|":"\\-+|")+",(?!"+t.src_ZCc+").|;(?!"+t.src_ZCc+").|\\!+(?!"+t.src_ZCc+"|[!]).|\\?(?!"+t.src_ZCc+"|[?]).)+|\\/)?",t.src_email_name='[\\-;:&=\\+\\$,\\.a-zA-Z0-9_][\\-;:&=\\+\\$,\\"\\.a-zA-Z0-9_]*',t.src_xn="xn--[a-z0-9\\-]{1,59}",t.src_domain_root="(?:"+t.src_xn+"|"+t.src_pseudo_letter+"{1,63})",t.src_domain="(?:"+t.src_xn+"|(?:"+t.src_pseudo_letter+")|(?:"+t.src_pseudo_letter+"(?:-|"+t.src_pseudo_letter+"){0,61}"+t.src_pseudo_letter+"))",t.src_host="(?:(?:(?:(?:"+t.src_domain+")\\.)*"+t.src_domain+"))",t.tpl_host_fuzzy="(?:"+t.src_ip4+"|(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%)))",t.tpl_host_no_ip_fuzzy="(?:(?:(?:"+t.src_domain+")\\.)+(?:%TLDS%))",t.src_host_strict=t.src_host+t.src_host_terminator,t.tpl_host_fuzzy_strict=t.tpl_host_fuzzy+t.src_host_terminator,t.src_host_port_strict=t.src_host+t.src_port+t.src_host_terminator,t.tpl_host_port_fuzzy_strict=t.tpl_host_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_port_no_ip_fuzzy_strict=t.tpl_host_no_ip_fuzzy+t.src_port+t.src_host_terminator,t.tpl_host_fuzzy_test="localhost|www\\.|\\.\\d{1,3}\\.|(?:\\.(?:%TLDS%)(?:"+t.src_ZPCc+"|>|$))",t.tpl_email_fuzzy='(^|[><\uff5c]|"|\\(|'+t.src_ZCc+")("+t.src_email_name+"@"+t.tpl_host_fuzzy_strict+")",t.tpl_link_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_fuzzy_strict+t.src_path+")",t.tpl_link_no_ip_fuzzy="(^|(?![.:/\\-_@])(?:[$+<=>^`|\uff5c]|"+t.src_ZPCc+"))((?![$+<=>^`|\uff5c])"+t.tpl_host_port_no_ip_fuzzy_strict+t.src_path+")",t}},3534:function(e,t,n){"use strict";e.exports=n(9890)},1285:function(e,t,n){"use strict";e.exports=n(5485)},1437:function(e){"use strict";e.exports=["address","article","aside","base","basefont","blockquote","body","caption","center","col","colgroup","dd","details","dialog","dir","div","dl","dt","fieldset","figcaption","figure","footer","form","frame","frameset","h1","h2","h3","h4","h5","h6","head","header","hr","html","iframe","legend","li","link","main","menu","menuitem","nav","noframes","ol","optgroup","option","p","param","section","source","summary","table","tbody","td","tfoot","th","thead","title","tr","track","ul"]},3182:function(e){"use strict";var t="<[A-Za-z][A-Za-z0-9\\-]*(?:\\s+[a-zA-Z_:][a-zA-Z0-9:._-]*(?:\\s*=\\s*(?:[^\"'=<>`\\x00-\\x20]+|'[^']*'|\"[^\"]*\"))?)*\\s*\\/?>",n="<\\/[A-Za-z][A-Za-z0-9\\-]*\\s*>",r=new RegExp("^(?:"+t+"|"+n+"|\x3c!----\x3e|\x3c!--(?:-?[^>-])(?:-?[^-])*--\x3e|<[?][\\s\\S]*?[?]>|]*>|)"),i=new RegExp("^(?:"+t+"|"+n+")");e.exports.n=r,e.exports.q=i},786:function(e,t,n){"use strict";var r=Object.prototype.hasOwnProperty;function i(e,t){return r.call(e,t)}function o(e){return!(e>=55296&&e<=57343)&&(!(e>=64976&&e<=65007)&&(65535!==(65535&e)&&65534!==(65535&e)&&(!(e>=0&&e<=8)&&(11!==e&&(!(e>=14&&e<=31)&&(!(e>=127&&e<=159)&&!(e>1114111)))))))}function a(e){if(e>65535){var t=55296+((e-=65536)>>10),n=56320+(1023&e);return String.fromCharCode(t,n)}return String.fromCharCode(e)}var u=/\\([!"#$%&'()*+,\-.\/:;<=>?@[\\\]^_`{|}~])/g,s=new RegExp(u.source+"|"+/&([a-z#][a-z0-9]{1,31});/gi.source,"gi"),l=/^#((?:x[a-f0-9]{1,8}|[0-9]{1,8}))/i,c=n(1285);var f=/[&<>"]/,d=/[&<>"]/g,p={"&":"&","<":"<",">":">",'"':"""};function v(e){return p[e]}var h=/[.?*+^$[\]\\(){}|-]/g;var m=n(3741);t.lib={},t.lib.mdurl=n(3461),t.lib.ucmicro=n(6937),t.assign=function(e){var t=Array.prototype.slice.call(arguments,1);return t.forEach((function(t){if(t){if("object"!==typeof t)throw new TypeError(t+"must be object");Object.keys(t).forEach((function(n){e[n]=t[n]}))}})),e},t.isString=function(e){return"[object String]"===function(e){return Object.prototype.toString.call(e)}(e)},t.has=i,t.unescapeMd=function(e){return e.indexOf("\\")<0?e:e.replace(u,"$1")},t.unescapeAll=function(e){return e.indexOf("\\")<0&&e.indexOf("&")<0?e:e.replace(s,(function(e,t,n){return t||function(e,t){var n=0;return i(c,t)?c[t]:35===t.charCodeAt(0)&&l.test(t)&&o(n="x"===t[1].toLowerCase()?parseInt(t.slice(2),16):parseInt(t.slice(1),10))?a(n):e}(e,n)}))},t.isValidEntityCode=o,t.fromCodePoint=a,t.escapeHtml=function(e){return f.test(e)?e.replace(d,v):e},t.arrayReplaceAt=function(e,t,n){return[].concat(e.slice(0,t),n,e.slice(t+1))},t.isSpace=function(e){switch(e){case 9:case 32:return!0}return!1},t.isWhiteSpace=function(e){if(e>=8192&&e<=8202)return!0;switch(e){case 9:case 10:case 11:case 12:case 13:case 32:case 160:case 5760:case 8239:case 8287:case 12288:return!0}return!1},t.isMdAsciiPunct=function(e){switch(e){case 33:case 34:case 35:case 36:case 37:case 38:case 39:case 40:case 41:case 42:case 43:case 44:case 45:case 46:case 47:case 58:case 59:case 60:case 61:case 62:case 63:case 64:case 91:case 92:case 93:case 94:case 95:case 96:case 123:case 124:case 125:case 126:return!0;default:return!1}},t.isPunctChar=function(e){return m.test(e)},t.escapeRE=function(e){return e.replace(h,"\\$&")},t.normalizeReference=function(e){return e=e.trim().replace(/\s+/g," "),"\u1e7e"==="\u1e9e".toLowerCase()&&(e=e.replace(/\u1e9e/g,"\xdf")),e.toLowerCase().toUpperCase()}},4937:function(e,t,n){"use strict";t.parseLinkLabel=n(9162),t.parseLinkDestination=n(9738),t.parseLinkTitle=n(4890)},9738:function(e,t,n){"use strict";var r=n(786).unescapeAll;e.exports=function(e,t,n){var i,o,a=t,u={ok:!1,pos:0,lines:0,str:""};if(60===e.charCodeAt(t)){for(t++;t32)return u;if(41===i){if(0===o)break;o--}t++}return a===t||0!==o||(u.str=r(e.slice(a,t)),u.lines=0,u.pos=t,u.ok=!0),u}},9162:function(e){"use strict";e.exports=function(e,t,n){var r,i,o,a,u=-1,s=e.posMax,l=e.pos;for(e.pos=t+1,r=1;e.pos=n)return s;if(34!==(o=e.charCodeAt(t))&&39!==o&&40!==o)return s;for(t++,40===o&&(o=41);t=0))try{t.hostname=f.toASCII(t.hostname)}catch(n){}return c.encode(c.format(t))}function g(e){var t=c.parse(e,!0);if(t.hostname&&(!t.protocol||m.indexOf(t.protocol)>=0))try{t.hostname=f.toUnicode(t.hostname)}catch(n){}return c.decode(c.format(t),c.decode.defaultChars+"%")}function b(e,t){if(!(this instanceof b))return new b(e,t);t||r.isString(e)||(t=e||{},e="default"),this.inline=new s,this.block=new u,this.core=new a,this.renderer=new o,this.linkify=new l,this.validateLink=h,this.normalizeLink=y,this.normalizeLinkText=g,this.utils=r,this.helpers=r.assign({},i),this.options={},this.configure(e),t&&this.set(t)}b.prototype.set=function(e){return r.assign(this.options,e),this},b.prototype.configure=function(e){var t,n=this;if(r.isString(e)&&!(e=d[t=e]))throw new Error('Wrong `markdown-it` preset "'+t+'", check name');if(!e)throw new Error("Wrong `markdown-it` preset, can't be empty");return e.options&&n.set(e.options),e.components&&Object.keys(e.components).forEach((function(t){e.components[t].rules&&n[t].ruler.enableOnly(e.components[t].rules),e.components[t].rules2&&n[t].ruler2.enableOnly(e.components[t].rules2)})),this},b.prototype.enable=function(e,t){var n=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){n=n.concat(this[t].ruler.enable(e,!0))}),this),n=n.concat(this.inline.ruler2.enable(e,!0));var r=e.filter((function(e){return n.indexOf(e)<0}));if(r.length&&!t)throw new Error("MarkdownIt. Failed to enable unknown rule(s): "+r);return this},b.prototype.disable=function(e,t){var n=[];Array.isArray(e)||(e=[e]),["core","block","inline"].forEach((function(t){n=n.concat(this[t].ruler.disable(e,!0))}),this),n=n.concat(this.inline.ruler2.disable(e,!0));var r=e.filter((function(e){return n.indexOf(e)<0}));if(r.length&&!t)throw new Error("MarkdownIt. Failed to disable unknown rule(s): "+r);return this},b.prototype.use=function(e){var t=[this].concat(Array.prototype.slice.call(arguments,1));return e.apply(e,t),this},b.prototype.parse=function(e,t){if("string"!==typeof e)throw new Error("Input data should be a String");var n=new this.core.State(e,this,t);return this.core.process(n),n.tokens},b.prototype.render=function(e,t){return t=t||{},this.renderer.render(this.parse(e,t),this.options,t)},b.prototype.parseInline=function(e,t){var n=new this.core.State(e,this,t);return n.inlineMode=!0,this.core.process(n),n.tokens},b.prototype.renderInline=function(e,t){return t=t||{},this.renderer.render(this.parseInline(e,t),this.options,t)},e.exports=b},7782:function(e,t,n){"use strict";var r=n(8674),i=[["table",n(9399),["paragraph","reference"]],["code",n(5078)],["fence",n(1077),["paragraph","reference","blockquote","list"]],["blockquote",n(9224),["paragraph","reference","blockquote","list"]],["hr",n(7542),["paragraph","reference","blockquote","list"]],["list",n(7168),["paragraph","reference","blockquote"]],["reference",n(9277)],["html_block",n(5672),["paragraph","reference","blockquote"]],["heading",n(969),["paragraph","reference","blockquote"]],["lheading",n(7671)],["paragraph",n(6572)]];function o(){this.ruler=new r;for(var e=0;e=n))&&!(e.sCount[a]=s){e.line=n;break}for(r=0;r=o)break}else e.pending+=e.src[e.pos++]}e.pending&&e.pushPending()},a.prototype.parse=function(e,t,n,r){var i,o,a,u=new this.State(e,t,n,r);for(this.tokenize(u),a=(o=this.ruler2.getRules("")).length,i=0;i"+o(e[t].content)+""},a.code_block=function(e,t,n,r,i){var a=e[t];return""+o(e[t].content)+"\n"},a.fence=function(e,t,n,r,a){var u,s,l,c,f,d=e[t],p=d.info?i(d.info).trim():"",v="",h="";return p&&(v=(l=p.split(/(\s+)/g))[0],h=l.slice(2).join("")),0===(u=n.highlight&&n.highlight(d.content,v,h)||o(d.content)).indexOf(""+u+"\n"):"
"+u+"
\n"},a.image=function(e,t,n,r,i){var o=e[t];return o.attrs[o.attrIndex("alt")][1]=i.renderInlineAsText(o.children,n,r),i.renderToken(e,t,n)},a.hardbreak=function(e,t,n){return n.xhtmlOut?"
\n":"
\n"},a.softbreak=function(e,t,n){return n.breaks?n.xhtmlOut?"
\n":"
\n":"\n"},a.text=function(e,t){return o(e[t].content)},a.html_block=function(e,t){return e[t].content},a.html_inline=function(e,t){return e[t].content},u.prototype.renderAttrs=function(e){var t,n,r;if(!e.attrs)return"";for(r="",t=0,n=e.attrs.length;t\n":">")},u.prototype.renderInline=function(e,t,n){for(var r,i="",o=this.rules,a=0,u=e.length;a=4)return!1;if(62!==e.src.charCodeAt(S++))return!1;if(i)return!0;for(s=p=e.sCount[t]+1,32===e.src.charCodeAt(S)?(S++,s++,p++,o=!1,E=!0):9===e.src.charCodeAt(S)?(E=!0,(e.bsCount[t]+p)%4===3?(S++,s++,p++,o=!1):o=!0):E=!1,v=[e.bMarks[t]],e.bMarks[t]=S;S=C,g=[e.sCount[t]],e.sCount[t]=p-s,b=[e.tShift[t]],e.tShift[t]=S-e.bMarks[t],k=e.md.block.ruler.getRules("blockquote"),y=e.parentType,e.parentType="blockquote",d=t+1;d=(C=e.eMarks[d])));d++)if(62!==e.src.charCodeAt(S++)||T){if(c)break;for(x=!1,u=0,l=k.length;u=C,h.push(e.bsCount[d]),e.bsCount[d]=e.sCount[d]+1+(E?1:0),g.push(e.sCount[d]),e.sCount[d]=p-s,b.push(e.tShift[d]),e.tShift[d]=S-e.bMarks[d]}for(m=e.blkIndent,e.blkIndent=0,(w=e.push("blockquote_open","blockquote",1)).markup=">",w.map=f=[t,0],e.md.block.tokenize(e,t,d),(w=e.push("blockquote_close","blockquote",-1)).markup=">",e.lineMax=_,e.parentType=y,f[1]=e.line,u=0;u=4))break;i=++r}return e.line=i,(o=e.push("code_block","code",0)).content=e.getLines(t,i,4+e.blkIndent,!1)+"\n",o.map=[t,e.line],!0}},1077:function(e){"use strict";e.exports=function(e,t,n,r){var i,o,a,u,s,l,c,f=!1,d=e.bMarks[t]+e.tShift[t],p=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(d+3>p)return!1;if(126!==(i=e.src.charCodeAt(d))&&96!==i)return!1;if(s=d,(o=(d=e.skipChars(d,i))-s)<3)return!1;if(c=e.src.slice(s,d),a=e.src.slice(d,p),96===i&&a.indexOf(String.fromCharCode(i))>=0)return!1;if(r)return!0;for(u=t;!(++u>=n)&&!((d=s=e.bMarks[u]+e.tShift[u])<(p=e.eMarks[u])&&e.sCount[u]=4)&&!((d=e.skipChars(d,i))-s=4)return!1;if(35!==(o=e.src.charCodeAt(l))||l>=c)return!1;for(a=1,o=e.src.charCodeAt(++l);35===o&&l6||ll&&r(e.src.charCodeAt(u-1))&&(c=u),e.line=t+1,(s=e.push("heading_open","h"+String(a),1)).markup="########".slice(0,a),s.map=[t,e.line],(s=e.push("inline","",0)).content=e.src.slice(l,c).trim(),s.map=[t,e.line],s.children=[],(s=e.push("heading_close","h"+String(a),-1)).markup="########".slice(0,a)),!0)}},7542:function(e,t,n){"use strict";var r=n(786).isSpace;e.exports=function(e,t,n,i){var o,a,u,s,l=e.bMarks[t]+e.tShift[t],c=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(42!==(o=e.src.charCodeAt(l++))&&45!==o&&95!==o)return!1;for(a=1;l|$))/i,/<\/(script|pre|style|textarea)>/i,!0],[/^/,!0],[/^<\?/,/\?>/,!0],[/^/,!0],[/^/,!0],[new RegExp("^|$))","i"),/^$/,!0],[new RegExp(i.source+"\\s*$"),/^$/,!1]];e.exports=function(e,t,n,r){var i,a,u,s,l=e.bMarks[t]+e.tShift[t],c=e.eMarks[t];if(e.sCount[t]-e.blkIndent>=4)return!1;if(!e.md.options.html)return!1;if(60!==e.src.charCodeAt(l))return!1;for(s=e.src.slice(l,c),i=0;i=4)return!1;for(d=e.parentType,e.parentType="paragraph";p3)){if(e.sCount[p]>=e.blkIndent&&(s=e.bMarks[p]+e.tShift[p])<(l=e.eMarks[p])&&(45===(f=e.src.charCodeAt(s))||61===f)&&(s=e.skipChars(s,f),(s=e.skipSpaces(s))>=l)){c=61===f?1:2;break}if(!(e.sCount[p]<0)){for(i=!1,o=0,a=v.length;o=a)return-1;if((n=e.src.charCodeAt(o++))<48||n>57)return-1;for(;;){if(o>=a)return-1;if(!((n=e.src.charCodeAt(o++))>=48&&n<=57)){if(41===n||46===n)break;return-1}if(o-i>=10)return-1}return o=4)return!1;if(e.listIndent>=0&&e.sCount[t]-e.listIndent>=4&&e.sCount[t]=e.blkIndent&&(R=!0),(N=o(e,t))>=0){if(d=!0,A=e.bMarks[t]+e.tShift[t],g=Number(e.src.slice(A,N-1)),R&&1!==g)return!1}else{if(!((N=i(e,t))>=0))return!1;d=!1}if(R&&e.skipSpaces(N)>=e.eMarks[t])return!1;if(y=e.src.charCodeAt(N-1),r)return!0;for(m=e.tokens.length,d?(L=e.push("ordered_list_open","ol",1),1!==g&&(L.attrs=[["start",g]])):L=e.push("bullet_list_open","ul",1),L.map=h=[t,0],L.markup=String.fromCharCode(y),E=t,I=!1,D=e.md.block.ruler.getRules("list"),w=e.parentType,e.parentType="list";E=b?1:x-f)>4&&(c=1),l=f+c,(L=e.push("list_item_open","li",1)).markup=String.fromCharCode(y),L.map=p=[t,0],d&&(L.info=e.src.slice(A,N-1)),S=e.tight,_=e.tShift[t],T=e.sCount[t],k=e.listIndent,e.listIndent=e.blkIndent,e.blkIndent=l,e.tight=!0,e.tShift[t]=u-e.bMarks[t],e.sCount[t]=x,u>=b&&e.isEmpty(t+1)?e.line=Math.min(e.line+2,n):e.md.block.tokenize(e,t,n,!0),e.tight&&!I||(F=!1),I=e.line-t>1&&e.isEmpty(e.line-1),e.blkIndent=e.listIndent,e.listIndent=k,e.tShift[t]=_,e.sCount[t]=T,e.tight=S,(L=e.push("list_item_close","li",-1)).markup=String.fromCharCode(y),E=t=e.line,p[1]=E,u=e.bMarks[t],E>=n)break;if(e.sCount[E]=4)break;for(O=!1,s=0,v=D.length;s3)&&!(e.sCount[s]<0)){for(r=!1,i=0,o=l.length;i=4)return!1;if(91!==e.src.charCodeAt(w))return!1;for(;++w3)&&!(e.sCount[_]<0)){for(b=!1,f=0,d=E.length;f0&&this.level++,this.tokens.push(i),i},o.prototype.isEmpty=function(e){return this.bMarks[e]+this.tShift[e]>=this.eMarks[e]},o.prototype.skipEmptyLines=function(e){for(var t=this.lineMax;et;)if(!i(this.src.charCodeAt(--e)))return e+1;return e},o.prototype.skipChars=function(e,t){for(var n=this.src.length;en;)if(t!==this.src.charCodeAt(--e))return e+1;return e},o.prototype.getLines=function(e,t,n,r){var o,a,u,s,l,c,f,d=e;if(e>=t)return"";for(c=new Array(t-e),o=0;dn?new Array(a-n+1).join(" ")+this.src.slice(s,l):this.src.slice(s,l)}return c.join("")},o.prototype.Token=r,e.exports=o},9399:function(e,t,n){"use strict";var r=n(786).isSpace;function i(e,t){var n=e.bMarks[t]+e.tShift[t],r=e.eMarks[t];return e.src.substr(n,r-n)}function o(e){var t,n=[],r=0,i=e.length,o=!1,a=0,u="";for(t=e.charCodeAt(r);rn)return!1;if(d=t+1,e.sCount[d]=4)return!1;if((l=e.bMarks[d]+e.tShift[d])>=e.eMarks[d])return!1;if(124!==(w=e.src.charCodeAt(l++))&&45!==w&&58!==w)return!1;if(l>=e.eMarks[d])return!1;if(124!==(T=e.src.charCodeAt(l++))&&45!==T&&58!==T&&!r(T))return!1;if(45===w&&r(T))return!1;for(;l=4)return!1;if((p=o(s)).length&&""===p[0]&&p.shift(),p.length&&""===p[p.length-1]&&p.pop(),0===(v=p.length)||v!==m.length)return!1;if(a)return!0;for(E=e.parentType,e.parentType="table",k=e.md.block.ruler.getRules("blockquote"),(h=e.push("table_open","table",1)).map=g=[t,0],(h=e.push("thead_open","thead",1)).map=[t,t+1],(h=e.push("tr_open","tr",1)).map=[t,t+1],c=0;c=4)break;for((p=o(s)).length&&""===p[0]&&p.shift(),p.length&&""===p[p.length-1]&&p.pop(),d===t+2&&((h=e.push("tbody_open","tbody",1)).map=b=[t+2,0]),(h=e.push("tr_open","tr",1)).map=[d,d+1],c=0;c/i.test(e)}e.exports=function(e){var t,n,o,a,u,s,l,c,f,d,p,v,h,m,y,g,b,E,x=e.tokens;if(e.md.options.linkify)for(n=0,o=x.length;n=0;t--)if("link_close"!==(s=a[t]).type){if("html_inline"===s.type&&(E=s.content,/^\s]/i.test(E)&&h>0&&h--,i(s.content)&&h++),!(h>0)&&"text"===s.type&&e.md.linkify.test(s.content)){for(f=s.content,b=e.md.linkify.match(f),l=[],v=s.level,p=0,c=0;cp&&((u=new e.Token("text","",0)).content=f.slice(p,d),u.level=v,l.push(u)),(u=new e.Token("link_open","a",1)).attrs=[["href",y]],u.level=v++,u.markup="linkify",u.info="auto",l.push(u),(u=new e.Token("text","",0)).content=g,u.level=v,l.push(u),(u=new e.Token("link_close","a",-1)).level=--v,u.markup="linkify",u.info="auto",l.push(u),p=b[c].lastIndex);p=0;t--)"text"!==(n=e[t]).type||i||(n.content=n.content.replace(r,o)),"link_open"===n.type&&"auto"===n.info&&i--,"link_close"===n.type&&"auto"===n.info&&i++}function u(e){var n,r,i=0;for(n=e.length-1;n>=0;n--)"text"!==(r=e[n]).type||i||t.test(r.content)&&(r.content=r.content.replace(/\+-/g,"\xb1").replace(/\.{2,}/g,"\u2026").replace(/([?!])\u2026/g,"$1..").replace(/([?!]){4,}/g,"$1$1$1").replace(/,{2,}/g,",").replace(/(^|[^-])---(?=[^-]|$)/gm,"$1\u2014").replace(/(^|\s)--(?=\s|$)/gm,"$1\u2013").replace(/(^|[^-\s])--(?=[^-\s]|$)/gm,"$1\u2013")),"link_open"===r.type&&"auto"===r.info&&i--,"link_close"===r.type&&"auto"===r.info&&i++}e.exports=function(e){var r;if(e.md.options.typographer)for(r=e.tokens.length-1;r>=0;r--)"inline"===e.tokens[r].type&&(n.test(e.tokens[r].content)&&a(e.tokens[r].children),t.test(e.tokens[r].content)&&u(e.tokens[r].children))}},6991:function(e,t,n){"use strict";var r=n(786).isWhiteSpace,i=n(786).isPunctChar,o=n(786).isMdAsciiPunct,a=/['"]/,u=/['"]/g;function s(e,t,n){return e.substr(0,t)+n+e.substr(t+1)}function l(e,t){var n,a,l,c,f,d,p,v,h,m,y,g,b,E,x,k,w,T,_,S,C;for(_=[],n=0;n=0&&!(_[w].level<=p);w--);if(_.length=w+1,"text"===a.type){f=0,d=(l=a.content).length;e:for(;f=0)h=l.charCodeAt(c.index-1);else for(w=n-1;w>=0&&("softbreak"!==e[w].type&&"hardbreak"!==e[w].type);w--)if(e[w].content){h=e[w].content.charCodeAt(e[w].content.length-1);break}if(m=32,f=48&&h<=57&&(k=x=!1),x&&k&&(x=y,k=g),x||k){if(k)for(w=_.length-1;w>=0&&(v=_[w],!(_[w].level=0;t--)"inline"===e.tokens[t].type&&a.test(e.tokens[t].content)&&l(e.tokens[t].children,e)}},3311:function(e,t,n){"use strict";var r=n(596);function i(e,t,n){this.src=e,this.env=n,this.tokens=[],this.inlineMode=!1,this.md=t}i.prototype.Token=r,e.exports=i},3657:function(e){"use strict";var t=/^([a-zA-Z0-9.!#$%&'*+\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*)$/,n=/^([a-zA-Z][a-zA-Z0-9+.\-]{1,31}):([^<>\x00-\x20]*)$/;e.exports=function(e,r){var i,o,a,u,s,l,c=e.pos;if(60!==e.src.charCodeAt(c))return!1;for(s=e.pos,l=e.posMax;;){if(++c>=l)return!1;if(60===(u=e.src.charCodeAt(c)))return!1;if(62===u)break}return i=e.src.slice(s+1,c),n.test(i)?(o=e.md.normalizeLink(i),!!e.md.validateLink(o)&&(r||((a=e.push("link_open","a",1)).attrs=[["href",o]],a.markup="autolink",a.info="auto",(a=e.push("text","",0)).content=e.md.normalizeLinkText(i),(a=e.push("link_close","a",-1)).markup="autolink",a.info="auto"),e.pos+=i.length+2,!0)):!!t.test(i)&&(o=e.md.normalizeLink("mailto:"+i),!!e.md.validateLink(o)&&(r||((a=e.push("link_open","a",1)).attrs=[["href",o]],a.markup="autolink",a.info="auto",(a=e.push("text","",0)).content=e.md.normalizeLinkText(i),(a=e.push("link_close","a",-1)).markup="autolink",a.info="auto"),e.pos+=i.length+2,!0))}},7860:function(e){"use strict";e.exports=function(e,t){var n,r,i,o,a,u,s,l,c=e.pos;if(96!==e.src.charCodeAt(c))return!1;for(n=c,c++,r=e.posMax;ca;r-=v[r]+1)if((o=t[r]).marker===i.marker&&o.open&&o.end<0&&(s=!1,(o.close||i.open)&&(o.length+i.length)%3===0&&(o.length%3===0&&i.length%3===0||(s=!0)),!s)){l=r>0&&!t[r-1].open?v[r-1]+1:0,v[n]=n-r+l,v[r]=l,i.open=!1,o.end=n,o.close=!1,u=-1,p=-2;break}-1!==u&&(c[i.marker][(i.open?3:0)+(i.length||0)%3]=u)}}}e.exports=function(e){var n,r=e.tokens_meta,i=e.tokens_meta.length;for(t(0,e.delimiters),n=0;n=0;n--)95!==(r=t[n]).marker&&42!==r.marker||-1!==r.end&&(i=t[r.end],u=n>0&&t[n-1].end===r.end+1&&t[n-1].marker===r.marker&&t[n-1].token===r.token-1&&t[r.end+1].token===i.token+1,a=String.fromCharCode(r.marker),(o=e.tokens[r.token]).type=u?"strong_open":"em_open",o.tag=u?"strong":"em",o.nesting=1,o.markup=u?a+a:a,o.content="",(o=e.tokens[i.token]).type=u?"strong_close":"em_close",o.tag=u?"strong":"em",o.nesting=-1,o.markup=u?a+a:a,o.content="",u&&(e.tokens[t[n-1].token].content="",e.tokens[t[r.end+1].token].content="",n--))}e.exports.w=function(e,t){var n,r,i=e.pos,o=e.src.charCodeAt(i);if(t)return!1;if(95!==o&&42!==o)return!1;for(r=e.scanDelims(e.pos,42===o),n=0;n?@[]^_`{|}~-".split("").forEach((function(e){i[e.charCodeAt(0)]=1})),e.exports=function(e,t){var n,o=e.pos,a=e.posMax;if(92!==e.src.charCodeAt(o))return!1;if(++o=o)&&(!(33!==(n=e.src.charCodeAt(a+1))&&63!==n&&47!==n&&!function(e){var t=32|e;return t>=97&&t<=122}(n))&&(!!(i=e.src.slice(a).match(r))&&(t||(e.push("html_inline","",0).content=e.src.slice(a,a+i[0].length)),e.pos+=i[0].length,!0))))}},1677:function(e,t,n){"use strict";var r=n(786).normalizeReference,i=n(786).isSpace;e.exports=function(e,t){var n,o,a,u,s,l,c,f,d,p,v,h,m,y="",g=e.pos,b=e.posMax;if(33!==e.src.charCodeAt(e.pos))return!1;if(91!==e.src.charCodeAt(e.pos+1))return!1;if(l=e.pos+2,(s=e.md.helpers.parseLinkLabel(e,e.pos+1,!1))<0)return!1;if((c=s+1)=b)return!1;for(m=c,(d=e.md.helpers.parseLinkDestination(e.src,c,e.posMax)).ok&&(y=e.md.normalizeLink(d.str),e.md.validateLink(y)?c=d.pos:y=""),m=c;c=b||41!==e.src.charCodeAt(c))return e.pos=g,!1;c++}else{if("undefined"===typeof e.env.references)return!1;if(c=0?u=e.src.slice(m,c++):c=s+1):c=s+1,u||(u=e.src.slice(l,s)),!(f=e.env.references[r(u)]))return e.pos=g,!1;y=f.href,p=f.title}return t||(a=e.src.slice(l,s),e.md.inline.parse(a,e.md,e.env,h=[]),(v=e.push("image","img",0)).attrs=n=[["src",y],["alt",""]],v.children=h,v.content=a,p&&n.push(["title",p])),e.pos=c,e.posMax=b,!0}},9384:function(e,t,n){"use strict";var r=n(786).normalizeReference,i=n(786).isSpace;e.exports=function(e,t){var n,o,a,u,s,l,c,f,d="",p="",v=e.pos,h=e.posMax,m=e.pos,y=!0;if(91!==e.src.charCodeAt(e.pos))return!1;if(s=e.pos+1,(u=e.md.helpers.parseLinkLabel(e,e.pos,!0))<0)return!1;if((l=u+1)=h)return!1;if(m=l,(c=e.md.helpers.parseLinkDestination(e.src,l,e.posMax)).ok){for(d=e.md.normalizeLink(c.str),e.md.validateLink(d)?l=c.pos:d="",m=l;l=h||41!==e.src.charCodeAt(l))&&(y=!0),l++}if(y){if("undefined"===typeof e.env.references)return!1;if(l=0?a=e.src.slice(m,l++):l=u+1):l=u+1,a||(a=e.src.slice(s,u)),!(f=e.env.references[r(a)]))return e.pos=v,!1;d=f.href,p=f.title}return t||(e.pos=s,e.posMax=u,e.push("link_open","a",1).attrs=n=[["href",d]],p&&n.push(["title",p]),e.md.inline.tokenize(e),e.push("link_close","a",-1)),e.pos=l,e.posMax=h,!0}},6179:function(e,t,n){"use strict";var r=n(786).isSpace;e.exports=function(e,t){var n,i,o,a=e.pos;if(10!==e.src.charCodeAt(a))return!1;if(n=e.pending.length-1,i=e.posMax,!t)if(n>=0&&32===e.pending.charCodeAt(n))if(n>=1&&32===e.pending.charCodeAt(n-1)){for(o=n-1;o>=1&&32===e.pending.charCodeAt(o-1);)o--;e.pending=e.pending.slice(0,o),e.push("hardbreak","br",0)}else e.pending=e.pending.slice(0,-1),e.push("softbreak","br",0);else e.push("softbreak","br",0);for(a++;a0&&(this.level++,this._prev_delimiters.push(this.delimiters),this.delimiters=[],o={delimiters:this.delimiters}),this.pendingLevel=this.level,this.tokens.push(i),this.tokens_meta.push(o),i},u.prototype.scanDelims=function(e,t){var n,r,u,s,l,c,f,d,p,v=e,h=!0,m=!0,y=this.posMax,g=this.src.charCodeAt(e);for(n=e>0?this.src.charCodeAt(e-1):32;v0&&r++,"text"===i[t].type&&t+1=0&&(n=this.attrs[t][1]),n},t.prototype.attrJoin=function(e,t){var n=this.attrIndex(e);n<0?this.attrPush([e,t]):this.attrs[n][1]=this.attrs[n][1]+" "+t},e.exports=t},6762:function(e){"use strict";var t={};function n(e,r){var i;return"string"!==typeof r&&(r=n.defaultChars),i=function(e){var n,r,i=t[e];if(i)return i;for(i=t[e]=[],n=0;n<128;n++)r=String.fromCharCode(n),i.push(r);for(n=0;n=55296&&s<=57343?"\ufffd\ufffd\ufffd":String.fromCharCode(s),t+=6):240===(248&r)&&t+91114111?l+="\ufffd\ufffd\ufffd\ufffd":(s-=65536,l+=String.fromCharCode(55296+(s>>10),56320+(1023&s))),t+=9):l+="\ufffd";return l}))}n.defaultChars=";/?:@&=+$,#",n.componentChars="",e.exports=n},2366:function(e){"use strict";var t={};function n(e,r,i){var o,a,u,s,l,c="";for("string"!==typeof r&&(i=r,r=n.defaultChars),"undefined"===typeof i&&(i=!0),l=function(e){var n,r,i=t[e];if(i)return i;for(i=t[e]=[],n=0;n<128;n++)r=String.fromCharCode(n),/^[0-9a-z]$/i.test(r)?i.push(r):i.push("%"+("0"+n.toString(16).toUpperCase()).slice(-2));for(n=0;n=55296&&u<=57343){if(u>=55296&&u<=56319&&o+1=56320&&s<=57343){c+=encodeURIComponent(e[o]+e[o+1]),o++;continue}c+="%EF%BF%BD"}else c+=encodeURIComponent(e[o]);return c}n.defaultChars=";/?:@&=+$,-_.!~*'()#",n.componentChars="-_.!~*'()",e.exports=n},835:function(e){"use strict";e.exports=function(e){var t="";return t+=e.protocol||"",t+=e.slashes?"//":"",t+=e.auth?e.auth+"@":"",e.hostname&&-1!==e.hostname.indexOf(":")?t+="["+e.hostname+"]":t+=e.hostname||"",t+=e.port?":"+e.port:"",t+=e.pathname||"",t+=e.search||"",t+=e.hash||""}},3461:function(e,t,n){"use strict";e.exports.encode=n(2366),e.exports.decode=n(6762),e.exports.format=n(835),e.exports.parse=n(9944)},9944:function(e){"use strict";function t(){this.protocol=null,this.slashes=null,this.auth=null,this.port=null,this.hostname=null,this.hash=null,this.search=null,this.pathname=null}var n=/^([a-z0-9.+-]+:)/i,r=/:[0-9]*$/,i=/^(\/\/?(?!\/)[^\?\s]*)(\?[^\s]*)?$/,o=["{","}","|","\\","^","`"].concat(["<",">",'"',"`"," ","\r","\n","\t"]),a=["'"].concat(o),u=["%","/","?",";","#"].concat(a),s=["/","?","#"],l=/^[+a-z0-9A-Z_-]{0,63}$/,c=/^([+a-z0-9A-Z_-]{0,63})(.*)$/,f={javascript:!0,"javascript:":!0},d={http:!0,https:!0,ftp:!0,gopher:!0,file:!0,"http:":!0,"https:":!0,"ftp:":!0,"gopher:":!0,"file:":!0};t.prototype.parse=function(e,t){var r,o,a,p,v,h=e;if(h=h.trim(),!t&&1===e.split("#").length){var m=i.exec(h);if(m)return this.pathname=m[1],m[2]&&(this.search=m[2]),this}var y=n.exec(h);if(y&&(a=(y=y[0]).toLowerCase(),this.protocol=y,h=h.substr(y.length)),(t||y||h.match(/^\/\/[^@\/]+@[^@\/]+/))&&(!(v="//"===h.substr(0,2))||y&&f[y]||(h=h.substr(2),this.slashes=!0)),!f[y]&&(v||y&&!d[y])){var g,b,E=-1;for(r=0;r127?_+="x":_+=T[S];if(!_.match(l)){var N=w.slice(0,r),I=w.slice(r+1),A=T.match(c);A&&(N.push(A[1]),I.unshift(A[2])),I.length&&(h=I.join(".")+h),this.hostname=N.join(".");break}}}}this.hostname.length>255&&(this.hostname=""),k&&(this.hostname=this.hostname.substr(1,this.hostname.length-2))}var O=h.indexOf("#");-1!==O&&(this.hash=h.substr(O),h=h.slice(0,O));var D=h.indexOf("?");return-1!==D&&(this.search=h.substr(D),h=h.slice(0,D)),h&&(this.pathname=h),d[a]&&this.hostname&&!this.pathname&&(this.pathname=""),this},t.prototype.parseHost=function(e){var t=r.exec(e);t&&(":"!==(t=t[0])&&(this.port=t.substr(1)),e=e.substr(0,e.length-t.length)),e&&(this.hostname=e)},e.exports=function(e,n){if(e&&e instanceof t)return e;var r=new t;return r.parse(e,n),r}},9921:function(e){"use strict";function t(e,t){if(null!=e)return e;var n=new Error(void 0!==t?t:"Got unexpected "+e);throw n.framesToPop=1,n}e.exports=t,e.exports.default=t,Object.defineProperty(e.exports,"__esModule",{value:!0})},6293:function(e,t,n){"use strict";n.r(t),n.d(t,{decode:function(){return b},encode:function(){return E},toASCII:function(){return k},toUnicode:function(){return x},ucs2decode:function(){return h},ucs2encode:function(){return m}});var r=n(7762),i=n(2982),o=2147483647,a=36,u=/^xn--/,s=/[^\0-\x7E]/,l=/[\x2E\u3002\uFF0E\uFF61]/g,c={overflow:"Overflow: input needs wider integers to process","not-basic":"Illegal input >= 0x80 (not a basic code point)","invalid-input":"Invalid input"},f=Math.floor,d=String.fromCharCode;function p(e){throw new RangeError(c[e])}function v(e,t){var n=e.split("@"),r="";n.length>1&&(r=n[0]+"@",e=n[1]);var i=function(e,t){for(var n=[],r=e.length;r--;)n[r]=t(e[r]);return n}((e=e.replace(l,".")).split("."),t).join(".");return r+i}function h(e){for(var t=[],n=0,r=e.length;n=55296&&i<=56319&&n>1,e+=f(e/t);e>455;r+=a)e=f(e/35);return f(r+36*e/(e+38))},b=function(e){var t,n=[],r=e.length,i=0,u=128,s=72,l=e.lastIndexOf("-");l<0&&(l=0);for(var c=0;c=128&&p("not-basic"),n.push(e.charCodeAt(c));for(var d=l>0?l+1:0;d=r&&p("invalid-input");var y=(t=e.charCodeAt(d++))-48<10?t-22:t-65<26?t-65:t-97<26?t-97:a;(y>=a||y>f((o-i)/h))&&p("overflow"),i+=y*h;var b=m<=s?1:m>=s+26?26:m-s;if(yf(o/E)&&p("overflow"),h*=E}var x=n.length+1;s=g(i-v,x,0==v),f(i/x)>o-u&&p("overflow"),u+=f(i/x),i%=x,n.splice(i++,0,u)}return String.fromCodePoint.apply(String,n)},E=function(e){var t,n=[],i=(e=h(e)).length,u=128,s=0,l=72,c=(0,r.Z)(e);try{for(c.s();!(t=c.n()).done;){var v=t.value;v<128&&n.push(d(v))}}catch(L){c.e(L)}finally{c.f()}var m=n.length,b=m;for(m&&n.push("-");b=u&&wf((o-s)/T)&&p("overflow"),s+=(x-u)*T,u=x;var _,S=(0,r.Z)(e);try{for(S.s();!(_=S.n()).done;){var C=_.value;if(Co&&p("overflow"),C==u){for(var N=s,I=a;;I+=a){var A=I<=l?1:I>=l+26?26:I-l;if(N