diff --git a/__tests__/data/releases_linux.json b/__tests__/data/releases_linux.json deleted file mode 100644 index 6a2c676..0000000 --- a/__tests__/data/releases_linux.json +++ /dev/null @@ -1,3338 +0,0 @@ -{ - "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", - "current_release": { - "beta": "0941968447ea8058e56e1479f7e53147149b739e", - "dev": "0941968447ea8058e56e1479f7e53147149b739e", - "stable": "adc687823a831bbebe28bdccfac1a628ca621513" - }, - "releases": [ - { - "hash": "adc687823a831bbebe28bdccfac1a628ca621513", - "channel": "stable", - "version": "2.0.5", - "release_date": "2021-04-16T18:02:26.366756Z", - "archive": "stable/linux/flutter_linux_2.0.5-stable.tar.xz", - "sha256": "326946994c839a690b98833c496f7cdc3f9c0fb6a1b6315c64fe5f1f3b8026ca" - }, - { - "hash": "0941968447ea8058e56e1479f7e53147149b739e", - "channel": "beta", - "version": "2.2.0-10.1.pre", - "release_date": "2021-04-15T22:29:58.158319Z", - "archive": "beta/linux/flutter_linux_2.2.0-10.1.pre-beta.tar.xz", - "sha256": "3ac386933feee932db38a73145c7a33ff5b1b9fe9f5fc92f5ef20e95db6926b1" - }, - { - "hash": "0941968447ea8058e56e1479f7e53147149b739e", - "channel": "dev", - "version": "2.2.0-10.1.pre", - "release_date": "2021-04-15T21:37:54.279500Z", - "archive": "dev/linux/flutter_linux_2.2.0-10.1.pre-dev.tar.xz", - "sha256": "dd3621a6f5041d8f088636841a3980ccc9f06affee7cf5b8c03a81997a26b6c2" - }, - { - "hash": "b1395592de68cc8ac4522094ae59956dd21a91db", - "channel": "stable", - "version": "2.0.4", - "release_date": "2021-04-02T20:38:09.220024Z", - "archive": "stable/linux/flutter_linux_2.0.4-stable.tar.xz", - "sha256": "e610f1c854e73645b343152de9df9fb8c9c067d6fad5d46c9c3d71b76ef77cf0" - }, - { - "hash": "4d7946a68d26794349189cf21b3f68cc6fe61dcb", - "channel": "stable", - "version": "2.0.3", - "release_date": "2021-03-19T20:19:35.184656Z", - "archive": "stable/linux/flutter_linux_2.0.3-stable.tar.xz", - "sha256": "95c5045d0739187d961d24b7315e562d6b998c6ef7665aab7f199d3b2f1b4691" - }, - { - "hash": "5bedb7b1d5698ce2c1c67aaf9afae7b3948b172a", - "channel": "beta", - "version": "2.1.0-12.2.pre", - "release_date": "2021-03-18T21:12:11.804378Z", - "archive": "beta/linux/flutter_linux_2.1.0-12.2.pre-beta.tar.xz", - "sha256": "a6227aeed00fbf4631ded83e93330e7b51c8e79a3d11e0580f933d5083913ce1" - }, - { - "hash": "8962f6dc68ec8e2206ac2fa874da4a453856c7d3", - "channel": "beta", - "version": "2.0.2", - "release_date": "2021-03-15T17:14:12.027228Z", - "archive": "beta/linux/flutter_linux_2.0.2-beta.tar.xz", - "sha256": "3b276ff11df0d6941c196602579dc4c37b389995d69ed5303f101188040538db" - }, - { - "hash": "8264cb3e8a797eef39cbcd32bb56fd07790efb7f", - "channel": "dev", - "version": "2.1.0-12.1.pre", - "release_date": "2021-03-13T01:00:26.623032Z", - "archive": "dev/linux/flutter_linux_2.1.0-12.1.pre-dev.tar.xz", - "sha256": "18ee693ef1f7b9752d4e7add7ccf5736c133dd3cfe048c64311942f8372190f0" - }, - { - "hash": "8962f6dc68ec8e2206ac2fa874da4a453856c7d3", - "channel": "stable", - "version": "2.0.2", - "release_date": "2021-03-12T20:19:12.688967Z", - "archive": "stable/linux/flutter_linux_2.0.2-stable.tar.xz", - "sha256": "27aae1df9bd64debe5b1c0ed81a90e0ec7a7dad11a24def76c7c7ba99fa04d5f" - }, - { - "hash": "c5a4b4029c0798f37c4a39b479d7cb75daa7b05c", - "channel": "beta", - "version": "2.0.1", - "release_date": "2021-03-04T21:11:12.627929Z", - "archive": "beta/linux/flutter_linux_2.0.1-beta.tar.xz", - "sha256": "fc8717eb3247f3563dd1823e175f4f3d5a5e43abc0df5f0ebac7f418f4f01793" - }, - { - "hash": "c5a4b4029c0798f37c4a39b479d7cb75daa7b05c", - "channel": "stable", - "version": "2.0.1", - "release_date": "2021-03-04T19:56:07.512496Z", - "archive": "stable/linux/flutter_linux_2.0.1-stable.tar.xz", - "sha256": "7938e7c78cd277fcf2f01291cd590b9d5adb0c4342763044c9d9678901829241" - }, - { - "hash": "cc9b78fc5c4a4d2d51316d9626523336230a89a9", - "channel": "dev", - "version": "2.1.0-10.0.pre", - "release_date": "2021-03-03T19:18:13.528065Z", - "archive": "dev/linux/flutter_linux_2.1.0-10.0.pre-dev.tar.xz", - "sha256": "f4200d48528a7578dd6cdeb084720072658105c73f83bbfba114cd8e3eedc913" - }, - { - "hash": "60bd88df915880d23877bfc1602e8ddcf4c4dd2a", - "channel": "beta", - "version": "2.0.0", - "release_date": "2021-03-03T18:57:03.408707Z", - "archive": "beta/linux/flutter_linux_2.0.0-beta.tar.xz", - "sha256": "958e94708d95b6aea8ef0ea51ed599d2f02d71c4bdf04af0573234e822abac1e" - }, - { - "hash": "60bd88df915880d23877bfc1602e8ddcf4c4dd2a", - "channel": "stable", - "version": "2.0.0", - "release_date": "2021-03-03T17:53:06.760622Z", - "archive": "stable/linux/flutter_linux_2.0.0-stable.tar.xz", - "sha256": "15bcbf57c0d82037ea2e7838d154fc9883ee1abdb9633aa3e7370d0614c8613c" - }, - { - "hash": "044f2cf5607a26f8818dab0f766400e85c52bdff", - "channel": "beta", - "version": "1.26.0-17.8.pre", - "release_date": "2021-02-25T17:56:48.055907Z", - "archive": "beta/linux/flutter_linux_1.26.0-17.8.pre-beta.tar.xz", - "sha256": "e760ee8824ebef8d387fcc084bd0066d04734189d938d528254ed4732d33cb80" - }, - { - "hash": "b7d4806243a4e906bf061f79a0e314ba28111aa6", - "channel": "dev", - "version": "1.27.0-8.0.pre", - "release_date": "2021-02-24T23:10:35.566285Z", - "archive": "dev/linux/flutter_linux_1.27.0-8.0.pre-dev.tar.xz", - "sha256": "bf9b64fef7ce74342222acf76f24e44160fdcaf94075f7aa65605967d5913ba8" - }, - { - "hash": "68e7d2e301e1969275cd11947e900b6b80405052", - "channel": "beta", - "version": "1.26.0-17.7.pre", - "release_date": "2021-02-24T18:23:36.226263Z", - "archive": "beta/linux/flutter_linux_1.26.0-17.7.pre-beta.tar.xz", - "sha256": "4693594ee2a97012a5ab1606b10e9ae35ca3a311b479709f2af0ef3c6e5fde14" - }, - { - "hash": "f8cd24de95b16b5a1ce6ebc0716154271fbf6252", - "channel": "dev", - "version": "1.27.0-4.0.pre", - "release_date": "2021-02-17T23:07:28.519514Z", - "archive": "dev/linux/flutter_linux_1.27.0-4.0.pre-dev.tar.xz", - "sha256": "9db8fe7797a01cb7e85fdb0929cb0f80a0f3f08a2f2a7012ac7e194d9a3f6b81" - }, - { - "hash": "a29104a69b102a7485cd00d358eaeab219d258ab", - "channel": "beta", - "version": "1.26.0-17.6.pre", - "release_date": "2021-02-16T19:18:08.750365Z", - "archive": "beta/linux/flutter_linux_1.26.0-17.6.pre-beta.tar.xz", - "sha256": "1c37e7d8edf9439f555facb698b6b737e9f2b39b8efa2b039dc7cf363efb5240" - }, - { - "hash": "1fe38dcb5fc58242c6e0904a318bcc3ed5a4d837", - "channel": "beta", - "version": "1.26.0-17.5.pre", - "release_date": "2021-02-11T17:51:36.185276Z", - "archive": "beta/linux/flutter_linux_1.26.0-17.5.pre-beta.tar.xz", - "sha256": "e46b0c16f9200a1d63ef3bc9ed57bd9e93defd5a62f9103a4f8ce831cd851aa8" - }, - { - "hash": "68c96f100e42ab3dbf43e61e9e2fc875a2d50cb8", - "channel": "dev", - "version": "1.27.0-1.0.pre", - "release_date": "2021-02-10T23:56:25.228514Z", - "archive": "dev/linux/flutter_linux_1.27.0-1.0.pre-dev.tar.xz", - "sha256": "89b3c8d30ce11f0c1ee2d5c2467885ee2c8519227a0fee3ad8ff77def33147e1" - }, - { - "hash": "48c9d3e0e19e8fec84f1d316ce0559f26ca7277d", - "channel": "beta", - "version": "1.26.0-17.4.pre", - "release_date": "2021-02-10T21:37:42.846047Z", - "archive": "beta/linux/flutter_linux_1.26.0-17.4.pre-beta.tar.xz", - "sha256": "7b9e8ed59422d8d7e45a665385e3db85aad2fc84ebcf127cac320938379474f7" - }, - { - "hash": "4b50ca7f7fbf56be72e54cd200825b760416a356", - "channel": "beta", - "version": "1.26.0-17.3.pre", - "release_date": "2021-02-05T06:36:19.027982Z", - "archive": "beta/linux/flutter_linux_1.26.0-17.3.pre-beta.tar.xz", - "sha256": "83845c65d164659a39a9e6ec6bd0c40075c6d8e6dec2ca8ac29886cb0e867fd5" - }, - { - "hash": "79b49b9e1057f90ebf797725233c6b311722de69", - "channel": "beta", - "version": "1.26.0-17.2.pre", - "release_date": "2021-02-04T19:52:38.978585Z", - "archive": "beta/linux/flutter_linux_1.26.0-17.2.pre-beta.tar.xz", - "sha256": "787c1564fbed5548ff049da133ca83beb282dbe1882d88d294ebf729e267267b" - }, - { - "hash": "79b49b9e1057f90ebf797725233c6b311722de69", - "channel": "dev", - "version": "1.26.0-17.2.pre", - "release_date": "2021-02-04T19:19:59.441299Z", - "archive": "dev/linux/flutter_linux_1.26.0-17.2.pre-dev.tar.xz", - "sha256": "32ab218a701f809af722ba1e30f9196832515da9284f4703e227b0b0ce6e3df0" - }, - { - "hash": "c40e5294dda34d04cd222dfdf765f171e12e4a8d", - "channel": "dev", - "version": "1.26.0-17.1.pre", - "release_date": "2021-01-29T18:20:51.623493Z", - "archive": "dev/linux/flutter_linux_1.26.0-17.1.pre-dev.tar.xz", - "sha256": "55f955a5fabbf73ce08179ccd8206a3940ebdd31993110a167517ffa78b7ce39" - }, - { - "hash": "9b2d32b605630f28625709ebd9d78ab3016b2bf6", - "channel": "stable", - "version": "1.22.6", - "release_date": "2021-01-25T19:47:03.570647Z", - "archive": "stable/linux/flutter_linux_1.22.6-stable.tar.xz", - "sha256": "282fc4b9c59a4e98c5e76a934ca804ea868f45b05c6255c85ee1065955dd7fa5" - }, - { - "hash": "a706cd211240f27be3b61f06d70f958c7a4156fe", - "channel": "dev", - "version": "1.26.0-12.0.pre", - "release_date": "2021-01-21T18:36:56.763964Z", - "archive": "dev/linux/flutter_linux_1.26.0-12.0.pre-dev.tar.xz", - "sha256": "fa2ba98775f65c9bd151881696b9d2d5672bb260ed24d83184010a0d436e140a" - }, - { - "hash": "5d36f2e7f5387b6c751449258ade8e4e6edf99be", - "channel": "beta", - "version": "1.25.0-8.3.pre", - "release_date": "2021-01-15T19:54:29.877720Z", - "archive": "beta/linux/flutter_linux_1.25.0-8.3.pre-beta.tar.xz", - "sha256": "83d744e8f7861e89fe6317d9e634c0a0db06e52a50bd1c129c4254e7e6e7d25c" - }, - { - "hash": "b9d06fffb2db263ab7021fc39adde7f2bf988a4a", - "channel": "dev", - "version": "1.26.0-8.0.pre", - "release_date": "2021-01-13T17:25:01.089187Z", - "archive": "dev/linux/flutter_linux_1.26.0-8.0.pre-dev.tar.xz", - "sha256": "a0d8fa959455d21988d47ff6cfbef10329bd3c48e78b55ab817933d8382d3042" - }, - { - "hash": "b0a22998593fc605c723dee8ff4d9315c32cfe2c", - "channel": "beta", - "version": "1.25.0-8.2.pre", - "release_date": "2021-01-06T00:07:32.178315Z", - "archive": "beta/linux/flutter_linux_1.25.0-8.2.pre-beta.tar.xz", - "sha256": "62a77e1a6fb7a0693558a6a647d79c5d9f4a39889272d7470f534b67230a4a7d" - }, - { - "hash": "63062a64432cce03315d6b5196fda7912866eb37", - "channel": "dev", - "version": "1.26.0-1.0.pre", - "release_date": "2020-12-16T22:07:55.041449Z", - "archive": "dev/linux/flutter_linux_1.26.0-1.0.pre-dev.tar.xz", - "sha256": "5cd505511856a3020f91af5e866d1fe664b1a70bddb92213b5de0b15a6e91edb" - }, - { - "hash": "8f89f6505b941329a864fef1527243a72800bf4d", - "channel": "beta", - "version": "1.25.0-8.1.pre", - "release_date": "2020-12-16T21:55:19.340490Z", - "archive": "beta/linux/flutter_linux_1.25.0-8.1.pre-beta.tar.xz", - "sha256": "8db28a4ec4dbd0e06c2c29e52560c8d9c7b0de8a94102c33764ec137ecd12e07" - }, - { - "hash": "78910062997c3a836feee883712c241a5fd22983", - "channel": "stable", - "version": "1.22.5", - "release_date": "2020-12-10T22:57:36.709896Z", - "archive": "stable/linux/flutter_linux_1.22.5-stable.tar.xz", - "sha256": "4a9624921f1130126c67411443ae1aaa5b1913bbd52adafb71d726c93e9b65b7" - }, - { - "hash": "a12e2a473a3214b4556ca589d2d9bd311ac7c6f1", - "channel": "dev", - "version": "1.25.0-8.0.pre", - "release_date": "2020-12-10T19:30:31.030402Z", - "archive": "dev/linux/flutter_linux_1.25.0-8.0.pre-dev.tar.xz", - "sha256": "6edfa02e6b10b7b2c5aa97ad4ea433c1a7997e258e770fca2ff4a8a973cc4f5f" - }, - { - "hash": "a7f5fd5360007518644597c60a1f2169eacccc2b", - "channel": "dev", - "version": "1.25.0-4.0.pre", - "release_date": "2020-12-02T17:01:50.738702Z", - "archive": "dev/linux/flutter_linux_1.25.0-4.0.pre-dev.tar.xz", - "sha256": "68d83f75d87db58adbfe5f2b286bf916a848e524c09438a6b7c4f466fccacdbd" - }, - { - "hash": "022b333a089afb81c471ec43d1f1f4f26305d876", - "channel": "beta", - "version": "1.24.0-10.2.pre", - "release_date": "2020-11-19T15:26:06.042451Z", - "archive": "beta/linux/flutter_linux_1.24.0-10.2.pre-beta.tar.xz", - "sha256": "2fa095f18a0b805f871b405054d867e105bad34604ccbf810d22a54f5e3e07f2" - }, - { - "hash": "022b333a089afb81c471ec43d1f1f4f26305d876", - "channel": "dev", - "version": "1.24.0-10.2.pre", - "release_date": "2020-11-18T22:26:37.493313Z", - "archive": "dev/linux/flutter_linux_1.24.0-10.2.pre-dev.tar.xz", - "sha256": "475c09a32239159f0e180024cd49cf1871c01c8b55e86d7e019c56567cae07c4" - }, - { - "hash": "405c85fe7ee688156028e87a623c9153d05591b2", - "channel": "dev", - "version": "1.24.0-10.1.pre", - "release_date": "2020-11-16T20:57:04.768750Z", - "archive": "dev/linux/flutter_linux_1.24.0-10.1.pre-dev.tar.xz", - "sha256": "120f75c2ab43a2148763d15a368e719b2e6a8fcd731b8af35f4605c2571b9639" - }, - { - "hash": "1aafb3a8b9b0c36241c5f5b34ee914770f015818", - "channel": "stable", - "version": "1.22.4", - "release_date": "2020-11-13T20:11:42.086473Z", - "archive": "stable/linux/flutter_linux_1.22.4-stable.tar.xz", - "sha256": "fc23a4747a54d343147c75ee3b4ab2458ce15a4b743b8a246b0de796b67a5461" - }, - { - "hash": "a0860f6e87ba4f9031bee4d6f56c08b970606bee", - "channel": "dev", - "version": "1.24.0-7.0.pre", - "release_date": "2020-11-05T00:26:10.692106Z", - "archive": "dev/linux/flutter_linux_1.24.0-7.0.pre-dev.tar.xz", - "sha256": "d51f17b24c6d991b218b91a5de0c0b871df2830bd5dc2cfaf9559716dcf1648a" - }, - { - "hash": "13896b3bd1858687a06b1639d60c877206170df8", - "channel": "dev", - "version": "1.24.0-6.0.pre", - "release_date": "2020-10-30T19:32:26.946345Z", - "archive": "dev/linux/flutter_linux_1.24.0-6.0.pre-dev.tar.xz", - "sha256": "c3766707587a88a790a07f60ffccbc76b9c9e91aa17b284de65325931be756eb" - }, - { - "hash": "8874f21e79d7ec66d0457c7ab338348e31b17f1d", - "channel": "stable", - "version": "1.22.3", - "release_date": "2020-10-30T16:35:53.176150Z", - "archive": "stable/linux/flutter_linux_1.22.3-stable.tar.xz", - "sha256": "8a680edf02542f5e50adafd417297be5fe106d6df817354cd811c7ea8c7529e3" - }, - { - "hash": "2783f8e2e14efec8b7e08f668dde61c40d128c24", - "channel": "dev", - "version": "1.24.0-3.0.pre", - "release_date": "2020-10-22T21:19:29.265296Z", - "archive": "dev/linux/flutter_linux_1.24.0-3.0.pre-dev.tar.xz", - "sha256": "7229a7fbae418aa69abcc550629bee6d48ef9a84ba8f8959a1d5af4b03461c97" - }, - { - "hash": "12bea61c2902784fec73b7f5f2ff3415f873fead", - "channel": "dev", - "version": "1.24.0-1.0.pre", - "release_date": "2020-10-20T02:45:48.918341Z", - "archive": "dev/linux/flutter_linux_1.24.0-1.0.pre-dev.tar.xz", - "sha256": "2ef371562cc54720ea0abae68c99663747d8175d78eaf4dd4597ebf01922c52d" - }, - { - "hash": "84f3d28555368a70270e9ac8390a9441df95e752", - "channel": "stable", - "version": "1.22.2", - "release_date": "2020-10-16T18:22:30.509912Z", - "archive": "stable/linux/flutter_linux_1.22.2-stable.tar.xz", - "sha256": "21d42ce985a34584e7796171ed3c4eb63fb76596f72476bb7c6ae850c4423761" - }, - { - "hash": "198df796aa80073ef22bdf249e614e2ff33c6895", - "channel": "beta", - "version": "1.23.0-18.1.pre", - "release_date": "2020-10-15T23:29:05.996433Z", - "archive": "beta/linux/flutter_linux_1.23.0-18.1.pre-beta.tar.xz", - "sha256": "c8e3dba770228c28d3be4b8075d18a292dfcdda0a4c15a4229096facfe776984" - }, - { - "hash": "37ebe3d82a9d5faeda7d3c1a6ad193030210a2cc", - "channel": "dev", - "version": "1.23.0-18.0.pre", - "release_date": "2020-10-14T00:38:49.787667Z", - "archive": "dev/linux/flutter_linux_1.23.0-18.0.pre-dev.tar.xz", - "sha256": "d99050bbb809da654a8bd57bc5f2def406c73c381d5d45556eb22d385de6733d" - }, - { - "hash": "4fa4f91d5cc65a5a98c7ccd91bb7d47814048a57", - "channel": "dev", - "version": "1.23.0-13.0.pre", - "release_date": "2020-10-12T18:10:16.613698Z", - "archive": "dev/linux/flutter_linux_1.23.0-13.0.pre-dev.tar.xz", - "sha256": "f03300e74a131582673b87233c9e57208586f88458c79eddf63b97906057fae6" - }, - { - "hash": "f30b7f4db93ee747cd727df747941a28ead25ff5", - "channel": "stable", - "version": "1.22.1", - "release_date": "2020-10-08T22:00:09.613324Z", - "archive": "stable/linux/flutter_linux_1.22.1-stable.tar.xz", - "sha256": "f04ce668df540433e04935f6d5a94ad74e5da08d25ad759abaa8879c572da650" - }, - { - "hash": "f30b7f4db93ee747cd727df747941a28ead25ff5", - "channel": "beta", - "version": "1.22.0-12.4.pre", - "release_date": "2020-10-08T21:41:58.867531Z", - "archive": "beta/linux/flutter_linux_1.22.0-12.4.pre-beta.tar.xz", - "sha256": "684e8ad07e7f87dacdfe9db5f9b5b77bb12b09fb6e7f004890fd2a643d062415" - }, - { - "hash": "db6e2d8aa5bb9a0bd3e75fc7470268b5a56fd0b0", - "channel": "dev", - "version": "1.23.0-7.0.pre", - "release_date": "2020-10-01T23:27:31.491417Z", - "archive": "dev/linux/flutter_linux_1.23.0-7.0.pre-dev.tar.xz", - "sha256": "454ade7c3d24d58f5118bf8eebc6ff1b5635f306ec481f0e5ba180bd3059d898" - }, - { - "hash": "d408d302e22179d598f467e11da5dd968dbdc9ec", - "channel": "stable", - "version": "1.22.0", - "release_date": "2020-10-01T14:34:00.881067Z", - "archive": "stable/linux/flutter_linux_1.22.0-stable.tar.xz", - "sha256": "a8ee7458c3b1c3cfff2e1307d89721f48aa6b684d9b1ab2bf419698d0ae9d967" - }, - { - "hash": "d408d302e22179d598f467e11da5dd968dbdc9ec", - "channel": "beta", - "version": "1.22.0-12.3.pre", - "release_date": "2020-09-29T20:24:32.881819Z", - "archive": "beta/linux/flutter_linux_1.22.0-12.3.pre-beta.tar.xz", - "sha256": "f0d39b401e623581425070c9ca93323236134571721d9880ba8f927f46f8bfab" - }, - { - "hash": "2bafdc822636426fa09afb43236400a60ea432b2", - "channel": "beta", - "version": "1.22.0-12.2.pre", - "release_date": "2020-09-28T16:48:05.583300Z", - "archive": "beta/linux/flutter_linux_1.22.0-12.2.pre-beta.tar.xz", - "sha256": "c3c7e66f48e1a3b63400adbcb272487a01a496552c69d7d080b0fd0978ae5594" - }, - { - "hash": "83dd176777cd04bd2aaca050f6bb6cb9edbf56a1", - "channel": "dev", - "version": "1.23.0-4.0.pre", - "release_date": "2020-09-22T21:17:39.925058Z", - "archive": "dev/linux/flutter_linux_1.23.0-4.0.pre-dev.tar.xz", - "sha256": "43a77efd0b74c611185711c7bf5413998a93e036d6dc3c186ac37b95a8304c94" - }, - { - "hash": "8b3760638a189741cd9ca881aa2dd237c1df1be5", - "channel": "beta", - "version": "1.22.0-12.1.pre", - "release_date": "2020-09-16T17:16:40.811444Z", - "archive": "beta/linux/flutter_linux_1.22.0-12.1.pre-beta.tar.xz", - "sha256": "6301b83fe963becd5d47cff6fc9e33d9412569e5c2d08b3b88952d38652da897" - }, - { - "hash": "fba99f6cf9a14512e461e3122c8ddfaa25394e89", - "channel": "stable", - "version": "1.20.4", - "release_date": "2020-09-15T17:49:01.042713Z", - "archive": "stable/linux/flutter_linux_1.20.4-stable.tar.xz", - "sha256": "70d479d7cffe31c23ff70f798a3414405441397743ab83626f018c4869bd54a3" - }, - { - "hash": "a27c242b0eea731317cfec5bbdd9d35452ab3ecb", - "channel": "dev", - "version": "1.22.0-12.0.pre", - "release_date": "2020-09-14T21:53:13.773392Z", - "archive": "dev/linux/flutter_linux_1.22.0-12.0.pre-dev.tar.xz", - "sha256": "088465e692ed42e55f992e4a6082f3ec4c2177c791bd11a3a2017b61109dc52c" - }, - { - "hash": "216dee60c0cc9449f0b29bcf922974d612263e24", - "channel": "stable", - "version": "1.20.3", - "release_date": "2020-09-02T18:06:30.513925Z", - "archive": "stable/linux/flutter_linux_1.20.3-stable.tar.xz", - "sha256": "66077a6f0d4baa58edcbc51d0418ad6781dc3ae22b88ce160b7b4556765b293f" - }, - { - "hash": "7a4317519865146acda84702bba8775610598c0c", - "channel": "dev", - "version": "1.22.0-9.0.pre", - "release_date": "2020-09-01T19:39:00.885280Z", - "archive": "dev/linux/flutter_linux_1.22.0-9.0.pre-dev.tar.xz", - "sha256": "056c9907c7f82ec050502931f90f957b67d1dc960f71eacf8135aa4cb252d1a5" - }, - { - "hash": "81a45ec2e5f80fa71d5135f1702ce540558b416d", - "channel": "beta", - "version": "1.21.0-9.2.pre", - "release_date": "2020-08-28T18:39:17.092143Z", - "archive": "beta/linux/flutter_linux_1.21.0-9.2.pre-beta.tar.xz", - "sha256": "9f88e71562044b291f67a294c0d7c236a6dc6e7ad14065608c73aa9e3896d768" - }, - { - "hash": "ce40de69b7b4f89c66d19c8dbd3bd86ae30f1bc6", - "channel": "dev", - "version": "1.22.0-1.0.pre", - "release_date": "2020-08-21T22:07:11.688251Z", - "archive": "dev/linux/flutter_linux_1.22.0-1.0.pre-dev.tar.xz", - "sha256": "6ddc48c9bb78cbf564b8423f90167398b3f8b62c4fe010183b2e2ab1a2e3ee40" - }, - { - "hash": "be9bc8cb3942bda5d8ef4e44b44616c470625e18", - "channel": "beta", - "version": "1.21.0-9.1.pre", - "release_date": "2020-08-19T18:43:17.164133Z", - "archive": "beta/linux/flutter_linux_1.21.0-9.1.pre-beta.tar.xz", - "sha256": "225c932068858d8933116ee1dcfb0de12e1c9ea961335b1a295d85607102edad" - }, - { - "hash": "bbfbf1770cca2da7c82e887e4e4af910034800b6", - "channel": "beta", - "version": "1.20.2", - "release_date": "2020-08-14T21:07:28.246902Z", - "archive": "beta/linux/flutter_linux_1.20.2-beta.tar.xz", - "sha256": "e569b55862d8224616a0528fe746b3724e3b36ffb44717d20bc7f4f7f558bcd9" - }, - { - "hash": "bbfbf1770cca2da7c82e887e4e4af910034800b6", - "channel": "stable", - "version": "1.20.2", - "release_date": "2020-08-13T21:49:57.376494Z", - "archive": "stable/linux/flutter_linux_1.20.2-stable.tar.xz", - "sha256": "d977ad356184e17565657ae9a0a0977fbb93047638af4e4320290c20c4b8418a" - }, - { - "hash": "7c6f9dd2396dfe7deb6fd11edc12c10786490083", - "channel": "dev", - "version": "1.21.0-9.0.pre", - "release_date": "2020-08-13T17:31:36.085672Z", - "archive": "dev/linux/flutter_linux_1.21.0-9.0.pre-dev.tar.xz", - "sha256": "7fef663b3edb950667be75897bd35df544baadb0ad056930f80b79cb0eae1cc7" - }, - { - "hash": "5a6dfa35caaf7bccb35488dc03677c150ebf2d97", - "channel": "dev", - "version": "1.21.0-7.0.pre", - "release_date": "2020-08-07T16:47:56.936647Z", - "archive": "dev/linux/flutter_linux_1.21.0-7.0.pre-dev.tar.xz", - "sha256": "e56e794c8e1c0340445be64655577b143efccb3ea06630fa494a82e35ca92f37" - }, - { - "hash": "2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d", - "channel": "stable", - "version": "1.20.1", - "release_date": "2020-08-06T17:51:18.839916Z", - "archive": "stable/linux/flutter_linux_1.20.1-stable.tar.xz", - "sha256": "a2b3bf4ffe51f702cb4e161088b197da4b11748e3807dd9c572169139888f536" - }, - { - "hash": "840c9205b344a59e48a5926ee2d791cc5640924c", - "channel": "stable", - "version": "1.20.0", - "release_date": "2020-08-05T14:29:36.789739Z", - "archive": "stable/linux/flutter_linux_1.20.0-stable.tar.xz", - "sha256": "65e78629b4fe65762a3b827ab12a486a7afacf2d118d92443c2583915ba718a6" - }, - { - "hash": "916c3ac648aa0498a70f32b5fc4f6c51447628e3", - "channel": "beta", - "version": "1.20.0-7.4.pre", - "release_date": "2020-08-03T21:49:15.216860Z", - "archive": "beta/linux/flutter_linux_1.20.0-7.4.pre-beta.tar.xz", - "sha256": "1258758ccb5326340ae6d0b91cc4ea86211c92e0ef03e8110c0a51465e04405e" - }, - { - "hash": "e606910f28be51c8151f6169072afe3b3a8b3c5e", - "channel": "beta", - "version": "1.20.0-7.3.pre", - "release_date": "2020-07-29T03:34:51.537375Z", - "archive": "beta/linux/flutter_linux_1.20.0-7.3.pre-beta.tar.xz", - "sha256": "c57f1ad60c29f90250df17b98158d22ee84f75f4fc0fc5d9f751a9840f055eb0" - }, - { - "hash": "a2bde82fbd52e09057a4146f46889f4e10342d32", - "channel": "beta", - "version": "1.20.0-7.2.pre", - "release_date": "2020-07-21T16:18:22.967962Z", - "archive": "beta/linux/flutter_linux_1.20.0-7.2.pre-beta.tar.xz", - "sha256": "cee8248fabb80c15bc4e79434fdbffeb44cbf7261901574b525793b8cb8b0971" - }, - { - "hash": "f25bd9c55c48c139524139b477d04b13e9f36b2c", - "channel": "dev", - "version": "1.21.0-1.0.pre", - "release_date": "2020-07-17T03:24:03.608448Z", - "archive": "dev/linux/flutter_linux_1.21.0-1.0.pre-dev.tar.xz", - "sha256": "19012134087802515e5fff5e8760b385105cf2b47ff178a21a73477365423d93" - }, - { - "hash": "7736f3bc90270dcb0480db2ccffbf1d13c28db85", - "channel": "dev", - "version": "1.20.0-7.1.pre", - "release_date": "2020-07-11T04:18:51.678227Z", - "archive": "dev/linux/flutter_linux_1.20.0-7.1.pre-dev.tar.xz", - "sha256": "6d9a915be565092fc5cb72d4e12e700c554e2813b38bb0b875c6bac95f1f28ea" - }, - { - "hash": "cc1af3afb62187cc37185afddc2d43bfef469db7", - "channel": "dev", - "version": "1.20.0-7.0.pre", - "release_date": "2020-07-09T19:21:38.263441Z", - "archive": "dev/linux/flutter_linux_1.20.0-7.0.pre-dev.tar.xz", - "sha256": "5793bace0979c1ca08568fe5565304bbc87a8cd10c5320f77228eb08eea0e22d" - }, - { - "hash": "0af027f80543302c65f99e1c1a2f3b3cbb8d04f3", - "channel": "dev", - "version": "1.20.0-3.0.pre", - "release_date": "2020-07-05T04:53:44.915768Z", - "archive": "dev/linux/flutter_linux_1.20.0-3.0.pre-dev.tar.xz", - "sha256": "a0b0771b9edd1a853a543aa8fdb4bbf525f8db3df5f4ef0ea0c3a0855eed255e" - }, - { - "hash": "8fe7655ed20ffd1395f68e30539a847a01a30351", - "channel": "beta", - "version": "1.19.0-4.3.pre", - "release_date": "2020-07-01T23:46:59.532838Z", - "archive": "beta/linux/flutter_linux_1.19.0-4.3.pre-beta.tar.xz", - "sha256": "f70cf7a569d49fd4d159b3d4c449afd40356e08f49606c71326f14efd8de93c2" - }, - { - "hash": "9b9b543d9265484132c798adaab6caca52055b08", - "channel": "beta", - "version": "1.19.0-4.2.pre", - "release_date": "2020-07-01T23:27:53.160554Z", - "archive": "beta/linux/flutter_linux_1.19.0-4.2.pre-beta.tar.xz", - "sha256": "7b76c0cb7153ec6ca4ab4cc45bf26742a89f368de3740ad1eb8b82b072e087b9" - }, - { - "hash": "15a28159bcf4b3db13411cbc8d9b5fc51adc0a93", - "channel": "dev", - "version": "1.20.0-2.0.pre", - "release_date": "2020-07-01T23:26:51.051094Z", - "archive": "dev/linux/flutter_linux_1.20.0-2.0.pre-dev.tar.xz", - "sha256": "4cb56feb24805b4f91164c287a168d8cf92dc6d935d1b96bee72403f34b7973b" - }, - { - "hash": "8af6b2f038c1172e61d418869363a28dffec3cb4", - "channel": "stable", - "version": "1.17.5", - "release_date": "2020-07-01T23:24:33.419295Z", - "archive": "stable/linux/flutter_linux_1.17.5-stable.tar.xz", - "sha256": "b1a5d01b441a92221d081f92adffb532cb081f17e05a619784ae1d688792574d" - }, - { - "hash": "1ad9baa8b99a2897c20f9e6e54d3b9b359ade314", - "channel": "stable", - "version": "1.17.4", - "release_date": "2020-06-18T16:04:42.724586Z", - "archive": "stable/linux/flutter_linux_1.17.4-stable.tar.xz", - "sha256": "74dd0e3f3f63b8b25023eeec3460e456ee89a974ff99af4db93085e3cdcc28e3" - }, - { - "hash": "d9653445f4d1257b5f5adb4b271d1316469e8cf1", - "channel": "dev", - "version": "1.20.0-0.0.pre", - "release_date": "2020-06-11T15:33:43.923597Z", - "archive": "dev/linux/flutter_linux_1.20.0-0.0.pre-dev.tar.xz", - "sha256": "ab045973c3d9bf405b90ffa144ddb67288eb9f9e0d5406c38dcc599eb8de5abe" - }, - { - "hash": "f994b769743368b36b9c03fb359f62230b60ab92", - "channel": "beta", - "version": "1.19.0-4.1.pre", - "release_date": "2020-06-10T22:07:46.350990Z", - "archive": "beta/linux/flutter_linux_1.19.0-4.1.pre-beta.tar.xz", - "sha256": "626450b87c11ece65b52e817c5df1016add6ec0c6665e35b3a8d9f2e79be4a00" - }, - { - "hash": "c264b70ec3b0cf9cd568eba5d65d0ce47fe57e1d", - "channel": "dev", - "version": "1.19.0-5.0.pre", - "release_date": "2020-06-09T23:56:14.424965Z", - "archive": "dev/linux/flutter_linux_1.19.0-5.0.pre-dev.tar.xz", - "sha256": "69e2ac80a8ce18adf2b280efd63cf5445b2d3060a5bd2c7c7bc75954fc22604e" - }, - { - "hash": "2f7a59a8da20b3a7fbdfb7ac783dbca977a81653", - "channel": "dev", - "version": "1.19.0-4.0.pre", - "release_date": "2020-06-05T16:39:36.057354Z", - "archive": "dev/linux/flutter_linux_1.19.0-4.0.pre-dev.tar.xz", - "sha256": "b0f8d5d76daa63624b2715495daecef3628b156e4c93412de2653b649eaf4c96" - }, - { - "hash": "b041144f833e05cf463b8887fa12efdec9493488", - "channel": "stable", - "version": "1.17.3", - "release_date": "2020-06-04T17:15:43.744344Z", - "archive": "stable/linux/flutter_linux_1.17.3-stable.tar.xz", - "sha256": "3fa0d658d651a16ccfb4be1c4f609bab1b93abfd5e13627772b803a8e0b5d59b" - }, - { - "hash": "6135091de9f8f6befc2ec7f8835d28d43a21cd05", - "channel": "dev", - "version": "1.19.0-3.0.pre", - "release_date": "2020-06-02T20:25:12.215535Z", - "archive": "dev/linux/flutter_linux_1.19.0-3.0.pre-dev.tar.xz", - "sha256": "d2eac8112604c535a7a631f477b2743f3d67f3a4a1cd4c07de597b559479afb2" - }, - { - "hash": "1d395c5e187370f2838bb043d3b438029b484bfc", - "channel": "dev", - "version": "1.19.0-2.0.pre", - "release_date": "2020-06-01T17:41:58.968805Z", - "archive": "dev/linux/flutter_linux_1.19.0-2.0.pre-dev.tar.xz", - "sha256": "0cca4b2b968ec0d568c5799b8e31cbda2a932962a85bcf408d82a0de075d2dcd" - }, - { - "hash": "5f21edf8b66e31a39133177319414395cc5b5f48", - "channel": "stable", - "version": "1.17.2", - "release_date": "2020-05-28T21:45:26.846070Z", - "archive": "stable/linux/flutter_linux_1.17.2-stable.tar.xz", - "sha256": "c74e72a190766a1ecd5b8922bcbb66d0e698e7bcb66533c645659d1e66cd52bc" - }, - { - "hash": "2738a1148ba6c9a6114df62358109407c3ef2553", - "channel": "beta", - "version": "1.18.0-11.1.pre", - "release_date": "2020-05-14T17:55:40.355488Z", - "archive": "beta/linux/flutter_linux_1.18.0-11.1.pre-beta.tar.xz", - "sha256": "ec4535ec5bdb0f3d7549a81a31a8975febe998efafae44806cdb37173513cc55" - }, - { - "hash": "f7a6a7906be96d2288f5d63a5a54c515a6e987fe", - "channel": "stable", - "version": "1.17.1", - "release_date": "2020-05-13T18:12:10.369553Z", - "archive": "stable/linux/flutter_linux_1.17.1-stable.tar.xz", - "sha256": "ae40bc83504c147229b34755892e8df36678e312f66117904deaff2c8faf4a21" - }, - { - "hash": "456d80b9ddd74b4b5ca3b77bbfb70ab0e05d3fa8", - "channel": "dev", - "version": "1.19.0-1.0.pre", - "release_date": "2020-05-12T22:42:16.142124Z", - "archive": "dev/linux/flutter_linux_1.19.0-1.0.pre-dev.tar.xz", - "sha256": "11c832731aa9ec783d5ed8ea0f14eb9f820cdf6e2850ea6367b034c15216b126" - }, - { - "hash": "a849daf2836d653ef80e01f428531b3f787671cb", - "channel": "dev", - "version": "1.19.0-0.0.pre", - "release_date": "2020-05-08T19:40:11.308167Z", - "archive": "dev/linux/flutter_linux_1.19.0-0.0.pre-dev.tar.xz", - "sha256": "42a5f53123b864927f884c85eaf9f2183daa67b2db6a0d35fe6a384af4efe309" - }, - { - "hash": "8fbfe1cfbf6ac5c5c23930556e1019385005bf81", - "channel": "dev", - "version": "1.18.0-13.0.pre", - "release_date": "2020-05-07T17:15:45.535198Z", - "archive": "dev/linux/flutter_linux_1.18.0-13.0.pre-dev.tar.xz", - "sha256": "c55739c77a5ec42c07405d250fb503359c888a7a8f6d9c6f3230d859ed7813d8" - }, - { - "hash": "c2b7342ca470b11cfaad4fbfb094f73aa4c85320", - "channel": "dev", - "version": "1.18.0-12.0.pre", - "release_date": "2020-05-06T22:11:06.703984Z", - "archive": "dev/linux/flutter_linux_1.18.0-12.0.pre-dev.tar.xz", - "sha256": "8cd4f14ddae89e14b54b6c3d7ba53e658f46872685340d70198456a8b15f7163" - }, - { - "hash": "8568eda15b2527afd48622257cee3811e0d9da04", - "channel": "dev", - "version": "1.18.0-11.0.pre", - "release_date": "2020-05-06T18:45:38.119972Z", - "archive": "dev/linux/flutter_linux_1.18.0-11.0.pre-dev.tar.xz", - "sha256": "192c66e99e7b153544231d02d05e506d7b3550392a4df5b5b76abcaae94f1560" - }, - { - "hash": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f", - "channel": "stable", - "version": "1.17.0", - "release_date": "2020-05-06T14:34:15.140240Z", - "archive": "stable/linux/flutter_linux_1.17.0-stable.tar.xz", - "sha256": "8e46dae83f30d0d4e42e32ef467b201ddb9b90adb0349538cb7c4fe8d0a8b3ab" - }, - { - "hash": "9b7b9d795edfdd12c6ad8dd6495bed789c1bac05", - "channel": "dev", - "version": "1.18.0-10.0.pre", - "release_date": "2020-05-06T01:46:06.990181Z", - "archive": "dev/linux/flutter_linux_1.18.0-10.0.pre-dev.tar.xz", - "sha256": "784f8e20f8739dfd301ccdcd77bf1beea3ed4eb4b02ca44ba9dae6a36a5ccfda" - }, - { - "hash": "445570ba1ae89eecaf9409fb5acde7e8b49ee975", - "channel": "dev", - "version": "1.18.0-9.0.pre", - "release_date": "2020-05-05T23:13:38.294534Z", - "archive": "dev/linux/flutter_linux_1.18.0-9.0.pre-dev.tar.xz", - "sha256": "14203a17699bf80bf885e124cef2f4b341d85d5785ce8b1256e3784dbf9f1b77" - }, - { - "hash": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f", - "channel": "beta", - "version": "1.17.0-3.4.pre", - "release_date": "2020-05-02T20:36:26.070374Z", - "archive": "beta/linux/flutter_linux_1.17.0-3.4.pre-beta.tar.xz", - "sha256": "6521baa72c422dd5c1c9f95e8d98e97272c3276f6ceebda826b2d38715346aa5" - }, - { - "hash": "0da1ab09224f6c6d69fcff1195a3662fe7ad7534", - "channel": "beta", - "version": "1.17.0-3.3.pre", - "release_date": "2020-04-29T00:00:51.503450Z", - "archive": "beta/linux/flutter_linux_1.17.0-3.3.pre-beta.tar.xz", - "sha256": "28ffc3c54544cf78b416761fb480ffd82bd49f9fc9571ba083d3337b4faf675a" - }, - { - "hash": "e0c63cd35e15e407a80dc44281cc392535fcce25", - "channel": "dev", - "version": "1.18.0-8.0.pre", - "release_date": "2020-04-24T16:42:21.099303Z", - "archive": "dev/linux/flutter_linux_1.18.0-8.0.pre-dev.tar.xz", - "sha256": "e51099074ebbf0bde6d11161f62ff3414210dcf89298a401dcb9360387185389" - }, - { - "hash": "d482163f59c49c32cb329beb2c3111c8e961d6b9", - "channel": "dev", - "version": "1.18.0-7.0.pre", - "release_date": "2020-04-24T13:01:43.529635Z", - "archive": "dev/linux/flutter_linux_1.18.0-7.0.pre-dev.tar.xz", - "sha256": "9e724a87d2627391249027125d46b0442c23e054f73ac7603634aeb8d94c548a" - }, - { - "hash": "2a7bc389f28d83c581f7ddd4601588a22e12512e", - "channel": "beta", - "version": "1.17.0-3.2.pre", - "release_date": "2020-04-22T17:16:41.221090Z", - "archive": "beta/linux/flutter_linux_1.17.0-3.2.pre-beta.tar.xz", - "sha256": "9bae19fe9adf50ed01058ac287a48417a7c3354cec09daa3494d3b033c2dcd83" - }, - { - "hash": "84c84fb24914e098667649be04614f6ea19d689c", - "channel": "dev", - "version": "1.18.0-6.0.pre", - "release_date": "2020-04-21T22:15:53.662665Z", - "archive": "dev/linux/flutter_linux_1.18.0-6.0.pre-dev.tar.xz", - "sha256": "4983ecc776316e678bed6742310d0c2c41fdc1b8748135ac9c5ae0571f2a82b5" - }, - { - "hash": "f139b11009aeb8ed2a3a3aa8b0066e482709dde3", - "channel": "stable", - "version": "v1.12.13+hotfix.9", - "release_date": "2020-04-17T21:40:00.498256Z", - "archive": "stable/linux/flutter_linux_v1.12.13+hotfix.9-stable.tar.xz", - "sha256": "3f241c6237078338a0568d1e161f5d4b6d47ea3af377c9522d17223a9bb94c96" - }, - { - "hash": "7f56b53de4e5da2147c4d30d857a72c6f2e4f42f", - "channel": "dev", - "version": "1.18.0-dev.5.0", - "release_date": "2020-04-17T21:38:14.667745Z", - "archive": "dev/linux/flutter_linux_1.18.0-dev.5.0-dev.tar.xz", - "sha256": "83d457e42c8d0d535a13001324d3deea88b8225a42753a9ac05ce0983f5c5637" - }, - { - "hash": "8f7327f83a3e094285163ae402c6f94190fc1674", - "channel": "dev", - "version": "1.18.0-dev.4.0", - "release_date": "2020-04-07T16:38:36.607332Z", - "archive": "dev/linux/flutter_linux_1.18.0-dev.4.0-dev.tar.xz", - "sha256": "51d032c2759b7e23a0381b25736914019c7e7d8fc5a2f61a2059606a1645157d" - }, - { - "hash": "de1e5729165b61829a8fa7c41b449c6c7ad74c84", - "channel": "dev", - "version": "1.18.0-dev.3.0", - "release_date": "2020-04-07T04:25:05.542718Z", - "archive": "dev/linux/flutter_linux_1.18.0-dev.3.0-dev.tar.xz", - "sha256": "1ab03468c4a10bacc83d776be7fa2e37470d5912bf51236e7b779babe2de24e3" - }, - { - "hash": "727552e5caa10eee5808452dfbedfc9ef02178b8", - "channel": "dev", - "version": "1.18.0-dev.2.0", - "release_date": "2020-04-06T23:33:17.301127Z", - "archive": "dev/linux/flutter_linux_1.18.0-dev.2.0-dev.tar.xz", - "sha256": "c3627ac5b58b0008272ce5364a9f38af4342f6f887a44795e5d316e787a253bf" - }, - { - "hash": "d3ed9ec945f8869f0e136c357d0c2a6be2b60c98", - "channel": "beta", - "version": "1.17.0-dev.3.1", - "release_date": "2020-04-06T23:15:19.371085Z", - "archive": "beta/linux/flutter_linux_1.17.0-dev.3.1-beta.tar.xz", - "sha256": "16d996182bd4d182cf8d7e3f433a0ae9d0cd615e4fef6a11efa9281800538b13" - }, - { - "hash": "fef9d4d7cded15e4deff318c12cc2756c5c28bd6", - "channel": "dev", - "version": "1.18.0-dev.1.0", - "release_date": "2020-04-06T19:06:05.220571Z", - "archive": "dev/linux/flutter_linux_1.18.0-dev.1.0-dev.tar.xz", - "sha256": "87384ffb9241ff36ca32d135b3d35055a8967f2d946ef05f16cbc8995c0bb379" - }, - { - "hash": "14f3a36abaace74aeba3e40001ce905336fef415", - "channel": "dev", - "version": "1.18.0-dev.0.0", - "release_date": "2020-04-04T23:15:42.693465Z", - "archive": "dev/linux/flutter_linux_1.18.0-dev.0.0-dev.tar.xz", - "sha256": "80d1de5f3557b7f88337633642fda0632434cc7f6262f209f62d162a02d64f71" - }, - { - "hash": "a8b3d1b74fac5251c61c8a898cf7544fd77ddd16", - "channel": "dev", - "version": "1.17.0-dev.5.0", - "release_date": "2020-04-04T00:59:29.604092Z", - "archive": "dev/linux/flutter_linux_1.17.0-dev.5.0-dev.tar.xz", - "sha256": "f382cb6be8a344fe3bad1346d448aa431e7c4a1ee386c4b4145e90b68493424f" - }, - { - "hash": "66eb92e6259687c6e3434e9c76842b0848775c6b", - "channel": "dev", - "version": "1.17.0-dev.4.0", - "release_date": "2020-04-03T00:00:48.379173Z", - "archive": "dev/linux/flutter_linux_1.17.0-dev.4.0-dev.tar.xz", - "sha256": "e1be3116aa9d0090ee5d0f2d0cd390625f5acf60a5005e82fa00ec2cc253b6f2" - }, - { - "hash": "3a0d8377410ba85db3fb6a900e83dd211669bfc4", - "channel": "dev", - "version": "1.17.0-dev.3.0", - "release_date": "2020-04-02T18:55:26.271012Z", - "archive": "dev/linux/flutter_linux_1.17.0-dev.3.0-dev.tar.xz", - "sha256": "33f9411278719e42fe95225acbf829968dbeaf847c7baaa80b1d5a9fe1c52429" - }, - { - "hash": "a94e647d6b11dd8523a30130a2548d73a3eaff4f", - "channel": "dev", - "version": "1.17.0-dev.2.0", - "release_date": "2020-04-02T17:23:44.462422Z", - "archive": "dev/linux/flutter_linux_1.17.0-dev.2.0-dev.tar.xz", - "sha256": "9c1c6f8435229005adeac06139dc16f90a4de17d8f9d4081ddf7b606406e3ce1" - }, - { - "hash": "d14a301e419af7f3eff7cc3a49bf936c75d2b2f0", - "channel": "dev", - "version": "1.17.0-dev.1.0", - "release_date": "2020-04-01T22:17:03.293061Z", - "archive": "dev/linux/flutter_linux_1.17.0-dev.1.0-dev.tar.xz", - "sha256": "c93b7a96435ca200e26ef582b0d7856e5edafb6377d6e6b645fe0f7922535787" - }, - { - "hash": "aee9e94c21009bfc6c08f442eacde06f001c25f9", - "channel": "dev", - "version": "1.17.0-dev.0.0", - "release_date": "2020-03-31T19:32:26.714019Z", - "archive": "dev/linux/flutter_linux_1.17.0-dev.0.0-dev.tar.xz", - "sha256": "5c9570c2e4d6147f91c7645465d48d6aebf26846aab347ae3d444a346be99581" - }, - { - "hash": "be3a4b37b3e9ab4e80d45b59bed53708b96d211f", - "channel": "dev", - "version": "v1.16.3", - "release_date": "2020-03-27T18:34:01.712513Z", - "archive": "dev/linux/flutter_linux_v1.16.3-dev.tar.xz", - "sha256": "2147fcbeebb0d888447ca17149aba2e0cba60b3b2c1ddc15e03bda350faa3448" - }, - { - "hash": "58cad787d89cc12e72f1f0ec3f1df6a9796ef029", - "channel": "dev", - "version": "v1.16.2", - "release_date": "2020-03-24T14:59:26.515147Z", - "archive": "dev/linux/flutter_linux_v1.16.2-dev.tar.xz", - "sha256": "2837d7c4a3d0ce21b525a20c46fe10695f2cbce3fa2d6bf4830ec7db164f5e9b" - }, - { - "hash": "e6b0f5f238d7c67a686e54d09c91e654fa8f215d", - "channel": "dev", - "version": "v1.16.1", - "release_date": "2020-03-19T18:16:28.667976Z", - "archive": "dev/linux/flutter_linux_v1.16.1-dev.tar.xz", - "sha256": "b44e70a935602fa87f2cdd0394f4609d4ba18b9ab9b30ad228cb4eb0886c7fdf" - }, - { - "hash": "08768e87e408fd3df8f848b468b876fef1a49f76", - "channel": "dev", - "version": "v1.16.0", - "release_date": "2020-03-18T22:18:46.105987Z", - "archive": "dev/linux/flutter_linux_v1.16.0-dev.tar.xz", - "sha256": "edb1c5a611cafa4e390957d34445588a2c1ee4651c34bd0c9ee4c3c8c972438a" - }, - { - "hash": "2294d75bfa8d067ba90230c0fc2268f3636d7584", - "channel": "beta", - "version": "v1.15.17", - "release_date": "2020-03-17T17:25:39.733672Z", - "archive": "beta/linux/flutter_linux_v1.15.17-beta.tar.xz", - "sha256": "4de3934d3915411e53fb9f74443b7912489b6a598a94fe9f84ed1ce28d373446" - }, - { - "hash": "1606d878348e98fb1c401679ca8e006c7b7eb41f", - "channel": "dev", - "version": "v1.15.22", - "release_date": "2020-03-16T19:36:37.526998Z", - "archive": "dev/linux/flutter_linux_v1.15.22-dev.tar.xz", - "sha256": "6e1e24338a58098b93977335f8d06bbeb8383063609c425a812991c4271eb61e" - }, - { - "hash": "e2b4edd2865794e4ce9d4e8c40d732ed14eb6fa1", - "channel": "dev", - "version": "v1.15.21", - "release_date": "2020-03-13T20:57:15.085359Z", - "archive": "dev/linux/flutter_linux_v1.15.21-dev.tar.xz", - "sha256": "365cbd32fb113c56b714e31d99e4050ff858c7e8c80e98d35b44b43c60fb63c0" - }, - { - "hash": "4049889d9eecc8fb3eda316a5c371eeb636b2ae5", - "channel": "dev", - "version": "v1.15.20", - "release_date": "2020-03-11T16:44:47.227798Z", - "archive": "dev/linux/flutter_linux_v1.15.20-dev.tar.xz", - "sha256": "d10b1a2b7638df289bc2489c3a10f66398d396ac1a42a95fec24639793758516" - }, - { - "hash": "60d0fef17ae60b88cb52e6158bda2d91b600299c", - "channel": "dev", - "version": "v1.15.19", - "release_date": "2020-03-10T17:35:20.848792Z", - "archive": "dev/linux/flutter_linux_v1.15.19-dev.tar.xz", - "sha256": "96a9d89673602a9c104a9088a2f04e5190fb4ae7eeea76274b9a4bc7f988986d" - }, - { - "hash": "9437639590adaa91e3df31cd9ce85133e401cd51", - "channel": "dev", - "version": "v1.15.18", - "release_date": "2020-03-06T23:41:43.468207Z", - "archive": "dev/linux/flutter_linux_v1.15.18-dev.tar.xz", - "sha256": "81a3d7ccafaf048c57bc7e942445c536ee27dc1a9b47b2f4e6b45bc7f7f9f168" - }, - { - "hash": "2294d75bfa8d067ba90230c0fc2268f3636d7584", - "channel": "dev", - "version": "v1.15.17", - "release_date": "2020-03-06T19:55:22.240638Z", - "archive": "dev/linux/flutter_linux_v1.15.17-dev.tar.xz", - "sha256": "f4cac034959bfc25664c3a6cfc09ea1634dad18ffa02849ff21c9376126e948a" - }, - { - "hash": "fc3f03886dd715dda8e640e0b8bf3871213c1420", - "channel": "dev", - "version": "v1.15.16", - "release_date": "2020-03-06T04:08:58.408201Z", - "archive": "dev/linux/flutter_linux_v1.15.16-dev.tar.xz", - "sha256": "64f9158b0bb4d3343ebceaec3f87756e41c6843fb18c57c2ac0461fedd544ae4" - }, - { - "hash": "ed94c9d856c8de67f183d8ac18b06f61f5405219", - "channel": "dev", - "version": "v1.15.15", - "release_date": "2020-03-06T03:36:11.798004Z", - "archive": "dev/linux/flutter_linux_v1.15.15-dev.tar.xz", - "sha256": "770a00acfdd73049573514e122bdca8855eedc39e89fd9e42f8ed15bf1c43ad9" - }, - { - "hash": "a68f96ae3f51c0339477f8b4711ba1f11daffb71", - "channel": "dev", - "version": "v1.15.14", - "release_date": "2020-03-06T02:23:47.980772Z", - "archive": "dev/linux/flutter_linux_v1.15.14-dev.tar.xz", - "sha256": "9e8936541a09965ec5beb3c76b9abfa3437a7659a16dd5dffa3d6484f285bdc9" - }, - { - "hash": "92ce53cc6e9e85e8a9f3f496c8318e556ca8f974", - "channel": "dev", - "version": "v1.15.13", - "release_date": "2020-03-06T01:27:25.586991Z", - "archive": "dev/linux/flutter_linux_v1.15.13-dev.tar.xz", - "sha256": "164a17e161acb07276b3a076adfad7b39ad0a588f79c2a29a07c412f43fd4af3" - }, - { - "hash": "b127868db4944013c65232af46ce02d5b5bde93e", - "channel": "dev", - "version": "v1.15.12", - "release_date": "2020-03-05T23:38:34.152662Z", - "archive": "dev/linux/flutter_linux_v1.15.12-dev.tar.xz", - "sha256": "ddacb5e4cdb12606e60da858a2a2396de9cfcc38588feebc357e4825cb297466" - }, - { - "hash": "1dce0a51e613df290b894e28e6a7d44f5fd87eb1", - "channel": "dev", - "version": "v1.15.11", - "release_date": "2020-03-05T21:13:06.385008Z", - "archive": "dev/linux/flutter_linux_v1.15.11-dev.tar.xz", - "sha256": "691ce923c058906e6d1ccf11492adb6026dd423ec119f00ce20d6d97b81d6440" - }, - { - "hash": "3018d8ddb3b40156b6d5a32ee4deaaa80277ea71", - "channel": "dev", - "version": "v1.15.10", - "release_date": "2020-03-05T18:46:54.555210Z", - "archive": "dev/linux/flutter_linux_v1.15.10-dev.tar.xz", - "sha256": "1a63b7bc1c530e0a742eaf4adcd637f813f3d12ed311a4c1e23bbec83ab05acd" - }, - { - "hash": "cc52a903a8639a8f59e84942172456629eb1aa8f", - "channel": "dev", - "version": "v1.15.9", - "release_date": "2020-03-05T05:37:28.243265Z", - "archive": "dev/linux/flutter_linux_v1.15.9-dev.tar.xz", - "sha256": "7bc9143b57a1c7b4efe9b133b5080371a2ffc2b96bc43034857da58e48c11d0f" - }, - { - "hash": "83dba9bc16be4aba56df6c5752f91e777d4331d6", - "channel": "dev", - "version": "v1.15.8", - "release_date": "2020-03-05T03:14:51.335838Z", - "archive": "dev/linux/flutter_linux_v1.15.8-dev.tar.xz", - "sha256": "b785920dde95b1e27011f0934fd3a9e757b993317f7d9b95c72cabc98ea0afb1" - }, - { - "hash": "db94472aeb03eb91e833686223e8d930eb8e8d45", - "channel": "dev", - "version": "v1.15.7", - "release_date": "2020-03-05T02:23:36.154290Z", - "archive": "dev/linux/flutter_linux_v1.15.7-dev.tar.xz", - "sha256": "f5ab8510812979a1d14802d7180f8b6e892011b2ee2270ec61dd1e0fa29c623f" - }, - { - "hash": "0b8129db1f6b01924c82f3acccc498108c0e1ff4", - "channel": "dev", - "version": "v1.15.6", - "release_date": "2020-03-05T01:25:11.376021Z", - "archive": "dev/linux/flutter_linux_v1.15.6-dev.tar.xz", - "sha256": "795e0afaee67967dcfb7ffa567b7ae0842e7507b7717f6901d67a5192f7fcfe6" - }, - { - "hash": "cbbb7ec5a7031187cc906ac9f375f340c16d51af", - "channel": "dev", - "version": "v1.15.5", - "release_date": "2020-03-04T23:34:47.423859Z", - "archive": "dev/linux/flutter_linux_v1.15.5-dev.tar.xz", - "sha256": "8e19d82583e352d5fde12160ed12b4afbde95bde0d64dadce9b09cdfe46d014b" - }, - { - "hash": "a5bd678585ceda542205a54d6e650b1b4297bd0a", - "channel": "dev", - "version": "v1.15.4", - "release_date": "2020-03-04T21:38:53.752089Z", - "archive": "dev/linux/flutter_linux_v1.15.4-dev.tar.xz", - "sha256": "a67bc93e6c0fefc759287e8b9f33a063a18566f56cb678f2015f6ec683ea6adf" - }, - { - "hash": "0b8abb4724aa590dd0f429683339b1e045a1594d", - "channel": "stable", - "version": "v1.12.13+hotfix.8", - "release_date": "2020-02-11T22:00:18.927951Z", - "archive": "stable/linux/flutter_linux_v1.12.13+hotfix.8-stable.tar.xz", - "sha256": "cd10bf7410337da3faaa7d104313c920a6553c370f3c827531d78d3c59273306" - }, - { - "hash": "67826bdce54505760fe83b7ead70bdb5af6fe9f2", - "channel": "dev", - "version": "v1.15.3", - "release_date": "2020-02-11T18:08:56.423824Z", - "archive": "dev/linux/flutter_linux_v1.15.3-dev.tar.xz", - "sha256": "71a42c4a1bb0dd1be9a522dd3ddc64645a0be9a299764f7f6dfce0e330e7aa1a" - }, - { - "hash": "d94ff4bdbec7f1141d16cf97d3ceed485c9a1d36", - "channel": "dev", - "version": "v1.15.2", - "release_date": "2020-02-07T23:06:56.001552Z", - "archive": "dev/linux/flutter_linux_v1.15.2-dev.tar.xz", - "sha256": "3425a51c4460e28bbe8d6016575a29eaa018785b801e74d4a7337fe523e866c5" - }, - { - "hash": "4d2ce7be2cd4622cede017b0fe2b8a66c821fe48", - "channel": "dev", - "version": "v1.15.1", - "release_date": "2020-02-06T23:04:49.071209Z", - "archive": "dev/linux/flutter_linux_v1.15.1-dev.tar.xz", - "sha256": "6a5a5fe2564927a7c8ff2cd5878f7dc2a9ec52f78795408366d17986a44d2e8f" - }, - { - "hash": "9b3e1639db189866af55ed3a0dfd47b217106fcd", - "channel": "dev", - "version": "v1.15.0", - "release_date": "2020-02-06T14:47:20.237810Z", - "archive": "dev/linux/flutter_linux_v1.15.0-dev.tar.xz", - "sha256": "224c7f15ea0b65c9b4ca2b760514225a9139c2ef440e44a3fb10af7aee72984a" - }, - { - "hash": "fabeb2a16f1d008ab8230f450c49141d35669798", - "channel": "beta", - "version": "v1.14.6", - "release_date": "2020-02-05T19:47:13.642202Z", - "archive": "beta/linux/flutter_linux_v1.14.6-beta.tar.xz", - "sha256": "fe45e689a44ffb51d8cb4cfc0b81a91b9c964a4f77b0576e1a79fe404ebee9a8" - }, - { - "hash": "fabeb2a16f1d008ab8230f450c49141d35669798", - "channel": "dev", - "version": "v1.14.6", - "release_date": "2020-01-29T01:52:39.479736Z", - "archive": "dev/linux/flutter_linux_v1.14.6-dev.tar.xz", - "sha256": "6fdafce8b0bafb0f8a7c6dd93fb9f4ea9eb4f8f54294b0920aac4bec802ec8c8" - }, - { - "hash": "92cbaa3efe985cc8370d0d70fef5058c971b2eee", - "channel": "dev", - "version": "v1.14.5", - "release_date": "2020-01-27T18:40:49.492985Z", - "archive": "dev/linux/flutter_linux_v1.14.5-dev.tar.xz", - "sha256": "c6afa9d66401e220bca9593c143c5cdedbb5b7ca1fad561f24a36695c5bc250f" - }, - { - "hash": "9f5ff2306bb3e30b2b98eee79cd231b1336f41f4", - "channel": "stable", - "version": "v1.12.13+hotfix.7", - "release_date": "2020-01-27T16:03:26.295545Z", - "archive": "stable/linux/flutter_linux_v1.12.13+hotfix.7-stable.tar.xz", - "sha256": "5fc94d7ff350b551da7ce5703199a815d24afda2849de6290836b71ee006ebd2" - }, - { - "hash": "5e1000cd8540a6305df5a999d4dcb0b59fe3c66a", - "channel": "dev", - "version": "v1.14.4", - "release_date": "2020-01-25T01:00:32.350888Z", - "archive": "dev/linux/flutter_linux_v1.14.4-dev.tar.xz", - "sha256": "6d535f01b5e0ebeb5f5ad65109f778888e53f41e9d4a6f774032222852271e32" - }, - { - "hash": "b5a23fdf5bc01e292238627f031a34ed0adb80b0", - "channel": "dev", - "version": "v1.14.3", - "release_date": "2020-01-22T01:28:39.478011Z", - "archive": "dev/linux/flutter_linux_v1.14.3-dev.tar.xz", - "sha256": "89621d421b67ca1ff4951648c8dbfd30045cc6d81339b9ff93e8cf6c53848148" - }, - { - "hash": "ec1044a8773e31b4630bf162d9c374236ad1eaaf", - "channel": "dev", - "version": "v1.14.2", - "release_date": "2020-01-21T20:17:02.859831Z", - "archive": "dev/linux/flutter_linux_v1.14.2-dev.tar.xz", - "sha256": "79f58e3ae0c9f08e4c80c66a6f43495a996307c32bc54883562c5c294ddc90b1" - }, - { - "hash": "c88320458ea86da379aec43dcd24057ad1d79652", - "channel": "dev", - "version": "v1.14.1", - "release_date": "2020-01-16T18:38:09.565496Z", - "archive": "dev/linux/flutter_linux_v1.14.1-dev.tar.xz", - "sha256": "4145f92376cbe0979ce816070178a6fbfd0467a1edd0055c4323e8eff452c486" - }, - { - "hash": "bc6f270c584d1fdba81330090ef6e822b9082919", - "channel": "dev", - "version": "v1.14.0", - "release_date": "2020-01-15T23:25:38.749196Z", - "archive": "dev/linux/flutter_linux_v1.14.0-dev.tar.xz", - "sha256": "b3f2d62689c86812bfdf945beb9f3dcac4149d078aa6efc2b5e5b214105d7f97" - }, - { - "hash": "659dc8129d4edb9166e9a0d600439d135740933f", - "channel": "beta", - "version": "v1.13.6", - "release_date": "2020-01-15T17:38:56.683671Z", - "archive": "beta/linux/flutter_linux_v1.13.6-beta.tar.xz", - "sha256": "113e0f746bdf1bb25fe035db06b149210fe6ece39918086297326dd710a74fb0" - }, - { - "hash": "d291de086c0840eb63d82bcde11af2ec521e2a0c", - "channel": "dev", - "version": "v1.13.9", - "release_date": "2020-01-14T21:30:53.036271Z", - "archive": "dev/linux/flutter_linux_v1.13.9-dev.tar.xz", - "sha256": "cc5cc4493ce06adbc7b31bcad6da058556c085e676bba1a7c3f0a98bcc39ac20" - }, - { - "hash": "1c79347ef659402a17bf9405b3305564530d3bd2", - "channel": "dev", - "version": "v1.13.8", - "release_date": "2020-01-10T22:26:07.379531Z", - "archive": "dev/linux/flutter_linux_v1.13.8-dev.tar.xz", - "sha256": "a0658396083f3173500acbec42bd002c5d12b7d83df44d3dbfccbb47fe86821e" - }, - { - "hash": "a3bbdfb23acb173b1bac7cbcd7c4ac723eb584b9", - "channel": "dev", - "version": "v1.13.7", - "release_date": "2020-01-07T23:11:25.187283Z", - "archive": "dev/linux/flutter_linux_v1.13.7-dev.tar.xz", - "sha256": "2354d78ba0ff7e6054e3b21bb5d6b5a52ded5b6765fd5630fe4826d76716b4ee" - }, - { - "hash": "659dc8129d4edb9166e9a0d600439d135740933f", - "channel": "dev", - "version": "v1.13.6", - "release_date": "2020-01-02T22:35:19.652212Z", - "archive": "dev/linux/flutter_linux_v1.13.6-dev.tar.xz", - "sha256": "aadf2a17ca97295997ad611a40175f52725834e6dfe2abfe3ab45c4999779930" - }, - { - "hash": "41a911099b7d06f7b1c29f4420cfcfe41fd26e46", - "channel": "dev", - "version": "v1.13.5", - "release_date": "2019-12-21T02:24:22.017073Z", - "archive": "dev/linux/flutter_linux_v1.13.5-dev.tar.xz", - "sha256": "a5beb8794f414f08448e40c9d35ccdf56fa0ce485db2f8d2a0ad5976b444b485" - }, - { - "hash": "bd25f70c66ccd832d53644bd33a1368e96a7aa75", - "channel": "dev", - "version": "v1.13.4", - "release_date": "2019-12-20T20:00:43.417860Z", - "archive": "dev/linux/flutter_linux_v1.13.4-dev.tar.xz", - "sha256": "fc77a0afc6371fbda820213ec461f21e8ea360eb5a1f44f046e8052d6c443b8b" - }, - { - "hash": "4af66e335f8d87da5cb8c7f2a3e89c1ee02ef23b", - "channel": "dev", - "version": "v1.13.3", - "release_date": "2019-12-19T21:45:48.483686Z", - "archive": "dev/linux/flutter_linux_v1.13.3-dev.tar.xz", - "sha256": "d613bfd4cebe2bb3abd4483abfca9abc7d0bdcd912d3279ee3ab933b1daefd0c" - }, - { - "hash": "4944622b5d8e7a8ee5dbf658b0d0e8ab94b8efd3", - "channel": "dev", - "version": "v1.13.2", - "release_date": "2019-12-13T02:19:56.063984Z", - "archive": "dev/linux/flutter_linux_v1.13.2-dev.tar.xz", - "sha256": "263b1b463052344e52b889cbfdab4d722b67555dbaab665393d0179fd5ea7b4f" - }, - { - "hash": "4938ea03858e178541d723dff430e6c9d044e6ae", - "channel": "dev", - "version": "v1.13.1", - "release_date": "2019-12-12T21:44:09.530459Z", - "archive": "dev/linux/flutter_linux_v1.13.1-dev.tar.xz", - "sha256": "71a101f359d691161c012fa10daae0ddfa507f2f734d97a5e69e1ce34e9225ca" - }, - { - "hash": "18cd7a3601bcffb36fdf2f679f763b5e827c2e8e", - "channel": "beta", - "version": "v1.12.13+hotfix.6", - "release_date": "2019-12-11T16:13:33.789898Z", - "archive": "beta/linux/flutter_linux_v1.12.13+hotfix.6-beta.tar.xz", - "sha256": "ea115510234d1c963fd20b4df069458cde5f813e7e113e29f8d90f7cb16b4978" - }, - { - "hash": "27321ebbad34b0a3fafe99fac037102196d655ff", - "channel": "stable", - "version": "v1.12.13+hotfix.5", - "release_date": "2019-12-11T15:48:44.133001Z", - "archive": "stable/linux/flutter_linux_v1.12.13+hotfix.5-stable.tar.xz", - "sha256": "d792c92895623da35e1a9ccd8bc2fe84c81dd72c2c54073f56fe70625866d800" - }, - { - "hash": "27321ebbad34b0a3fafe99fac037102196d655ff", - "channel": "beta", - "version": "v1.12.13+hotfix.5", - "release_date": "2019-12-11T02:46:38.389095Z", - "archive": "beta/linux/flutter_linux_v1.12.13+hotfix.5-beta.tar.xz", - "sha256": "fec59dff786265626d4e340a5d4d0e0774085155f38755983a2a485aa4a3dd50" - }, - { - "hash": "fb60324e6fa791bedeade8be4773a42037e11f62", - "channel": "beta", - "version": "v1.12.13+hotfix.4", - "release_date": "2019-12-10T00:24:54.364929Z", - "archive": "beta/linux/flutter_linux_v1.12.13+hotfix.4-beta.tar.xz", - "sha256": "70957aef8182619db8fc665d3fcf33e1464212fb9605b69e440012f8d97edcb1" - }, - { - "hash": "57f2df76d75cff290cbe2765b07db1ad3e67b50d", - "channel": "beta", - "version": "v1.12.13+hotfix.3", - "release_date": "2019-12-06T05:46:35.069203Z", - "archive": "beta/linux/flutter_linux_v1.12.13+hotfix.3-beta.tar.xz", - "sha256": "2a0b2892747fec9762a4efc493037f0d202d3ffc8ee5e9f9d269818dfb5d1be2" - }, - { - "hash": "09126abb222d0f25b03318a1ab4a99d27d9aaa8d", - "channel": "dev", - "version": "v1.13.0", - "release_date": "2019-12-05T19:25:47.249683Z", - "archive": "dev/linux/flutter_linux_v1.13.0-dev.tar.xz", - "sha256": "985a1effadc1f5a77b541c967c7b22dd97080df86c87b8f3f5f1a42298327ffb" - }, - { - "hash": "4f54e46f56c2ffc92eb440dbdab1a7f8e722e593", - "channel": "beta", - "version": "v1.12.13+hotfix.2", - "release_date": "2019-12-04T18:25:08.365740Z", - "archive": "beta/linux/flutter_linux_v1.12.13+hotfix.2-beta.tar.xz", - "sha256": "6379b5d512b3cecd4464be4df7461a5d74705a7d26e33ae66d4cce27142a0c60" - }, - { - "hash": "5b07015393539822da275ab9a348b9e9ce92a29e", - "channel": "beta", - "version": "v1.12.13+hotfix.1", - "release_date": "2019-12-03T19:11:21.659038Z", - "archive": "beta/linux/flutter_linux_v1.12.13+hotfix.1-beta.tar.xz", - "sha256": "7c15aa54a3b8b658a95378697874e1525dd34c449588fa85f8a782009a602f77" - }, - { - "hash": "37f9c541165c3516f727cd36bd502d411fdad3b8", - "channel": "dev", - "version": "v1.12.16", - "release_date": "2019-12-02T19:14:12.085975Z", - "archive": "dev/linux/flutter_linux_v1.12.16-dev.tar.xz", - "sha256": "462874902fc89014e7a05d01dee1599c1fca0e3902582f71d243668c6126b33f" - }, - { - "hash": "459c7fb884d9234c45b353087e0ec8a33dde90d1", - "channel": "dev", - "version": "v1.12.15", - "release_date": "2019-11-27T18:51:54.821676Z", - "archive": "dev/linux/flutter_linux_v1.12.15-dev.tar.xz", - "sha256": "8e8e295499020920d7b306feaa116e0198162b49fa2a57f319c3c790c6ab59bc" - }, - { - "hash": "7726910a5bc4135a9f1fd497c872c9e5cb1e51b5", - "channel": "dev", - "version": "v1.12.14", - "release_date": "2019-11-26T22:23:08.510332Z", - "archive": "dev/linux/flutter_linux_v1.12.14-dev.tar.xz", - "sha256": "24a67351fba06939a0bf0ff9150d90e250596c4df0a7036a54416f11dbccfb86" - }, - { - "hash": "cf37c2cd07a1d3ba296efff2dc75e19ba65e1665", - "channel": "dev", - "version": "v1.12.13", - "release_date": "2019-11-26T01:00:40.925019Z", - "archive": "dev/linux/flutter_linux_v1.12.13-dev.tar.xz", - "sha256": "306fd04a0734638aea881ba8c711a6f1452c9ff13ab62530264119971904560c" - }, - { - "hash": "bae92c32e5233e9113e42962179773309fb3ad8c", - "channel": "dev", - "version": "v1.12.12", - "release_date": "2019-11-25T21:15:16.767742Z", - "archive": "dev/linux/flutter_linux_v1.12.12-dev.tar.xz", - "sha256": "b2867430d6168dbabff0b5699af15cde4c2065b91a6b6cedbf1a0f9bec50e606" - }, - { - "hash": "f40dbf8ca07b0498eff3d6b861ecd21f2de7db6a", - "channel": "dev", - "version": "v1.12.11", - "release_date": "2019-11-23T21:37:20.592193Z", - "archive": "dev/linux/flutter_linux_v1.12.11-dev.tar.xz", - "sha256": "383c8a070135475ccc753c9fb9c1833c7bef7cf00f87bfd06e28c4181e001c39" - }, - { - "hash": "b6e92003c8abc5e04a193b58e4a7c8b98d4b8536", - "channel": "dev", - "version": "v1.12.10", - "release_date": "2019-11-23T07:00:43.053659Z", - "archive": "dev/linux/flutter_linux_v1.12.10-dev.tar.xz", - "sha256": "a964d99e85e087c6464414b3029c3caa0c78d696ffe0da49e894edce8dfe81ca" - }, - { - "hash": "33d302240d3e483fc78bf6abb43d8346260b60c5", - "channel": "dev", - "version": "v1.12.9", - "release_date": "2019-11-22T23:36:37.236900Z", - "archive": "dev/linux/flutter_linux_v1.12.9-dev.tar.xz", - "sha256": "947687df46b60bb2f54898e97bdd84ebec7e4fe27a302ce64be48083f4470990" - }, - { - "hash": "856a90e67c9284124d44d2be6c785bacd3a1c772", - "channel": "beta", - "version": "v1.11.0", - "release_date": "2019-11-22T06:11:06.634481Z", - "archive": "beta/linux/flutter_linux_v1.11.0-beta.tar.xz", - "sha256": "0e69a851eef13695c44cd1b6dde317256f253e94a9311ba67f9fc898a4e85dd3" - }, - { - "hash": "43a8a1902e5c42d084077e8ede6f14f8ddbdce24", - "channel": "dev", - "version": "v1.12.7", - "release_date": "2019-11-21T21:11:45.062635Z", - "archive": "dev/linux/flutter_linux_v1.12.7-dev.tar.xz", - "sha256": "13036227787586cc2ceafb38e552c33201b2ad939d7f61b436a9f9df1fd69a0e" - }, - { - "hash": "6eb0a0e3715c6eeb7a2733f74cf6e741fe796ef6", - "channel": "dev", - "version": "v1.12.6", - "release_date": "2019-11-21T18:03:04.261782Z", - "archive": "dev/linux/flutter_linux_v1.12.6-dev.tar.xz", - "sha256": "5ca50f57afa6e399872bc6dd2beb20962fd1d1590a6bdf7259dc2e31407872ec" - }, - { - "hash": "2c7af1e24e45a79f4eb73d67d98fcecea8bf6146", - "channel": "dev", - "version": "v1.12.5", - "release_date": "2019-11-21T03:15:04.156124Z", - "archive": "dev/linux/flutter_linux_v1.12.5-dev.tar.xz", - "sha256": "d735cfa3f36ed5da06daa0820a0a956695c71deb51d09f7d0b07f7397b4eb544" - }, - { - "hash": "2461c75600ba6e11a49da0fca29abe3b4501efcd", - "channel": "dev", - "version": "v1.12.4", - "release_date": "2019-11-18T22:48:29.860273Z", - "archive": "dev/linux/flutter_linux_v1.12.4-dev.tar.xz", - "sha256": "c9850586bb34feed41eb588636d8b36404113a12d03392dc5eb4880c43aed96d" - }, - { - "hash": "028b4c4f40e4c2035961cbc35ab7b49fe48320d8", - "channel": "dev", - "version": "v1.12.3", - "release_date": "2019-11-18T17:50:37.937314Z", - "archive": "dev/linux/flutter_linux_v1.12.3-dev.tar.xz", - "sha256": "8189051967b868973926a1c9d2f99745851c78761f2e29cb2b1642434fef8bb7" - }, - { - "hash": "6de62679421abe42f0f669e191fead30ee8bf7e0", - "channel": "dev", - "version": "v1.12.2", - "release_date": "2019-11-15T21:44:47.045166Z", - "archive": "dev/linux/flutter_linux_v1.12.2-dev.tar.xz", - "sha256": "85b6a8858cb0cc8d7992cd640e4667d57127b42d1c0734aff4c0781176afe0e3" - }, - { - "hash": "86c91b12d88934886b35887ec23068c1eeee5624", - "channel": "dev", - "version": "v1.12.1", - "release_date": "2019-11-15T04:35:55.477340Z", - "archive": "dev/linux/flutter_linux_v1.12.1-dev.tar.xz", - "sha256": "0353b75f2e2686217fb6f9fb9f33cd710d0f258e6bc596388c1d5de0c34290d2" - }, - { - "hash": "9323a623bd83f0bb994f50086344fb8933e05081", - "channel": "dev", - "version": "v1.12.0", - "release_date": "2019-11-14T21:45:34.176303Z", - "archive": "dev/linux/flutter_linux_v1.12.0-dev.tar.xz", - "sha256": "fe938fb108b02bb93f190a6c69abab14028a57d71db2be4b046fb8546612e3b3" - }, - { - "hash": "856a90e67c9284124d44d2be6c785bacd3a1c772", - "channel": "dev", - "version": "v1.11.0", - "release_date": "2019-11-13T23:17:18.684182Z", - "archive": "dev/linux/flutter_linux_v1.11.0-dev.tar.xz", - "sha256": "b021b82f98babc4b77224655283868ccdcb8619de07afacd0c4c329d2817d712" - }, - { - "hash": "798e4272a2e43d7daab75f225a13442e384ee0cd", - "channel": "dev", - "version": "v1.10.16", - "release_date": "2019-11-11T19:17:17.839427Z", - "archive": "dev/linux/flutter_linux_v1.10.16-dev.tar.xz", - "sha256": "933407c903772bc230311fab0d3cf7ac1015a92fe212e2b4a7f68b81d83ef9bc" - }, - { - "hash": "fbabb264e0ab3e090d6ec056e0744aaeb1586735", - "channel": "dev", - "version": "v1.10.15", - "release_date": "2019-11-07T02:17:46.309122Z", - "archive": "dev/linux/flutter_linux_v1.10.15-dev.tar.xz", - "sha256": "49b469d892c70914fe46d20f34f81e0dd5b6c14c49f347aa68dd9704e84eaa9c" - }, - { - "hash": "68587a0916366e9512a78df22c44163d041dd5f3", - "channel": "stable", - "version": "v1.9.1+hotfix.6", - "release_date": "2019-10-23T23:26:25.450309Z", - "archive": "stable/linux/flutter_linux_v1.9.1+hotfix.6-stable.tar.xz", - "sha256": "b67f530cce561ed76c113921bace82daa6262944f912d177fbd1cc68029fd918" - }, - { - "hash": "1aedbb1835bd6eb44550293d57d4d124f19901f0", - "channel": "stable", - "version": "v1.9.1+hotfix.5", - "release_date": "2019-10-17T17:17:25.252240Z", - "archive": "stable/linux/flutter_linux_v1.9.1+hotfix.5-stable.tar.xz", - "sha256": "79c9b6c2f0ae93ff8140769c0d34f805a675bd3d2e6d1711cea52bf49cc0f2ee" - }, - { - "hash": "e70236e36ce1d32067dc68eb55519ec3e14b6b01", - "channel": "beta", - "version": "v1.10.7", - "release_date": "2019-10-10T20:06:18.048291Z", - "archive": "beta/linux/flutter_linux_v1.10.7-beta.tar.xz", - "sha256": "070de52ab05cc4cacdba43908e3684f41b3fb10f95d745ec5e1da728410e205b" - }, - { - "hash": "1946fc4da0f80c522d7e3ae7d4f7309908ed86f2", - "channel": "dev", - "version": "v1.10.14", - "release_date": "2019-10-08T22:19:53.416441Z", - "archive": "dev/linux/flutter_linux_v1.10.14-dev.tar.xz", - "sha256": "8a5172098077780dc76d4276cc80532335eb7f3de653dc070e759384b581c9d9" - }, - { - "hash": "97e00b2288938998f755c5262a118d9a0d6a915a", - "channel": "dev", - "version": "v1.10.13", - "release_date": "2019-10-08T00:50:59.247866Z", - "archive": "dev/linux/flutter_linux_v1.10.13-dev.tar.xz", - "sha256": "b5692d89bfc2493ce94a378883c512f2ed61bbd7718e1c6a9a7037bebb41a3ca" - }, - { - "hash": "0e605cc4dd83137f785769dea5e8ae7da1afb361", - "channel": "dev", - "version": "v1.10.12", - "release_date": "2019-10-04T22:58:22.726633Z", - "archive": "dev/linux/flutter_linux_v1.10.12-dev.tar.xz", - "sha256": "ba168c145c9df6b35ff97aa2d4c5514cdf4c4e83186e90fbb9e2eae3d7197472" - }, - { - "hash": "5961bcc505b589328c3c20f0841ba467db3f966a", - "channel": "dev", - "version": "v1.10.11", - "release_date": "2019-10-04T17:48:53.142848Z", - "archive": "dev/linux/flutter_linux_v1.10.11-dev.tar.xz", - "sha256": "93f6845a61dead1c4ba54db819d89d1f4a56264ead8d58e51996b69ceed8c965" - }, - { - "hash": "3a728a9b5b14e2390965be0e1e0215ef583716e2", - "channel": "dev", - "version": "v1.10.10", - "release_date": "2019-10-04T07:50:50.026740Z", - "archive": "dev/linux/flutter_linux_v1.10.10-dev.tar.xz", - "sha256": "6ddf574be558eeb0fbf4d6a69d6e262041e0274166e6492d3e2b04e22c85be57" - }, - { - "hash": "3e2dc8ca7b59080cef04a9ff474b5b18d94e4365", - "channel": "dev", - "version": "v1.10.9", - "release_date": "2019-10-04T06:20:52.805807Z", - "archive": "dev/linux/flutter_linux_v1.10.9-dev.tar.xz", - "sha256": "6bff3651464acfb6e969ce06cddbc44640cddd33add2ed332faf0461e1b1dc85" - }, - { - "hash": "0b0942a60caafff56c19fea07d8f7b14e6286e1c", - "channel": "dev", - "version": "v1.10.8", - "release_date": "2019-10-04T00:24:49.464836Z", - "archive": "dev/linux/flutter_linux_v1.10.8-dev.tar.xz", - "sha256": "019c5f6217a6f97f45456e3799457e1ec2207bdcac863b6c763e85f408a8424d" - }, - { - "hash": "e70236e36ce1d32067dc68eb55519ec3e14b6b01", - "channel": "dev", - "version": "v1.10.7", - "release_date": "2019-10-02T23:18:08.501227Z", - "archive": "dev/linux/flutter_linux_v1.10.7-dev.tar.xz", - "sha256": "654261fa13efb1238769a5855f2ac160401e2f90af7040ae26d02fddc1c6a687" - }, - { - "hash": "cc949a8e8b9cf394b9290a8e80f87af3e207dce5", - "channel": "stable", - "version": "v1.9.1+hotfix.4", - "release_date": "2019-10-01T16:21:16.408035Z", - "archive": "stable/linux/flutter_linux_v1.9.1+hotfix.4-stable.tar.xz", - "sha256": "1049a0912a7d35868a0665a0c9d23ce80f1c9a5984ddd4323506b03f41a06e96" - }, - { - "hash": "cc949a8e8b9cf394b9290a8e80f87af3e207dce5", - "channel": "beta", - "version": "v1.9.1+hotfix.4", - "release_date": "2019-09-27T22:45:14.418815Z", - "archive": "beta/linux/flutter_linux_v1.9.1+hotfix.4-beta.tar.xz", - "sha256": "75ea5c18aa30e935b188e1f1b31df1f0fb2211e164604257bc4421b1e07bf9c0" - }, - { - "hash": "a72edc27064c2cbfbbae17ea1695333e1b3d9595", - "channel": "beta", - "version": "v1.9.1+hotfix.3", - "release_date": "2019-09-26T01:42:23.874819Z", - "archive": "beta/linux/flutter_linux_v1.9.1+hotfix.3-beta.tar.xz", - "sha256": "d6eafa291a0d775a25114efa3662c2b0557366cae121a36d692d06356aff06d7" - }, - { - "hash": "cc3ca9a916cb1da851a1f36432154a534787da99", - "channel": "dev", - "version": "v1.10.6", - "release_date": "2019-09-25T23:00:00.696306Z", - "archive": "dev/linux/flutter_linux_v1.10.6-dev.tar.xz", - "sha256": "bb18c1f5631c8e1a21ff46163ceacdab108f854331b7c4cd218d3bc39ceb215c" - }, - { - "hash": "3cf88fed6d9b016f83a4920a5db524bf5a2d2b64", - "channel": "dev", - "version": "v1.10.5", - "release_date": "2019-09-19T23:20:01.315289Z", - "archive": "dev/linux/flutter_linux_v1.10.5-dev.tar.xz", - "sha256": "8d2f0c252724092a6441645dedd6e38011f8de8cf97d289e6d012f383674caf7" - }, - { - "hash": "0b24a5a2ff9eccfba77bb68a0abcf1b7f0ae5b37", - "channel": "dev", - "version": "v1.10.4", - "release_date": "2019-09-19T04:18:59.300295Z", - "archive": "dev/linux/flutter_linux_v1.10.4-dev.tar.xz", - "sha256": "91dcb577cb40a4c35fc526a651730e974f34d6e0bb57e9d277da2343a4dc7fb5" - }, - { - "hash": "2f3515de31c0479cd09ad11cdc079281270405f4", - "channel": "dev", - "version": "v1.10.3", - "release_date": "2019-09-17T21:14:09.710470Z", - "archive": "dev/linux/flutter_linux_v1.10.3-dev.tar.xz", - "sha256": "f244672d0573a82da69f7e13b9c3d970013d6c97133dc736badb5f93bf80d671" - }, - { - "hash": "f5733f7a62ebc7c2ba324a2b410cd81215956b7d", - "channel": "dev", - "version": "v1.10.2", - "release_date": "2019-09-14T00:11:41.581130Z", - "archive": "dev/linux/flutter_linux_v1.10.2-dev.tar.xz", - "sha256": "1764c50e827f200edd0f355ab41586f70b90023596da0692af9fc538037596ed" - }, - { - "hash": "2d2a1ffec95cc70a3218872a2cd3f8de4933c42f", - "channel": "stable", - "version": "v1.9.1+hotfix.2", - "release_date": "2019-09-10T02:24:14.047622Z", - "archive": "stable/linux/flutter_linux_v1.9.1+hotfix.2-stable.tar.xz", - "sha256": "f82875a865c8dbebd10b7a69ffc4cb19d9c916054f3bbcda5a66395f30477d91" - }, - { - "hash": "ce45c2d3e6f02022f73bd3804775cb9a89c08b49", - "channel": "dev", - "version": "v1.10.1", - "release_date": "2019-09-09T23:50:46.127873Z", - "archive": "dev/linux/flutter_linux_v1.10.1-dev.tar.xz", - "sha256": "553682ca5036acbe303ec537fcf7c0978197f649ef39f10e63fe2fe2f09a8257" - }, - { - "hash": "2d2a1ffec95cc70a3218872a2cd3f8de4933c42f", - "channel": "beta", - "version": "v1.9.1+hotfix.2", - "release_date": "2019-09-08T22:17:41.796824Z", - "archive": "beta/linux/flutter_linux_v1.9.1+hotfix.2-beta.tar.xz", - "sha256": "92dfde210903901d261527c1e01bd7bf6f2178a4aa0a4b00db43ddd6bd5f84c2" - }, - { - "hash": "3932ffb1cd5dfa0c3891c60977ee4f9cd70ade66", - "channel": "dev", - "version": "v1.10.0", - "release_date": "2019-09-06T20:01:21.350193Z", - "archive": "dev/linux/flutter_linux_v1.10.0-dev.tar.xz", - "sha256": "500c3cd40a9c7a5520c59a639338eacdb6f385eb77d0eb099e2201f1b950fd8a" - }, - { - "hash": "a1fb3fabec40144f57344635c37c28eed4fb122b", - "channel": "beta", - "version": "v1.9.1+hotfix.1", - "release_date": "2019-09-04T01:33:58.909662Z", - "archive": "beta/linux/flutter_linux_v1.9.1+hotfix.1-beta.tar.xz", - "sha256": "25fe560eb4a4096480d8f19820c830fab81e0a133387f11808bcfe693c6504b5" - }, - { - "hash": "4984d1a33dd6de2862578e3f08b4ca7dfce7d54b", - "channel": "dev", - "version": "v1.9.7", - "release_date": "2019-08-29T17:43:42.823533Z", - "archive": "dev/linux/flutter_linux_v1.9.7-dev.tar.xz", - "sha256": "63d6f5ccb4f219a9b3790a3fbf600c4bed512a76737d39463ad1ecb36b0aaf61" - }, - { - "hash": "35de8d527842f99e30240a7fbf08cd4638ba7a5d", - "channel": "dev", - "version": "v1.9.6", - "release_date": "2019-08-29T02:39:04.177621Z", - "archive": "dev/linux/flutter_linux_v1.9.6-dev.tar.xz", - "sha256": "ddac75b26a694181ebce4b56c71e455a1916ffe92ff622742606fadd5cd3afbf" - }, - { - "hash": "365f577c707b092f9b97b62b0cdb331c2d7fcf75", - "channel": "dev", - "version": "v1.9.5", - "release_date": "2019-08-24T04:12:52.664427Z", - "archive": "dev/linux/flutter_linux_v1.9.5-dev.tar.xz", - "sha256": "79496184a1ea0af47cecfb0a0fae171032e01afc2a21fdcd33d5b1ab1127f180" - }, - { - "hash": "cf87f68fd08d697273c780d09fc647616749e8b1", - "channel": "dev", - "version": "v1.9.4", - "release_date": "2019-08-23T22:04:15.860716Z", - "archive": "dev/linux/flutter_linux_v1.9.4-dev.tar.xz", - "sha256": "ce40011317115ce6a9cca12fcdd64685ab7544f0fc7cb88590eee50f4d840362" - }, - { - "hash": "f515bf6abc909fddca311dca78837ce478e571aa", - "channel": "dev", - "version": "v1.9.3", - "release_date": "2019-08-22T17:08:36.115746Z", - "archive": "dev/linux/flutter_linux_v1.9.3-dev.tar.xz", - "sha256": "5c725951238fac84c1a7313db11e94c6725c14e7462e322b76b1d34979a6e2fe" - }, - { - "hash": "6815f540c996b5baf559ef075a906ab1bec05a18", - "channel": "dev", - "version": "v1.9.2", - "release_date": "2019-08-21T23:40:40.400558Z", - "archive": "dev/linux/flutter_linux_v1.9.2-dev.tar.xz", - "sha256": "ead3fef4af3bf21e4b1052939bde667f6f438b82b8dd766baf2ad07a2576d79e" - }, - { - "hash": "c382b8e990b6976f610764179f94e0416d82c057", - "channel": "dev", - "version": "v1.9.1", - "release_date": "2019-08-21T18:22:56.132620Z", - "archive": "dev/linux/flutter_linux_v1.9.1-dev.tar.xz", - "sha256": "7e64aa2a8e0b6b8571fea4c21c34db141fff54999319b35ba4491ec7b839a0de" - }, - { - "hash": "760635e6dbf9180222171ac189199982a65cf608", - "channel": "dev", - "version": "v1.9.0", - "release_date": "2019-08-15T22:34:12.938596Z", - "archive": "dev/linux/flutter_linux_v1.9.0-dev.tar.xz", - "sha256": "e351dd48c477a1cdfd85fd5e4f8fa6b88483265c22e2097e595eaa71c44044dc" - }, - { - "hash": "e4ebcdf6f4facee5779c38a04d91d08dc58ea7a4", - "channel": "beta", - "version": "v1.8.3", - "release_date": "2019-08-08T21:41:47.801072Z", - "archive": "beta/linux/flutter_linux_v1.8.3-beta.tar.xz", - "sha256": "87520c7c6021e8d260e4084f2d1ea9000d7264fcdccd5dfb0d135181ca9b6c4e" - }, - { - "hash": "954714c9674af0da6530795407fc66179fdaef88", - "channel": "dev", - "version": "v1.8.4", - "release_date": "2019-08-07T17:21:09.951106Z", - "archive": "dev/linux/flutter_linux_v1.8.4-dev.tar.xz", - "sha256": "1a244298c909700f371971cdfc0d4fb3d113afc875cd318deb01a3fff3390b13" - }, - { - "hash": "e4ebcdf6f4facee5779c38a04d91d08dc58ea7a4", - "channel": "dev", - "version": "v1.8.3", - "release_date": "2019-07-31T20:26:55.826423Z", - "archive": "dev/linux/flutter_linux_v1.8.3-dev.tar.xz", - "sha256": "9d3b156265be427dadccd96c090839a4af4894e8d42f43937cd428ca86288400" - }, - { - "hash": "20e59316b8b8474554b38493b8ca888794b0234a", - "channel": "stable", - "version": "v1.7.8+hotfix.4", - "release_date": "2019-07-24T16:14:50.488967Z", - "archive": "stable/linux/flutter_linux_v1.7.8+hotfix.4-stable.tar.xz", - "sha256": "c7d010c8037e64d2d3e2957f83bd8bee604ff6014230b09b8c043ef039538bd7" - }, - { - "hash": "20e59316b8b8474554b38493b8ca888794b0234a", - "channel": "beta", - "version": "v1.7.8+hotfix.4", - "release_date": "2019-07-19T21:02:27.844658Z", - "archive": "beta/linux/flutter_linux_v1.7.8+hotfix.4-beta.tar.xz", - "sha256": "b859d85088c7f28776eb78aed19f1edaddb01a0d7d57ec28568a75bdf4401357" - }, - { - "hash": "0a39d8d92ed43a0b7efcc93742a17660a14d78aa", - "channel": "dev", - "version": "v1.8.2", - "release_date": "2019-07-19T19:13:55.016591Z", - "archive": "dev/linux/flutter_linux_v1.8.2-dev.tar.xz", - "sha256": "6462f5b32f13fa402559ef9ded5490650060c8d40a52b629d9e08f011e294692" - }, - { - "hash": "d3eee57c0bd2e19aaa944be07b24c533075fd1a0", - "channel": "dev", - "version": "v1.8.1", - "release_date": "2019-07-11T21:06:56.137495Z", - "archive": "dev/linux/flutter_linux_v1.8.1-dev.tar.xz", - "sha256": "57c6366f07df9107e6e2c81d98c94836d949255535aaaa8e057e5bb33a707077" - }, - { - "hash": "b712a172f9694745f50505c93340883493b505e5", - "channel": "stable", - "version": "v1.7.8+hotfix.3", - "release_date": "2019-07-09T21:26:14.141143Z", - "archive": "stable/linux/flutter_linux_v1.7.8+hotfix.3-stable.tar.xz", - "sha256": "ba6906f2c695c09e8ba8caa06fb0c0273e2ac435b6116e27926c265e57d1957b" - }, - { - "hash": "b712a172f9694745f50505c93340883493b505e5", - "channel": "beta", - "version": "v1.7.8+hotfix.3", - "release_date": "2019-07-09T21:21:42.274658Z", - "archive": "beta/linux/flutter_linux_v1.7.8+hotfix.3-beta.tar.xz", - "sha256": "f4486c039ca256f855943fbd07974444dfc98f9bae593ae30f5de385d826b911" - }, - { - "hash": "2e540931f73593e35627592ca4f9a4ca3035ed31", - "channel": "stable", - "version": "v1.7.8+hotfix.2", - "release_date": "2019-07-08T17:22:05.600230Z", - "archive": "stable/linux/flutter_linux_v1.7.8+hotfix.2-stable.tar.xz", - "sha256": "0cf4c6eb5eb9cee32e3e32966a832697cf0152830b87cae9cb519546f9ef4a4b" - }, - { - "hash": "2e540931f73593e35627592ca4f9a4ca3035ed31", - "channel": "beta", - "version": "v1.7.8+hotfix.2", - "release_date": "2019-07-02T16:52:29.158369Z", - "archive": "beta/linux/flutter_linux_v1.7.8+hotfix.2-beta.tar.xz", - "sha256": "535fe7f2e7691ca420299da50b171f0d25278d47f6048b61edd73e1036f6220f" - }, - { - "hash": "43b03127d469f1f6d9a22f8dae41eea2eed2afd9", - "channel": "dev", - "version": "v1.7.11", - "release_date": "2019-06-28T16:42:26.390467Z", - "archive": "dev/linux/flutter_linux_v1.7.11-dev.tar.xz", - "sha256": "1b3129bf4cc886933f3fc35aa44e1d1a1551d9c0b2605130be490c6454355e7f" - }, - { - "hash": "9a3a7490c8ded5f13d4fce2e493df2a63d602e57", - "channel": "dev", - "version": "v1.7.10", - "release_date": "2019-06-26T20:48:21.874605Z", - "archive": "dev/linux/flutter_linux_v1.7.10-dev.tar.xz", - "sha256": "85a899dab17130165fcd74319de0c55ce81a50adf3fd08d324747e53d5703145" - }, - { - "hash": "8dbfc82bc7f94c721efaeff904b4388d222c7919", - "channel": "dev", - "version": "v1.7.9", - "release_date": "2019-06-25T02:41:33.204252Z", - "archive": "dev/linux/flutter_linux_v1.7.9-dev.tar.xz", - "sha256": "f3ed668be915db6c12a829f1698bf7d9d4e0094b01f9d7a7b562d2efa8913673" - }, - { - "hash": "d51fd86cdb486192e187ccdf6f02cb2a38273d8d", - "channel": "dev", - "version": "v1.7.8", - "release_date": "2019-06-22T06:41:22.424026Z", - "archive": "dev/linux/flutter_linux_v1.7.8-dev.tar.xz", - "sha256": "ce1c2240060cda08d501afd024a302f699c46a86ede24b39aa6b4c8ba4dae06a" - }, - { - "hash": "363052567376976b68bc995905397156fc5a28a0", - "channel": "dev", - "version": "v1.7.7", - "release_date": "2019-06-22T01:06:19.065095Z", - "archive": "dev/linux/flutter_linux_v1.7.7-dev.tar.xz", - "sha256": "fbbf1e397ef5bb7b024249f80c1597b9008da3d5cc40c5ce994deaf33e560600" - }, - { - "hash": "63438b924497ed9479f4c69a03d399bcbc2b4781", - "channel": "dev", - "version": "v1.7.6", - "release_date": "2019-06-21T23:10:52.072637Z", - "archive": "dev/linux/flutter_linux_v1.7.6-dev.tar.xz", - "sha256": "61b621ce1a84eb74a2d4ba613a6c405fc1fee55caeebce8aebb6809993fd9b84" - }, - { - "hash": "dfecafa4ab30f9c509ce409241000cdd785ef23d", - "channel": "dev", - "version": "v1.7.4", - "release_date": "2019-06-14T19:52:05.259027Z", - "archive": "dev/linux/flutter_linux_v1.7.4-dev.tar.xz", - "sha256": "d4f0f4e57782950d58312c13f7f851d8500867b361f655e16d6d1a7260df8ecd" - }, - { - "hash": "362b999b90d53859aa7b926a59c970f3ea31abf4", - "channel": "dev", - "version": "v1.7.3", - "release_date": "2019-06-07T22:20:18.312386Z", - "archive": "dev/linux/flutter_linux_v1.7.3-dev.tar.xz", - "sha256": "e47dcb602d2cee416bb103599addf3ee3f75f9452b66cb4f2fed48fa577065c8" - }, - { - "hash": "b3b6d03737bd3f61209570e86f2b045c80f35c44", - "channel": "dev", - "version": "v1.7.2", - "release_date": "2019-06-06T16:56:37.925697Z", - "archive": "dev/linux/flutter_linux_v1.7.2-dev.tar.xz", - "sha256": "9ab387cadb8d00c697b6010437292aa6acfe33ef0afd06171a0a0510c7957d1d" - }, - { - "hash": "04015b987b8b9ccb4b428decadf2b9f5cd25dc91", - "channel": "dev", - "version": "v1.7.1", - "release_date": "2019-06-04T19:33:57.340863Z", - "archive": "dev/linux/flutter_linux_v1.7.1-dev.tar.xz", - "sha256": "7b9839be19f7a1da229eae009a585f1b616912f1d1398f68fcc7cd81bf522dad" - }, - { - "hash": "f36a35d20ac5dc2936cab6ccc60f5d9afa34466e", - "channel": "dev", - "version": "v1.7.0", - "release_date": "2019-06-03T20:30:56.698702Z", - "archive": "dev/linux/flutter_linux_v1.7.0-dev.tar.xz", - "sha256": "52db66244b9e762b87fb756af09517bd300273723424c321689ad552a38d9dbd" - }, - { - "hash": "cba41ca2ec977888806a9a02fc06c459f7a806ae", - "channel": "dev", - "version": "v1.6.7", - "release_date": "2019-05-31T18:11:35.815309Z", - "archive": "dev/linux/flutter_linux_v1.6.7-dev.tar.xz", - "sha256": "5f16d8f8d73aa5e1b8cd3aa2f71b6fced42b64b9139a92695814f3a2482df1d3" - }, - { - "hash": "bc7bc940836f1f834699625426795fd6f07c18ec", - "channel": "beta", - "version": "v1.6.3", - "release_date": "2019-05-30T23:18:37.088506Z", - "archive": "beta/linux/flutter_linux_v1.6.3-beta.tar.xz", - "sha256": "dbfb3aebe07f81423f7c739542395514997f5f410763fe43d7551051a61dba56" - }, - { - "hash": "e1a784ae3f82948c33c256666c73680420f11350", - "channel": "dev", - "version": "v1.6.6", - "release_date": "2019-05-29T20:55:10.733302Z", - "archive": "dev/linux/flutter_linux_v1.6.6-dev.tar.xz", - "sha256": "affaf0ce96ec571cf3496b607d89dd5f0d3d361e03276359e0b6f224901a31d7" - }, - { - "hash": "7c811b6a66bcbab62f87c8768decc449027e5190", - "channel": "dev", - "version": "v1.6.5", - "release_date": "2019-05-28T23:22:21.227945Z", - "archive": "dev/linux/flutter_linux_v1.6.5-dev.tar.xz", - "sha256": "2cc8482b51a4e6a7423d1ce7e6ca2fde3edcbf5402af60728cd055b25cb2fbb0" - }, - { - "hash": "0f6e4e6190d1c128b8baadd2dee3b2a8923d3f86", - "channel": "dev", - "version": "v1.6.4", - "release_date": "2019-05-28T20:19:54.738436Z", - "archive": "dev/linux/flutter_linux_v1.6.4-dev.tar.xz", - "sha256": "d78a5d3d058c48bac822724ac81a75f900e9bd426ff6cc09a778caeded780225" - }, - { - "hash": "bc7bc940836f1f834699625426795fd6f07c18ec", - "channel": "dev", - "version": "v1.6.3", - "release_date": "2019-05-24T00:35:07.945768Z", - "archive": "dev/linux/flutter_linux_v1.6.3-dev.tar.xz", - "sha256": "d949adb14d3a66e3e8716a300c5f093cf72c9584f73399331004c365384dd732" - }, - { - "hash": "cb576181e9549bdd9d845394b1b5feab1b93807d", - "channel": "dev", - "version": "v1.6.2", - "release_date": "2019-05-23T18:19:28.406435Z", - "archive": "dev/linux/flutter_linux_v1.6.2-dev.tar.xz", - "sha256": "c67e78ee22f8eb8329256d325f1356d02be922824e544cd862dd7e08aa7af7c8" - }, - { - "hash": "d31ce31a274ee721f4e9b54c6dcc2de0b3fd71e4", - "channel": "dev", - "version": "v1.6.1", - "release_date": "2019-05-22T22:31:26.087601Z", - "archive": "dev/linux/flutter_linux_v1.6.1-dev.tar.xz", - "sha256": "7790134fc8261cc764a91ccda68955c40951d62c818c811dab02b5b5da9cb208" - }, - { - "hash": "ed90d05596d85b0ec8e841395bce9d3b6edea134", - "channel": "dev", - "version": "v1.6.0", - "release_date": "2019-05-17T10:07:23.209741Z", - "archive": "dev/linux/flutter_linux_v1.6.0-dev.tar.xz", - "sha256": "ea89158a5870e42eb570d34148e4e71f12811a1c3841a937009f45e6dc6da6d2" - }, - { - "hash": "7a4c33425ddd78c54aba07d86f3f9a4a0051769b", - "channel": "stable", - "version": "v1.5.4-hotfix.2", - "release_date": "2019-05-07T18:44:16.075690Z", - "archive": "stable/linux/flutter_linux_v1.5.4-hotfix.2-stable.tar.xz", - "sha256": "04e063b01e7087eeeccfc5f7a585ed6adcc521bc44f754e194cb3c98a57c19cd" - }, - { - "hash": "7a4c33425ddd78c54aba07d86f3f9a4a0051769b", - "channel": "beta", - "version": "v1.5.4-hotfix.2", - "release_date": "2019-05-02T17:40:50.476547Z", - "archive": "beta/linux/flutter_linux_v1.5.4-hotfix.2-beta.tar.xz", - "sha256": "0f046965061c25620297d74761b9514495791980cc59dc2e685d5f9f9334f990" - }, - { - "hash": "09cbc34a0b19cef287a82aa4b9966d525369eecc", - "channel": "beta", - "version": "v1.5.4-hotfix.1", - "release_date": "2019-04-30T23:04:50.739892Z", - "archive": "beta/linux/flutter_linux_v1.5.4-hotfix.1-beta.tar.xz", - "sha256": "c8306fdff94e9c84c4a77718d2fd236117d375341b33c09c90424f34f3ca7754" - }, - { - "hash": "b593f5167bce84fb3cad5c258477bf3abc1b14eb", - "channel": "beta", - "version": "v1.5.4", - "release_date": "2019-04-27T00:01:42.883758Z", - "archive": "beta/linux/flutter_linux_v1.5.4-beta.tar.xz", - "sha256": "7933c00d6779022c14ebb3c30da7b96141dbbefbabb8f284fa6b37cee2646554" - }, - { - "hash": "0ba67226ee62d6c9d663a6f8410fb4b2f1076046", - "channel": "dev", - "version": "v1.5.8", - "release_date": "2019-04-26T00:03:05.012539Z", - "archive": "dev/linux/flutter_linux_v1.5.8-dev.tar.xz", - "sha256": "615385bc1f85e93047e1533adc8a380132cbea5ba0d42541be953f1989efdc29" - }, - { - "hash": "96f15c74adebb221eb044d3fc71b2d62da0046c0", - "channel": "dev", - "version": "v1.5.7", - "release_date": "2019-04-24T23:49:23.261049Z", - "archive": "dev/linux/flutter_linux_v1.5.7-dev.tar.xz", - "sha256": "98433d3f828df1b47c5051772c1c6cf0be7378393b495fe9fac035aadd929eba" - }, - { - "hash": "e00f1a3c17f65a751c14b821235e5c2875948ff0", - "channel": "dev", - "version": "v1.5.6", - "release_date": "2019-04-24T18:40:46.612634Z", - "archive": "dev/linux/flutter_linux_v1.5.6-dev.tar.xz", - "sha256": "1434cbdb7b72a3d5658cff325bdb2084d846fee9e990876b66d1be0aa14ba60e" - }, - { - "hash": "5c5ddd1fc22de7df08a6bc0e18b4ec345d702fbd", - "channel": "dev", - "version": "v1.5.5", - "release_date": "2019-04-23T23:47:50.170773Z", - "archive": "dev/linux/flutter_linux_v1.5.5-dev.tar.xz", - "sha256": "fa4113c40eeb4a00256973d060dec7c3303215b3c8d9ce680bd958448b7628f5" - }, - { - "hash": "b593f5167bce84fb3cad5c258477bf3abc1b14eb", - "channel": "dev", - "version": "v1.5.4", - "release_date": "2019-04-22T21:17:49.460150Z", - "archive": "dev/linux/flutter_linux_v1.5.4-dev.tar.xz", - "sha256": "f679a47c9bbd412baa6f54b84586909bd3045b0617575995f6bc18f78030c96a" - }, - { - "hash": "80971335c1ee259717076c1e9d308a9572f85259", - "channel": "dev", - "version": "v1.5.3", - "release_date": "2019-04-19T23:20:49.502145Z", - "archive": "dev/linux/flutter_linux_v1.5.3-dev.tar.xz", - "sha256": "252d997aabd6d796a1ffcfd481f3bd43a7d6782c5f3f83bc92bd561fc78d995e" - }, - { - "hash": "efe744a3609d0b8e218b5d9d13823ed394261bb5", - "channel": "dev", - "version": "v1.5.2", - "release_date": "2019-04-17T21:58:20.871350Z", - "archive": "dev/linux/flutter_linux_v1.5.2-dev.tar.xz", - "sha256": "a6bc4b293337f9c2579f32ce012a4fb2c41794e2daf1dce275ec5cdbcf98e468" - }, - { - "hash": "0f5de8725e0f6778406fb5156aee1486d39771f6", - "channel": "dev", - "version": "v1.5.1", - "release_date": "2019-04-17T06:13:23.176508Z", - "archive": "dev/linux/flutter_linux_v1.5.1-dev.tar.xz", - "sha256": "21f5c6c5e324e6c7089564c55e643fa0eb1fdf30b672be290c461dbb982c6a42" - }, - { - "hash": "a18226d06619ca1d61e453205fa89bc646c3d0fc", - "channel": "dev", - "version": "v1.5.0", - "release_date": "2019-04-16T21:01:51.513775Z", - "archive": "dev/linux/flutter_linux_v1.5.0-dev.tar.xz", - "sha256": "923a8dbeb8d0b7a2cb7ed9caf81a0a234c984e9073d7aaee0a3a5d83047f59fd" - }, - { - "hash": "88fa7ea4031f5c86225573e58e5558dc4ea1c251", - "channel": "beta", - "version": "v1.4.9-hotfix.1", - "release_date": "2019-04-12T21:25:21.538016Z", - "archive": "beta/linux/flutter_linux_v1.4.9-hotfix.1-beta.tar.xz", - "sha256": "923add7e761754481b0160a7b5a15fb8abb74c26b3e374934dd14c429fb5576e" - }, - { - "hash": "8bea3fb2ebadc3933b6b213483d2d4379ac53a5c", - "channel": "dev", - "version": "v1.4.18", - "release_date": "2019-04-12T00:32:34.053066Z", - "archive": "dev/linux/flutter_linux_v1.4.18-dev.tar.xz", - "sha256": "646e39d1d1e52a1074ff7e5e5d52250454f64ec89344420a34e7dda31324561a" - }, - { - "hash": "ecb468f33587bad108034c1bbe21e8cbd0d94acc", - "channel": "dev", - "version": "v1.4.17", - "release_date": "2019-04-11T21:53:22.414153Z", - "archive": "dev/linux/flutter_linux_v1.4.17-dev.tar.xz", - "sha256": "198c097b615aff73f900239a31c10e5172a6495ef0097e7ef74a3f2e4e937403" - }, - { - "hash": "d2790bd2bbf1851db2359026df7bca38e255b9d3", - "channel": "dev", - "version": "v1.4.16", - "release_date": "2019-04-11T17:02:15.961785Z", - "archive": "dev/linux/flutter_linux_v1.4.16-dev.tar.xz", - "sha256": "139a2e8d677b690d1283da8c228b8574735f627dd2a33236827694220da0eb03" - }, - { - "hash": "ed91a3be49232c336ab2cf7a3376958cb3d537d2", - "channel": "dev", - "version": "v1.4.15", - "release_date": "2019-04-10T22:27:03.387003Z", - "archive": "dev/linux/flutter_linux_v1.4.15-dev.tar.xz", - "sha256": "ab91f4ff22368b157080746577772591898c6cbac01b77b056413b4c0d40a5a9" - }, - { - "hash": "5a4eaabaf1c0b00f8cf9ace3c63066f754facc94", - "channel": "dev", - "version": "v1.4.14", - "release_date": "2019-04-10T02:55:32.782948Z", - "archive": "dev/linux/flutter_linux_v1.4.14-dev.tar.xz", - "sha256": "81d80d2b3eb828ba68a8b3a357dc5632fc29ec8c1788c3ff1f7fb96f08ebd921" - }, - { - "hash": "514aba6e36d4c9429d307e643dde3398802ca56a", - "channel": "dev", - "version": "v1.4.13", - "release_date": "2019-04-10T01:42:02.324994Z", - "archive": "dev/linux/flutter_linux_v1.4.13-dev.tar.xz", - "sha256": "58eccdc22008b4411d4e0bdafd969ee3a862e1d17f041d5a226301809ce07102" - }, - { - "hash": "294d7ea0cf0c6ff84ba43682b1dddcee18bf4114", - "channel": "dev", - "version": "v1.4.12", - "release_date": "2019-04-09T03:06:18.387769Z", - "archive": "dev/linux/flutter_linux_v1.4.12-dev.tar.xz", - "sha256": "76687809ba9b122b30b851d49fd7a9b3a80efaa964bc220e4aab21c25736a4c9" - }, - { - "hash": "d15b3b1c8b0b4090fa1949b106dd3870d13341ca", - "channel": "dev", - "version": "v1.4.11", - "release_date": "2019-04-08T18:01:12.285150Z", - "archive": "dev/linux/flutter_linux_v1.4.11-dev.tar.xz", - "sha256": "c6418fa1704bda0c74b20a085b8d9ae97ab49d6d1d146dee3560734e2ff458d2" - }, - { - "hash": "6ba720a4890bcffd0e48ec329318c929d517ce2c", - "channel": "dev", - "version": "v1.4.10", - "release_date": "2019-04-04T21:10:15.510204Z", - "archive": "dev/linux/flutter_linux_v1.4.10-dev.tar.xz", - "sha256": "56fb9a576a875ee50b093a6645fcec4a962f42d94e1b26b2d387dda3392056dd" - }, - { - "hash": "16a16e6598cca4129da0d2e76de0320fbc0108f1", - "channel": "dev", - "version": "v1.4.9", - "release_date": "2019-04-04T18:49:39.997783Z", - "archive": "dev/linux/flutter_linux_v1.4.9-dev.tar.xz", - "sha256": "fd9e335f8f47504e8bc9d11597b9fe4970a083f38f20bdcfea98b440bf42f591" - }, - { - "hash": "fbefd6b816a846936dbba847ce85dc1ed55e3faa", - "channel": "dev", - "version": "v1.4.8", - "release_date": "2019-04-03T01:33:45.902970Z", - "archive": "dev/linux/flutter_linux_v1.4.8-dev.tar.xz", - "sha256": "1eb98d261e0f585d2db6c9add2a0f216589a033a55a8058ee831bce826fee64a" - }, - { - "hash": "1bfa2f23114829513a9d2c0a7a27d743287acc2a", - "channel": "dev", - "version": "v1.4.7", - "release_date": "2019-03-29T21:06:01.732208Z", - "archive": "dev/linux/flutter_linux_v1.4.7-dev.tar.xz", - "sha256": "26ddfd6de97955882003974c15cf1e453fae05540724eafb70cfc20ecad5747e" - }, - { - "hash": "4ed13e022cae194aebdc9c5dfa6c2c3c62eeb8fb", - "channel": "dev", - "version": "v1.4.6-hotfix.1", - "release_date": "2019-03-29T20:29:43.258766Z", - "archive": "dev/linux/flutter_linux_v1.4.6-hotfix.1-dev.tar.xz", - "sha256": "8f4f229f8d8912b0334c090061ca62d6f56d33cf52483f3e3e9b43c45a83b3f7" - }, - { - "hash": "ec93c87c8902c63e5b0e71ff761f201d19dc4327", - "channel": "dev", - "version": "v1.4.6", - "release_date": "2019-03-29T00:01:25.778849Z", - "archive": "dev/linux/flutter_linux_v1.4.6-dev.tar.xz", - "sha256": "945d3e6311821a245fb7202c081f733e59c7cd3f1a2ff10856086c4c86ccf8ca" - }, - { - "hash": "99866f4a3dd1bf860c846e10d02af9ad125f9fe1", - "channel": "dev", - "version": "v1.4.5", - "release_date": "2019-03-28T18:13:28.784138Z", - "archive": "dev/linux/flutter_linux_v1.4.5-dev.tar.xz", - "sha256": "fd96505201505f7f964b5294c0b5022118bafd9c11dfcfed36f5f5bcd2601145" - }, - { - "hash": "3b3f6c7a041978505b310b5b50390c2f5ff7eaac", - "channel": "dev", - "version": "v1.4.4", - "release_date": "2019-03-28T01:14:32.831108Z", - "archive": "dev/linux/flutter_linux_v1.4.4-dev.tar.xz", - "sha256": "54331cab6ecb194464c5661d4a8502ea292c717815f282a11ca83cb7ffedc96a" - }, - { - "hash": "64a28e3685bee310e697a91612d7e30d0426cda2", - "channel": "dev", - "version": "v1.4.3", - "release_date": "2019-03-27T21:50:50.687336Z", - "archive": "dev/linux/flutter_linux_v1.4.3-dev.tar.xz", - "sha256": "6342e0a5ae3f6eacca455704da33aa5163a7660bf052a30370850a7b807a145b" - }, - { - "hash": "141f87b32754267cc02bae03477c4b109b828324", - "channel": "dev", - "version": "v1.4.2", - "release_date": "2019-03-27T16:39:20.541106Z", - "archive": "dev/linux/flutter_linux_v1.4.2-dev.tar.xz", - "sha256": "8c8c83d2da8d7f183c5d466c220ef6b91be95cd97bee3c299f86863756d95035" - }, - { - "hash": "204eceea93694aa081e0132c8281b76d3b3d6b4a", - "channel": "dev", - "version": "v1.4.1", - "release_date": "2019-03-27T01:13:10.675659Z", - "archive": "dev/linux/flutter_linux_v1.4.1-dev.tar.xz", - "sha256": "e4fa4a365f29fbe0da2a25e4a955202bbe5ee3d11ec54bcff2bbcbb7d04a96b0" - }, - { - "hash": "18a08a8f4f7bca0d25f34706ebc8af231f3db9d4", - "channel": "dev", - "version": "v1.4.0", - "release_date": "2019-03-26T22:02:37.386587Z", - "archive": "dev/linux/flutter_linux_v1.4.0-dev.tar.xz", - "sha256": "46ab24fd98a4976c08635a117a6f69f656faf962fd65c9bafd6416960c76269c" - }, - { - "hash": "8e7e435706553edea6d350c3843f1c0e5465a0d8", - "channel": "dev", - "version": "v1.3.14", - "release_date": "2019-03-26T01:16:58.897217Z", - "archive": "dev/linux/flutter_linux_v1.3.14-dev.tar.xz", - "sha256": "3dd54ecb76711f827378e4f0d0d85ad8cbf58082b62a27de74dd74169a43658b" - }, - { - "hash": "59ce7d6bff0d0626ae4b90787bf993ebcdc4b110", - "channel": "dev", - "version": "v1.3.13", - "release_date": "2019-03-19T03:42:42.929135Z", - "archive": "dev/linux/flutter_linux_v1.3.13-dev.tar.xz", - "sha256": "daa5fea0f58e9385c1fd49c47f3b5add5e97779bb45d0aa7368e0b466bce26c7" - }, - { - "hash": "a1bee54fda83026c01edd53ba32f01736b4ee4ad", - "channel": "dev", - "version": "v1.3.12", - "release_date": "2019-03-19T00:07:35.793631Z", - "archive": "dev/linux/flutter_linux_v1.3.12-dev.tar.xz", - "sha256": "cb7ae15fd5db767867b260355c4f1e9b26e44b97cad0fd01f32589241bf60d38" - }, - { - "hash": "73fb457cae005cde3e351fc9e1ba1b43de458aad", - "channel": "dev", - "version": "v1.3.11", - "release_date": "2019-03-18T16:38:19.665077Z", - "archive": "dev/linux/flutter_linux_v1.3.11-dev.tar.xz", - "sha256": "e6c388f9c03b5c48e06b829254ed965e6f95205fe7f2f58efd59dabc62d6726a" - }, - { - "hash": "e5b1ed7a7f7b85c1877e09a9495681f719be5578", - "channel": "beta", - "version": "v1.3.8", - "release_date": "2019-03-15T20:18:29.639532Z", - "archive": "beta/linux/flutter_linux_v1.3.8-beta.tar.xz", - "sha256": "26ba3963ac9e78fe7a690a92ea7efe3bfafd6d00059cfbdd22dd8f5d0ca9d2d3" - }, - { - "hash": "4feefa3c9a2176ca7383246c4c01b36254fbec85", - "channel": "dev", - "version": "v1.3.10", - "release_date": "2019-03-15T04:03:09.790369Z", - "archive": "dev/linux/flutter_linux_v1.3.10-dev.tar.xz", - "sha256": "7acd2baeb164610d1ae3e6ed746023743c1399bb80ab7ff0672944ea4749101f" - }, - { - "hash": "f91df4abe1427fef8862c9e81b2e5af6fc05a67a", - "channel": "dev", - "version": "v1.3.9", - "release_date": "2019-03-10T05:32:40.478710Z", - "archive": "dev/linux/flutter_linux_v1.3.9-dev.tar.xz", - "sha256": "42b9d43d8c60da7b73f707e1265879674a773f8531784615f57555a06be4f64c" - }, - { - "hash": "e5b1ed7a7f7b85c1877e09a9495681f719be5578", - "channel": "dev", - "version": "v1.3.8", - "release_date": "2019-03-07T22:47:00.669263Z", - "archive": "dev/linux/flutter_linux_v1.3.8-dev.tar.xz", - "sha256": "2fa7dc6dbef84535cee55df85720211e8203cc465a298159d682736f4bc3066a" - }, - { - "hash": "01a29b85eff7dd4b2d4958f61adf1840042471cc", - "channel": "dev", - "version": "v1.3.7", - "release_date": "2019-03-07T15:20:15.237477Z", - "archive": "dev/linux/flutter_linux_v1.3.7-dev.tar.xz", - "sha256": "557f38ccb5e39151509ab494eb74713c1e43319a49eed238578d004401b71679" - }, - { - "hash": "5099701f88f49ec12ebca676d8e61149917bde9c", - "channel": "dev", - "version": "v1.3.6", - "release_date": "2019-03-07T15:17:53.441780Z", - "archive": "dev/linux/flutter_linux_v1.3.6-dev.tar.xz", - "sha256": "4c3b9adf1b645a44d49ef4b2b93e3e57f09d927928d834998f132a6b5cec4f63" - }, - { - "hash": "7fc14a55af64462763d28abfb4e610086c6e0f39", - "channel": "dev", - "version": "v1.3.4", - "release_date": "2019-03-05T16:01:11.312470Z", - "archive": "dev/linux/flutter_linux_v1.3.4-dev.tar.xz", - "sha256": "a889c3de1903b6f5e992e8e58e6d19faf1c2a3785bfd43267b18ad5b081d47ea" - }, - { - "hash": "778e95a39b82688662e8be7cbe2deb31cad33203", - "channel": "dev", - "version": "v1.3.3", - "release_date": "2019-03-04T16:19:42.411121Z", - "archive": "dev/linux/flutter_linux_v1.3.3-dev.tar.xz", - "sha256": "f627268bd5b2b5a405d37042345fa76911eef244336c4c495de28b02469ddd92" - }, - { - "hash": "046f960ae210afc3887721b1b5aa1dbdab4105cb", - "channel": "dev", - "version": "v1.3.2", - "release_date": "2019-03-01T09:55:35.815246Z", - "archive": "dev/linux/flutter_linux_v1.3.2-dev.tar.xz", - "sha256": "e5749afc9fc8777005a66dd92b4d346494541d0d55be8975c78f985e12646a79" - }, - { - "hash": "6ed9da35c3a4f6cc79d4f91bf850159908daad8e", - "channel": "dev", - "version": "v1.3.1", - "release_date": "2019-03-01T01:32:44.709794Z", - "archive": "dev/linux/flutter_linux_v1.3.1-dev.tar.xz", - "sha256": "baa3211917be497fc8ea1a3fb73bbc546b654d7eab6b63d3c39a34a30f293190" - }, - { - "hash": "3054a935791bf0bcc34ba0a111df794ddb7a3589", - "channel": "dev", - "version": "v1.3.0", - "release_date": "2019-02-28T04:56:47.051158Z", - "archive": "dev/linux/flutter_linux_v1.3.0-dev.tar.xz", - "sha256": "b0e802b0b6c006d207bf5dd582d5b830bd6ad21fdfc44552ee86c2a9df1e3bd1" - }, - { - "hash": "007a415c2a2fa37e8fd5ad87d6710bca8e212ef1", - "channel": "dev", - "version": "v1.2.2", - "release_date": "2019-02-27T23:55:32.285624Z", - "archive": "dev/linux/flutter_linux_v1.2.2-dev.tar.xz", - "sha256": "abec8aa947b2e0d5d3ea0c534c693083b775dadfc64092a84786c0f6aa451897" - }, - { - "hash": "8661d8aecd626f7f57ccbcb735553edc05a2e713", - "channel": "stable", - "version": "v1.2.1", - "release_date": "2019-02-26T17:24:44.521898Z", - "archive": "stable/linux/flutter_linux_v1.2.1-stable.tar.xz", - "sha256": "e5f9e8a641854a2b598083fd9d733d56bc9b77346b79777c19127992cbf6be51" - }, - { - "hash": "8661d8aecd626f7f57ccbcb735553edc05a2e713", - "channel": "beta", - "version": "v1.2.1", - "release_date": "2019-02-26T01:53:13.255892Z", - "archive": "beta/linux/flutter_linux_v1.2.1-beta.tar.xz", - "sha256": "4b4fafef0104d536cc50b8100820378328f7c7410e984ca7cd814743a174edf6" - }, - { - "hash": "8661d8aecd626f7f57ccbcb735553edc05a2e713", - "channel": "dev", - "version": "v1.2.1", - "release_date": "2019-02-15T06:29:10.644685Z", - "archive": "dev/linux/flutter_linux_v1.2.1-dev.tar.xz", - "sha256": "cebcbb84d4ec8d46b0029a7a552ad4c8e1a9499ab578a1d675e199f65d7559b0" - }, - { - "hash": "06b979c4d5e1b499745422269f01a00341257058", - "channel": "dev", - "version": "v1.2.0", - "release_date": "2019-01-31T03:59:51.369963Z", - "archive": "dev/linux/flutter_linux_v1.2.0-dev.tar.xz", - "sha256": "79fdd83b2c690f438fd1388e649e5fabd88ff993645297d437db9225a9624522" - }, - { - "hash": "985ccb6d14c6ce5ce74823a4d366df2438eac44f", - "channel": "beta", - "version": "v1.1.8", - "release_date": "2019-01-29T22:16:42.061861Z", - "archive": "beta/linux/flutter_linux_v1.1.8-beta.tar.xz", - "sha256": "faf14d93a5e1fb8d0fb44c8855fbdc97844d686001c1257d0aad02e2754cd588" - }, - { - "hash": "985ccb6d14c6ce5ce74823a4d366df2438eac44f", - "channel": "dev", - "version": "v1.1.8", - "release_date": "2019-01-09T21:36:17.364354Z", - "archive": "dev/linux/flutter_linux_v1.1.8-dev.tar.xz", - "sha256": "185c66139b1abf7a5a4dcce34e4578ea087c18a94efbd98b72847ed98617547c" - }, - { - "hash": "3cca1a2ec35604ca50f9c656b8e761b07a00a9ed", - "channel": "dev", - "version": "v1.1.0", - "release_date": "2018-12-12T00:34:29.682984Z", - "archive": "dev/linux/flutter_linux_v1.1.0-dev.tar.xz", - "sha256": "53a147e73456d3fd7b125549421994914b85f7f9df410a4973c179742fc03abf" - }, - { - "hash": "5391447fae6209bb21a89e6a5a6583cac1af9b4b", - "channel": "stable", - "version": "v1.0.0", - "release_date": "2018-12-04T17:38:52.282873Z", - "archive": "stable/linux/flutter_linux_v1.0.0-stable.tar.xz", - "sha256": "96e59dac54e427d4a6936d6ae98bda1b04a06a17a4323a95480f22fa19f9e2f4" - }, - { - "hash": "5391447fae6209bb21a89e6a5a6583cac1af9b4b", - "channel": "beta", - "version": "v1.0.0", - "release_date": "2018-12-04T17:02:15.249924Z", - "archive": "beta/linux/flutter_linux_v1.0.0-beta.tar.xz", - "sha256": "3d52bc8fefe427bf245c12b4d4dd5179b894e174db5d98554fc9d853bd567013" - }, - { - "hash": "5391447fae6209bb21a89e6a5a6583cac1af9b4b", - "channel": "dev", - "version": "v1.0.0", - "release_date": "2018-12-04T17:00:36.684130Z", - "archive": "dev/linux/flutter_linux_v1.0.0-dev.tar.xz", - "sha256": "338850dd27a791c13ea088d68d20cbea6bd35fbeb289cf50df82d5b66bc8eea4" - }, - { - "hash": "58c8489fcdb4e4ef6c010117584c9b23d15221aa", - "channel": "beta", - "version": "v0.11.13", - "release_date": "2018-11-30T05:17:44.100731Z", - "archive": "beta/linux/flutter_linux_v0.11.13-beta.tar.xz", - "sha256": "13c41d9aa4ccae5b96a9e068ed630183c5496d047e3db55d902b5c21d6408622" - }, - { - "hash": "58c8489fcdb4e4ef6c010117584c9b23d15221aa", - "channel": "dev", - "version": "v0.11.13", - "release_date": "2018-11-30T05:04:36.738359Z", - "archive": "dev/linux/flutter_linux_v0.11.13-dev.tar.xz", - "sha256": "a1ec730b4922a8b9d11858f45099dfdc106ecb7c3502911e1ee49594af9e7be5" - }, - { - "hash": "06ec8d3b41beb469d845626e36a246ee09300fa7", - "channel": "dev", - "version": "v0.11.12", - "release_date": "2018-11-29T03:51:24.955933Z", - "archive": "dev/linux/flutter_linux_v0.11.12-dev.tar.xz", - "sha256": "77cd27683cecbc09dfa4c34c0f14b84afdcd14f98a79463137b3177d8fcb621d" - }, - { - "hash": "06ec8d3b41beb469d845626e36a246ee09300fa7", - "channel": "beta", - "version": "v0.11.12", - "release_date": "2018-11-29T03:49:28.450887Z", - "archive": "beta/linux/flutter_linux_v0.11.12-beta.tar.xz", - "sha256": "6c9a2efc13ca03ac2713c447ab9acb216ba5e1257ba5fef79422128adf6a0240" - }, - { - "hash": "e7680128afbbde443d69f89bb264015276a8475a", - "channel": "dev", - "version": "v0.11.11", - "release_date": "2018-11-28T16:57:21.243569Z", - "archive": "dev/linux/flutter_linux_v0.11.11-dev.tar.xz", - "sha256": "71f2f7340c0e746a3799d00b1bcc7b1714e43c1b66131e7eac447009629834fc" - }, - { - "hash": "e7680128afbbde443d69f89bb264015276a8475a", - "channel": "beta", - "version": "v0.11.11", - "release_date": "2018-11-28T16:55:28.702491Z", - "archive": "beta/linux/flutter_linux_v0.11.11-beta.tar.xz", - "sha256": "8b90990e6f3ce1832e1d3f862c9b06f09780e46fab756aef48221514b645c750" - }, - { - "hash": "c27c4a265e9ad295e5d434cddabbc639b2e3542d", - "channel": "beta", - "version": "v0.11.10", - "release_date": "2018-11-27T06:51:22.538620Z", - "archive": "beta/linux/flutter_linux_v0.11.10-beta.tar.xz", - "sha256": "7934eb31e136c892f25db660e18fb6051e6b565aada5c8f85720591533b3ee3d" - }, - { - "hash": "c27c4a265e9ad295e5d434cddabbc639b2e3542d", - "channel": "dev", - "version": "v0.11.10", - "release_date": "2018-11-27T06:50:27.263812Z", - "archive": "dev/linux/flutter_linux_v0.11.10-dev.tar.xz", - "sha256": "21b936fb7fbf0786f8d1a2ff067931d24a8ecf561587231ab7761eaa58f8a233" - }, - { - "hash": "d48e6e433cc5ca67b24b19f70aaa197e84ba63c1", - "channel": "beta", - "version": "v0.11.9", - "release_date": "2018-11-21T07:50:12.774703Z", - "archive": "beta/linux/flutter_linux_v0.11.9-beta.tar.xz", - "sha256": "1e81034a1c1798af68b66cd02399b3127704e41d5c6c10973febe02b0550fe0e" - }, - { - "hash": "d48e6e433cc5ca67b24b19f70aaa197e84ba63c1", - "channel": "dev", - "version": "v0.11.9", - "release_date": "2018-11-21T07:48:58.950398Z", - "archive": "dev/linux/flutter_linux_v0.11.9-dev.tar.xz", - "sha256": "202d3bfd0a9d1e0cd5175d8b6cfb23301c85a26b9de8314e30a40c1f18c6d4e4" - }, - { - "hash": "f5b02e3c05ed1ab31e890add84fb56e35de2d392", - "channel": "beta", - "version": "v0.11.8", - "release_date": "2018-11-20T18:47:30.345385Z", - "archive": "beta/linux/flutter_linux_v0.11.8-beta.tar.xz", - "sha256": "c36b6285b0c24e9622e9eb883c9b12df9af487612cf32351bc59e02cd84c4203" - }, - { - "hash": "f5b02e3c05ed1ab31e890add84fb56e35de2d392", - "channel": "dev", - "version": "v0.11.8", - "release_date": "2018-11-20T18:35:12.256960Z", - "archive": "dev/linux/flutter_linux_v0.11.8-dev.tar.xz", - "sha256": "9397eff88e8b996de75d1f9846c38db76d5e03c962452a1a81f4879d4f576838" - }, - { - "hash": "7a005e1dcda665ace7241a24e79fae1a71f17b18", - "channel": "beta", - "version": "v0.11.7", - "release_date": "2018-11-19T19:14:35.559091Z", - "archive": "beta/linux/flutter_linux_v0.11.7-beta.tar.xz", - "sha256": "f9c59f5f6dd975c6bf8a0eaf5be9365197e31aefff37bfcbe551f6acab2d080c" - }, - { - "hash": "7a005e1dcda665ace7241a24e79fae1a71f17b18", - "channel": "dev", - "version": "v0.11.7", - "release_date": "2018-11-19T19:03:42.568411Z", - "archive": "dev/linux/flutter_linux_v0.11.7-dev.tar.xz", - "sha256": "63cb1a86c636c31feeb372c3b0eee19d2e816994e5193a800c56c58249358d13" - }, - { - "hash": "d44aa57c120c30d523c937a0455a6af30e743da9", - "channel": "dev", - "version": "v0.11.6", - "release_date": "2018-11-15T00:06:07.567249Z", - "archive": "dev/linux/flutter_linux_v0.11.6-dev.tar.xz", - "sha256": "a611307137eead7862e1e5cc4463e82661e9a98e798f00a23ddd5e19921a447f" - }, - { - "hash": "97e03104a0913886a666a36f5d11ab5763d45e6e", - "channel": "dev", - "version": "v0.11.5", - "release_date": "2018-11-14T08:21:52.745142Z", - "archive": "dev/linux/flutter_linux_v0.11.5-dev.tar.xz", - "sha256": "a79a2c81cb2b5c0b8ccb39b0eb1989bc7eb40b5dc6bd760785d24d40ba9c689c" - }, - { - "hash": "df57dc9da9905744fa0b49fe30254d6d7b204d5b", - "channel": "dev", - "version": "v0.11.4", - "release_date": "2018-11-13T19:26:13.591295Z", - "archive": "dev/linux/flutter_linux_v0.11.4-dev.tar.xz", - "sha256": "52ffcc6820aa53e61f6e9c82c2cad75b7d038e417c05cd041a5e51c94259185b" - }, - { - "hash": "72bf075e8d6961d2ca6df462b2228954f8d0e73a", - "channel": "beta", - "version": "v0.11.3", - "release_date": "2018-11-13T01:12:51.313753Z", - "archive": "beta/linux/flutter_linux_v0.11.3-beta.tar.xz", - "sha256": "486e12ffffef6a441399f07c0bd636d35fc41161d65cf26ba84ebeba5beb3d7e" - }, - { - "hash": "72bf075e8d6961d2ca6df462b2228954f8d0e73a", - "channel": "dev", - "version": "v0.11.3", - "release_date": "2018-11-11T18:31:39.196426Z", - "archive": "dev/linux/flutter_linux_v0.11.3-dev.tar.xz", - "sha256": "d9795d766b537239bd1589304ae5bd3ef8bf1dd6cdc378036704c4c79e46e072" - }, - { - "hash": "e32cd85446c6fd5afdbe1ba463c18e2b2ee27781", - "channel": "dev", - "version": "v0.11.2", - "release_date": "2018-11-10T03:57:25.010916Z", - "archive": "dev/linux/flutter_linux_v0.11.2-dev.tar.xz", - "sha256": "5322559673f66be3f8178ef4d0c6bd17037a29675a78b714a5e227a7016bac16" - }, - { - "hash": "756d5938d4eb4ef1572075fae7744502d870c7ba", - "channel": "dev", - "version": "v0.11.1", - "release_date": "2018-11-10T00:05:02.633915Z", - "archive": "dev/linux/flutter_linux_v0.11.1-dev.tar.xz", - "sha256": "4567b3b61de1dce2f204693cfe1b5e9a1096c9eb0e0ade2011f21fa90fea4c76" - }, - { - "hash": "c319b890b33f2c15af043f2ab857e7c2944beefa", - "channel": "dev", - "version": "v0.11.0", - "release_date": "2018-11-08T20:06:52.048337Z", - "archive": "dev/linux/flutter_linux_v0.11.0-dev.tar.xz", - "sha256": "c8ec08c40e4c5e4477fee0329a01f4937402c8c7c05462b7dcf6ef3c388b310d" - }, - { - "hash": "d8cbb80206db06d151206f8b599b7dde5a386a2d", - "channel": "beta", - "version": "v0.10.2", - "release_date": "2018-11-06T18:44:46.133026Z", - "archive": "beta/linux/flutter_linux_v0.10.2-beta.tar.xz", - "sha256": "9672d324de28a41ff256a2e7f43021c21110d6d4e84295bcca6244a093fe50e8" - }, - { - "hash": "d8cbb80206db06d151206f8b599b7dde5a386a2d", - "channel": "dev", - "version": "v0.10.2", - "release_date": "2018-11-01T23:41:26.427053Z", - "archive": "dev/linux/flutter_linux_v0.10.2-dev.tar.xz", - "sha256": "f9b2774ee8db7f64557d5dcf07aa13dae65da0e744818ed561c6d74807f3d6ce" - }, - { - "hash": "6a3ff018b199a7febbe2b5adbb564081d8f49e2f", - "channel": "dev", - "version": "v0.10.1", - "release_date": "2018-10-20T05:19:03.365595Z", - "archive": "dev/linux/flutter_linux_v0.10.1-dev.tar.xz", - "sha256": "92a8044a1fc6c9a37755614bcfe3fd4dd4f4e7a65c379edbab3a1f86bd6a38ea" - }, - { - "hash": "d954ae6850a06ea461d5595cef424e278ed9f17f", - "channel": "dev", - "version": "v0.10.0", - "release_date": "2018-10-10T01:30:38.767479Z", - "archive": "dev/linux/flutter_linux_v0.10.0-dev.tar.xz", - "sha256": "d909191be010c2b3e81fd5a907427ee9ca046e281efec3332cfbb9df8d3a1db9" - }, - { - "hash": "f37c235c32fc15babe6dc7b7bc2ee4387e5ecf92", - "channel": "beta", - "version": "v0.9.4", - "release_date": "2018-10-09T23:37:36.097058Z", - "archive": "beta/linux/flutter_linux_v0.9.4-beta.tar.xz", - "sha256": "92fd11c7292d022a8011a4cfffde8da9ef71a4320f0339202ea02f856affbeb8" - }, - { - "hash": "13684e4f8e9edb4c2b2a0fd8e1439f93e6e30fde", - "channel": "dev", - "version": "v0.9.6", - "release_date": "2018-10-04T02:33:40.645472Z", - "archive": "dev/linux/flutter_linux_v0.9.6-dev.tar.xz", - "sha256": "a3f8577e883906255f1e6ac2ea50050fc619bb827eeb985c165e0d1b33f74932" - }, - { - "hash": "020fd590b032c403b82688933e67474215b1debc", - "channel": "dev", - "version": "v0.9.5", - "release_date": "2018-09-28T23:30:33.903465Z", - "archive": "dev/linux/flutter_linux_v0.9.5-dev.tar.xz", - "sha256": "c584166e4f814964526ffc25736b52df350bff0f7bb6ffb733606658fd4d70c0" - }, - { - "hash": "f37c235c32fc15babe6dc7b7bc2ee4387e5ecf92", - "channel": "dev", - "version": "v0.9.4", - "release_date": "2018-09-27T02:03:24.847660Z", - "archive": "dev/linux/flutter_linux_v0.9.4-dev.tar.xz", - "sha256": "d4fca5608f0eeb238a709ec7085690b7c1dd4fa8b8b33ca99da2718a6a7ceb6d" - }, - { - "hash": "eed8c7ad07a2ba90b0a57d0aa7cc6ebed1864ecd", - "channel": "dev", - "version": "v0.9.3", - "release_date": "2018-09-25T20:36:24.192396Z", - "archive": "dev/linux/flutter_linux_v0.9.3-dev.tar.xz", - "sha256": "735a233daf935737047b3685d487a709771c5f1d6926ee98724b7f66bbf24934" - }, - { - "hash": "85b4670b2aee067838821d4c4020315c16e8930a", - "channel": "dev", - "version": "v0.9.2", - "release_date": "2018-09-19T23:58:27.474764Z", - "archive": "dev/linux/flutter_linux_v0.9.2-dev.tar.xz", - "sha256": "fb73d368d63911a105093b3f90c95c67d6adf5beda84765c487ded8cfa4fb36d" - }, - { - "hash": "bf7c27095cc4dc07c03d8a6ad2e9e0e28e26227e", - "channel": "dev", - "version": "v0.9.1", - "release_date": "2018-09-18T23:13:24.302005Z", - "archive": "dev/linux/flutter_linux_v0.9.1-dev.tar.xz", - "sha256": "9c837a3879b2b902e5f7237f2e4c9d8aaebce2ae46840a3806c0cf96511cecd0" - }, - { - "hash": "f8c50ea15f6a78fdb6fa038cf3fb70fb154714ef", - "channel": "dev", - "version": "v0.9.0", - "release_date": "2018-09-18T21:46:29.068829Z", - "archive": "dev/linux/flutter_linux_v0.9.0-dev.tar.xz", - "sha256": "b87da1c31bc219f0b3ab1e550299b5fcff7a3967c545c0cf79e8a154ccb7853e" - }, - { - "hash": "ccd070a5b42d18d1b8dfce4e8b59417373122dc2", - "channel": "dev", - "version": "v0.8.7", - "release_date": "2018-09-18T20:41:01.857935Z", - "archive": "dev/linux/flutter_linux_v0.8.7-dev.tar.xz", - "sha256": "3595f1fdd47cabc2fbf3ee27bf542bafb855d38c8b54fcad588c2a219755af61" - }, - { - "hash": "5ab9e70727d858def3a586db7fb98ee580352957", - "channel": "beta", - "version": "v0.8.2", - "release_date": "2018-09-18T19:36:29.169888Z", - "archive": "beta/linux/flutter_linux_v0.8.2-beta.tar.xz", - "sha256": "c201ec9b3242fa6fb89296c55fbd6a252f26faacdff5ca6768175858ed9a97a5" - }, - { - "hash": "9f359aeee2a474fe9c565b3b59cf1d504b919b4d", - "channel": "dev", - "version": "v0.8.6", - "release_date": "2018-09-18T00:40:12.111590Z", - "archive": "dev/linux/flutter_linux_v0.8.6-dev.tar.xz", - "sha256": "b2a9146f47c3e680b40b18397f6bc95a32acc86f7898ff6eeef2fa476c9da1ad" - }, - { - "hash": "2bca8007bd1962940fa3b3d568bc52e446005616", - "channel": "dev", - "version": "v0.8.5", - "release_date": "2018-09-17T21:10:18.168755Z", - "archive": "dev/linux/flutter_linux_v0.8.5-dev.tar.xz", - "sha256": "c131c87ca519635bcc72e1d6e2ef6f8da27d5f531e3da87429d769cff19302ef" - }, - { - "hash": "7f7a731da095addd1ce684a6a2f4bc8651229769", - "channel": "dev", - "version": "v0.8.4", - "release_date": "2018-09-14T20:21:32.119972Z", - "archive": "dev/linux/flutter_linux_v0.8.4-dev.tar.xz", - "sha256": "ce2839643841f93c0bec5a472935cbe9e785462e9c97fc4c9cb2b45203bb7dbc" - }, - { - "hash": "2895d71b79b1482c8c1d1de387d04e2a5e667f1e", - "channel": "dev", - "version": "v0.8.3", - "release_date": "2018-09-14T17:24:49.586078Z", - "archive": "dev/linux/flutter_linux_v0.8.3-dev.tar.xz", - "sha256": "f0b1a427f06321ae19c85d50becdd30d6dd0bde1c0255b16724a1a88ea54459a" - }, - { - "hash": "5ab9e70727d858def3a586db7fb98ee580352957", - "channel": "dev", - "version": "v0.8.2", - "release_date": "2018-09-10T20:15:13.878682Z", - "archive": "dev/linux/flutter_linux_v0.8.2-dev.tar.xz", - "sha256": "1654c065c016c89d040e516ab5281f80a48571269b85b0abb9a6c10f9f5f3916" - }, - { - "hash": "0235ec59d108f8b4f6c6a664cc11c56c11cbb50a", - "channel": "dev", - "version": "v0.8.1", - "release_date": "2018-09-07T16:06:09.740756Z", - "archive": "dev/linux/flutter_linux_v0.8.1-dev.tar.xz", - "sha256": "9e9bc5d62c976f553fcc2cc49a467f10f21084cb9a0eb1800eacc540085e9819" - }, - { - "hash": "a74f591d0c05f2173448b2b421785b8dc51e8370", - "channel": "dev", - "version": "v0.8.0", - "release_date": "2018-09-06T19:21:48.303173Z", - "archive": "dev/linux/flutter_linux_v0.8.0-dev.tar.xz", - "sha256": "d4d29f7baebf91c1e4d0b7891297f6352328fb9c8c96dfd0e54579eb59d2cc00" - }, - { - "hash": "3b309bda072a6b326e8aa4591a5836af600923ce", - "channel": "beta", - "version": "v0.7.3", - "release_date": "2018-09-05T02:54:37.048088Z", - "archive": "beta/linux/flutter_linux_v0.7.3-beta.tar.xz", - "sha256": "77434ce2ad82204f75db7eece636f4a26a17571cef16a9ced6ee2385195e4160" - }, - { - "hash": "eab5cd9853c13ec2207977d9b9ef7b6750fe0817", - "channel": "dev", - "version": "v0.7.5", - "release_date": "2018-08-31T00:53:05.441989Z", - "archive": "dev/linux/flutter_linux_v0.7.5-dev.tar.xz", - "sha256": "9aa4d5e8c00c52ed8ebd02b53e10dcba89366b40fc75f5ce99dd55c9462e811a" - }, - { - "hash": "ce51e71d19eeadaa079d70388a61f7ae710313f7", - "channel": "dev", - "version": "v0.7.4", - "release_date": "2018-08-30T22:18:00.789268Z", - "archive": "dev/linux/flutter_linux_v0.7.4-dev.tar.xz", - "sha256": "41b179f090b1065e9eab351b48bcb6068f1727da99154f2564b98758d6134302" - }, - { - "hash": "3b309bda072a6b326e8aa4591a5836af600923ce", - "channel": "dev", - "version": "v0.7.3", - "release_date": "2018-08-29T23:19:08.961236Z", - "archive": "dev/linux/flutter_linux_v0.7.3-dev.tar.xz", - "sha256": "3356f15e9b0a6f172bf9aa4c5520ee66e12363e0568a893d617dfce6eac28781" - }, - { - "hash": "f8a2fc7c287ea0f25bb893d56caa45302d22eed6", - "channel": "dev", - "version": "v0.7.2", - "release_date": "2018-08-28T19:42:43.472854Z", - "archive": "dev/linux/flutter_linux_v0.7.2-dev.tar.xz", - "sha256": "01466d29620b4f1463a6d4c76fd89666a0f8721b9007ed196ca7359fa106f21b" - }, - { - "hash": "9299c02cf708497d6f72edda8efae0bb8340660e", - "channel": "beta", - "version": "v0.6.0", - "release_date": "2018-08-28T18:25:23.275832Z", - "archive": "beta/linux/flutter_linux_v0.6.0-beta.tar.xz", - "sha256": "49108580ab84e2576dbdd9473cd982fafd61fac15aceb76e192c4f41c6d03659" - }, - { - "hash": "3c624f8b2c578fe7c14ae1b2dec725e265891758", - "channel": "dev", - "version": "v0.7.1", - "release_date": "2018-08-27T19:08:49.442865Z", - "archive": "dev/linux/flutter_linux_v0.7.1-dev.tar.xz", - "sha256": "10a41a086edb3f24819b54b8f1f38b14917b6cd85f26674ebdcf474f560ed9af" - }, - { - "hash": "09fe34708f5767e3dac6b04943677d2d8962b78c", - "channel": "dev", - "version": "v0.7.0", - "release_date": "2018-08-22T22:19:20.039553Z", - "archive": "dev/linux/flutter_linux_v0.7.0-dev.tar.xz", - "sha256": "0ca939847fbcd72f37a750c359b2dcf74c2b291ca4bee6926daec3b803c6c846" - }, - { - "hash": "392a178169a9e620a5ae8e55c40d4276cddd3b36", - "channel": "dev", - "version": "v0.6.2", - "release_date": "2018-08-21T23:35:25.724670Z", - "archive": "dev/linux/flutter_linux_v0.6.2-dev.tar.xz", - "sha256": "f6ace82c2a3180c37b71e9322e9282a6d0edb47da205e4380a41bbbb6502fd08" - }, - { - "hash": "ad1eaff45ab97ab65e2dd5aba768d19a4b48d49b", - "channel": "dev", - "version": "v0.6.1", - "release_date": "2018-08-21T19:15:54.048647Z", - "archive": "dev/linux/flutter_linux_v0.6.1-dev.tar.xz", - "sha256": "98e57ee13d6fa6c0115c4f22a599ab2f3b14ff9542eaafce8e9a9a8e8468ea6f" - }, - { - "hash": "9299c02cf708497d6f72edda8efae0bb8340660e", - "channel": "dev", - "version": "v0.6.0", - "release_date": "2018-08-20T20:04:47.145283Z", - "archive": "dev/linux/flutter_linux_v0.6.0-dev.tar.xz", - "sha256": "8fc6e43f54913917f474514fc55726d5fab9245ecd5956303ac6ef0083a6ff9b" - }, - { - "hash": "e4b989bf3dbefc61f11bce298d16f92ebd9cde41", - "channel": "dev", - "version": "v0.5.8", - "release_date": "2018-08-10T18:54:54.439606Z", - "archive": "dev/linux/flutter_linux_v0.5.8-dev.tar.xz", - "sha256": "15b3af1eb53b509d18976eb6fe757bffe0aad45f86589c19c27d25583e6527a5" - }, - { - "hash": "66091f969653fd3535b265ddcd87436901858a1d", - "channel": "dev", - "version": "v0.5.7", - "release_date": "2018-07-16T17:00:12.907102Z", - "archive": "dev/linux/flutter_linux_v0.5.7-dev.tar.xz", - "sha256": "09daa11c6e144f89fb4febee162e53615f407324841c8dd01a0401631e4e52cd" - }, - { - "hash": "472bbccf756e7954af2a81d2c8abc46d65a570af", - "channel": "dev", - "version": "v0.5.6", - "release_date": "2018-07-03T18:05:18.897446Z", - "archive": "dev/linux/flutter_linux_v0.5.6-dev.tar.xz", - "sha256": "25fe3fc79d9694e13735e9805f1c72e8e2169f235d02f5388e4587723eace318" - }, - { - "hash": "c7ea3ca377e909469c68f2ab878a5bc53d3cf66b", - "channel": "beta", - "version": "v0.5.1", - "release_date": "2018-06-19T16:34:52.432566Z", - "archive": "beta/linux/flutter_linux_v0.5.1-beta.tar.xz", - "sha256": "ac66a026e0bcce96e54757bfb2eb0e132497270b8a43b09803e6aef69d313cba" - }, - { - "hash": "020e0ef55ce73d94284db593f895bfc3a0b520e9", - "channel": "dev", - "version": "v0.5.5", - "release_date": "2018-06-18T19:06:38.885879Z", - "archive": "dev/linux/flutter_linux_v0.5.5-dev.tar.xz", - "sha256": "adcc8254955786caefca3a506c32cad66a666ccc277522d833c827cb94a0f32f" - }, - { - "hash": "3019ad976d333cceb903b3f53885cd9ae678a622", - "channel": "dev", - "version": "v0.5.4", - "release_date": "2018-06-11T23:06:33.203054Z", - "archive": "dev/linux/flutter_linux_v0.5.4-dev.tar.xz", - "sha256": "413e51c908913bf5e7acb303cdd8c7c522244b4ee69c0c67890595e7dd5835ae" - }, - { - "hash": "691cbee61343977c5fe09eef45694f0d755d2d1b", - "channel": "dev", - "version": "v0.5.3", - "release_date": "2018-06-11T17:12:09.004263Z", - "archive": "dev/linux/flutter_linux_v0.5.3-dev.tar.xz", - "sha256": "50151fccc1a09de380ec4067f6f02d902423befdbbffd6f5b3f1a86cecb6af8e" - }, - { - "hash": "0a26ac09703b92a939fe3340c0584657a1791566", - "channel": "dev", - "version": "v0.5.2", - "release_date": "2018-06-08T00:45:49.120148Z", - "archive": "dev/linux/flutter_linux_v0.5.2-dev.tar.xz", - "sha256": "fe5f446fd603ae5cca65794a64952a8786fdb7de2d0d02385901f4338d10b061" - }, - { - "hash": "c7ea3ca377e909469c68f2ab878a5bc53d3cf66b", - "channel": "dev", - "version": "v0.5.1", - "release_date": "2018-05-30T16:54:19.730575Z", - "archive": "dev/linux/flutter_linux_v0.5.1-dev.tar.xz", - "sha256": "62b1c311b629521d3236ad9e4bb236a38d41e5625a5af6b13c5ff19361a94edd" - }, - { - "hash": "a863817c045396bad2830a80e722903154dda32b", - "channel": "dev", - "version": "v0.5.0", - "release_date": "2018-05-29T14:37:09.929118Z", - "archive": "dev/linux/flutter_linux_v0.5.0-dev.tar.xz", - "sha256": "a574fe0100202ad181e97191039d886d682ba7e84679db8a40c13085de5bb0d2" - }, - { - "hash": "f9bb4289e9fd861d70ae78bcc3a042ef1b35cc9d", - "channel": "beta", - "version": "v0.4.4", - "release_date": "2018-05-22T22:56:13.374276Z", - "archive": "beta/linux/flutter_linux_v0.4.4-beta.tar.xz", - "sha256": "70faf2bbeda659a3d9b6e04b9ea04401798556b736935c6249d3b563a3bf2cad" - }, - { - "hash": "f9bb4289e9fd861d70ae78bcc3a042ef1b35cc9d", - "channel": "dev", - "version": "v0.4.4", - "release_date": "2018-05-14T05:22:45.595510Z", - "archive": "dev/linux/flutter_linux_v0.4.4-dev.tar.xz", - "sha256": "38f3632ac10db4359b1bf0e9fa91a8cdda27e309e95f5e081631111fa934c0a0" - }, - { - "hash": "f086a45f8259fa77ef931ad2bfbb630360a8f5a6", - "channel": "dev", - "version": "v0.4.3", - "release_date": "2018-05-11T18:23:10.418979Z", - "archive": "dev/linux/flutter_linux_v0.4.3-dev.tar.xz", - "sha256": "94b9914036c2bdcfe5806f79e7088df126071cb15a965d1ded9e98cd46f08774" - }, - { - "hash": "de332ec78292c2d79fdb76034328f902c9087ee9", - "channel": "dev", - "version": "v0.4.2", - "release_date": "2018-05-09T05:04:04.217562Z", - "archive": "dev/linux/flutter_linux_v0.4.2-dev.tar.xz", - "sha256": "3d6a4afd43ce8d23382f75ea401741cdbb4c77532b899cbc3e00a42455b34f07" - }, - { - "hash": "e8d08744683d25661c6150b3b247c049719e99ba", - "channel": "dev", - "version": "v0.4.1", - "release_date": "2018-05-09T04:21:20.388240Z", - "archive": "dev/linux/flutter_linux_v0.4.1-dev.tar.xz", - "sha256": "3011413067058de471d1c7a96f41e199254b375ef5b6bdacb2458d60a621509a" - }, - { - "hash": "7984f6e043ee661b420e70c72241973c676034e5", - "channel": "dev", - "version": "v0.4.0", - "release_date": "2018-05-07T19:54:40.036291Z", - "archive": "dev/linux/flutter_linux_v0.4.0-dev.tar.xz", - "sha256": "e9afba00b7f62e17d4492711ad166941635806677e1882a4eec291ff484597ad" - }, - { - "hash": "44b7e7d3f42f050a79712daab253af06e9daf530", - "channel": "beta", - "version": "v0.3.2", - "release_date": "2018-05-07T18:35:13.818643Z", - "archive": "beta/linux/flutter_linux_v0.3.2-beta.tar.xz", - "sha256": "f7ef3862c035b70d67157c51f83a59573c1c27cb1c0557206eeb353034469cda" - }, - { - "hash": "be09a200ee19024db34257653b067dcf5b998dc2", - "channel": "dev", - "version": "v0.3.6", - "release_date": "2018-05-04T20:12:10.557689Z", - "archive": "dev/linux/flutter_linux_v0.3.6-dev.tar.xz", - "sha256": "07b91358c93f45e8fef074e52f56bf4a8894ddc9aa67f0dcdd2b3c97fbfc47db" - }, - { - "hash": "7ffcd3d22d7bc1222d53d6d3bb83f59891aac2c2", - "channel": "dev", - "version": "v0.3.5", - "release_date": "2018-04-25T02:36:56.617731Z", - "archive": "dev/linux/flutter_linux_v0.3.5-dev.tar.xz", - "sha256": "476557bc64f5f172a5b9b8ae76ab523de15edc4a0e1ef28371ca4bce1ced7ac0" - }, - { - "hash": "c7ee37a0d88bb3d60ac0f70cf381cd2492baf5e4", - "channel": "dev", - "version": "v0.3.4", - "release_date": "2018-04-24T21:38:15.356720Z", - "archive": "dev/linux/flutter_linux_v0.3.4-dev.tar.xz", - "sha256": "97d5ccbd802a48593098b8c3f717059dc905d4d82d6ee22d96219acf6259ff1e" - }, - { - "hash": "12bbaba9ae044d0ea77da4dd5e4db15eed403f09", - "channel": "beta", - "version": "v0.3.1", - "release_date": "2018-04-24T16:58:25.525831Z", - "archive": "beta/linux/flutter_linux_v0.3.1-beta.tar.xz", - "sha256": "785505e58fb228284c6c7cb8912a9f93281ec7094024ec18fbbb5d0aea4164bc" - }, - { - "hash": "a742b11a50ad5d70f44a219e4a29a9fb5ca80252", - "channel": "dev", - "version": "v0.3.3", - "release_date": "2018-04-23T13:45:14.270896Z", - "archive": "dev/linux/flutter_linux_v0.3.3-dev.tar.xz", - "sha256": "e58d02bf0b3d2817e4f3df82410bb28d0a1cee7331b09ca3b4b6fc12e4f32f21" - }, - { - "hash": "44b7e7d3f42f050a79712daab253af06e9daf530", - "channel": "dev", - "version": "v0.3.2", - "release_date": "2018-04-20T08:26:17.688699Z", - "archive": "dev/linux/flutter_linux_v0.3.2-dev.tar.xz", - "sha256": "8e578c801b61a0450b2c66269d4c6f523f568b312dc4945d6bff7cf226ffe8b9" - }, - { - "hash": "12bbaba9ae044d0ea77da4dd5e4db15eed403f09", - "channel": "dev", - "version": "v0.3.1", - "release_date": "2018-04-20T07:57:29.226382Z", - "archive": "dev/linux/flutter_linux_v0.3.1-dev.tar.xz", - "sha256": "9932f84582775f5fa361c175cfcb275207a6c1347533becbb35081066131810c" - }, - { - "hash": "c73b8a7cf63455189e9dc005010f2c9b34497420", - "channel": "dev", - "version": "v0.3.0", - "release_date": "2018-04-16T20:03:43.109412Z", - "archive": "dev/linux/flutter_linux_v0.3.0-dev.tar.xz", - "sha256": "ebf806365ca9cd5cc0bf0cca21303ceb5ad7ab5896816e1c02ba762fbf24e6b9" - }, - { - "hash": "f408bb06f9361793ca85493c38d809ee1e2f7e30", - "channel": "dev", - "version": "v0.2.11", - "release_date": "2018-04-12T01:48:48.011863Z", - "archive": "dev/linux/flutter_linux_v0.2.11-dev.tar.xz", - "sha256": "bc63716b8053fc6c07936b0b0632441b7291b83d388ddbe2a210115a63a5ef1a" - }, - { - "hash": "d6d874474b21b512aac03f1dcd0d3b88835cdcdd", - "channel": "dev", - "version": "v0.2.10", - "release_date": "2018-04-09T20:24:31.158345Z", - "archive": "dev/linux/flutter_linux_v0.2.10-dev.tar.xz", - "sha256": "0184236517aca16387698c122d20b750dbfa5fd8966d9e864b67675ec18a8c84" - }, - { - "hash": "b397406561f5e7a9c94e28f58d9e49fca0dd58b7", - "channel": "beta", - "version": "v0.2.8", - "release_date": "2018-04-09T18:34:23.057146Z", - "archive": "beta/linux/flutter_linux_v0.2.8-beta.tar.xz", - "sha256": "97725c50e795498d2d7e9796ed9ee45d4039dec5cae81ee88f65c4cf6c6045c8" - }, - { - "hash": "487e6bc91efd3b8ef859a31963b26e19d12ca6fa", - "channel": "dev", - "version": "v0.2.9", - "release_date": "2018-04-05T15:46:23.078195Z", - "archive": "dev/linux/flutter_linux_v0.2.9-dev.tar.xz", - "sha256": "99ebcc35e3359c79abc015124f109a1b86f69de0e5fe7fe631d42eea34b39eb9" - }, - { - "hash": "b397406561f5e7a9c94e28f58d9e49fca0dd58b7", - "channel": "dev", - "version": "v0.2.8", - "release_date": "2018-04-03T01:46:58.039956Z", - "archive": "dev/linux/flutter_linux_v0.2.8-dev.tar.xz", - "sha256": "ba30a280209ab95d906eda647e2bb17b6a786279a1e3e4cffeb73b7bf0172d63" - }, - { - "hash": "5a58b36e36b8d7aace89d3950e6deb307956a6a0", - "channel": "beta", - "version": "v0.2.3", - "release_date": "2018-04-02T23:23:50.189137Z", - "archive": "beta/linux/flutter_linux_v0.2.3-beta.tar.xz", - "sha256": "4fe85a822093e81cb5a66c7fc263f68de39b5797b294191b6d75e7afcc86aff8" - }, - { - "hash": "0c89920069320b75d1fa4a47d36b2c48cf85697c", - "channel": "dev", - "version": "v0.2.7", - "release_date": "2018-04-02T23:11:51.217078Z", - "archive": "dev/linux/flutter_linux_v0.2.7-dev.tar.xz", - "sha256": "1092f0a13bbea5524f9cb4d476384db98a4aef9daad6396d98dc66b4afac4d12" - }, - { - "hash": "1d067220daa06be91956de1130d93e63fb2f1a5a", - "channel": "dev", - "version": "v0.2.6", - "release_date": "2018-03-30T13:56:17.652025Z", - "archive": "dev/linux/flutter_linux_v0.2.6-dev.tar.xz", - "sha256": "4caeb9af0ac3c251b7d02ec418808e7a274e9d089426a33478b4e50fe2b22fdb" - }, - { - "hash": "bffae2157102dd75a625153d3dc866d3de69c853", - "channel": "dev", - "version": "v0.2.5", - "release_date": "2018-03-30T01:48:38.085191Z", - "archive": "dev/linux/flutter_linux_v0.2.5-dev.tar.xz", - "sha256": "f0ffdd05349842cc8e31d18e6786143a5a3dfcc7a993042e3f9e08dbd7512b5c" - }, - { - "hash": "3352a3fb488df4742ff323243d3dc44d9b7cd3e8", - "channel": "dev", - "version": "v0.2.4", - "release_date": "2018-03-26T20:43:01.049354Z", - "archive": "dev/linux/flutter_linux_v0.2.4-dev.tar.xz", - "sha256": "f4d7aae23436505d1826d174a37658209dc3057a8deff417ab93c886f798b972" - }, - { - "hash": "5a58b36e36b8d7aace89d3950e6deb307956a6a0", - "channel": "dev", - "version": "v0.2.3", - "release_date": "2018-03-20T01:47:02.851729Z", - "archive": "dev/linux/flutter_linux_v0.2.3-dev.tar.xz", - "sha256": "20705630ad9963aa8dca62a5dc8f33264e4cbe6735f5697e77d4a2075c019a1d" - }, - { - "hash": "b9bd51cc36b706215915711e580851901faebb40", - "channel": "dev", - "version": "v0.2.2", - "release_date": "2018-03-16T18:48:13.375013Z", - "archive": "dev/linux/flutter_linux_v0.2.2-dev.tar.xz", - "sha256": "6073331168cdb37a4637a5dc073d6a7ef4e466321effa2c529fa27d2253a4d4b" - }, - { - "hash": "3ea4d06340a97a1e9d7cae97567c64e0569dcaa2", - "channel": "beta", - "version": "v0.1.5", - "release_date": "2018-03-15T16:54:36.795002Z", - "archive": "beta/linux/flutter_linux_v0.1.5-beta.tar.xz", - "sha256": "d3be599c0a2367a0c38c496a0ed474fa619957022a95d4e9d8b06b1bede2f105" - }, - { - "hash": "6f5bcb97a43e45b302b6b8d9eb5ef9d54f09515e", - "channel": "dev", - "version": "v0.2.1", - "release_date": "2018-03-12T17:08:21.387382Z", - "archive": "dev/linux/flutter_linux_v0.2.1-dev.tar.xz", - "sha256": "a9d370d8a76ccae4cb74458bd95027380c3cc3d034fc267513d89fe153fdc33d" - }, - { - "hash": "f8ac23cd8646538634f63032df4bfaf3b597007d", - "channel": "dev", - "version": "v0.2.0", - "release_date": "2018-03-07T19:43:29.371633Z", - "archive": "dev/linux/flutter_linux_v0.2.0-dev.tar.xz", - "sha256": "2d18e27823ac46d0664fe7a8c2e7944ae03b965868c962194eec312e5b6a995d" - }, - { - "hash": "70f60b17d7de9844c356fb7ab0e2cf1630a70965", - "channel": "dev", - "version": "v0.1.9", - "release_date": "2018-03-07T05:33:37.499761Z", - "archive": "dev/linux/flutter_linux_v0.1.9-dev.tar.xz", - "sha256": "1a843c6c3b960871385274573d988f6c842147deadfde08b3c9ce8e2061919c5" - }, - { - "hash": "6993b203c05477fec537f566be7ff7fbf072d33b", - "channel": "dev", - "version": "v0.1.8", - "release_date": "2018-03-06T08:16:53.944971Z", - "archive": "dev/linux/flutter_linux_v0.1.8-dev.tar.xz", - "sha256": "30d70d9b8e60d1fe08420718842995b566c045720eaabbd0452669edb3270b01" - }, - { - "hash": "1f3eb5034ff2372956620b2a9eb88683eee9495e", - "channel": "dev", - "version": "v0.1.6", - "release_date": "2018-02-27T00:26:37.058993Z", - "archive": "dev/linux/flutter_linux_v0.1.6-dev.tar.xz", - "sha256": "5dd34873b3a3e214a32fd30c2c319a0f46e608afb72f0d450b2d621a6d02aebd" - } - ] -} \ No newline at end of file diff --git a/__tests__/data/releases_macos.json b/__tests__/data/releases_macos.json deleted file mode 100644 index bf7b7c2..0000000 --- a/__tests__/data/releases_macos.json +++ /dev/null @@ -1,3330 +0,0 @@ -{ - "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", - "current_release": { - "beta": "0941968447ea8058e56e1479f7e53147149b739e", - "dev": "0941968447ea8058e56e1479f7e53147149b739e", - "stable": "adc687823a831bbebe28bdccfac1a628ca621513" - }, - "releases": [ - { - "hash": "adc687823a831bbebe28bdccfac1a628ca621513", - "channel": "stable", - "version": "2.0.5", - "release_date": "2021-04-16T17:55:24.241189Z", - "archive": "stable/macos/flutter_macos_2.0.5-stable.zip", - "sha256": "98cdbab108586c359984c5a5e42f48d9244a3ecb56989111e16f999eae2ae95b" - }, - { - "hash": "0941968447ea8058e56e1479f7e53147149b739e", - "channel": "beta", - "version": "2.2.0-10.1.pre", - "release_date": "2021-04-15T22:16:52.425295Z", - "archive": "beta/macos/flutter_macos_2.2.0-10.1.pre-beta.zip", - "sha256": "4a24be2936dc8c647bd0b09db0cd42bbec82345eb1ae6b47d83e3f1690326161" - }, - { - "hash": "0941968447ea8058e56e1479f7e53147149b739e", - "channel": "dev", - "version": "2.2.0-10.1.pre", - "release_date": "2021-04-15T21:29:18.785505Z", - "archive": "dev/macos/flutter_macos_2.2.0-10.1.pre-dev.zip", - "sha256": "117f2ac95a99bfa9cc9e252de3c94cd00983b21ed456cf73189719f7b30ba972" - }, - { - "hash": "b1395592de68cc8ac4522094ae59956dd21a91db", - "channel": "stable", - "version": "2.0.4", - "release_date": "2021-04-02T20:29:37.579992Z", - "archive": "stable/macos/flutter_macos_2.0.4-stable.zip", - "sha256": "31e4a9f874e9d9743e7c3bb6bc69b3ba1bad122e71a4424e4240f204d0c9b34e" - }, - { - "hash": "4d7946a68d26794349189cf21b3f68cc6fe61dcb", - "channel": "stable", - "version": "2.0.3", - "release_date": "2021-03-19T20:10:20.144279Z", - "archive": "stable/macos/flutter_macos_2.0.3-stable.zip", - "sha256": "f9f7ef2118945252961a738b0d245e41aac289b793ee872735ae546637758551" - }, - { - "hash": "5bedb7b1d5698ce2c1c67aaf9afae7b3948b172a", - "channel": "beta", - "version": "2.1.0-12.2.pre", - "release_date": "2021-03-18T21:04:31.772298Z", - "archive": "beta/macos/flutter_macos_2.1.0-12.2.pre-beta.zip", - "sha256": "aa05713e14b0a7af6a8abeee52b62b3b7bedde1c331418e5e9a8341b75195d17" - }, - { - "hash": "8962f6dc68ec8e2206ac2fa874da4a453856c7d3", - "channel": "beta", - "version": "2.0.2", - "release_date": "2021-03-15T16:56:30.689206Z", - "archive": "beta/macos/flutter_macos_2.0.2-beta.zip", - "sha256": "572022a6f4429f50456ddd2bca098b8843ea6875cdd72f18b1f94df52675944c" - }, - { - "hash": "8264cb3e8a797eef39cbcd32bb56fd07790efb7f", - "channel": "dev", - "version": "2.1.0-12.1.pre", - "release_date": "2021-03-13T00:54:32.611915Z", - "archive": "dev/macos/flutter_macos_2.1.0-12.1.pre-dev.zip", - "sha256": "21cfba6cbb755925952543bd425917023190fa05fb30bfc345ff2ba083951821" - }, - { - "hash": "8962f6dc68ec8e2206ac2fa874da4a453856c7d3", - "channel": "stable", - "version": "2.0.2", - "release_date": "2021-03-12T20:10:47.990338Z", - "archive": "stable/macos/flutter_macos_2.0.2-stable.zip", - "sha256": "0fd76e44c2080e3e9c02e2960628ca3ee0999d4ad13dd4e6b76d0f3fee76379e" - }, - { - "hash": "c5a4b4029c0798f37c4a39b479d7cb75daa7b05c", - "channel": "beta", - "version": "2.0.1", - "release_date": "2021-03-04T20:57:52.657482Z", - "archive": "beta/macos/flutter_macos_2.0.1-beta.zip", - "sha256": "39569c1443311ebc66cff944ce1e58dcf1314c600776e40cbec69b68b523b624" - }, - { - "hash": "c5a4b4029c0798f37c4a39b479d7cb75daa7b05c", - "channel": "stable", - "version": "2.0.1", - "release_date": "2021-03-04T19:46:19.886582Z", - "archive": "stable/macos/flutter_macos_2.0.1-stable.zip", - "sha256": "0d1985d0cc6ef99a51c8b2051aceb07eb654a02973e8e43aaf28ef1d8c3735b4" - }, - { - "hash": "60bd88df915880d23877bfc1602e8ddcf4c4dd2a", - "channel": "beta", - "version": "2.0.0", - "release_date": "2021-03-03T19:38:28.814685Z", - "archive": "beta/macos/flutter_macos_2.0.0-beta.zip", - "sha256": "ac96558264c7cba717b27b5c1f136333a30345f720c0741cc63dfd519a82b3bd" - }, - { - "hash": "cc9b78fc5c4a4d2d51316d9626523336230a89a9", - "channel": "dev", - "version": "2.1.0-10.0.pre", - "release_date": "2021-03-03T19:11:03.023654Z", - "archive": "dev/macos/flutter_macos_2.1.0-10.0.pre-dev.zip", - "sha256": "5b94fa9f1db978aed45baae22ce3b909213077055fbc577c6c0944e67a0eb7c8" - }, - { - "hash": "60bd88df915880d23877bfc1602e8ddcf4c4dd2a", - "channel": "stable", - "version": "2.0.0", - "release_date": "2021-03-03T17:46:23.817373Z", - "archive": "stable/macos/flutter_macos_2.0.0-stable.zip", - "sha256": "e096bf5cdf28401be2d7cf286e561bf70163012be892384b1fe1554b56682d52" - }, - { - "hash": "044f2cf5607a26f8818dab0f766400e85c52bdff", - "channel": "beta", - "version": "1.26.0-17.8.pre", - "release_date": "2021-02-25T17:56:33.110706Z", - "archive": "beta/macos/flutter_macos_1.26.0-17.8.pre-beta.zip", - "sha256": "ea7b077c525128c4963f8738f8643920fe1d123830c9a923242497300cbd680c" - }, - { - "hash": "b7d4806243a4e906bf061f79a0e314ba28111aa6", - "channel": "dev", - "version": "1.27.0-8.0.pre", - "release_date": "2021-02-24T23:13:48.002697Z", - "archive": "dev/macos/flutter_macos_1.27.0-8.0.pre-dev.zip", - "sha256": "a2d99ca0f9a7559fb2a8e98420fb4126ae8170725ed7a61bfe72eecb3f3866cf" - }, - { - "hash": "68e7d2e301e1969275cd11947e900b6b80405052", - "channel": "beta", - "version": "1.26.0-17.7.pre", - "release_date": "2021-02-24T18:23:23.356430Z", - "archive": "beta/macos/flutter_macos_1.26.0-17.7.pre-beta.zip", - "sha256": "7bf91dd3f82291d62a0e2ca80289c7a864174b79f69034ac553443b10315d8e7" - }, - { - "hash": "f8cd24de95b16b5a1ce6ebc0716154271fbf6252", - "channel": "dev", - "version": "1.27.0-4.0.pre", - "release_date": "2021-02-17T23:12:45.927425Z", - "archive": "dev/macos/flutter_macos_1.27.0-4.0.pre-dev.zip", - "sha256": "428a7a56719cd246378b431331eb9df42bd9b0c320dfde8deaa36a52342701ac" - }, - { - "hash": "a29104a69b102a7485cd00d358eaeab219d258ab", - "channel": "beta", - "version": "1.26.0-17.6.pre", - "release_date": "2021-02-16T19:17:46.516048Z", - "archive": "beta/macos/flutter_macos_1.26.0-17.6.pre-beta.zip", - "sha256": "13c8790c37912b691b02823cdb4085f43c1418bfdbc78bb3304ddd4977bc7a25" - }, - { - "hash": "1fe38dcb5fc58242c6e0904a318bcc3ed5a4d837", - "channel": "beta", - "version": "1.26.0-17.5.pre", - "release_date": "2021-02-11T17:55:34.991140Z", - "archive": "beta/macos/flutter_macos_1.26.0-17.5.pre-beta.zip", - "sha256": "b57b777b1ec3eb8828f3c4d826cb0f3af888211b51be94e08c2a12bc54df2a78" - }, - { - "hash": "68c96f100e42ab3dbf43e61e9e2fc875a2d50cb8", - "channel": "dev", - "version": "1.27.0-1.0.pre", - "release_date": "2021-02-10T23:55:52.798135Z", - "archive": "dev/macos/flutter_macos_1.27.0-1.0.pre-dev.zip", - "sha256": "72d113611665f5f8827e681de709765c558126a649fe71d121a2f1583c350f36" - }, - { - "hash": "48c9d3e0e19e8fec84f1d316ce0559f26ca7277d", - "channel": "beta", - "version": "1.26.0-17.4.pre", - "release_date": "2021-02-10T21:36:46.564198Z", - "archive": "beta/macos/flutter_macos_1.26.0-17.4.pre-beta.zip", - "sha256": "9d7213066edb463b9c7baaa20c9ef35fec8018f25b899fbfa5281f2e7fcba981" - }, - { - "hash": "4b50ca7f7fbf56be72e54cd200825b760416a356", - "channel": "beta", - "version": "1.26.0-17.3.pre", - "release_date": "2021-02-05T06:36:29.008663Z", - "archive": "beta/macos/flutter_macos_1.26.0-17.3.pre-beta.zip", - "sha256": "7fe8a8a616bb1379da2442add1be61be21f771bd1bdc7a46832a1959900cf9a0" - }, - { - "hash": "79b49b9e1057f90ebf797725233c6b311722de69", - "channel": "beta", - "version": "1.26.0-17.2.pre", - "release_date": "2021-02-04T19:51:12.386458Z", - "archive": "beta/macos/flutter_macos_1.26.0-17.2.pre-beta.zip", - "sha256": "5188ee1dfceaa715b48d73725cb678320786910f7e3c70f837a1bff1554adbdd" - }, - { - "hash": "79b49b9e1057f90ebf797725233c6b311722de69", - "channel": "dev", - "version": "1.26.0-17.2.pre", - "release_date": "2021-02-04T19:19:37.095390Z", - "archive": "dev/macos/flutter_macos_1.26.0-17.2.pre-dev.zip", - "sha256": "56b8fcaf888efb162ff3e7083fd3d01f13369bf9be326f67c5e17e1e1b84b7a6" - }, - { - "hash": "c40e5294dda34d04cd222dfdf765f171e12e4a8d", - "channel": "dev", - "version": "1.26.0-17.1.pre", - "release_date": "2021-01-29T18:19:51.959907Z", - "archive": "dev/macos/flutter_macos_1.26.0-17.1.pre-dev.zip", - "sha256": "01fd7b347b09b544c3a1ce4f6536032b43a70bd5c12def3ad4dc8ddcf050c701" - }, - { - "hash": "9b2d32b605630f28625709ebd9d78ab3016b2bf6", - "channel": "stable", - "version": "1.22.6", - "release_date": "2021-01-25T19:46:48.527913Z", - "archive": "stable/macos/flutter_macos_1.22.6-stable.zip", - "sha256": "a5a7b66c1e4ac4058c72714d67bb863a80170749fe6f11f541e314474c899b05" - }, - { - "hash": "a706cd211240f27be3b61f06d70f958c7a4156fe", - "channel": "dev", - "version": "1.26.0-12.0.pre", - "release_date": "2021-01-21T18:36:13.095509Z", - "archive": "dev/macos/flutter_macos_1.26.0-12.0.pre-dev.zip", - "sha256": "fd556bd98c92b492e0be64045c4cdef32859b44e50b999303f3e5dbbbc7ecbe1" - }, - { - "hash": "5d36f2e7f5387b6c751449258ade8e4e6edf99be", - "channel": "beta", - "version": "1.25.0-8.3.pre", - "release_date": "2021-01-15T19:58:18.410060Z", - "archive": "beta/macos/flutter_macos_1.25.0-8.3.pre-beta.zip", - "sha256": "4db727d6850339a9ecc5067e421f28975e3a25718691eeedfea0f1411b97237f" - }, - { - "hash": "b9d06fffb2db263ab7021fc39adde7f2bf988a4a", - "channel": "dev", - "version": "1.26.0-8.0.pre", - "release_date": "2021-01-13T17:24:07.151253Z", - "archive": "dev/macos/flutter_macos_1.26.0-8.0.pre-dev.zip", - "sha256": "91c707752b831d38621f489106a433269424c2ce01f353ea0f74fd7ddd157db1" - }, - { - "hash": "b0a22998593fc605c723dee8ff4d9315c32cfe2c", - "channel": "beta", - "version": "1.25.0-8.2.pre", - "release_date": "2021-01-06T00:06:41.437421Z", - "archive": "beta/macos/flutter_macos_1.25.0-8.2.pre-beta.zip", - "sha256": "92d8100cb405cbc480d9020bbfca3b862d1201438ae786934fb6852cab645170" - }, - { - "hash": "63062a64432cce03315d6b5196fda7912866eb37", - "channel": "dev", - "version": "1.26.0-1.0.pre", - "release_date": "2020-12-16T22:06:33.259580Z", - "archive": "dev/macos/flutter_macos_1.26.0-1.0.pre-dev.zip", - "sha256": "8695c838ada2c26a5cd6659539ef326e8257966374daad51e39f73728f03b5d7" - }, - { - "hash": "8f89f6505b941329a864fef1527243a72800bf4d", - "channel": "beta", - "version": "1.25.0-8.1.pre", - "release_date": "2020-12-16T21:54:56.493375Z", - "archive": "beta/macos/flutter_macos_1.25.0-8.1.pre-beta.zip", - "sha256": "cfff47f305cf66aa16c0c5e8798820efcacd9a014ee907ae35db7e65ee283856" - }, - { - "hash": "78910062997c3a836feee883712c241a5fd22983", - "channel": "stable", - "version": "1.22.5", - "release_date": "2020-12-10T22:56:49.884409Z", - "archive": "stable/macos/flutter_macos_1.22.5-stable.zip", - "sha256": "a64f5df488b95ac41036559bf436189037a868b393b1c050649cbb61d7d3b932" - }, - { - "hash": "a12e2a473a3214b4556ca589d2d9bd311ac7c6f1", - "channel": "dev", - "version": "1.25.0-8.0.pre", - "release_date": "2020-12-10T19:30:02.854836Z", - "archive": "dev/macos/flutter_macos_1.25.0-8.0.pre-dev.zip", - "sha256": "e4838460a0f96e2b2f75e380425bc1666c3bdcde2f7f59717d52b9ecac1f5e29" - }, - { - "hash": "a7f5fd5360007518644597c60a1f2169eacccc2b", - "channel": "dev", - "version": "1.25.0-4.0.pre", - "release_date": "2020-12-02T17:04:11.861712Z", - "archive": "dev/macos/flutter_macos_1.25.0-4.0.pre-dev.zip", - "sha256": "0c117e343a40183a1da45f7496cea16fbdd26ff5efeb4272037387a4db95bafe" - }, - { - "hash": "022b333a089afb81c471ec43d1f1f4f26305d876", - "channel": "beta", - "version": "1.24.0-10.2.pre", - "release_date": "2020-11-19T15:19:01.250780Z", - "archive": "beta/macos/flutter_macos_1.24.0-10.2.pre-beta.zip", - "sha256": "b8d961d58434da269b0b2563b17327a6543ea7ad2aeb368e837a957ef601d4aa" - }, - { - "hash": "022b333a089afb81c471ec43d1f1f4f26305d876", - "channel": "dev", - "version": "1.24.0-10.2.pre", - "release_date": "2020-11-18T22:20:28.675722Z", - "archive": "dev/macos/flutter_macos_1.24.0-10.2.pre-dev.zip", - "sha256": "4f4ec35069ccd9d8ea98064b63046cebe6cfd39ee9abc55a179afec49f778ac6" - }, - { - "hash": "405c85fe7ee688156028e87a623c9153d05591b2", - "channel": "dev", - "version": "1.24.0-10.1.pre", - "release_date": "2020-11-16T20:50:22.337009Z", - "archive": "dev/macos/flutter_macos_1.24.0-10.1.pre-dev.zip", - "sha256": "4ae245929ad26ea505d65c3089eac65b1aaf0a4ef4f9e7dc19b2d32676f64508" - }, - { - "hash": "1aafb3a8b9b0c36241c5f5b34ee914770f015818", - "channel": "stable", - "version": "1.22.4", - "release_date": "2020-11-13T20:05:41.373223Z", - "archive": "stable/macos/flutter_macos_1.22.4-stable.zip", - "sha256": "d73b71316e883f36e02d412ed237c712c7942902bdb84ad0ebfa1fa431b75b88" - }, - { - "hash": "a0860f6e87ba4f9031bee4d6f56c08b970606bee", - "channel": "dev", - "version": "1.24.0-7.0.pre", - "release_date": "2020-11-05T00:15:56.102329Z", - "archive": "dev/macos/flutter_macos_1.24.0-7.0.pre-dev.zip", - "sha256": "7d470f6106f87be91193aa832e37aa792d1d0f2e007ffd017b98e5ccd70274ec" - }, - { - "hash": "13896b3bd1858687a06b1639d60c877206170df8", - "channel": "dev", - "version": "1.24.0-6.0.pre", - "release_date": "2020-10-30T19:25:59.884849Z", - "archive": "dev/macos/flutter_macos_1.24.0-6.0.pre-dev.zip", - "sha256": "eff9f38fa75dbc8debaf60919ec8678a48716fe2b56370ade00de61f95b77b10" - }, - { - "hash": "8874f21e79d7ec66d0457c7ab338348e31b17f1d", - "channel": "stable", - "version": "1.22.3", - "release_date": "2020-10-30T16:28:31.874818Z", - "archive": "stable/macos/flutter_macos_1.22.3-stable.zip", - "sha256": "7cad68c2e678c9f7e59214c036558d7caa627577452be759efa8e4ff82a9a703" - }, - { - "hash": "2783f8e2e14efec8b7e08f668dde61c40d128c24", - "channel": "dev", - "version": "1.24.0-3.0.pre", - "release_date": "2020-10-22T22:09:15.844161Z", - "archive": "dev/macos/flutter_macos_1.24.0-3.0.pre-dev.zip", - "sha256": "f2e8e6c173010d278c1bf40b1a5d4f65bc6b3d085a791ce000f35c1b7f453814" - }, - { - "hash": "12bea61c2902784fec73b7f5f2ff3415f873fead", - "channel": "dev", - "version": "1.24.0-1.0.pre", - "release_date": "2020-10-20T02:40:12.415504Z", - "archive": "dev/macos/flutter_macos_1.24.0-1.0.pre-dev.zip", - "sha256": "c774b6314f74b0222ab102c91eb0a9edab854613b4846a15b66e27d167d11e7b" - }, - { - "hash": "84f3d28555368a70270e9ac8390a9441df95e752", - "channel": "stable", - "version": "1.22.2", - "release_date": "2020-10-16T18:14:45.745723Z", - "archive": "stable/macos/flutter_macos_1.22.2-stable.zip", - "sha256": "1b749721d4e9c9d6712ae1701972a87c69743c25cf369b966dc2626af165db84" - }, - { - "hash": "198df796aa80073ef22bdf249e614e2ff33c6895", - "channel": "beta", - "version": "1.23.0-18.1.pre", - "release_date": "2020-10-15T23:20:28.007326Z", - "archive": "beta/macos/flutter_macos_1.23.0-18.1.pre-beta.zip", - "sha256": "56fc0e77c3b14410ab88286e3c39b16c87671ac5fe90f68a4a5d82a79f67b56e" - }, - { - "hash": "37ebe3d82a9d5faeda7d3c1a6ad193030210a2cc", - "channel": "dev", - "version": "1.23.0-18.0.pre", - "release_date": "2020-10-14T00:35:37.881637Z", - "archive": "dev/macos/flutter_macos_1.23.0-18.0.pre-dev.zip", - "sha256": "b0a4d3f4a13e94c07f6234aade20b022b37a55ea7c8d6f673921bfab3dd6c166" - }, - { - "hash": "4fa4f91d5cc65a5a98c7ccd91bb7d47814048a57", - "channel": "dev", - "version": "1.23.0-13.0.pre", - "release_date": "2020-10-12T18:09:26.197680Z", - "archive": "dev/macos/flutter_macos_1.23.0-13.0.pre-dev.zip", - "sha256": "b5ab26da91aa2972d79c32990fa45e6b66ddfb834a70ed5d90a7a68d11f6cf4f" - }, - { - "hash": "f30b7f4db93ee747cd727df747941a28ead25ff5", - "channel": "stable", - "version": "1.22.1", - "release_date": "2020-10-08T22:00:51.454777Z", - "archive": "stable/macos/flutter_macos_1.22.1-stable.zip", - "sha256": "04f5b8a1af40814ff496d48c7a71fa8ff10ef396fca6a9feb2d231a3f7776b9a" - }, - { - "hash": "f30b7f4db93ee747cd727df747941a28ead25ff5", - "channel": "beta", - "version": "1.22.0-12.4.pre", - "release_date": "2020-10-08T21:32:12.523357Z", - "archive": "beta/macos/flutter_macos_1.22.0-12.4.pre-beta.zip", - "sha256": "74cf038c15f73403b204fac0991f6863c65be454b7def6c1f099f405bedcab00" - }, - { - "hash": "db6e2d8aa5bb9a0bd3e75fc7470268b5a56fd0b0", - "channel": "dev", - "version": "1.23.0-7.0.pre", - "release_date": "2020-10-01T23:22:14.973873Z", - "archive": "dev/macos/flutter_macos_1.23.0-7.0.pre-dev.zip", - "sha256": "e4f8a9a4f960a7770acab9c9d02992f42473f47252e74dfa4d29cbc4edab05fa" - }, - { - "hash": "d408d302e22179d598f467e11da5dd968dbdc9ec", - "channel": "stable", - "version": "1.22.0", - "release_date": "2020-10-01T14:23:41.609321Z", - "archive": "stable/macos/flutter_macos_1.22.0-stable.zip", - "sha256": "d9663e5fe5fe6ee44ce04dd43d9626fc14db16c3b8d0a6e8ae666f5e6cf51ca4" - }, - { - "hash": "d408d302e22179d598f467e11da5dd968dbdc9ec", - "channel": "beta", - "version": "1.22.0-12.3.pre", - "release_date": "2020-09-29T20:25:43.820625Z", - "archive": "beta/macos/flutter_macos_1.22.0-12.3.pre-beta.zip", - "sha256": "68a43dadb778df49d2db916ec72d1d3b8f0f54ec0b59eb5626bd0fcbfbd09f27" - }, - { - "hash": "2bafdc822636426fa09afb43236400a60ea432b2", - "channel": "beta", - "version": "1.22.0-12.2.pre", - "release_date": "2020-09-28T16:44:47.932346Z", - "archive": "beta/macos/flutter_macos_1.22.0-12.2.pre-beta.zip", - "sha256": "1401271f35f3dc342dafe3a89de038bf24b9c80527a86f8e3451136e1e353371" - }, - { - "hash": "83dd176777cd04bd2aaca050f6bb6cb9edbf56a1", - "channel": "dev", - "version": "1.23.0-4.0.pre", - "release_date": "2020-09-22T21:10:12.999195Z", - "archive": "dev/macos/flutter_macos_1.23.0-4.0.pre-dev.zip", - "sha256": "5abb85db2cb3be610f9e48688eee098abe5ea9c7ca447d2085e41dd54ebd5bc9" - }, - { - "hash": "8b3760638a189741cd9ca881aa2dd237c1df1be5", - "channel": "beta", - "version": "1.22.0-12.1.pre", - "release_date": "2020-09-16T17:09:41.228493Z", - "archive": "beta/macos/flutter_macos_1.22.0-12.1.pre-beta.zip", - "sha256": "cf7d43bde41eef8d2e09e0f192eecb43e1ffc2dcb2a7e91df5c496ebae3ec3a4" - }, - { - "hash": "fba99f6cf9a14512e461e3122c8ddfaa25394e89", - "channel": "stable", - "version": "1.20.4", - "release_date": "2020-09-15T17:40:12.045259Z", - "archive": "stable/macos/flutter_macos_1.20.4-stable.zip", - "sha256": "08fcbcc9c902bc6f245d660b6d68f1da420fbdd5878902b5687961a5fb43e9f7" - }, - { - "hash": "a27c242b0eea731317cfec5bbdd9d35452ab3ecb", - "channel": "dev", - "version": "1.22.0-12.0.pre", - "release_date": "2020-09-14T21:42:02.011366Z", - "archive": "dev/macos/flutter_macos_1.22.0-12.0.pre-dev.zip", - "sha256": "6d5c56d43a82008f03d5dd7fe275d32faa5c804f6416dd85b1dd56471fbb907f" - }, - { - "hash": "216dee60c0cc9449f0b29bcf922974d612263e24", - "channel": "stable", - "version": "1.20.3", - "release_date": "2020-09-02T18:06:18.341367Z", - "archive": "stable/macos/flutter_macos_1.20.3-stable.zip", - "sha256": "f68740137fb15f627667ec2eab39d83afeb3396c96ab268b78c67c092f5c8b18" - }, - { - "hash": "7a4317519865146acda84702bba8775610598c0c", - "channel": "dev", - "version": "1.22.0-9.0.pre", - "release_date": "2020-09-01T19:28:22.697842Z", - "archive": "dev/macos/flutter_macos_1.22.0-9.0.pre-dev.zip", - "sha256": "3f5d6311e67c2dfe46adb8fddaadcd966f129878e8fd22edc4539cb2cab93fc9" - }, - { - "hash": "81a45ec2e5f80fa71d5135f1702ce540558b416d", - "channel": "beta", - "version": "1.21.0-9.2.pre", - "release_date": "2020-08-28T18:33:54.145026Z", - "archive": "beta/macos/flutter_macos_1.21.0-9.2.pre-beta.zip", - "sha256": "717bff28f1a32a969bcae559ffa17cc00069b25cb94d4fb16e97f5ee9735edf2" - }, - { - "hash": "ce40de69b7b4f89c66d19c8dbd3bd86ae30f1bc6", - "channel": "dev", - "version": "1.22.0-1.0.pre", - "release_date": "2020-08-21T21:59:25.678368Z", - "archive": "dev/macos/flutter_macos_1.22.0-1.0.pre-dev.zip", - "sha256": "6ffa83341c43c8a05ec3f853a95deda5deefb4790a3236a5d739601d1d30f949" - }, - { - "hash": "be9bc8cb3942bda5d8ef4e44b44616c470625e18", - "channel": "beta", - "version": "1.21.0-9.1.pre", - "release_date": "2020-08-19T18:35:17.762947Z", - "archive": "beta/macos/flutter_macos_1.21.0-9.1.pre-beta.zip", - "sha256": "c04afcdfd5625508f5641232555620dc1cb9c30f0e93fb5feec10bb7523c87a6" - }, - { - "hash": "bbfbf1770cca2da7c82e887e4e4af910034800b6", - "channel": "beta", - "version": "1.20.2", - "release_date": "2020-08-14T20:58:13.245691Z", - "archive": "beta/macos/flutter_macos_1.20.2-beta.zip", - "sha256": "3f6fe6fecf7d91b6d78a3d64cd2c577f7d4202e03f38cdac584462a438918b38" - }, - { - "hash": "bbfbf1770cca2da7c82e887e4e4af910034800b6", - "channel": "stable", - "version": "1.20.2", - "release_date": "2020-08-13T21:40:50.579223Z", - "archive": "stable/macos/flutter_macos_1.20.2-stable.zip", - "sha256": "c801653e989811b60f79d3edffa808bd1fba5b771ba8492bfc53ea49302afc0e" - }, - { - "hash": "7c6f9dd2396dfe7deb6fd11edc12c10786490083", - "channel": "dev", - "version": "1.21.0-9.0.pre", - "release_date": "2020-08-13T16:03:32.942694Z", - "archive": "dev/macos/flutter_macos_1.21.0-9.0.pre-dev.zip", - "sha256": "d36444994adb5b29272827a052516180eef00cc40a14ec19b70f3a62012a7335" - }, - { - "hash": "5a6dfa35caaf7bccb35488dc03677c150ebf2d97", - "channel": "dev", - "version": "1.21.0-7.0.pre", - "release_date": "2020-08-07T16:41:15.680848Z", - "archive": "dev/macos/flutter_macos_1.21.0-7.0.pre-dev.zip", - "sha256": "fde3be8d09c7c572f5ab2f4d747bec2fa47ef43b0a5c7add803fc735fa625453" - }, - { - "hash": "2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d", - "channel": "stable", - "version": "1.20.1", - "release_date": "2020-08-06T18:37:40.752145Z", - "archive": "stable/macos/flutter_macos_1.20.1-stable.zip", - "sha256": "a6364d48455bd7eb749bcbd0b7c71b985bccb0149ea0dd95c6bef3bbb2e9f91b" - }, - { - "hash": "840c9205b344a59e48a5926ee2d791cc5640924c", - "channel": "stable", - "version": "1.20.0", - "release_date": "2020-08-05T14:21:17.293576Z", - "archive": "stable/macos/flutter_macos_1.20.0-stable.zip", - "sha256": "e49f8b63470244a472f08c62e770fed08e15e1e994dcdb28ea03acdc937011be" - }, - { - "hash": "916c3ac648aa0498a70f32b5fc4f6c51447628e3", - "channel": "beta", - "version": "1.20.0-7.4.pre", - "release_date": "2020-08-03T21:40:41.560256Z", - "archive": "beta/macos/flutter_macos_1.20.0-7.4.pre-beta.zip", - "sha256": "be8b2bc2125f9099fe4210d4c04654ed6b48b86a3056169599224e8afa9610fc" - }, - { - "hash": "e606910f28be51c8151f6169072afe3b3a8b3c5e", - "channel": "beta", - "version": "1.20.0-7.3.pre", - "release_date": "2020-07-29T03:26:03.419026Z", - "archive": "beta/macos/flutter_macos_1.20.0-7.3.pre-beta.zip", - "sha256": "54b101d047811e341629fd2408ad7df8bbdfcefa3b4354c6f44d566f714fa2dc" - }, - { - "hash": "a2bde82fbd52e09057a4146f46889f4e10342d32", - "channel": "beta", - "version": "1.20.0-7.2.pre", - "release_date": "2020-07-21T16:15:05.642652Z", - "archive": "beta/macos/flutter_macos_1.20.0-7.2.pre-beta.zip", - "sha256": "ead0524aa5262f872e369448f6ee1eccdfb0636704c8d4208a4ab2ec6da87a15" - }, - { - "hash": "f25bd9c55c48c139524139b477d04b13e9f36b2c", - "channel": "dev", - "version": "1.21.0-1.0.pre", - "release_date": "2020-07-17T03:16:08.438489Z", - "archive": "dev/macos/flutter_macos_1.21.0-1.0.pre-dev.zip", - "sha256": "fc9592842d859d1a6619d5302c97eb56bf587f7bcb984283289954933ae3d23d" - }, - { - "hash": "7736f3bc90270dcb0480db2ccffbf1d13c28db85", - "channel": "dev", - "version": "1.20.0-7.1.pre", - "release_date": "2020-07-11T04:09:49.782032Z", - "archive": "dev/macos/flutter_macos_1.20.0-7.1.pre-dev.zip", - "sha256": "198ecee004963b5f5320f7499b5ed734dbb497e320c3178b6e5a0066de8d3e0c" - }, - { - "hash": "cc1af3afb62187cc37185afddc2d43bfef469db7", - "channel": "dev", - "version": "1.20.0-7.0.pre", - "release_date": "2020-07-09T19:11:22.337305Z", - "archive": "dev/macos/flutter_macos_1.20.0-7.0.pre-dev.zip", - "sha256": "e4e40e6c2c765239ed53b5199c97bf37e6e51d7478a387d351ea06881b5461f5" - }, - { - "hash": "0af027f80543302c65f99e1c1a2f3b3cbb8d04f3", - "channel": "dev", - "version": "1.20.0-3.0.pre", - "release_date": "2020-07-05T02:20:08.815663Z", - "archive": "dev/macos/flutter_macos_1.20.0-3.0.pre-dev.zip", - "sha256": "9359b5a798858360974261b69510e8c952e90837530a82223951beb52b40797a" - }, - { - "hash": "8fe7655ed20ffd1395f68e30539a847a01a30351", - "channel": "beta", - "version": "1.19.0-4.3.pre", - "release_date": "2020-07-01T23:42:10.067590Z", - "archive": "beta/macos/flutter_macos_1.19.0-4.3.pre-beta.zip", - "sha256": "f3621cfddee8e592d3e0b926a14f14b5466a702e52d1009b6e5dd2cc18d9b5ef" - }, - { - "hash": "15a28159bcf4b3db13411cbc8d9b5fc51adc0a93", - "channel": "dev", - "version": "1.20.0-2.0.pre", - "release_date": "2020-07-01T23:17:53.874444Z", - "archive": "dev/macos/flutter_macos_1.20.0-2.0.pre-dev.zip", - "sha256": "fd16b754ef33a33611e1e6dbb6b8498cc3722db4eef3e0ec93266f719f6f51ad" - }, - { - "hash": "8af6b2f038c1172e61d418869363a28dffec3cb4", - "channel": "stable", - "version": "1.17.5", - "release_date": "2020-07-01T23:16:58.968722Z", - "archive": "stable/macos/flutter_macos_1.17.5-stable.zip", - "sha256": "8fcb853546956f816d2c181fb8f7c7ba7539da96070af353a713745b2d63ed97" - }, - { - "hash": "9b9b543d9265484132c798adaab6caca52055b08", - "channel": "beta", - "version": "1.19.0-4.2.pre", - "release_date": "2020-06-25T20:04:18.776389Z", - "archive": "beta/macos/flutter_macos_1.19.0-4.2.pre-beta.zip", - "sha256": "c838f78ccc9a10b73e3ccdf216f142365a6f92aefefcf8985c4ca7c2ddb0ce59" - }, - { - "hash": "1ad9baa8b99a2897c20f9e6e54d3b9b359ade314", - "channel": "stable", - "version": "1.17.4", - "release_date": "2020-06-18T15:57:50.856625Z", - "archive": "stable/macos/flutter_macos_1.17.4-stable.zip", - "sha256": "1464da8422e0fd70ba93dab257d77e3a60fee06ac081296c32255635d6328e48" - }, - { - "hash": "d9653445f4d1257b5f5adb4b271d1316469e8cf1", - "channel": "dev", - "version": "1.20.0-0.0.pre", - "release_date": "2020-06-11T15:25:15.356574Z", - "archive": "dev/macos/flutter_macos_1.20.0-0.0.pre-dev.zip", - "sha256": "b32a063548db297c40985fc67f27230ab49baea6248179cfc9d95ed1cda13101" - }, - { - "hash": "f994b769743368b36b9c03fb359f62230b60ab92", - "channel": "beta", - "version": "1.19.0-4.1.pre", - "release_date": "2020-06-10T21:59:36.901924Z", - "archive": "beta/macos/flutter_macos_1.19.0-4.1.pre-beta.zip", - "sha256": "a09a01f9c4aa6c37fd4006ed23a33a684073ebc4fca6881ef52674beb490e443" - }, - { - "hash": "c264b70ec3b0cf9cd568eba5d65d0ce47fe57e1d", - "channel": "dev", - "version": "1.19.0-5.0.pre", - "release_date": "2020-06-10T01:01:52.476109Z", - "archive": "dev/macos/flutter_macos_1.19.0-5.0.pre-dev.zip", - "sha256": "158baa1c91db850752ea7df69ef3f8d5218729e66188096ce778362e54bafdd9" - }, - { - "hash": "2f7a59a8da20b3a7fbdfb7ac783dbca977a81653", - "channel": "dev", - "version": "1.19.0-4.0.pre", - "release_date": "2020-06-05T16:28:34.028693Z", - "archive": "dev/macos/flutter_macos_1.19.0-4.0.pre-dev.zip", - "sha256": "05df42fddfbc29f4d9ae96b3ab4bd983790a56e00d137bfdf98658b4b450f89c" - }, - { - "hash": "b041144f833e05cf463b8887fa12efdec9493488", - "channel": "stable", - "version": "1.17.3", - "release_date": "2020-06-04T17:24:41.587754Z", - "archive": "stable/macos/flutter_macos_1.17.3-stable.zip", - "sha256": "4506b3ab985f86a7a5b7a65ba2377b7407395e993c5094b9c843cbc4c798eb92" - }, - { - "hash": "6135091de9f8f6befc2ec7f8835d28d43a21cd05", - "channel": "dev", - "version": "1.19.0-3.0.pre", - "release_date": "2020-06-02T20:22:58.335734Z", - "archive": "dev/macos/flutter_macos_1.19.0-3.0.pre-dev.zip", - "sha256": "659015af8363474169ddbb4f224f659a6779cc23314232982efd2b4bf95dbaf1" - }, - { - "hash": "1d395c5e187370f2838bb043d3b438029b484bfc", - "channel": "dev", - "version": "1.19.0-2.0.pre", - "release_date": "2020-06-01T17:29:12.998120Z", - "archive": "dev/macos/flutter_macos_1.19.0-2.0.pre-dev.zip", - "sha256": "e5feb3916c503b72aa3a3c5f90e265fd80c5c4794c8b167231a794750fd5e1ee" - }, - { - "hash": "5f21edf8b66e31a39133177319414395cc5b5f48", - "channel": "stable", - "version": "1.17.2", - "release_date": "2020-05-28T21:39:28.327910Z", - "archive": "stable/macos/flutter_macos_1.17.2-stable.zip", - "sha256": "f692118a4e9da5372128ed2c882bc4ca8e3ed7aac4efa4ad2346ca54b9cda8ec" - }, - { - "hash": "2738a1148ba6c9a6114df62358109407c3ef2553", - "channel": "beta", - "version": "1.18.0-11.1.pre", - "release_date": "2020-05-14T17:48:04.712994Z", - "archive": "beta/macos/flutter_macos_1.18.0-11.1.pre-beta.zip", - "sha256": "a33d0f96c9f4abd984efa591ee10c502039c186a0719df8b688b6df1e0d79969" - }, - { - "hash": "f7a6a7906be96d2288f5d63a5a54c515a6e987fe", - "channel": "stable", - "version": "1.17.1", - "release_date": "2020-05-13T18:22:25.737914Z", - "archive": "stable/macos/flutter_macos_1.17.1-stable.zip", - "sha256": "598c6341e43421257a57fc17e82f000eb2df3ed9593e6d698fd2a2f62fe1c829" - }, - { - "hash": "456d80b9ddd74b4b5ca3b77bbfb70ab0e05d3fa8", - "channel": "dev", - "version": "1.19.0-1.0.pre", - "release_date": "2020-05-12T22:34:16.114113Z", - "archive": "dev/macos/flutter_macos_1.19.0-1.0.pre-dev.zip", - "sha256": "9f4c8384a068afb5b9412f9160d0e709cdaa015014dba9b011bf79761435ee9b" - }, - { - "hash": "a849daf2836d653ef80e01f428531b3f787671cb", - "channel": "dev", - "version": "1.19.0-0.0.pre", - "release_date": "2020-05-08T19:46:14.912454Z", - "archive": "dev/macos/flutter_macos_1.19.0-0.0.pre-dev.zip", - "sha256": "f6f76179ec0a41a4e2a0ffec86f597202a170b56c1f61fa77ca192bd20e91392" - }, - { - "hash": "8fbfe1cfbf6ac5c5c23930556e1019385005bf81", - "channel": "dev", - "version": "1.18.0-13.0.pre", - "release_date": "2020-05-07T17:09:23.786153Z", - "archive": "dev/macos/flutter_macos_1.18.0-13.0.pre-dev.zip", - "sha256": "28fad6caa962f39e7812036d618177dde622bc31db439e20fc2b858033bf8bab" - }, - { - "hash": "c2b7342ca470b11cfaad4fbfb094f73aa4c85320", - "channel": "dev", - "version": "1.18.0-12.0.pre", - "release_date": "2020-05-06T22:16:10.230309Z", - "archive": "dev/macos/flutter_macos_1.18.0-12.0.pre-dev.zip", - "sha256": "700dfa145ce14252f6e2c5de8c90eae5b59fc0754a13eabcae7cb96a6db6def7" - }, - { - "hash": "8568eda15b2527afd48622257cee3811e0d9da04", - "channel": "dev", - "version": "1.18.0-11.0.pre", - "release_date": "2020-05-06T18:38:24.827439Z", - "archive": "dev/macos/flutter_macos_1.18.0-11.0.pre-dev.zip", - "sha256": "d19ac11a33463f93b68ba5d4a703af00db35e3cb1b192d09aa859963f7829909" - }, - { - "hash": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f", - "channel": "stable", - "version": "1.17.0", - "release_date": "2020-05-06T14:26:41.824920Z", - "archive": "stable/macos/flutter_macos_1.17.0-stable.zip", - "sha256": "0105b4c12d8c5d5f548befd0eabcd633a2ae8cea686635b199ff363337d756a5" - }, - { - "hash": "9b7b9d795edfdd12c6ad8dd6495bed789c1bac05", - "channel": "dev", - "version": "1.18.0-10.0.pre", - "release_date": "2020-05-06T01:38:25.613571Z", - "archive": "dev/macos/flutter_macos_1.18.0-10.0.pre-dev.zip", - "sha256": "5353ed9558ffc67615cfc50936b2a9d04735eac29d79ed00e8700fe98c6dc4e2" - }, - { - "hash": "445570ba1ae89eecaf9409fb5acde7e8b49ee975", - "channel": "dev", - "version": "1.18.0-9.0.pre", - "release_date": "2020-05-05T23:05:01.013229Z", - "archive": "dev/macos/flutter_macos_1.18.0-9.0.pre-dev.zip", - "sha256": "b93996bf6bec930ca035bec0d5be2511a902fc98f2189c483dbeeb8c959dc6cc" - }, - { - "hash": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f", - "channel": "beta", - "version": "1.17.0-3.4.pre", - "release_date": "2020-05-02T20:29:29.123505Z", - "archive": "beta/macos/flutter_macos_1.17.0-3.4.pre-beta.zip", - "sha256": "fa89547b82b589d0ab5af735b6d0325e8ef75b877e62d92bc93693fb5b878022" - }, - { - "hash": "0da1ab09224f6c6d69fcff1195a3662fe7ad7534", - "channel": "beta", - "version": "1.17.0-3.3.pre", - "release_date": "2020-04-28T23:56:09.473354Z", - "archive": "beta/macos/flutter_macos_1.17.0-3.3.pre-beta.zip", - "sha256": "c3347b036a2367c1d5c3637f3c537a3b7989802b2a137ecb72ec962ba4c35a04" - }, - { - "hash": "e0c63cd35e15e407a80dc44281cc392535fcce25", - "channel": "dev", - "version": "1.18.0-8.0.pre", - "release_date": "2020-04-24T16:36:14.866671Z", - "archive": "dev/macos/flutter_macos_1.18.0-8.0.pre-dev.zip", - "sha256": "533bad8371ec7a25b3d87ec6f5c568cc74fdf030d0318d0a12e5778764b68a46" - }, - { - "hash": "d482163f59c49c32cb329beb2c3111c8e961d6b9", - "channel": "dev", - "version": "1.18.0-7.0.pre", - "release_date": "2020-04-24T12:53:53.875600Z", - "archive": "dev/macos/flutter_macos_1.18.0-7.0.pre-dev.zip", - "sha256": "c9e7074775177d367cba352c3f874c0dce5d5d714ab26247cafbbff68ad7e7ab" - }, - { - "hash": "2a7bc389f28d83c581f7ddd4601588a22e12512e", - "channel": "beta", - "version": "1.17.0-3.2.pre", - "release_date": "2020-04-22T17:09:29.829025Z", - "archive": "beta/macos/flutter_macos_1.17.0-3.2.pre-beta.zip", - "sha256": "d4b64277f3a3cd08ac43c3e7462351a5f00f627da263ab9d7cd3f0086032714e" - }, - { - "hash": "84c84fb24914e098667649be04614f6ea19d689c", - "channel": "dev", - "version": "1.18.0-6.0.pre", - "release_date": "2020-04-21T22:07:36.080108Z", - "archive": "dev/macos/flutter_macos_1.18.0-6.0.pre-dev.zip", - "sha256": "46f637fbec5ae2f97439ca251a3abd34916ae19c0dfd81a1dd46f80234647d5d" - }, - { - "hash": "f139b11009aeb8ed2a3a3aa8b0066e482709dde3", - "channel": "stable", - "version": "v1.12.13+hotfix.9", - "release_date": "2020-04-17T21:31:56.721907Z", - "archive": "stable/macos/flutter_macos_v1.12.13+hotfix.9-stable.zip", - "sha256": "395c44e40399150cddf459216ac4e4d70a1c20b48ac8476576a8b36230c3701e" - }, - { - "hash": "7f56b53de4e5da2147c4d30d857a72c6f2e4f42f", - "channel": "dev", - "version": "1.18.0-dev.5.0", - "release_date": "2020-04-17T21:29:59.523842Z", - "archive": "dev/macos/flutter_macos_1.18.0-dev.5.0-dev.zip", - "sha256": "58966488e5bcd8fff81850796a3c18017dc8768c2815cbe47451c1cd2797f52a" - }, - { - "hash": "8f7327f83a3e094285163ae402c6f94190fc1674", - "channel": "dev", - "version": "1.18.0-dev.4.0", - "release_date": "2020-04-07T16:30:52.454830Z", - "archive": "dev/macos/flutter_macos_1.18.0-dev.4.0-dev.zip", - "sha256": "e71646659a06fe3a6203c15817ff7299825981b998f14cd344ac9877867f3957" - }, - { - "hash": "de1e5729165b61829a8fa7c41b449c6c7ad74c84", - "channel": "dev", - "version": "1.18.0-dev.3.0", - "release_date": "2020-04-07T04:17:19.757100Z", - "archive": "dev/macos/flutter_macos_1.18.0-dev.3.0-dev.zip", - "sha256": "7f96bb3faac70774f521cdf3a906c808cfe4041192fb3fef984a10b06a7dc73f" - }, - { - "hash": "727552e5caa10eee5808452dfbedfc9ef02178b8", - "channel": "dev", - "version": "1.18.0-dev.2.0", - "release_date": "2020-04-06T23:44:52.474751Z", - "archive": "dev/macos/flutter_macos_1.18.0-dev.2.0-dev.zip", - "sha256": "085613d9268106b713c420a9e87fa8b26929cdc5d684dd6759e9c007ee2435ae" - }, - { - "hash": "d3ed9ec945f8869f0e136c357d0c2a6be2b60c98", - "channel": "beta", - "version": "1.17.0-dev.3.1", - "release_date": "2020-04-06T23:32:34.775502Z", - "archive": "beta/macos/flutter_macos_1.17.0-dev.3.1-beta.zip", - "sha256": "26837e6d2c68f5657164004e9d37457ebddce7876bd18d141577705acc731353" - }, - { - "hash": "fef9d4d7cded15e4deff318c12cc2756c5c28bd6", - "channel": "dev", - "version": "1.18.0-dev.1.0", - "release_date": "2020-04-06T18:57:15.521531Z", - "archive": "dev/macos/flutter_macos_1.18.0-dev.1.0-dev.zip", - "sha256": "43191885ae26932683b386017f6466a1a63b3bdb42b14c0fcdc14a1ae51e441d" - }, - { - "hash": "14f3a36abaace74aeba3e40001ce905336fef415", - "channel": "dev", - "version": "1.18.0-dev.0.0", - "release_date": "2020-04-04T23:08:33.197171Z", - "archive": "dev/macos/flutter_macos_1.18.0-dev.0.0-dev.zip", - "sha256": "7811dc5962e1126dbf813f71988c1f71f8038fcd1e261967838d1afb398dab52" - }, - { - "hash": "a8b3d1b74fac5251c61c8a898cf7544fd77ddd16", - "channel": "dev", - "version": "1.17.0-dev.5.0", - "release_date": "2020-04-04T00:52:11.930033Z", - "archive": "dev/macos/flutter_macos_1.17.0-dev.5.0-dev.zip", - "sha256": "cd110d81edc190cf37d1a8892dcab9570ecdd53a270c5b4aa812ac6b670accf3" - }, - { - "hash": "66eb92e6259687c6e3434e9c76842b0848775c6b", - "channel": "dev", - "version": "1.17.0-dev.4.0", - "release_date": "2020-04-02T23:53:57.708083Z", - "archive": "dev/macos/flutter_macos_1.17.0-dev.4.0-dev.zip", - "sha256": "5fbb43985bd57c413314ec07de2539ffaf2124d4a29cfe239246a36e280ed85f" - }, - { - "hash": "3a0d8377410ba85db3fb6a900e83dd211669bfc4", - "channel": "dev", - "version": "1.17.0-dev.3.0", - "release_date": "2020-04-02T19:02:06.004706Z", - "archive": "dev/macos/flutter_macos_1.17.0-dev.3.0-dev.zip", - "sha256": "17ee20425ce8eb5218cbbe37c1b91891858192c9082c87063fde4699621c570e" - }, - { - "hash": "a94e647d6b11dd8523a30130a2548d73a3eaff4f", - "channel": "dev", - "version": "1.17.0-dev.2.0", - "release_date": "2020-04-02T17:14:52.101254Z", - "archive": "dev/macos/flutter_macos_1.17.0-dev.2.0-dev.zip", - "sha256": "d77264e29b6c9cfe7f32d2ebf01b0ade1997ad418a6e486f1c6a516f422900d1" - }, - { - "hash": "d14a301e419af7f3eff7cc3a49bf936c75d2b2f0", - "channel": "dev", - "version": "1.17.0-dev.1.0", - "release_date": "2020-04-01T22:08:29.625927Z", - "archive": "dev/macos/flutter_macos_1.17.0-dev.1.0-dev.zip", - "sha256": "5006409fa17bfd9a0410ae4f55bc136455ae9f4bfc7eec5ce9d8cc8589c57fd8" - }, - { - "hash": "aee9e94c21009bfc6c08f442eacde06f001c25f9", - "channel": "dev", - "version": "1.17.0-dev.0.0", - "release_date": "2020-03-31T19:24:15.573478Z", - "archive": "dev/macos/flutter_macos_1.17.0-dev.0.0-dev.zip", - "sha256": "5e2cb6e27b2c92760dd3a12d64629bae01c9660f781ca9938d87e632205e34c8" - }, - { - "hash": "be3a4b37b3e9ab4e80d45b59bed53708b96d211f", - "channel": "dev", - "version": "v1.16.3", - "release_date": "2020-03-27T18:24:12.430689Z", - "archive": "dev/macos/flutter_macos_v1.16.3-dev.zip", - "sha256": "27d1eef393a4378baed61322dcbc524e3c03a92e4d1de0d112f210b332590eef" - }, - { - "hash": "58cad787d89cc12e72f1f0ec3f1df6a9796ef029", - "channel": "dev", - "version": "v1.16.2", - "release_date": "2020-03-24T14:50:49.867853Z", - "archive": "dev/macos/flutter_macos_v1.16.2-dev.zip", - "sha256": "c6dde33c302d4fc6b1e90ae87885606d5dba3d7af853e0c8c36a6c75c8b4ae15" - }, - { - "hash": "e6b0f5f238d7c67a686e54d09c91e654fa8f215d", - "channel": "dev", - "version": "v1.16.1", - "release_date": "2020-03-19T18:08:20.220288Z", - "archive": "dev/macos/flutter_macos_v1.16.1-dev.zip", - "sha256": "59e338605780cfe2bd67669ddf585c85a71968fc7e67eb64203bf55fef7d5546" - }, - { - "hash": "08768e87e408fd3df8f848b468b876fef1a49f76", - "channel": "dev", - "version": "v1.16.0", - "release_date": "2020-03-18T22:10:06.132101Z", - "archive": "dev/macos/flutter_macos_v1.16.0-dev.zip", - "sha256": "2b70a8a878229d921620e68b0490c50386216ff5da2cd820bf805ad1d60523a7" - }, - { - "hash": "2294d75bfa8d067ba90230c0fc2268f3636d7584", - "channel": "beta", - "version": "v1.15.17", - "release_date": "2020-03-17T17:17:31.354010Z", - "archive": "beta/macos/flutter_macos_v1.15.17-beta.zip", - "sha256": "cc16d651a6d5304e43cf35eedc84deb82b075676c1cb32fc529acc535c1cf297" - }, - { - "hash": "1606d878348e98fb1c401679ca8e006c7b7eb41f", - "channel": "dev", - "version": "v1.15.22", - "release_date": "2020-03-16T19:33:06.055079Z", - "archive": "dev/macos/flutter_macos_v1.15.22-dev.zip", - "sha256": "00e624e2737b8e286a6a03ce6058571b54bc0090514704ab9f45e9503319b71a" - }, - { - "hash": "e2b4edd2865794e4ce9d4e8c40d732ed14eb6fa1", - "channel": "dev", - "version": "v1.15.21", - "release_date": "2020-03-13T20:49:20.118496Z", - "archive": "dev/macos/flutter_macos_v1.15.21-dev.zip", - "sha256": "c7cf7d4c483c70686b37564365fe3f88fe616b7c71b502e3a133e115f8467308" - }, - { - "hash": "4049889d9eecc8fb3eda316a5c371eeb636b2ae5", - "channel": "dev", - "version": "v1.15.20", - "release_date": "2020-03-11T16:59:35.322755Z", - "archive": "dev/macos/flutter_macos_v1.15.20-dev.zip", - "sha256": "136989a55a19492b4338183d8e812ffe6915978e4bbde47bd1fac9f206f640cf" - }, - { - "hash": "60d0fef17ae60b88cb52e6158bda2d91b600299c", - "channel": "dev", - "version": "v1.15.19", - "release_date": "2020-03-10T17:27:35.257974Z", - "archive": "dev/macos/flutter_macos_v1.15.19-dev.zip", - "sha256": "0d64ce5245d8ae31695f3d35400ea7f6c3281dfc5a11a3c4e6e063ac0da88c4a" - }, - { - "hash": "9437639590adaa91e3df31cd9ce85133e401cd51", - "channel": "dev", - "version": "v1.15.18", - "release_date": "2020-03-07T01:44:20.092380Z", - "archive": "dev/macos/flutter_macos_v1.15.18-dev.zip", - "sha256": "88cee66dfcbcc85319ad0ada664f1af70c4f68d96f91d6446acc8f0d14dbde14" - }, - { - "hash": "2294d75bfa8d067ba90230c0fc2268f3636d7584", - "channel": "dev", - "version": "v1.15.17", - "release_date": "2020-03-06T21:34:34.217991Z", - "archive": "dev/macos/flutter_macos_v1.15.17-dev.zip", - "sha256": "e3128aa8f64cbae25576f326ffb3f54b3e246baf20d153b5241c5df66ccef20f" - }, - { - "hash": "fc3f03886dd715dda8e640e0b8bf3871213c1420", - "channel": "dev", - "version": "v1.15.16", - "release_date": "2020-03-06T04:02:03.750627Z", - "archive": "dev/macos/flutter_macos_v1.15.16-dev.zip", - "sha256": "c74ae9462bd83e9922fd801eeba7e895ba7fd6aa06f284012a8594ba8ab8bdf1" - }, - { - "hash": "ed94c9d856c8de67f183d8ac18b06f61f5405219", - "channel": "dev", - "version": "v1.15.15", - "release_date": "2020-03-06T03:29:04.092666Z", - "archive": "dev/macos/flutter_macos_v1.15.15-dev.zip", - "sha256": "4218b42e8d24ba9ded1622c205b02fc4e58bcb9516ba68ef6bac96b6b345e3ea" - }, - { - "hash": "a68f96ae3f51c0339477f8b4711ba1f11daffb71", - "channel": "dev", - "version": "v1.15.14", - "release_date": "2020-03-06T02:20:24.824872Z", - "archive": "dev/macos/flutter_macos_v1.15.14-dev.zip", - "sha256": "3316c28cd8b2ea75f187f5fd11b5ece53711599f747bb82727c9075e107445d9" - }, - { - "hash": "92ce53cc6e9e85e8a9f3f496c8318e556ca8f974", - "channel": "dev", - "version": "v1.15.13", - "release_date": "2020-03-06T01:19:48.032487Z", - "archive": "dev/macos/flutter_macos_v1.15.13-dev.zip", - "sha256": "eaf8b71f711c112973d82edb1d667c14d322ee0f0811ac8203addf538969bc37" - }, - { - "hash": "b127868db4944013c65232af46ce02d5b5bde93e", - "channel": "dev", - "version": "v1.15.12", - "release_date": "2020-03-05T23:30:53.906344Z", - "archive": "dev/macos/flutter_macos_v1.15.12-dev.zip", - "sha256": "1a9dad2309ed5ea0430ea8598b92cbaabdb3fe120b8f3edfbfae908d612eb38c" - }, - { - "hash": "1dce0a51e613df290b894e28e6a7d44f5fd87eb1", - "channel": "dev", - "version": "v1.15.11", - "release_date": "2020-03-05T22:24:17.852729Z", - "archive": "dev/macos/flutter_macos_v1.15.11-dev.zip", - "sha256": "0b33c5f8b95f370137bae43b1649b2e9c45c7198ad864ae8471ae3d6b1fd24ec" - }, - { - "hash": "3018d8ddb3b40156b6d5a32ee4deaaa80277ea71", - "channel": "dev", - "version": "v1.15.10", - "release_date": "2020-03-05T19:42:09.097309Z", - "archive": "dev/macos/flutter_macos_v1.15.10-dev.zip", - "sha256": "6b8c36e1dd8647a7cf78d38a39ce123ec67495e61eac1d32da627e529b551058" - }, - { - "hash": "cc52a903a8639a8f59e84942172456629eb1aa8f", - "channel": "dev", - "version": "v1.15.9", - "release_date": "2020-03-05T05:29:29.511Z", - "archive": "dev/macos/flutter_macos_v1.15.9-dev.zip", - "sha256": "f868bd52884008c4db77782880151acecf2f0909e3c102aadacaa6b6238475f6" - }, - { - "hash": "83dba9bc16be4aba56df6c5752f91e777d4331d6", - "channel": "dev", - "version": "v1.15.8", - "release_date": "2020-03-05T03:08:13.293882Z", - "archive": "dev/macos/flutter_macos_v1.15.8-dev.zip", - "sha256": "67dfcc1e36e9185a95000ff6b1cb0c37cf881b0d3c2358bbbd6ada4ebdad633c" - }, - { - "hash": "db94472aeb03eb91e833686223e8d930eb8e8d45", - "channel": "dev", - "version": "v1.15.7", - "release_date": "2020-03-05T02:18:36.613992Z", - "archive": "dev/macos/flutter_macos_v1.15.7-dev.zip", - "sha256": "0a3cef5d69ff67051e0197e73ac627e043e031f3f5361ab6229a3c61c289155c" - }, - { - "hash": "0b8129db1f6b01924c82f3acccc498108c0e1ff4", - "channel": "dev", - "version": "v1.15.6", - "release_date": "2020-03-05T01:18:46.308624Z", - "archive": "dev/macos/flutter_macos_v1.15.6-dev.zip", - "sha256": "ec5e626d264ae93b09711cd0b69cf740b24f3dec0aed0a710ce3779ca198d0bf" - }, - { - "hash": "cbbb7ec5a7031187cc906ac9f375f340c16d51af", - "channel": "dev", - "version": "v1.15.5", - "release_date": "2020-03-05T00:50:38.426563Z", - "archive": "dev/macos/flutter_macos_v1.15.5-dev.zip", - "sha256": "670576c4f17c94ab99537ccbca3bd8f3541ba57ba4b45f70958d0a1427d5166d" - }, - { - "hash": "a5bd678585ceda542205a54d6e650b1b4297bd0a", - "channel": "dev", - "version": "v1.15.4", - "release_date": "2020-03-04T22:57:48.333681Z", - "archive": "dev/macos/flutter_macos_v1.15.4-dev.zip", - "sha256": "6742942c969f62f08206fdfab3c8f3902124ee8588f530091383e576dbadb900" - }, - { - "hash": "0b8abb4724aa590dd0f429683339b1e045a1594d", - "channel": "stable", - "version": "v1.12.13+hotfix.8", - "release_date": "2020-02-11T22:19:41.184967Z", - "archive": "stable/macos/flutter_macos_v1.12.13+hotfix.8-stable.zip", - "sha256": "5b5308a400bddbc29874f8fd8de7b39bb5dd8707da499c42feb3721524e784a1" - }, - { - "hash": "67826bdce54505760fe83b7ead70bdb5af6fe9f2", - "channel": "dev", - "version": "v1.15.3", - "release_date": "2020-02-11T18:18:17.397155Z", - "archive": "dev/macos/flutter_macos_v1.15.3-dev.zip", - "sha256": "2768262814a11338703765f21fff06aaa15fe16fe04b54b69471a29a062a1298" - }, - { - "hash": "d94ff4bdbec7f1141d16cf97d3ceed485c9a1d36", - "channel": "dev", - "version": "v1.15.2", - "release_date": "2020-02-08T01:17:18.337294Z", - "archive": "dev/macos/flutter_macos_v1.15.2-dev.zip", - "sha256": "fd5f13a723153d939cf44410494844d4404c2dbd4530f9b5adadf7da9149b615" - }, - { - "hash": "4d2ce7be2cd4622cede017b0fe2b8a66c821fe48", - "channel": "dev", - "version": "v1.15.1", - "release_date": "2020-02-07T00:45:07.417257Z", - "archive": "dev/macos/flutter_macos_v1.15.1-dev.zip", - "sha256": "92949da5bf53a5e64fa87213fbc0773ab5e39e45742a311ae1a87fea08f476df" - }, - { - "hash": "9b3e1639db189866af55ed3a0dfd47b217106fcd", - "channel": "dev", - "version": "v1.15.0", - "release_date": "2020-02-06T14:38:41.255816Z", - "archive": "dev/macos/flutter_macos_v1.15.0-dev.zip", - "sha256": "227a9f359d1ad74f5317c297c5f2e4fbc7720443e22c8e54e71c102c234824af" - }, - { - "hash": "fabeb2a16f1d008ab8230f450c49141d35669798", - "channel": "beta", - "version": "v1.14.6", - "release_date": "2020-02-05T19:40:16.747257Z", - "archive": "beta/macos/flutter_macos_v1.14.6-beta.zip", - "sha256": "73eefa7c7d29d43e03f7cd8af692fff3cc9136a8b762cbec271ac9efffeeac27" - }, - { - "hash": "fabeb2a16f1d008ab8230f450c49141d35669798", - "channel": "dev", - "version": "v1.14.6", - "release_date": "2020-01-29T02:11:11.271590Z", - "archive": "dev/macos/flutter_macos_v1.14.6-dev.zip", - "sha256": "81f9795224fda248895e1c6fe8e035ed01056c2a5f90bfdac28099e2fb3fe3bc" - }, - { - "hash": "92cbaa3efe985cc8370d0d70fef5058c971b2eee", - "channel": "dev", - "version": "v1.14.5", - "release_date": "2020-01-27T18:34:50.310890Z", - "archive": "dev/macos/flutter_macos_v1.14.5-dev.zip", - "sha256": "4deb807181c1534650ebb12ec8ba2ed0d4be31bc34539160e35081e655dc9a02" - }, - { - "hash": "9f5ff2306bb3e30b2b98eee79cd231b1336f41f4", - "channel": "stable", - "version": "v1.12.13+hotfix.7", - "release_date": "2020-01-27T15:54:35.867012Z", - "archive": "stable/macos/flutter_macos_v1.12.13+hotfix.7-stable.zip", - "sha256": "f4d9213c8c5777aed05e2c0dee3261b2baa21a11d27e9f28c76879ee7164b71f" - }, - { - "hash": "5e1000cd8540a6305df5a999d4dcb0b59fe3c66a", - "channel": "dev", - "version": "v1.14.4", - "release_date": "2020-01-25T02:15:27.685260Z", - "archive": "dev/macos/flutter_macos_v1.14.4-dev.zip", - "sha256": "fa73e0e01b1ca2acbb070f289279beb98d369091ad462fb33ff78c32e668f27f" - }, - { - "hash": "b5a23fdf5bc01e292238627f031a34ed0adb80b0", - "channel": "dev", - "version": "v1.14.3", - "release_date": "2020-01-22T02:54:18.373254Z", - "archive": "dev/macos/flutter_macos_v1.14.3-dev.zip", - "sha256": "6d9a70f245559ae741521d6956dbdffa9647258174b49f4a704338247ee48819" - }, - { - "hash": "ec1044a8773e31b4630bf162d9c374236ad1eaaf", - "channel": "dev", - "version": "v1.14.2", - "release_date": "2020-01-21T20:40:05.796232Z", - "archive": "dev/macos/flutter_macos_v1.14.2-dev.zip", - "sha256": "8557a843b9ca30d214ffae4d1495dc22e1db4657d433c19cf7553d36dec07460" - }, - { - "hash": "c88320458ea86da379aec43dcd24057ad1d79652", - "channel": "dev", - "version": "v1.14.1", - "release_date": "2020-01-16T19:14:59.488316Z", - "archive": "dev/macos/flutter_macos_v1.14.1-dev.zip", - "sha256": "31db13cf2a176af65a06ed8f0d5463c5ab6f5e03263b1a6d27afbaf0fd804aa6" - }, - { - "hash": "bc6f270c584d1fdba81330090ef6e822b9082919", - "channel": "dev", - "version": "v1.14.0", - "release_date": "2020-01-16T01:03:13.196140Z", - "archive": "dev/macos/flutter_macos_v1.14.0-dev.zip", - "sha256": "31bd69c24a025bc45063556171f07a4781e904d7f0ab9d1dcc702679cb6c1099" - }, - { - "hash": "659dc8129d4edb9166e9a0d600439d135740933f", - "channel": "beta", - "version": "v1.13.6", - "release_date": "2020-01-15T17:34:33.902307Z", - "archive": "beta/macos/flutter_macos_v1.13.6-beta.zip", - "sha256": "c52f45dbcf6d3505bd81043dd7257a72e293f389fc23d036caa61662656709f0" - }, - { - "hash": "d291de086c0840eb63d82bcde11af2ec521e2a0c", - "channel": "dev", - "version": "v1.13.9", - "release_date": "2020-01-14T22:35:10.848254Z", - "archive": "dev/macos/flutter_macos_v1.13.9-dev.zip", - "sha256": "c71b45a9bbbb2535ac5680ea398f1cc445d1e542baeafd637573b14d1bd4f702" - }, - { - "hash": "1c79347ef659402a17bf9405b3305564530d3bd2", - "channel": "dev", - "version": "v1.13.8", - "release_date": "2020-01-10T22:25:20.526170Z", - "archive": "dev/macos/flutter_macos_v1.13.8-dev.zip", - "sha256": "328c396cb06aa265d198d42cb47ed795d1fc73f8173d3c60226fbe006d48be39" - }, - { - "hash": "a3bbdfb23acb173b1bac7cbcd7c4ac723eb584b9", - "channel": "dev", - "version": "v1.13.7", - "release_date": "2020-01-07T23:09:26.013227Z", - "archive": "dev/macos/flutter_macos_v1.13.7-dev.zip", - "sha256": "d338c609a604054ca36297613b21e5db57117463dd46f3c1aabbc392ed51cfd3" - }, - { - "hash": "659dc8129d4edb9166e9a0d600439d135740933f", - "channel": "dev", - "version": "v1.13.6", - "release_date": "2020-01-02T22:30:54.736934Z", - "archive": "dev/macos/flutter_macos_v1.13.6-dev.zip", - "sha256": "a9a6346ee9153635c54e9eb127a7e6f5fcfd5bf90ec3113cbf379ab90805293a" - }, - { - "hash": "41a911099b7d06f7b1c29f4420cfcfe41fd26e46", - "channel": "dev", - "version": "v1.13.5", - "release_date": "2019-12-21T02:19:23.898980Z", - "archive": "dev/macos/flutter_macos_v1.13.5-dev.zip", - "sha256": "764fb8eb1f4fc421c8e78dec4535fbc137af1a5dc79f00cf5d5f0e21896bc06e" - }, - { - "hash": "bd25f70c66ccd832d53644bd33a1368e96a7aa75", - "channel": "dev", - "version": "v1.13.4", - "release_date": "2019-12-20T19:54:59.462755Z", - "archive": "dev/macos/flutter_macos_v1.13.4-dev.zip", - "sha256": "884a35028d5ca90f6a092ccfbb2c36e1b847569f2a531c9985552f8799e0a48c" - }, - { - "hash": "4af66e335f8d87da5cb8c7f2a3e89c1ee02ef23b", - "channel": "dev", - "version": "v1.13.3", - "release_date": "2019-12-19T21:43:39.900882Z", - "archive": "dev/macos/flutter_macos_v1.13.3-dev.zip", - "sha256": "00c02b9b691a1e9f91a3969ed66925e01a63c12d008f27d8febcb1045b06abaa" - }, - { - "hash": "4944622b5d8e7a8ee5dbf658b0d0e8ab94b8efd3", - "channel": "dev", - "version": "v1.13.2", - "release_date": "2019-12-13T02:12:36.985302Z", - "archive": "dev/macos/flutter_macos_v1.13.2-dev.zip", - "sha256": "203daa64c5206fd3795eec28ecc2f1c99220faf9f52ff6027da50fac02fd4f44" - }, - { - "hash": "4938ea03858e178541d723dff430e6c9d044e6ae", - "channel": "dev", - "version": "v1.13.1", - "release_date": "2019-12-12T21:32:39.085719Z", - "archive": "dev/macos/flutter_macos_v1.13.1-dev.zip", - "sha256": "707d5722e1cb6878383f745b0d3c6cf0ca543f734933ba2b356d0e1345d7f766" - }, - { - "hash": "18cd7a3601bcffb36fdf2f679f763b5e827c2e8e", - "channel": "beta", - "version": "v1.12.13+hotfix.6", - "release_date": "2019-12-11T16:06:18.101242Z", - "archive": "beta/macos/flutter_macos_v1.12.13+hotfix.6-beta.zip", - "sha256": "05c7064de1f793ed1660422bc8f3fc8cdcaed38618bddbee785413b92d80c364" - }, - { - "hash": "27321ebbad34b0a3fafe99fac037102196d655ff", - "channel": "stable", - "version": "v1.12.13+hotfix.5", - "release_date": "2019-12-11T15:42:42.899647Z", - "archive": "stable/macos/flutter_macos_v1.12.13+hotfix.5-stable.zip", - "sha256": "78a0c5a757df74800e3c11632d4b8d2818904f0ceb075d9a2ab44ee74af6e67c" - }, - { - "hash": "27321ebbad34b0a3fafe99fac037102196d655ff", - "channel": "beta", - "version": "v1.12.13+hotfix.5", - "release_date": "2019-12-11T03:07:42.187102Z", - "archive": "beta/macos/flutter_macos_v1.12.13+hotfix.5-beta.zip", - "sha256": "6c4d23957c59e3c72d60374842e4f7a6794b957c16541d32d07b520bf75f3049" - }, - { - "hash": "fb60324e6fa791bedeade8be4773a42037e11f62", - "channel": "beta", - "version": "v1.12.13+hotfix.4", - "release_date": "2019-12-10T00:17:12.957474Z", - "archive": "beta/macos/flutter_macos_v1.12.13+hotfix.4-beta.zip", - "sha256": "dd6f8bddf5b4b4ca189da4064b4204fcfcd5f95d0015ddef8562609c1fc7148c" - }, - { - "hash": "57f2df76d75cff290cbe2765b07db1ad3e67b50d", - "channel": "beta", - "version": "v1.12.13+hotfix.3", - "release_date": "2019-12-06T05:42:15.828655Z", - "archive": "beta/macos/flutter_macos_v1.12.13+hotfix.3-beta.zip", - "sha256": "66295d2e09dc2a15acbfa4d447f1b816c1e029e37f68156813e5ff33a03e0521" - }, - { - "hash": "09126abb222d0f25b03318a1ab4a99d27d9aaa8d", - "channel": "dev", - "version": "v1.13.0", - "release_date": "2019-12-05T19:23:17.410632Z", - "archive": "dev/macos/flutter_macos_v1.13.0-dev.zip", - "sha256": "4da2af7099da3c4050523264a3b335080bb8f700e8789e9d18a80dd4cf38bc5f" - }, - { - "hash": "4f54e46f56c2ffc92eb440dbdab1a7f8e722e593", - "channel": "beta", - "version": "v1.12.13+hotfix.2", - "release_date": "2019-12-04T18:18:57.754130Z", - "archive": "beta/macos/flutter_macos_v1.12.13+hotfix.2-beta.zip", - "sha256": "055361c4b9a1c8ab387757590b75625113b2e5f9f164cd192fc1d869e7e2183d" - }, - { - "hash": "5b07015393539822da275ab9a348b9e9ce92a29e", - "channel": "beta", - "version": "v1.12.13+hotfix.1", - "release_date": "2019-12-03T19:22:49.297514Z", - "archive": "beta/macos/flutter_macos_v1.12.13+hotfix.1-beta.zip", - "sha256": "451d63d4cebde6ea7b3dadec51ef8598309d4a4ace6df37e6b3be926c8bd5811" - }, - { - "hash": "37f9c541165c3516f727cd36bd502d411fdad3b8", - "channel": "dev", - "version": "v1.12.16", - "release_date": "2019-12-02T19:09:25.444482Z", - "archive": "dev/macos/flutter_macos_v1.12.16-dev.zip", - "sha256": "452a25fb35b37605547044f79685788c198c7e4919e9a4f24e70159b967e8c45" - }, - { - "hash": "459c7fb884d9234c45b353087e0ec8a33dde90d1", - "channel": "dev", - "version": "v1.12.15", - "release_date": "2019-11-27T18:42:36.447978Z", - "archive": "dev/macos/flutter_macos_v1.12.15-dev.zip", - "sha256": "19d22993a6a993dcdbfd660b08df9d0faac4c5cffcf06d56a4bd1564555892b2" - }, - { - "hash": "7726910a5bc4135a9f1fd497c872c9e5cb1e51b5", - "channel": "dev", - "version": "v1.12.14", - "release_date": "2019-11-26T22:59:13.112064Z", - "archive": "dev/macos/flutter_macos_v1.12.14-dev.zip", - "sha256": "dac447aca9de750b0d184f432fd906e84a299e76d29b188e2ce13b1ff9bc298b" - }, - { - "hash": "cf37c2cd07a1d3ba296efff2dc75e19ba65e1665", - "channel": "dev", - "version": "v1.12.13", - "release_date": "2019-11-26T01:08:12.009584Z", - "archive": "dev/macos/flutter_macos_v1.12.13-dev.zip", - "sha256": "b6c18c10adb9a6409554a8a47b6d08d54bd731b70c33c4e7f91c68483d1945a2" - }, - { - "hash": "bae92c32e5233e9113e42962179773309fb3ad8c", - "channel": "dev", - "version": "v1.12.12", - "release_date": "2019-11-25T21:26:26.113823Z", - "archive": "dev/macos/flutter_macos_v1.12.12-dev.zip", - "sha256": "c4d301749ebf90f421e2f868fdf4f603d4c5114a345a7be76dc67bb473eb8b6a" - }, - { - "hash": "f40dbf8ca07b0498eff3d6b861ecd21f2de7db6a", - "channel": "dev", - "version": "v1.12.11", - "release_date": "2019-11-23T21:30:16.796821Z", - "archive": "dev/macos/flutter_macos_v1.12.11-dev.zip", - "sha256": "565cf99bd469c04ac0cfaa4970d8dc0ed1fab14af342bb8a269066e9f8d1d9e3" - }, - { - "hash": "b6e92003c8abc5e04a193b58e4a7c8b98d4b8536", - "channel": "dev", - "version": "v1.12.10", - "release_date": "2019-11-23T06:56:17.235665Z", - "archive": "dev/macos/flutter_macos_v1.12.10-dev.zip", - "sha256": "af2c528cbaf9de8a8b726fbf16154abbc299b3af9fe65d0a4e600e4e6ca61ac6" - }, - { - "hash": "33d302240d3e483fc78bf6abb43d8346260b60c5", - "channel": "dev", - "version": "v1.12.9", - "release_date": "2019-11-23T00:31:25.346843Z", - "archive": "dev/macos/flutter_macos_v1.12.9-dev.zip", - "sha256": "f36525f86f49fceb1dcded9908d0d6b4f06671a49b67da75c021e76ae38d2f5a" - }, - { - "hash": "4c64b715d9a677922ef02f2643211a6282926eb5", - "channel": "dev", - "version": "v1.12.8", - "release_date": "2019-11-22T17:42:53.920166Z", - "archive": "dev/macos/flutter_macos_v1.12.8-dev.zip", - "sha256": "abdcd7850d71b50a05d6eebe828fea1e1305194ea18c069f72a464974b3cb170" - }, - { - "hash": "856a90e67c9284124d44d2be6c785bacd3a1c772", - "channel": "beta", - "version": "v1.11.0", - "release_date": "2019-11-22T06:05:37.150732Z", - "archive": "beta/macos/flutter_macos_v1.11.0-beta.zip", - "sha256": "947480d0bcda81567c25bfcfe0b78ac3dad11c1cab7c5519562e6ac5e31f0a2f" - }, - { - "hash": "43a8a1902e5c42d084077e8ede6f14f8ddbdce24", - "channel": "dev", - "version": "v1.12.7", - "release_date": "2019-11-21T21:36:35.227870Z", - "archive": "dev/macos/flutter_macos_v1.12.7-dev.zip", - "sha256": "1789f26af3d5bb912746577468bef44ce5a95db8cd4c9803d280c5f869811094" - }, - { - "hash": "6eb0a0e3715c6eeb7a2733f74cf6e741fe796ef6", - "channel": "dev", - "version": "v1.12.6", - "release_date": "2019-11-21T17:57:24.266176Z", - "archive": "dev/macos/flutter_macos_v1.12.6-dev.zip", - "sha256": "85aee3eee10a45118435c7112baff1dfd630e435f815c2506f7995d5ef2f4678" - }, - { - "hash": "2c7af1e24e45a79f4eb73d67d98fcecea8bf6146", - "channel": "dev", - "version": "v1.12.5", - "release_date": "2019-11-21T03:10:45.271879Z", - "archive": "dev/macos/flutter_macos_v1.12.5-dev.zip", - "sha256": "2c9843452e81f2153bb461b08ac259f868972882e6034e29c030a995068668fc" - }, - { - "hash": "2461c75600ba6e11a49da0fca29abe3b4501efcd", - "channel": "dev", - "version": "v1.12.4", - "release_date": "2019-11-18T22:43:13.610614Z", - "archive": "dev/macos/flutter_macos_v1.12.4-dev.zip", - "sha256": "cd98e0daf860f5aa6d43199a6c98809214a557e987a2135a53c0bcd3e920b595" - }, - { - "hash": "028b4c4f40e4c2035961cbc35ab7b49fe48320d8", - "channel": "dev", - "version": "v1.12.3", - "release_date": "2019-11-18T17:43:30.526595Z", - "archive": "dev/macos/flutter_macos_v1.12.3-dev.zip", - "sha256": "c7a9d186d109aea7a0da9cd2c4f8504404ecd91a4282ef94a7c5c4f3f0a7a6e4" - }, - { - "hash": "6de62679421abe42f0f669e191fead30ee8bf7e0", - "channel": "dev", - "version": "v1.12.2", - "release_date": "2019-11-15T21:43:01.689145Z", - "archive": "dev/macos/flutter_macos_v1.12.2-dev.zip", - "sha256": "f5597cfff4f0e7968b841d075a0a6a8cf5a283272140926e7f27f99729a29be0" - }, - { - "hash": "86c91b12d88934886b35887ec23068c1eeee5624", - "channel": "dev", - "version": "v1.12.1", - "release_date": "2019-11-15T04:33:29.201Z", - "archive": "dev/macos/flutter_macos_v1.12.1-dev.zip", - "sha256": "5ffa87832210beb15c381ba34bde7b74827406f1b86685c896e2a1082025154e" - }, - { - "hash": "9323a623bd83f0bb994f50086344fb8933e05081", - "channel": "dev", - "version": "v1.12.0", - "release_date": "2019-11-14T22:24:30.785140Z", - "archive": "dev/macos/flutter_macos_v1.12.0-dev.zip", - "sha256": "2648548c9e6fee766f9cc024d6d210a4a398604abb5d80586074a248f08ac4c9" - }, - { - "hash": "856a90e67c9284124d44d2be6c785bacd3a1c772", - "channel": "dev", - "version": "v1.11.0", - "release_date": "2019-11-14T00:01:11.994712Z", - "archive": "dev/macos/flutter_macos_v1.11.0-dev.zip", - "sha256": "5b799dda441a26a3bb8ddd4af376b4be43634fe0034c120ea32597a4f19ab6e8" - }, - { - "hash": "798e4272a2e43d7daab75f225a13442e384ee0cd", - "channel": "dev", - "version": "v1.10.16", - "release_date": "2019-11-11T19:11:42.333661Z", - "archive": "dev/macos/flutter_macos_v1.10.16-dev.zip", - "sha256": "ea5a94c996d739cadb4c4236228b404232857ae10a8e84e05c55267e89f4362e" - }, - { - "hash": "fbabb264e0ab3e090d6ec056e0744aaeb1586735", - "channel": "dev", - "version": "v1.10.15", - "release_date": "2019-11-07T02:11:43.565784Z", - "archive": "dev/macos/flutter_macos_v1.10.15-dev.zip", - "sha256": "c254f46168ce2f92ae5fa7898f1f71a16a364a5c448ad15185ecb7f6ef0ba591" - }, - { - "hash": "68587a0916366e9512a78df22c44163d041dd5f3", - "channel": "stable", - "version": "v1.9.1+hotfix.6", - "release_date": "2019-10-23T23:18:04.664066Z", - "archive": "stable/macos/flutter_macos_v1.9.1+hotfix.6-stable.zip", - "sha256": "8d0b3e217e45fbde64e117c5932ec5bd18ced0e8e8fba80a0fec95e38854bb6a" - }, - { - "hash": "1aedbb1835bd6eb44550293d57d4d124f19901f0", - "channel": "stable", - "version": "v1.9.1+hotfix.5", - "release_date": "2019-10-17T17:11:53.266874Z", - "archive": "stable/macos/flutter_macos_v1.9.1+hotfix.5-stable.zip", - "sha256": "25dec50bbcc7c39740dbab417721509810a5bd8b73b07db65d4031129e27a6ed" - }, - { - "hash": "e70236e36ce1d32067dc68eb55519ec3e14b6b01", - "channel": "beta", - "version": "v1.10.7", - "release_date": "2019-10-10T20:12:47.309465Z", - "archive": "beta/macos/flutter_macos_v1.10.7-beta.zip", - "sha256": "246e8ad0939ff29b4fce3f0845dc95b231cafe918dab10ddef183ec52c71a7e0" - }, - { - "hash": "1946fc4da0f80c522d7e3ae7d4f7309908ed86f2", - "channel": "dev", - "version": "v1.10.14", - "release_date": "2019-10-08T22:13:08.856582Z", - "archive": "dev/macos/flutter_macos_v1.10.14-dev.zip", - "sha256": "35ff8755601265472cac1c7177c2a881f44d164f0353355e1a755b0ad7bf61d0" - }, - { - "hash": "97e00b2288938998f755c5262a118d9a0d6a915a", - "channel": "dev", - "version": "v1.10.13", - "release_date": "2019-10-08T00:43:46.040255Z", - "archive": "dev/macos/flutter_macos_v1.10.13-dev.zip", - "sha256": "e0882a29fbcc9ef2bf8ded31bee575910c71b81da10646a9a3c9db517b9d80ae" - }, - { - "hash": "0e605cc4dd83137f785769dea5e8ae7da1afb361", - "channel": "dev", - "version": "v1.10.12", - "release_date": "2019-10-04T22:52:21.967140Z", - "archive": "dev/macos/flutter_macos_v1.10.12-dev.zip", - "sha256": "3836a637a8686ca9c0d4cea3aae650f8f716e00f301b7d1ee96fa7651a1ac055" - }, - { - "hash": "5961bcc505b589328c3c20f0841ba467db3f966a", - "channel": "dev", - "version": "v1.10.11", - "release_date": "2019-10-04T17:44:29.782825Z", - "archive": "dev/macos/flutter_macos_v1.10.11-dev.zip", - "sha256": "22745e55d8c2f1f5f7ea7d56abb657d35f2a06a0421e8482d42d588b87fdd6b8" - }, - { - "hash": "3a728a9b5b14e2390965be0e1e0215ef583716e2", - "channel": "dev", - "version": "v1.10.10", - "release_date": "2019-10-04T07:43:28.216403Z", - "archive": "dev/macos/flutter_macos_v1.10.10-dev.zip", - "sha256": "7fbb2098dadf611eebda1e85f0111411ab4356d6697c1a53db69e572287fc75b" - }, - { - "hash": "3e2dc8ca7b59080cef04a9ff474b5b18d94e4365", - "channel": "dev", - "version": "v1.10.9", - "release_date": "2019-10-04T06:13:55.206451Z", - "archive": "dev/macos/flutter_macos_v1.10.9-dev.zip", - "sha256": "8959b0b08a428216ae17f398a2b0b8fc1bb3c678b5fbfe54c3bd03126f6bbb6d" - }, - { - "hash": "0b0942a60caafff56c19fea07d8f7b14e6286e1c", - "channel": "dev", - "version": "v1.10.8", - "release_date": "2019-10-04T00:14:35.342419Z", - "archive": "dev/macos/flutter_macos_v1.10.8-dev.zip", - "sha256": "212db6d52dc660fb3b89b0e1a4d852e34f6e7fe16d97a6e2e0d93786a8372191" - }, - { - "hash": "e70236e36ce1d32067dc68eb55519ec3e14b6b01", - "channel": "dev", - "version": "v1.10.7", - "release_date": "2019-10-02T23:32:56.261123Z", - "archive": "dev/macos/flutter_macos_v1.10.7-dev.zip", - "sha256": "41aab949269e26b19245d74ed50ac4c97d9b03682eebc2d0f45c298a82276180" - }, - { - "hash": "cc949a8e8b9cf394b9290a8e80f87af3e207dce5", - "channel": "stable", - "version": "v1.9.1+hotfix.4", - "release_date": "2019-10-01T16:12:00.702947Z", - "archive": "stable/macos/flutter_macos_v1.9.1+hotfix.4-stable.zip", - "sha256": "9bee10962848b138a0e47764de270123444fae35f6b0dc44615560eff633c634" - }, - { - "hash": "cc949a8e8b9cf394b9290a8e80f87af3e207dce5", - "channel": "beta", - "version": "v1.9.1+hotfix.4", - "release_date": "2019-09-27T22:35:51.827038Z", - "archive": "beta/macos/flutter_macos_v1.9.1+hotfix.4-beta.zip", - "sha256": "60737eeffb3773693a286dd04f63e8a48d61a586c25ad0136b64472afc1fceb0" - }, - { - "hash": "a72edc27064c2cbfbbae17ea1695333e1b3d9595", - "channel": "beta", - "version": "v1.9.1+hotfix.3", - "release_date": "2019-09-26T01:35:22.763274Z", - "archive": "beta/macos/flutter_macos_v1.9.1+hotfix.3-beta.zip", - "sha256": "35731c8dc802e0a7a01d84b0588fc407d44a261e077b416ee7f105b5645721e2" - }, - { - "hash": "cc3ca9a916cb1da851a1f36432154a534787da99", - "channel": "dev", - "version": "v1.10.6", - "release_date": "2019-09-25T22:53:13.031979Z", - "archive": "dev/macos/flutter_macos_v1.10.6-dev.zip", - "sha256": "a0d2365cae104784db033043443066e783ada68c5533066b0f93f43c19134205" - }, - { - "hash": "2d2a1ffec95cc70a3218872a2cd3f8de4933c42f", - "channel": "stable", - "version": "v1.9.1+hotfix.2", - "release_date": "2019-09-22T17:25:47.596083Z", - "archive": "stable/macos/flutter_macos_v1.9.1+hotfix.2-stable.zip", - "sha256": "8f7a5cfa1494b6758e1b9b7913871a60934c7f3d487979a6ef176ce4f2a7b4a3" - }, - { - "hash": "2d2a1ffec95cc70a3218872a2cd3f8de4933c42f", - "channel": "beta", - "version": "v1.9.1+hotfix.2", - "release_date": "2019-09-20T17:23:40.096912Z", - "archive": "beta/macos/flutter_macos_v1.9.1+hotfix.2-beta.zip", - "sha256": "9ad4a7b9bf2e7fd6140876f243670d9264c771cb1c19a5dc89c060eac2665054" - }, - { - "hash": "3cf88fed6d9b016f83a4920a5db524bf5a2d2b64", - "channel": "dev", - "version": "v1.10.5", - "release_date": "2019-09-19T23:19:33.766446Z", - "archive": "dev/macos/flutter_macos_v1.10.5-dev.zip", - "sha256": "08b525b957e779035773896faee1a6ddc6b1d9750b0149825bb3cf75ca84e3a3" - }, - { - "hash": "0b24a5a2ff9eccfba77bb68a0abcf1b7f0ae5b37", - "channel": "dev", - "version": "v1.10.4", - "release_date": "2019-09-19T04:06:55.900209Z", - "archive": "dev/macos/flutter_macos_v1.10.4-dev.zip", - "sha256": "1a5240b9c7154846a3417a3e146d42e268ef36c290c86bc0c45efd378d110187" - }, - { - "hash": "2f3515de31c0479cd09ad11cdc079281270405f4", - "channel": "dev", - "version": "v1.10.3", - "release_date": "2019-09-17T21:07:28.401191Z", - "archive": "dev/macos/flutter_macos_v1.10.3-dev.zip", - "sha256": "2f378aafe73da509b45016f19ab1d114bbc17974d14cedb8eb5de8a0ccc9e947" - }, - { - "hash": "f5733f7a62ebc7c2ba324a2b410cd81215956b7d", - "channel": "dev", - "version": "v1.10.2", - "release_date": "2019-09-14T00:04:24.950151Z", - "archive": "dev/macos/flutter_macos_v1.10.2-dev.zip", - "sha256": "471aeb0deb6e855f96ea0f250b268c185a02221549136e3325e2449a7ae41e50" - }, - { - "hash": "ce45c2d3e6f02022f73bd3804775cb9a89c08b49", - "channel": "dev", - "version": "v1.10.1", - "release_date": "2019-09-09T23:42:33.595047Z", - "archive": "dev/macos/flutter_macos_v1.10.1-dev.zip", - "sha256": "ac2d2ffe62fb2960f7eb5eb6be6de02f7319337af47ebbd68fe90a58f7e18973" - }, - { - "hash": "3932ffb1cd5dfa0c3891c60977ee4f9cd70ade66", - "channel": "dev", - "version": "v1.10.0", - "release_date": "2019-09-06T19:53:59.522079Z", - "archive": "dev/macos/flutter_macos_v1.10.0-dev.zip", - "sha256": "f1a1237ee4747392bc193570887c9c8ff6b5cb05b6a9728b09f73ed7f95143f9" - }, - { - "hash": "a1fb3fabec40144f57344635c37c28eed4fb122b", - "channel": "beta", - "version": "v1.9.1+hotfix.1", - "release_date": "2019-09-04T01:26:43.131985Z", - "archive": "beta/macos/flutter_macos_v1.9.1+hotfix.1-beta.zip", - "sha256": "9fd280edae7800cc6bc02907e120562fc7bea0252693b8e9ad9e76c41339b1c8" - }, - { - "hash": "4984d1a33dd6de2862578e3f08b4ca7dfce7d54b", - "channel": "dev", - "version": "v1.9.7", - "release_date": "2019-08-29T17:34:49.474675Z", - "archive": "dev/macos/flutter_macos_v1.9.7-dev.zip", - "sha256": "b1c04c4c50a61abb80d05c378eba5ddc7f2aac01c1804afd886a3e2686e8a151" - }, - { - "hash": "35de8d527842f99e30240a7fbf08cd4638ba7a5d", - "channel": "dev", - "version": "v1.9.6", - "release_date": "2019-08-29T02:29:28.108206Z", - "archive": "dev/macos/flutter_macos_v1.9.6-dev.zip", - "sha256": "d7c394a60b9a566a191a004b076d683afc94260789ebf7af754d4e7ac8c61d78" - }, - { - "hash": "365f577c707b092f9b97b62b0cdb331c2d7fcf75", - "channel": "dev", - "version": "v1.9.5", - "release_date": "2019-08-24T04:02:38.656809Z", - "archive": "dev/macos/flutter_macos_v1.9.5-dev.zip", - "sha256": "795531b9e720b5f3ff64a367c5cccdc4c76b09f167872a3c564321b691d0f0d0" - }, - { - "hash": "cf87f68fd08d697273c780d09fc647616749e8b1", - "channel": "dev", - "version": "v1.9.4", - "release_date": "2019-08-23T21:55:49.749504Z", - "archive": "dev/macos/flutter_macos_v1.9.4-dev.zip", - "sha256": "ac196557fdfcdd63de5cfb4241a317804f9ed349ea86de1a3f9808a01aa8a0f4" - }, - { - "hash": "f515bf6abc909fddca311dca78837ce478e571aa", - "channel": "dev", - "version": "v1.9.3", - "release_date": "2019-08-22T17:01:57.004320Z", - "archive": "dev/macos/flutter_macos_v1.9.3-dev.zip", - "sha256": "af1133b453fd05dcd7bd276fd6f85f795f2ebd59083bf1982117c0f0ea017d94" - }, - { - "hash": "6815f540c996b5baf559ef075a906ab1bec05a18", - "channel": "dev", - "version": "v1.9.2", - "release_date": "2019-08-21T23:35:20.920127Z", - "archive": "dev/macos/flutter_macos_v1.9.2-dev.zip", - "sha256": "9645c032dbf679495883d41b528663b5d0959027c4b2f54fd19c4ef3ee954729" - }, - { - "hash": "c382b8e990b6976f610764179f94e0416d82c057", - "channel": "dev", - "version": "v1.9.1", - "release_date": "2019-08-21T18:51:55.515734Z", - "archive": "dev/macos/flutter_macos_v1.9.1-dev.zip", - "sha256": "541d04e04c98a011d730328cf03e8b32515881830637c07047349e520ef4cdde" - }, - { - "hash": "760635e6dbf9180222171ac189199982a65cf608", - "channel": "dev", - "version": "v1.9.0", - "release_date": "2019-08-15T22:18:40.037328Z", - "archive": "dev/macos/flutter_macos_v1.9.0-dev.zip", - "sha256": "c67179742d6dc65edfaa8f8bb3b59eecf4408c5336e9ce4657caa3bf2408dfad" - }, - { - "hash": "e4ebcdf6f4facee5779c38a04d91d08dc58ea7a4", - "channel": "beta", - "version": "v1.8.3", - "release_date": "2019-08-08T21:36:41.122918Z", - "archive": "beta/macos/flutter_macos_v1.8.3-beta.zip", - "sha256": "c613ef3800524c16cff156485f42f806415e94abe2d8bfc376ba187b26a1c74c" - }, - { - "hash": "954714c9674af0da6530795407fc66179fdaef88", - "channel": "dev", - "version": "v1.8.4", - "release_date": "2019-08-07T17:11:57.356563Z", - "archive": "dev/macos/flutter_macos_v1.8.4-dev.zip", - "sha256": "88da5e437ef3b1d8f3f14fbde7c0978d2cd2d2e2fc1c3940c7cc945bb7acf54a" - }, - { - "hash": "e4ebcdf6f4facee5779c38a04d91d08dc58ea7a4", - "channel": "dev", - "version": "v1.8.3", - "release_date": "2019-07-31T20:23:18.150681Z", - "archive": "dev/macos/flutter_macos_v1.8.3-dev.zip", - "sha256": "668bce0fc7a69dac4f1547643620611df0dac953db5b6ab643dacb96086f999f" - }, - { - "hash": "20e59316b8b8474554b38493b8ca888794b0234a", - "channel": "stable", - "version": "v1.7.8+hotfix.4", - "release_date": "2019-07-24T16:12:16.403397Z", - "archive": "stable/macos/flutter_macos_v1.7.8+hotfix.4-stable.zip", - "sha256": "598ec693cd37a7fc8d3ad183fd477708e0492d5edf30b522fdb8157bde35e2fb" - }, - { - "hash": "20e59316b8b8474554b38493b8ca888794b0234a", - "channel": "beta", - "version": "v1.7.8+hotfix.4", - "release_date": "2019-07-19T20:57:39.807414Z", - "archive": "beta/macos/flutter_macos_v1.7.8+hotfix.4-beta.zip", - "sha256": "6daa429855e6ab92c1da3b4bdcc86e38a2376c29dcdb7b1c3a50e2be321c7494" - }, - { - "hash": "0a39d8d92ed43a0b7efcc93742a17660a14d78aa", - "channel": "dev", - "version": "v1.8.2", - "release_date": "2019-07-19T19:09:08.609300Z", - "archive": "dev/macos/flutter_macos_v1.8.2-dev.zip", - "sha256": "abacba408eff909a320b33ce2d49052e6bbe9bbe0622f273075f344edaee89b2" - }, - { - "hash": "d3eee57c0bd2e19aaa944be07b24c533075fd1a0", - "channel": "dev", - "version": "v1.8.1", - "release_date": "2019-07-11T21:03:08.683581Z", - "archive": "dev/macos/flutter_macos_v1.8.1-dev.zip", - "sha256": "5d14de67870da3ac8fd25be1cfc979aea18ec43e53dad76c82b691ef14748cac" - }, - { - "hash": "b712a172f9694745f50505c93340883493b505e5", - "channel": "stable", - "version": "v1.7.8+hotfix.3", - "release_date": "2019-07-09T21:21:32.068468Z", - "archive": "stable/macos/flutter_macos_v1.7.8+hotfix.3-stable.zip", - "sha256": "1bd5d165c79efebfba39e4602d6e07e74b40798630eb7173caedf0f664c53035" - }, - { - "hash": "b712a172f9694745f50505c93340883493b505e5", - "channel": "beta", - "version": "v1.7.8+hotfix.3", - "release_date": "2019-07-09T21:18:32.638162Z", - "archive": "beta/macos/flutter_macos_v1.7.8+hotfix.3-beta.zip", - "sha256": "c050bcd5e58f3c08e6255421a674196a41eb88edef9e874171e912e4e7076c16" - }, - { - "hash": "2e540931f73593e35627592ca4f9a4ca3035ed31", - "channel": "stable", - "version": "v1.7.8+hotfix.2", - "release_date": "2019-07-08T17:16:17.244121Z", - "archive": "stable/macos/flutter_macos_v1.7.8+hotfix.2-stable.zip", - "sha256": "35a133c64668cb20c87947462f7a822004734c1cb2d9ca9fe71d6d7aa1274e85" - }, - { - "hash": "2e540931f73593e35627592ca4f9a4ca3035ed31", - "channel": "beta", - "version": "v1.7.8+hotfix.2", - "release_date": "2019-07-02T16:46:32.551780Z", - "archive": "beta/macos/flutter_macos_v1.7.8+hotfix.2-beta.zip", - "sha256": "cd14d1fd6dd471fa758612dc84636697c8a8279ab698ce2c39245fd47d0b373b" - }, - { - "hash": "43b03127d469f1f6d9a22f8dae41eea2eed2afd9", - "channel": "dev", - "version": "v1.7.11", - "release_date": "2019-06-28T16:38:28.236630Z", - "archive": "dev/macos/flutter_macos_v1.7.11-dev.zip", - "sha256": "f1f2d98dbb354ae7369efbff9ffc3d50f9f8833c2045ca230e8556b4b2aab721" - }, - { - "hash": "9a3a7490c8ded5f13d4fce2e493df2a63d602e57", - "channel": "dev", - "version": "v1.7.10", - "release_date": "2019-06-26T20:47:18.215298Z", - "archive": "dev/macos/flutter_macos_v1.7.10-dev.zip", - "sha256": "44cbe4ccc92829093b1f60ba31d88f5b52da44d361a8c262fa077558bf0600e0" - }, - { - "hash": "8dbfc82bc7f94c721efaeff904b4388d222c7919", - "channel": "dev", - "version": "v1.7.9", - "release_date": "2019-06-25T02:37:40.164666Z", - "archive": "dev/macos/flutter_macos_v1.7.9-dev.zip", - "sha256": "bdbd2fd93103956c7f605853f6c76108d18db9aa09242715780a5255c5c20cea" - }, - { - "hash": "d51fd86cdb486192e187ccdf6f02cb2a38273d8d", - "channel": "dev", - "version": "v1.7.8", - "release_date": "2019-06-22T06:37:29.023317Z", - "archive": "dev/macos/flutter_macos_v1.7.8-dev.zip", - "sha256": "89aa0ca53250ec2f0fbd9f87818f0459239c63071952acec4ed1989536c238fd" - }, - { - "hash": "363052567376976b68bc995905397156fc5a28a0", - "channel": "dev", - "version": "v1.7.7", - "release_date": "2019-06-22T01:02:37.023629Z", - "archive": "dev/macos/flutter_macos_v1.7.7-dev.zip", - "sha256": "30fae3ed78296b88ddae474a97474ee3bd2674c69de6add65ca0ae2049858a18" - }, - { - "hash": "63438b924497ed9479f4c69a03d399bcbc2b4781", - "channel": "dev", - "version": "v1.7.6", - "release_date": "2019-06-21T23:09:14.676333Z", - "archive": "dev/macos/flutter_macos_v1.7.6-dev.zip", - "sha256": "5d830f5d916e8aae28606783bd5e8b587d23a6f4b1543f0637ed7573a184fc4f" - }, - { - "hash": "dfecafa4ab30f9c509ce409241000cdd785ef23d", - "channel": "dev", - "version": "v1.7.4", - "release_date": "2019-06-14T19:51:51.886849Z", - "archive": "dev/macos/flutter_macos_v1.7.4-dev.zip", - "sha256": "d40faadfd65063948a2b2208fdf051fb89d0fdff9874ca72bb9f806c421730e5" - }, - { - "hash": "362b999b90d53859aa7b926a59c970f3ea31abf4", - "channel": "dev", - "version": "v1.7.3", - "release_date": "2019-06-07T22:17:20.191613Z", - "archive": "dev/macos/flutter_macos_v1.7.3-dev.zip", - "sha256": "57c75d52e20b338ab5af33ec03fe26694be318e7916e767cd423ab4c50d0b937" - }, - { - "hash": "b3b6d03737bd3f61209570e86f2b045c80f35c44", - "channel": "dev", - "version": "v1.7.2", - "release_date": "2019-06-06T16:52:12.795262Z", - "archive": "dev/macos/flutter_macos_v1.7.2-dev.zip", - "sha256": "7929233b7c09fce68bdff2bb87ea24417b5d0562b97b17f2d3a2b1aa372c6db2" - }, - { - "hash": "04015b987b8b9ccb4b428decadf2b9f5cd25dc91", - "channel": "dev", - "version": "v1.7.1", - "release_date": "2019-06-04T19:29:22.762282Z", - "archive": "dev/macos/flutter_macos_v1.7.1-dev.zip", - "sha256": "0fcf1c790048acb4a462d239a420788ff41e309e54d1f59136deaaffe0dca1b6" - }, - { - "hash": "f36a35d20ac5dc2936cab6ccc60f5d9afa34466e", - "channel": "dev", - "version": "v1.7.0", - "release_date": "2019-06-03T20:23:42.315159Z", - "archive": "dev/macos/flutter_macos_v1.7.0-dev.zip", - "sha256": "c18a10dc4696c9e487408784d101c0aa839719fbd18e58414a995a7b01ebda98" - }, - { - "hash": "cba41ca2ec977888806a9a02fc06c459f7a806ae", - "channel": "dev", - "version": "v1.6.7", - "release_date": "2019-05-31T18:03:52.104260Z", - "archive": "dev/macos/flutter_macos_v1.6.7-dev.zip", - "sha256": "f7b63be74a3bd0f041efa6479178fec0cc4f8102d1c1eda32209748aa5eaf201" - }, - { - "hash": "bc7bc940836f1f834699625426795fd6f07c18ec", - "channel": "beta", - "version": "v1.6.3", - "release_date": "2019-05-30T23:13:21.558110Z", - "archive": "beta/macos/flutter_macos_v1.6.3-beta.zip", - "sha256": "ab84b4bc19630620890ce992f637e7347120247bdcfa62d39bacdc7eb06e67ee" - }, - { - "hash": "e1a784ae3f82948c33c256666c73680420f11350", - "channel": "dev", - "version": "v1.6.6", - "release_date": "2019-05-29T20:49:33.945826Z", - "archive": "dev/macos/flutter_macos_v1.6.6-dev.zip", - "sha256": "6f7db3560dfb25eb55e8951b3a19fc448b9242d1b4e712fb539f97f54148b20a" - }, - { - "hash": "7c811b6a66bcbab62f87c8768decc449027e5190", - "channel": "dev", - "version": "v1.6.5", - "release_date": "2019-05-28T23:15:00.190474Z", - "archive": "dev/macos/flutter_macos_v1.6.5-dev.zip", - "sha256": "71bc58c2f8066091f45066c80f250b09ea34f977bcaf656784966e46cd406363" - }, - { - "hash": "0f6e4e6190d1c128b8baadd2dee3b2a8923d3f86", - "channel": "dev", - "version": "v1.6.4", - "release_date": "2019-05-28T20:13:29.121162Z", - "archive": "dev/macos/flutter_macos_v1.6.4-dev.zip", - "sha256": "fdb98498334c49e1b42fcc47c9a90eb10ca8d58de915557f8aebafee78e1b23b" - }, - { - "hash": "bc7bc940836f1f834699625426795fd6f07c18ec", - "channel": "dev", - "version": "v1.6.3", - "release_date": "2019-05-24T00:29:10.397746Z", - "archive": "dev/macos/flutter_macos_v1.6.3-dev.zip", - "sha256": "262dba801711915852e909323d2cd3ae37b064ce11bce00ad71a0f550e092b2c" - }, - { - "hash": "cb576181e9549bdd9d845394b1b5feab1b93807d", - "channel": "dev", - "version": "v1.6.2", - "release_date": "2019-05-23T18:15:40.458024Z", - "archive": "dev/macos/flutter_macos_v1.6.2-dev.zip", - "sha256": "c472cc68574ee05f4499b60d642fb72f3ccfd2a6132a549af0c740fc205e215a" - }, - { - "hash": "d31ce31a274ee721f4e9b54c6dcc2de0b3fd71e4", - "channel": "dev", - "version": "v1.6.1", - "release_date": "2019-05-22T22:27:55.179390Z", - "archive": "dev/macos/flutter_macos_v1.6.1-dev.zip", - "sha256": "c81c5a2017331e2a107d5ac93e1cdd94087673b7006f3aace2e1e42a366d9d92" - }, - { - "hash": "ed90d05596d85b0ec8e841395bce9d3b6edea134", - "channel": "dev", - "version": "v1.6.0", - "release_date": "2019-05-17T10:01:58.218603Z", - "archive": "dev/macos/flutter_macos_v1.6.0-dev.zip", - "sha256": "95b9e12587e426a9da6bbe971873b534ba85d3a92c5e78a2cc3021514708140c" - }, - { - "hash": "7a4c33425ddd78c54aba07d86f3f9a4a0051769b", - "channel": "stable", - "version": "v1.5.4-hotfix.2", - "release_date": "2019-05-07T18:40:02.409130Z", - "archive": "stable/macos/flutter_macos_v1.5.4-hotfix.2-stable.zip", - "sha256": "6a2554c3754322848aa6b38e449c42d5aa9149ea82bf97f168782f68a8efa0b1" - }, - { - "hash": "7a4c33425ddd78c54aba07d86f3f9a4a0051769b", - "channel": "beta", - "version": "v1.5.4-hotfix.2", - "release_date": "2019-05-02T17:35:36.821323Z", - "archive": "beta/macos/flutter_macos_v1.5.4-hotfix.2-beta.zip", - "sha256": "7599d51d73a582617dbbd9b35421c26bcbc516dbfd89d246d50d873916b79f04" - }, - { - "hash": "09cbc34a0b19cef287a82aa4b9966d525369eecc", - "channel": "beta", - "version": "v1.5.4-hotfix.1", - "release_date": "2019-04-30T23:01:32.881481Z", - "archive": "beta/macos/flutter_macos_v1.5.4-hotfix.1-beta.zip", - "sha256": "806162ab918c0a66d14c3527bcafd9f2916e0d644942a67f9926114282058f46" - }, - { - "hash": "b593f5167bce84fb3cad5c258477bf3abc1b14eb", - "channel": "beta", - "version": "v1.5.4", - "release_date": "2019-04-26T23:58:29.254648Z", - "archive": "beta/macos/flutter_macos_v1.5.4-beta.zip", - "sha256": "f63d76051ec9b30e964b4a56e66785aa7285383ffe3e7ec805cdf2ac8006242b" - }, - { - "hash": "0ba67226ee62d6c9d663a6f8410fb4b2f1076046", - "channel": "dev", - "version": "v1.5.8", - "release_date": "2019-04-25T23:59:58.039440Z", - "archive": "dev/macos/flutter_macos_v1.5.8-dev.zip", - "sha256": "d8d67e0dd2fd74a70ce80eaf24e8e07a49612d4ce23c2b17ee8bf75565157130" - }, - { - "hash": "96f15c74adebb221eb044d3fc71b2d62da0046c0", - "channel": "dev", - "version": "v1.5.7", - "release_date": "2019-04-24T23:45:06.124805Z", - "archive": "dev/macos/flutter_macos_v1.5.7-dev.zip", - "sha256": "d9810134bd034ca730a388914a203c3aee968b939643fe0a6562ae7d8e224316" - }, - { - "hash": "e00f1a3c17f65a751c14b821235e5c2875948ff0", - "channel": "dev", - "version": "v1.5.6", - "release_date": "2019-04-24T18:36:35.094507Z", - "archive": "dev/macos/flutter_macos_v1.5.6-dev.zip", - "sha256": "434c5f587d9b15c87223c308d25a9a9e96112f7fad99e49d7df5becc256ddd74" - }, - { - "hash": "5c5ddd1fc22de7df08a6bc0e18b4ec345d702fbd", - "channel": "dev", - "version": "v1.5.5", - "release_date": "2019-04-23T23:44:54.727423Z", - "archive": "dev/macos/flutter_macos_v1.5.5-dev.zip", - "sha256": "8e26a66b6f01fce5e17e703d88f509f8ced962c2e812798bca2cef10e183a422" - }, - { - "hash": "b593f5167bce84fb3cad5c258477bf3abc1b14eb", - "channel": "dev", - "version": "v1.5.4", - "release_date": "2019-04-22T21:13:12.883907Z", - "archive": "dev/macos/flutter_macos_v1.5.4-dev.zip", - "sha256": "9f1fa686414076b3274da633634d13462faf47092d9b23c49dc2edda05993c05" - }, - { - "hash": "80971335c1ee259717076c1e9d308a9572f85259", - "channel": "dev", - "version": "v1.5.3", - "release_date": "2019-04-19T23:14:32.964844Z", - "archive": "dev/macos/flutter_macos_v1.5.3-dev.zip", - "sha256": "293b4f083be97f61a598e699b2f28b4c797a96040842eb9f892a5e1c6fbd1eaa" - }, - { - "hash": "efe744a3609d0b8e218b5d9d13823ed394261bb5", - "channel": "dev", - "version": "v1.5.2", - "release_date": "2019-04-17T21:54:22.361910Z", - "archive": "dev/macos/flutter_macos_v1.5.2-dev.zip", - "sha256": "d591efe8a3665b649cf3cfec912ae55dffbd6d72874b5ef95ee5c86ee1a132e0" - }, - { - "hash": "0f5de8725e0f6778406fb5156aee1486d39771f6", - "channel": "dev", - "version": "v1.5.1", - "release_date": "2019-04-17T06:09:37.334702Z", - "archive": "dev/macos/flutter_macos_v1.5.1-dev.zip", - "sha256": "098cf41fca2c2672bf09f67533677be312310eaed3d5ae0d1cfcc0955878eecd" - }, - { - "hash": "a18226d06619ca1d61e453205fa89bc646c3d0fc", - "channel": "dev", - "version": "v1.5.0", - "release_date": "2019-04-16T20:57:18.033340Z", - "archive": "dev/macos/flutter_macos_v1.5.0-dev.zip", - "sha256": "83d2540772a5ac9f4b79d92b890739af119ef1ef7d46c09d3a6b2596b40935f2" - }, - { - "hash": "88fa7ea4031f5c86225573e58e5558dc4ea1c251", - "channel": "beta", - "version": "v1.4.9-hotfix.1", - "release_date": "2019-04-12T21:19:10.702390Z", - "archive": "beta/macos/flutter_macos_v1.4.9-hotfix.1-beta.zip", - "sha256": "33cc477a4d6a5363d24d87bed4d3029e34b42042585b5ec63663e26980b921c9" - }, - { - "hash": "8bea3fb2ebadc3933b6b213483d2d4379ac53a5c", - "channel": "dev", - "version": "v1.4.18", - "release_date": "2019-04-12T00:27:45.245482Z", - "archive": "dev/macos/flutter_macos_v1.4.18-dev.zip", - "sha256": "4ccf8b27f91097059274bf521a6eb2bdf995d9e7a52c50ea3d8baf50954072fe" - }, - { - "hash": "ecb468f33587bad108034c1bbe21e8cbd0d94acc", - "channel": "dev", - "version": "v1.4.17", - "release_date": "2019-04-11T21:54:10.521068Z", - "archive": "dev/macos/flutter_macos_v1.4.17-dev.zip", - "sha256": "76d1a648d021a1402ca89d4ffe398a7720064c22969d88bffd9d1818807cebb2" - }, - { - "hash": "d2790bd2bbf1851db2359026df7bca38e255b9d3", - "channel": "dev", - "version": "v1.4.16", - "release_date": "2019-04-11T16:52:24.746941Z", - "archive": "dev/macos/flutter_macos_v1.4.16-dev.zip", - "sha256": "ae2207fdda9bda37b20ae41b1a2076bb26fb4eff771572a61e3a6816cc5cadcb" - }, - { - "hash": "ed91a3be49232c336ab2cf7a3376958cb3d537d2", - "channel": "dev", - "version": "v1.4.15", - "release_date": "2019-04-10T22:16:29.354978Z", - "archive": "dev/macos/flutter_macos_v1.4.15-dev.zip", - "sha256": "132b576a3202a5d5449b3c336a8a9bf4e6094ee5640d31c2e032e9674e388cf2" - }, - { - "hash": "5a4eaabaf1c0b00f8cf9ace3c63066f754facc94", - "channel": "dev", - "version": "v1.4.14", - "release_date": "2019-04-10T02:53:53.047112Z", - "archive": "dev/macos/flutter_macos_v1.4.14-dev.zip", - "sha256": "55d742dd1241bd497abcfe626affebc28fbddd648cca4d79c4b5ddcdb4548179" - }, - { - "hash": "514aba6e36d4c9429d307e643dde3398802ca56a", - "channel": "dev", - "version": "v1.4.13", - "release_date": "2019-04-10T01:29:54.216083Z", - "archive": "dev/macos/flutter_macos_v1.4.13-dev.zip", - "sha256": "a080f1764f1d8e650ed064fe9319fdf2da87fe3155b7181e01aa1a76aa3448d8" - }, - { - "hash": "294d7ea0cf0c6ff84ba43682b1dddcee18bf4114", - "channel": "dev", - "version": "v1.4.12", - "release_date": "2019-04-09T02:49:18.699117Z", - "archive": "dev/macos/flutter_macos_v1.4.12-dev.zip", - "sha256": "1565fafea19303c586605f63441837b44ab22d87549870e0589ff3c974f35c6e" - }, - { - "hash": "d15b3b1c8b0b4090fa1949b106dd3870d13341ca", - "channel": "dev", - "version": "v1.4.11", - "release_date": "2019-04-08T17:57:06.084036Z", - "archive": "dev/macos/flutter_macos_v1.4.11-dev.zip", - "sha256": "7ae00877f811014fe9faf875e3920fd2b30962987393e1823be7f55d6b6da7a8" - }, - { - "hash": "6ba720a4890bcffd0e48ec329318c929d517ce2c", - "channel": "dev", - "version": "v1.4.10", - "release_date": "2019-04-04T21:05:54.461073Z", - "archive": "dev/macos/flutter_macos_v1.4.10-dev.zip", - "sha256": "673de0b0ebceccdbb15a5ed22f1dd2cb36f8d46c412a6df804fc6cbfb1063fad" - }, - { - "hash": "16a16e6598cca4129da0d2e76de0320fbc0108f1", - "channel": "dev", - "version": "v1.4.9", - "release_date": "2019-04-04T18:29:19.369763Z", - "archive": "dev/macos/flutter_macos_v1.4.9-dev.zip", - "sha256": "40970bbe4679862a0e55fde16d4459451b7662fbbffaf4b0e71036aefbadceb8" - }, - { - "hash": "fbefd6b816a846936dbba847ce85dc1ed55e3faa", - "channel": "dev", - "version": "v1.4.8", - "release_date": "2019-04-03T01:08:28.862282Z", - "archive": "dev/macos/flutter_macos_v1.4.8-dev.zip", - "sha256": "5cf7aaa12a892ba7b8c9b61b04f23aacc0a34341158555215c457bb580116eb5" - }, - { - "hash": "1bfa2f23114829513a9d2c0a7a27d743287acc2a", - "channel": "dev", - "version": "v1.4.7", - "release_date": "2019-03-29T20:54:44.754993Z", - "archive": "dev/macos/flutter_macos_v1.4.7-dev.zip", - "sha256": "08504376d4f246a86874dee6986ff25f49c4b163e618adc3fcec344028116db4" - }, - { - "hash": "4ed13e022cae194aebdc9c5dfa6c2c3c62eeb8fb", - "channel": "dev", - "version": "v1.4.6-hotfix.1", - "release_date": "2019-03-29T20:24:53.827042Z", - "archive": "dev/macos/flutter_macos_v1.4.6-hotfix.1-dev.zip", - "sha256": "40edb07f4a9eef88ce9ff6753950604b6bde78f228a55063de0c221ee28b468c" - }, - { - "hash": "ec93c87c8902c63e5b0e71ff761f201d19dc4327", - "channel": "dev", - "version": "v1.4.6", - "release_date": "2019-03-28T23:52:45.092475Z", - "archive": "dev/macos/flutter_macos_v1.4.6-dev.zip", - "sha256": "0f11365aababc9aa61d74577ba75a8c2c0b75a39fd60d765c8952483e24370b6" - }, - { - "hash": "99866f4a3dd1bf860c846e10d02af9ad125f9fe1", - "channel": "dev", - "version": "v1.4.5", - "release_date": "2019-03-28T18:08:27.918900Z", - "archive": "dev/macos/flutter_macos_v1.4.5-dev.zip", - "sha256": "9077ea805313d45f2e30c2b672b2581920e9e4e8ff5e88023d41b8f721c538eb" - }, - { - "hash": "3b3f6c7a041978505b310b5b50390c2f5ff7eaac", - "channel": "dev", - "version": "v1.4.4", - "release_date": "2019-03-28T00:58:31.426775Z", - "archive": "dev/macos/flutter_macos_v1.4.4-dev.zip", - "sha256": "df45fa461d5de3dcf896c606072a1526d0e2ce099cc9950e974a2db6c05b9adc" - }, - { - "hash": "64a28e3685bee310e697a91612d7e30d0426cda2", - "channel": "dev", - "version": "v1.4.3", - "release_date": "2019-03-27T21:45:09.097486Z", - "archive": "dev/macos/flutter_macos_v1.4.3-dev.zip", - "sha256": "f0115e58637334018af26515815d67de8f25696bc064902831b7fac466bd5083" - }, - { - "hash": "141f87b32754267cc02bae03477c4b109b828324", - "channel": "dev", - "version": "v1.4.2", - "release_date": "2019-03-27T16:32:47.232343Z", - "archive": "dev/macos/flutter_macos_v1.4.2-dev.zip", - "sha256": "7c2992ac0685d85ea9003a1fb865133d2eec42656db6eef0c164e796fca26a2a" - }, - { - "hash": "204eceea93694aa081e0132c8281b76d3b3d6b4a", - "channel": "dev", - "version": "v1.4.1", - "release_date": "2019-03-27T01:03:48.956748Z", - "archive": "dev/macos/flutter_macos_v1.4.1-dev.zip", - "sha256": "bb10f4ef05587f76f106b9be08878fa5929e2ef2edb2cbe63988ed0202af3d1b" - }, - { - "hash": "18a08a8f4f7bca0d25f34706ebc8af231f3db9d4", - "channel": "dev", - "version": "v1.4.0", - "release_date": "2019-03-26T21:43:23.200177Z", - "archive": "dev/macos/flutter_macos_v1.4.0-dev.zip", - "sha256": "d717dd5ad55bc0a120ebf04c7dbcc59e84426e631bc17c7a5c3854092f85acf5" - }, - { - "hash": "8e7e435706553edea6d350c3843f1c0e5465a0d8", - "channel": "dev", - "version": "v1.3.14", - "release_date": "2019-03-26T00:49:21.206380Z", - "archive": "dev/macos/flutter_macos_v1.3.14-dev.zip", - "sha256": "a5a38877e467366d015e408be867bb37fc02b0f2a662fd03274922f0fb52517c" - }, - { - "hash": "59ce7d6bff0d0626ae4b90787bf993ebcdc4b110", - "channel": "dev", - "version": "v1.3.13", - "release_date": "2019-03-19T04:52:35.200692Z", - "archive": "dev/macos/flutter_macos_v1.3.13-dev.zip", - "sha256": "c400bb5e1ae3b5ae34f031bea318ccfce106c427aeddba6f3d48af97c703a5ee" - }, - { - "hash": "a1bee54fda83026c01edd53ba32f01736b4ee4ad", - "channel": "dev", - "version": "v1.3.12", - "release_date": "2019-03-19T03:17:38.625504Z", - "archive": "dev/macos/flutter_macos_v1.3.12-dev.zip", - "sha256": "8d66535cd5fcf5cb25eda19bf05c86b0b99ac74127d07b8adb9ea68c104e176f" - }, - { - "hash": "73fb457cae005cde3e351fc9e1ba1b43de458aad", - "channel": "dev", - "version": "v1.3.11", - "release_date": "2019-03-18T16:44:05.459212Z", - "archive": "dev/macos/flutter_macos_v1.3.11-dev.zip", - "sha256": "97329f01c02cfd57433e1fef8cb0f61b67f34e6573a43d273af8b7c13b84ac79" - }, - { - "hash": "e5b1ed7a7f7b85c1877e09a9495681f719be5578", - "channel": "beta", - "version": "v1.3.8", - "release_date": "2019-03-16T02:04:11.461635Z", - "archive": "beta/macos/flutter_macos_v1.3.8-beta.zip", - "sha256": "fe9d8b1a335e4bdab6827cfd5831ffd8e29743d4254bfff67071993cc5562a36" - }, - { - "hash": "4feefa3c9a2176ca7383246c4c01b36254fbec85", - "channel": "dev", - "version": "v1.3.10", - "release_date": "2019-03-15T05:53:44.174763Z", - "archive": "dev/macos/flutter_macos_v1.3.10-dev.zip", - "sha256": "c33071c211bc78785a8dd18225f76ecfcfc27f087bb76187f55ea190bf779303" - }, - { - "hash": "f91df4abe1427fef8862c9e81b2e5af6fc05a67a", - "channel": "dev", - "version": "v1.3.9", - "release_date": "2019-03-10T05:26:15.030272Z", - "archive": "dev/macos/flutter_macos_v1.3.9-dev.zip", - "sha256": "8c22060eb9aabf699f323c203e0bd534e318311540398e8f11209979b7ec6228" - }, - { - "hash": "e5b1ed7a7f7b85c1877e09a9495681f719be5578", - "channel": "dev", - "version": "v1.3.8", - "release_date": "2019-03-07T22:38:31.019482Z", - "archive": "dev/macos/flutter_macos_v1.3.8-dev.zip", - "sha256": "10677954fc17bb40196af7592e69f2566b5d62e780e8c9f9bf8a07fc8e9d4728" - }, - { - "hash": "01a29b85eff7dd4b2d4958f61adf1840042471cc", - "channel": "dev", - "version": "v1.3.7", - "release_date": "2019-03-07T15:14:53.486712Z", - "archive": "dev/macos/flutter_macos_v1.3.7-dev.zip", - "sha256": "0fdcb5a2825265229a0415a8f6326f910ca05bcc1dc446c07857cf294222b1e0" - }, - { - "hash": "5099701f88f49ec12ebca676d8e61149917bde9c", - "channel": "dev", - "version": "v1.3.6", - "release_date": "2019-03-07T15:12:50.013392Z", - "archive": "dev/macos/flutter_macos_v1.3.6-dev.zip", - "sha256": "b9ea34213c4f055447c05b0771cbe3c75ea59fc87fdee700a00698ee1d7777bb" - }, - { - "hash": "7fc14a55af64462763d28abfb4e610086c6e0f39", - "channel": "dev", - "version": "v1.3.4", - "release_date": "2019-03-05T15:55:17.425857Z", - "archive": "dev/macos/flutter_macos_v1.3.4-dev.zip", - "sha256": "6d45244f410f94d84fcbfebf5b8db79b4dec7d310d06f97bdb90ed189e1392c4" - }, - { - "hash": "778e95a39b82688662e8be7cbe2deb31cad33203", - "channel": "dev", - "version": "v1.3.3", - "release_date": "2019-03-04T16:13:50.354428Z", - "archive": "dev/macos/flutter_macos_v1.3.3-dev.zip", - "sha256": "a9fc6689f3d4c1790b6752d4ade489567ea15401aa18689c255a16fe31e5ce7d" - }, - { - "hash": "046f960ae210afc3887721b1b5aa1dbdab4105cb", - "channel": "dev", - "version": "v1.3.2", - "release_date": "2019-03-01T09:51:23.708363Z", - "archive": "dev/macos/flutter_macos_v1.3.2-dev.zip", - "sha256": "77a0089733121ccce48b4efd502c223d583beebf4bb43c4db1dc42f9c59d101d" - }, - { - "hash": "6ed9da35c3a4f6cc79d4f91bf850159908daad8e", - "channel": "dev", - "version": "v1.3.1", - "release_date": "2019-03-01T01:59:53.451231Z", - "archive": "dev/macos/flutter_macos_v1.3.1-dev.zip", - "sha256": "c94b3f3db79765ab09a1d773c4d5d77e95b243df686b46e7f61f3982f1f047bd" - }, - { - "hash": "3054a935791bf0bcc34ba0a111df794ddb7a3589", - "channel": "dev", - "version": "v1.3.0", - "release_date": "2019-02-28T04:54:07.243720Z", - "archive": "dev/macos/flutter_macos_v1.3.0-dev.zip", - "sha256": "2a4b488d45ecec784154be7e3b453d9e72078a870cb8d1f5b0f24f9dfb246f00" - }, - { - "hash": "007a415c2a2fa37e8fd5ad87d6710bca8e212ef1", - "channel": "dev", - "version": "v1.2.2", - "release_date": "2019-02-27T23:31:52.138474Z", - "archive": "dev/macos/flutter_macos_v1.2.2-dev.zip", - "sha256": "38fd892c7c9b9e34aadf95b493a74cc58337731df84682ea664afc36b2513ceb" - }, - { - "hash": "8661d8aecd626f7f57ccbcb735553edc05a2e713", - "channel": "stable", - "version": "v1.2.1", - "release_date": "2019-02-26T17:22:46.128701Z", - "archive": "stable/macos/flutter_macos_v1.2.1-stable.zip", - "sha256": "74ac8397ea29720f116980ea00cf60c34430be1f64489b407f7cf95553babbef" - }, - { - "hash": "8661d8aecd626f7f57ccbcb735553edc05a2e713", - "channel": "beta", - "version": "v1.2.1", - "release_date": "2019-02-26T01:23:29.498628Z", - "archive": "beta/macos/flutter_macos_v1.2.1-beta.zip", - "sha256": "cdb95145c16e58704ef71087187a3f0b90c4760c1ca1a855ece17155169e11e3" - }, - { - "hash": "8661d8aecd626f7f57ccbcb735553edc05a2e713", - "channel": "dev", - "version": "v1.2.1", - "release_date": "2019-02-15T06:26:08.814621Z", - "archive": "dev/macos/flutter_macos_v1.2.1-dev.zip", - "sha256": "f9f95e2fa9167ec32f34716abd087ce5a52b281fbd3b70f1d716dd9351525b2c" - }, - { - "hash": "06b979c4d5e1b499745422269f01a00341257058", - "channel": "dev", - "version": "v1.2.0", - "release_date": "2019-01-31T03:36:51.992657Z", - "archive": "dev/macos/flutter_macos_v1.2.0-dev.zip", - "sha256": "c90ac606896ac85799b2b194f3d18114bfe45ae8067e12baf3d0c94e6affbc70" - }, - { - "hash": "985ccb6d14c6ce5ce74823a4d366df2438eac44f", - "channel": "beta", - "version": "v1.1.8", - "release_date": "2019-01-29T21:37:19.769897Z", - "archive": "beta/macos/flutter_macos_v1.1.8-beta.zip", - "sha256": "6bb230c1154cde5f083adcb994c48b7b33333b70c199bc6f98610df640001b9d" - }, - { - "hash": "985ccb6d14c6ce5ce74823a4d366df2438eac44f", - "channel": "dev", - "version": "v1.1.8", - "release_date": "2019-01-11T02:23:01.240276Z", - "archive": "dev/macos/flutter_macos_v1.1.8-dev.zip", - "sha256": "755184f315aa3fc6bf629bb71d4cbbeac787df4d6a394878aeff1c288ffbdcfe" - }, - { - "hash": "3cca1a2ec35604ca50f9c656b8e761b07a00a9ed", - "channel": "dev", - "version": "v1.1.0", - "release_date": "2018-12-12T00:32:24.135954Z", - "archive": "dev/macos/flutter_macos_v1.1.0-dev.zip", - "sha256": "1f762b8816f03680fed73c169fd1826a7bb7e84828a68daa63415f7f03c8ac40" - }, - { - "hash": "5391447fae6209bb21a89e6a5a6583cac1af9b4b", - "channel": "stable", - "version": "v1.0.0", - "release_date": "2018-12-04T17:37:46.771069Z", - "archive": "stable/macos/flutter_macos_v1.0.0-stable.zip", - "sha256": "0b4cacbe84fd68cc9cfe213a90ddcdba558e45c19be30c6173c07a318be34014" - }, - { - "hash": "5391447fae6209bb21a89e6a5a6583cac1af9b4b", - "channel": "beta", - "version": "v1.0.0", - "release_date": "2018-12-04T16:59:40.853269Z", - "archive": "beta/macos/flutter_macos_v1.0.0-beta.zip", - "sha256": "4a5d909394b797535c15fc3d838e3b331fd9b97ab4a6fc6f87f8920d4e284821" - }, - { - "hash": "5391447fae6209bb21a89e6a5a6583cac1af9b4b", - "channel": "dev", - "version": "v1.0.0", - "release_date": "2018-12-04T16:59:30.629612Z", - "archive": "dev/macos/flutter_macos_v1.0.0-dev.zip", - "sha256": "405dee3c934c76776c12d807663983de5b34aa55e62595551b6231ee5dea5a67" - }, - { - "hash": "58c8489fcdb4e4ef6c010117584c9b23d15221aa", - "channel": "beta", - "version": "v0.11.13", - "release_date": "2018-11-30T05:17:18.938213Z", - "archive": "beta/macos/flutter_macos_v0.11.13-beta.zip", - "sha256": "785b82a0aecc70bab7d1dd005ae7bdcd201079b69a0e638d258379d77f8df9e9" - }, - { - "hash": "58c8489fcdb4e4ef6c010117584c9b23d15221aa", - "channel": "dev", - "version": "v0.11.13", - "release_date": "2018-11-30T05:02:21.793573Z", - "archive": "dev/macos/flutter_macos_v0.11.13-dev.zip", - "sha256": "572f48f4bad69bbe093b0071c3b186af904ee230f343a309d66bd740e86f2136" - }, - { - "hash": "06ec8d3b41beb469d845626e36a246ee09300fa7", - "channel": "beta", - "version": "v0.11.12", - "release_date": "2018-11-29T03:49:22.309761Z", - "archive": "beta/macos/flutter_macos_v0.11.12-beta.zip", - "sha256": "6c5ddf57aa46b6bf70752519df5e7a80af4db574a62635f30cbce6513903db44" - }, - { - "hash": "06ec8d3b41beb469d845626e36a246ee09300fa7", - "channel": "dev", - "version": "v0.11.12", - "release_date": "2018-11-29T03:49:19.778700Z", - "archive": "dev/macos/flutter_macos_v0.11.12-dev.zip", - "sha256": "1a988b1389d15693d6299d9ac07bd3180d0d053640fef6afa7c2dbe7315ac037" - }, - { - "hash": "e7680128afbbde443d69f89bb264015276a8475a", - "channel": "dev", - "version": "v0.11.11", - "release_date": "2018-11-28T16:55:05.230876Z", - "archive": "dev/macos/flutter_macos_v0.11.11-dev.zip", - "sha256": "09e3d5d5a4bbe4cc61a0f098ed9c13010c017db53f0cb32bcf50ec3c2a79771d" - }, - { - "hash": "c27c4a265e9ad295e5d434cddabbc639b2e3542d", - "channel": "beta", - "version": "v0.11.10", - "release_date": "2018-11-27T06:49:26.270290Z", - "archive": "beta/macos/flutter_macos_v0.11.10-beta.zip", - "sha256": "04d964ca168cb978a047db272e2779d73141236e8979d3d986f71d98b7a4b9b0" - }, - { - "hash": "d48e6e433cc5ca67b24b19f70aaa197e84ba63c1", - "channel": "beta", - "version": "v0.11.9", - "release_date": "2018-11-21T07:47:40.462828Z", - "archive": "beta/macos/flutter_macos_v0.11.9-beta.zip", - "sha256": "f187c40975db826ffb03b8a2f0eb98b8bfc78d3d26c7633cc4605af688dea089" - }, - { - "hash": "d48e6e433cc5ca67b24b19f70aaa197e84ba63c1", - "channel": "dev", - "version": "v0.11.9", - "release_date": "2018-11-21T07:47:36.854437Z", - "archive": "dev/macos/flutter_macos_v0.11.9-dev.zip", - "sha256": "e91b8394cc3c51cc4daf6873ef915cc0de38d3e29726315925a03c1196d272c4" - }, - { - "hash": "f5b02e3c05ed1ab31e890add84fb56e35de2d392", - "channel": "beta", - "version": "v0.11.8", - "release_date": "2018-11-20T18:46:12.378987Z", - "archive": "beta/macos/flutter_macos_v0.11.8-beta.zip", - "sha256": "87d067b52b932b22f72485f99d3bd51d87e3f2f9e0ea1a5fc169945d2ee66af6" - }, - { - "hash": "f5b02e3c05ed1ab31e890add84fb56e35de2d392", - "channel": "dev", - "version": "v0.11.8", - "release_date": "2018-11-20T18:33:49.629237Z", - "archive": "dev/macos/flutter_macos_v0.11.8-dev.zip", - "sha256": "d09b1b7a0296ac0b2475e12edfdf31af1baea034865e8c99050825acec7c3676" - }, - { - "hash": "7a005e1dcda665ace7241a24e79fae1a71f17b18", - "channel": "beta", - "version": "v0.11.7", - "release_date": "2018-11-19T19:10:09.112762Z", - "archive": "beta/macos/flutter_macos_v0.11.7-beta.zip", - "sha256": "c6bb0a3c97760c6776a5759bcfd89121dd7014fb0d81ae162207c6a8f5c93ebe" - }, - { - "hash": "7a005e1dcda665ace7241a24e79fae1a71f17b18", - "channel": "dev", - "version": "v0.11.7", - "release_date": "2018-11-19T19:01:30.611094Z", - "archive": "dev/macos/flutter_macos_v0.11.7-dev.zip", - "sha256": "0ab5ddaec43e3aa1ce819c227dcdd6b2598c793b9ebfdf6238d8568cb68e7c9e" - }, - { - "hash": "d44aa57c120c30d523c937a0455a6af30e743da9", - "channel": "dev", - "version": "v0.11.6", - "release_date": "2018-11-14T23:18:29.453512Z", - "archive": "dev/macos/flutter_macos_v0.11.6-dev.zip", - "sha256": "4f27709574b8bedd9bcdec86870490857b76a4521e336d7d48d2fb99b57f2ae2" - }, - { - "hash": "97e03104a0913886a666a36f5d11ab5763d45e6e", - "channel": "dev", - "version": "v0.11.5", - "release_date": "2018-11-14T07:49:10.598417Z", - "archive": "dev/macos/flutter_macos_v0.11.5-dev.zip", - "sha256": "7eb99bbd0e749d24f103882425d30fb0239af793a52171105d26fcf23bd6649c" - }, - { - "hash": "df57dc9da9905744fa0b49fe30254d6d7b204d5b", - "channel": "dev", - "version": "v0.11.4", - "release_date": "2018-11-13T19:12:40.638811Z", - "archive": "dev/macos/flutter_macos_v0.11.4-dev.zip", - "sha256": "a61ea6a6da68e0412adf535d51007798af2d665e97d38660a56f7c8d34c03180" - }, - { - "hash": "72bf075e8d6961d2ca6df462b2228954f8d0e73a", - "channel": "beta", - "version": "v0.11.3", - "release_date": "2018-11-13T00:59:15.758582Z", - "archive": "beta/macos/flutter_macos_v0.11.3-beta.zip", - "sha256": "99d49539abacbc22ce016f04e89df38e2b1e63b00d4bd74feb65c2a23fe5f1a2" - }, - { - "hash": "72bf075e8d6961d2ca6df462b2228954f8d0e73a", - "channel": "dev", - "version": "v0.11.3", - "release_date": "2018-11-11T18:12:21.062501Z", - "archive": "dev/macos/flutter_macos_v0.11.3-dev.zip", - "sha256": "8aec54e68fede6df283dded62590107c11a3eed0773dbef4986aefc11f31feef" - }, - { - "hash": "e32cd85446c6fd5afdbe1ba463c18e2b2ee27781", - "channel": "dev", - "version": "v0.11.2", - "release_date": "2018-11-10T02:35:37.339490Z", - "archive": "dev/macos/flutter_macos_v0.11.2-dev.zip", - "sha256": "de3bec610d207fc1cb8350abbd7f0fb6153f5bb103092776279228aecab6a938" - }, - { - "hash": "756d5938d4eb4ef1572075fae7744502d870c7ba", - "channel": "dev", - "version": "v0.11.1", - "release_date": "2018-11-09T23:44:30.690727Z", - "archive": "dev/macos/flutter_macos_v0.11.1-dev.zip", - "sha256": "18d3cad12039c33bf1a8bb5a19b8fb2843cddf40a21c0085a8128bd12221d62b" - }, - { - "hash": "c319b890b33f2c15af043f2ab857e7c2944beefa", - "channel": "dev", - "version": "v0.11.0", - "release_date": "2018-11-08T19:51:48.451376Z", - "archive": "dev/macos/flutter_macos_v0.11.0-dev.zip", - "sha256": "28dd2b975647fdef944a23b32b7179097ba9c41e736ad12195702475b0280a20" - }, - { - "hash": "d8cbb80206db06d151206f8b599b7dde5a386a2d", - "channel": "beta", - "version": "v0.10.2", - "release_date": "2018-11-06T18:20:50.794351Z", - "archive": "beta/macos/flutter_macos_v0.10.2-beta.zip", - "sha256": "cd618ffee3b5ed16ad0f861054cb82229151baa0e797a62ee4082f541d81892b" - }, - { - "hash": "d8cbb80206db06d151206f8b599b7dde5a386a2d", - "channel": "dev", - "version": "v0.10.2", - "release_date": "2018-11-01T23:41:08.780112Z", - "archive": "dev/macos/flutter_macos_v0.10.2-dev.zip", - "sha256": "69912d86047e80a0c87bee71e5e1e23256007afe9f764d59f342eeb70576c001" - }, - { - "hash": "323d1574c6cecf1163c61f8b2a4bdaa0b3f9c32f", - "channel": "dev", - "version": "v0.10.1", - "release_date": "2018-10-22T23:04:44.641812Z", - "archive": "dev/macos/flutter_macos_v0.10.1-dev.zip", - "sha256": "e3c04023b51b5b49023021018a864b1ff212c58bc48a5a7f68008c74f9d8637a" - }, - { - "hash": "d954ae6850a06ea461d5595cef424e278ed9f17f", - "channel": "dev", - "version": "v0.10.0", - "release_date": "2018-10-10T00:37:37.247404Z", - "archive": "dev/macos/flutter_macos_v0.10.0-dev.zip", - "sha256": "d210dd6bdcd19f40b22277723ad6bfcaa6e72ce3412910fd936b5fc4b5644565" - }, - { - "hash": "f37c235c32fc15babe6dc7b7bc2ee4387e5ecf92", - "channel": "beta", - "version": "v0.9.4", - "release_date": "2018-10-09T21:54:19.704934Z", - "archive": "beta/macos/flutter_macos_v0.9.4-beta.zip", - "sha256": "1aad6d6d0e2709923a2ed4c4a3a661bb4a2b59d94206963efe103a7b81f4dce4" - }, - { - "hash": "a68b03e9cefa549d70885fe5390dee9d2c0ad30b", - "channel": "dev", - "version": "v0.9.6", - "release_date": "2018-10-04T16:48:01.255867Z", - "archive": "dev/macos/flutter_macos_v0.9.6-dev.zip", - "sha256": "3cc100be496e0b0d39320e07c1a78a4d78c95837ff076a37fb6b81b9b4cdec4d" - }, - { - "hash": "020fd590b032c403b82688933e67474215b1debc", - "channel": "dev", - "version": "v0.9.5", - "release_date": "2018-09-28T22:51:17.627280Z", - "archive": "dev/macos/flutter_macos_v0.9.5-dev.zip", - "sha256": "010d58257459af8e3fd22503088e43cf9896b3919e2f79affa4a1afa289b136d" - }, - { - "hash": "f37c235c32fc15babe6dc7b7bc2ee4387e5ecf92", - "channel": "dev", - "version": "v0.9.4", - "release_date": "2018-09-27T02:00:40.790064Z", - "archive": "dev/macos/flutter_macos_v0.9.4-dev.zip", - "sha256": "94a46a9dac4db4e71610f975e21393c43225261adf3d6f49488c68000cbbf3c6" - }, - { - "hash": "eed8c7ad07a2ba90b0a57d0aa7cc6ebed1864ecd", - "channel": "dev", - "version": "v0.9.3", - "release_date": "2018-09-25T20:29:43.779828Z", - "archive": "dev/macos/flutter_macos_v0.9.3-dev.zip", - "sha256": "8dfdcd1c3d648ec70efb1634d869d2e497aff434dcc4fe8d3431b5621ff60854" - }, - { - "hash": "85b4670b2aee067838821d4c4020315c16e8930a", - "channel": "dev", - "version": "v0.9.2", - "release_date": "2018-09-19T23:55:33.307125Z", - "archive": "dev/macos/flutter_macos_v0.9.2-dev.zip", - "sha256": "cd704c75dc22e043510d6f1ffd6b753eab0cf647bf28077b7c1bec9c07149e04" - }, - { - "hash": "bf7c27095cc4dc07c03d8a6ad2e9e0e28e26227e", - "channel": "dev", - "version": "v0.9.1", - "release_date": "2018-09-18T23:09:11.881172Z", - "archive": "dev/macos/flutter_macos_v0.9.1-dev.zip", - "sha256": "8994f6dafa711ed82a4b010cf17365fb0be157858a87d0971541d8226cbab6f6" - }, - { - "hash": "f8c50ea15f6a78fdb6fa038cf3fb70fb154714ef", - "channel": "dev", - "version": "v0.9.0", - "release_date": "2018-09-18T21:41:18.972492Z", - "archive": "dev/macos/flutter_macos_v0.9.0-dev.zip", - "sha256": "68389847302e9b60566021617431f4b31ca1f52a59c62c0848347f6a6e4e355b" - }, - { - "hash": "ccd070a5b42d18d1b8dfce4e8b59417373122dc2", - "channel": "dev", - "version": "v0.8.7", - "release_date": "2018-09-18T20:35:54.298581Z", - "archive": "dev/macos/flutter_macos_v0.8.7-dev.zip", - "sha256": "b1572914e9203c7a5e909498054f317157d00c3c843811dd67717df4998f7910" - }, - { - "hash": "5ab9e70727d858def3a586db7fb98ee580352957", - "channel": "beta", - "version": "v0.8.2", - "release_date": "2018-09-18T19:29:41.495164Z", - "archive": "beta/macos/flutter_macos_v0.8.2-beta.zip", - "sha256": "24703764088b5e89cd8f7e155a8178fc8c3e0cb0d8906667798fe0d41279b7a6" - }, - { - "hash": "9f359aeee2a474fe9c565b3b59cf1d504b919b4d", - "channel": "dev", - "version": "v0.8.6", - "release_date": "2018-09-18T00:33:16.451895Z", - "archive": "dev/macos/flutter_macos_v0.8.6-dev.zip", - "sha256": "abe5ca45c600e8a4e709a9d0ec189a7ab0230b952f200425d11b6a94bb4d686c" - }, - { - "hash": "2bca8007bd1962940fa3b3d568bc52e446005616", - "channel": "dev", - "version": "v0.8.5", - "release_date": "2018-09-17T21:07:22.438651Z", - "archive": "dev/macos/flutter_macos_v0.8.5-dev.zip", - "sha256": "644739bc5a3242b9f87fd1ca69ccee3b51976bdae24180a6be68ab411a998898" - }, - { - "hash": "7f7a731da095addd1ce684a6a2f4bc8651229769", - "channel": "dev", - "version": "v0.8.4", - "release_date": "2018-09-14T20:17:05.581236Z", - "archive": "dev/macos/flutter_macos_v0.8.4-dev.zip", - "sha256": "d22d832cc4e80f63a73b2ca4bdfc568989c226bb48dd1831cbf8855cb0f2404d" - }, - { - "hash": "2895d71b79b1482c8c1d1de387d04e2a5e667f1e", - "channel": "dev", - "version": "v0.8.3", - "release_date": "2018-09-14T17:19:41.146017Z", - "archive": "dev/macos/flutter_macos_v0.8.3-dev.zip", - "sha256": "d2b9b09b353d2870e30cc8024241c7d6d00706e7f91975a334c19753b2a73225" - }, - { - "hash": "5ab9e70727d858def3a586db7fb98ee580352957", - "channel": "dev", - "version": "v0.8.2", - "release_date": "2018-09-10T20:11:03.121508Z", - "archive": "dev/macos/flutter_macos_v0.8.2-dev.zip", - "sha256": "eeffb90f65fac5d722fe4f66822730e3979cc42dd9ddebaeba1902f1f5a473f2" - }, - { - "hash": "0235ec59d108f8b4f6c6a664cc11c56c11cbb50a", - "channel": "dev", - "version": "v0.8.1", - "release_date": "2018-09-07T16:01:58.105148Z", - "archive": "dev/macos/flutter_macos_v0.8.1-dev.zip", - "sha256": "fab365160777e21eea044eaca654e4e8dc062d6b2f1d6e6fd5869a5217a2a42e" - }, - { - "hash": "a74f591d0c05f2173448b2b421785b8dc51e8370", - "channel": "dev", - "version": "v0.8.0", - "release_date": "2018-09-06T18:57:33.373762Z", - "archive": "dev/macos/flutter_macos_v0.8.0-dev.zip", - "sha256": "96de0315400e916c70bdb1d9733ecd937369b7e7be64ad68bf79f6078862bc15" - }, - { - "hash": "3b309bda072a6b326e8aa4591a5836af600923ce", - "channel": "beta", - "version": "v0.7.3", - "release_date": "2018-09-05T02:52:50.223966Z", - "archive": "beta/macos/flutter_macos_v0.7.3-beta.zip", - "sha256": "72ee026522be9cfc552b02886c9697f8bee0626635bc425b41b64c01e5253565" - }, - { - "hash": "eab5cd9853c13ec2207977d9b9ef7b6750fe0817", - "channel": "dev", - "version": "v0.7.5", - "release_date": "2018-08-31T00:51:54.558676Z", - "archive": "dev/macos/flutter_macos_v0.7.5-dev.zip", - "sha256": "382043145b90be7b3fc25aef2add79ac93110b00653a270973c9aa42a3c5dabe" - }, - { - "hash": "ce51e71d19eeadaa079d70388a61f7ae710313f7", - "channel": "dev", - "version": "v0.7.4", - "release_date": "2018-08-30T22:16:44.073597Z", - "archive": "dev/macos/flutter_macos_v0.7.4-dev.zip", - "sha256": "cc198f59e64f2187a5db564ea043d28b787f7f7191221f765f4545e0c28ff6b7" - }, - { - "hash": "3b309bda072a6b326e8aa4591a5836af600923ce", - "channel": "dev", - "version": "v0.7.3", - "release_date": "2018-08-29T23:15:19.645831Z", - "archive": "dev/macos/flutter_macos_v0.7.3-dev.zip", - "sha256": "4c125b5de2b3c9f28593632954c6ff7efa0554cc5ec1db7bf394a225383c7a2f" - }, - { - "hash": "f8a2fc7c287ea0f25bb893d56caa45302d22eed6", - "channel": "dev", - "version": "v0.7.2", - "release_date": "2018-08-28T19:09:51.974451Z", - "archive": "dev/macos/flutter_macos_v0.7.2-dev.zip", - "sha256": "cfd9e71ff7fd6759f0ef7a75be5f543f76d05d319fdc18473c05abd2401e9734" - }, - { - "hash": "9299c02cf708497d6f72edda8efae0bb8340660e", - "channel": "beta", - "version": "v0.6.0", - "release_date": "2018-08-28T17:50:45.162897Z", - "archive": "beta/macos/flutter_macos_v0.6.0-beta.zip", - "sha256": "4299202e6355c837821ab1e1a5cdb9ce3fbeb32fe1c9f89a34f65ff0a2deee1d" - }, - { - "hash": "3c624f8b2c578fe7c14ae1b2dec725e265891758", - "channel": "dev", - "version": "v0.7.1", - "release_date": "2018-08-27T19:01:03.443661Z", - "archive": "dev/macos/flutter_macos_v0.7.1-dev.zip", - "sha256": "51428f3695bab8494f847979c674d301a7f659c00599388edcc1c628ef328c8b" - }, - { - "hash": "09fe34708f5767e3dac6b04943677d2d8962b78c", - "channel": "dev", - "version": "v0.7.0", - "release_date": "2018-08-22T22:13:28.890253Z", - "archive": "dev/macos/flutter_macos_v0.7.0-dev.zip", - "sha256": "fd25ea995e47ff03bfddb6d9f379b902eebed23aae15875763f155159c2abd39" - }, - { - "hash": "392a178169a9e620a5ae8e55c40d4276cddd3b36", - "channel": "dev", - "version": "v0.6.2", - "release_date": "2018-08-21T23:32:42.990440Z", - "archive": "dev/macos/flutter_macos_v0.6.2-dev.zip", - "sha256": "47b3d00b0454d276c38a043e08a9b685b2f21a5f972957bcd7c91f458ef3c2e4" - }, - { - "hash": "ad1eaff45ab97ab65e2dd5aba768d19a4b48d49b", - "channel": "dev", - "version": "v0.6.1", - "release_date": "2018-08-21T19:13:12.356542Z", - "archive": "dev/macos/flutter_macos_v0.6.1-dev.zip", - "sha256": "2e9092569cb388998826d00ff37d0f201f1703680532123cce3ded83f0fe35ca" - }, - { - "hash": "9299c02cf708497d6f72edda8efae0bb8340660e", - "channel": "dev", - "version": "v0.6.0", - "release_date": "2018-08-20T20:00:17.222589Z", - "archive": "dev/macos/flutter_macos_v0.6.0-dev.zip", - "sha256": "fcfb000bcb8f4adc86743739f5456e2deeaeed6495f59bdf29d314eb37726e28" - }, - { - "hash": "e4b989bf3dbefc61f11bce298d16f92ebd9cde41", - "channel": "dev", - "version": "v0.5.8", - "release_date": "2018-08-10T18:53:24.523957Z", - "archive": "dev/macos/flutter_macos_v0.5.8-dev.zip", - "sha256": "9795a55fea462fcadec0189eb5a628edecf4913180a5451cd278d806168adcee" - }, - { - "hash": "66091f969653fd3535b265ddcd87436901858a1d", - "channel": "dev", - "version": "v0.5.7", - "release_date": "2018-07-16T16:59:23.736272Z", - "archive": "dev/macos/flutter_macos_v0.5.7-dev.zip", - "sha256": "d88abc0bde3f4bfbf51a8c4c986dcd1e81c6136d7bbb3296d2320c4556e9b66f" - }, - { - "hash": "472bbccf756e7954af2a81d2c8abc46d65a570af", - "channel": "dev", - "version": "v0.5.6", - "release_date": "2018-07-03T18:04:30.615080Z", - "archive": "dev/macos/flutter_macos_v0.5.6-dev.zip", - "sha256": "4e045232b4ddb44e2a8a3cd9cd53bdba4762a8ce099f101f9c7c8020591ee107" - }, - { - "hash": "c7ea3ca377e909469c68f2ab878a5bc53d3cf66b", - "channel": "beta", - "version": "v0.5.1", - "release_date": "2018-06-19T16:33:14.142295Z", - "archive": "beta/macos/flutter_macos_v0.5.1-beta.zip", - "sha256": "4fc1a3e79c06180b4f676c42acc88f1ecf7f466d663bb5901b61240dc01b3e76" - }, - { - "hash": "020e0ef55ce73d94284db593f895bfc3a0b520e9", - "channel": "dev", - "version": "v0.5.5", - "release_date": "2018-06-18T19:05:30.528895Z", - "archive": "dev/macos/flutter_macos_v0.5.5-dev.zip", - "sha256": "7fea21f96fb1d7fd04f1b143b85b4d4aaf29c7a5ed1e03e6c78bb1e28f4d7725" - }, - { - "hash": "3019ad976d333cceb903b3f53885cd9ae678a622", - "channel": "dev", - "version": "v0.5.4", - "release_date": "2018-06-11T23:05:22.487641Z", - "archive": "dev/macos/flutter_macos_v0.5.4-dev.zip", - "sha256": "1eed08ea618d48b6a78b7f6797786d821f4e094563c39a328d0fab0fdfafa228" - }, - { - "hash": "691cbee61343977c5fe09eef45694f0d755d2d1b", - "channel": "dev", - "version": "v0.5.3", - "release_date": "2018-06-11T17:09:28.525071Z", - "archive": "dev/macos/flutter_macos_v0.5.3-dev.zip", - "sha256": "d59df54f343a0f7610f427cadbe26866e74a74c5fe059e0022ea354a70bd60f2" - }, - { - "hash": "0a26ac09703b92a939fe3340c0584657a1791566", - "channel": "dev", - "version": "v0.5.2", - "release_date": "2018-06-08T00:42:27.175296Z", - "archive": "dev/macos/flutter_macos_v0.5.2-dev.zip", - "sha256": "a316b14981da00ab17fdbe6690b60e38b4fe941757b25b74e9450637de5743f7" - }, - { - "hash": "c7ea3ca377e909469c68f2ab878a5bc53d3cf66b", - "channel": "dev", - "version": "v0.5.1", - "release_date": "2018-05-30T16:51:36.589279Z", - "archive": "dev/macos/flutter_macos_v0.5.1-dev.zip", - "sha256": "c39c1b9362edd35ac32a1d0d9bdeddf16f377b8c930d6feef902bd1a84cb9f61" - }, - { - "hash": "a863817c045396bad2830a80e722903154dda32b", - "channel": "dev", - "version": "v0.5.0", - "release_date": "2018-05-29T14:35:49.170851Z", - "archive": "dev/macos/flutter_macos_v0.5.0-dev.zip", - "sha256": "4e66dd15b7c26ba071e6bcd1dce1271a7eb2a069e53b4883996723b1208fe1e7" - }, - { - "hash": "f9bb4289e9fd861d70ae78bcc3a042ef1b35cc9d", - "channel": "beta", - "version": "v0.4.4", - "release_date": "2018-05-22T22:54:39.334851Z", - "archive": "beta/macos/flutter_macos_v0.4.4-beta.zip", - "sha256": "6cfb32cf331f03a01de73e9daa51bf6ca3ee38b605c8543548bf9417f3ee300f" - }, - { - "hash": "f9bb4289e9fd861d70ae78bcc3a042ef1b35cc9d", - "channel": "dev", - "version": "v0.4.4", - "release_date": "2018-05-14T05:21:38.411575Z", - "archive": "dev/macos/flutter_macos_v0.4.4-dev.zip", - "sha256": "6c2dbc44448b62f1376d458b99dceb31b6fb0c00724d82f5a6aafafa68308961" - }, - { - "hash": "f086a45f8259fa77ef931ad2bfbb630360a8f5a6", - "channel": "dev", - "version": "v0.4.3", - "release_date": "2018-05-11T18:22:02.083371Z", - "archive": "dev/macos/flutter_macos_v0.4.3-dev.zip", - "sha256": "ffc7cf1017b049e276bafa2cb1b097041c1adb785f838e92f80cd74889896e83" - }, - { - "hash": "de332ec78292c2d79fdb76034328f902c9087ee9", - "channel": "dev", - "version": "v0.4.2", - "release_date": "2018-05-09T05:03:01.400940Z", - "archive": "dev/macos/flutter_macos_v0.4.2-dev.zip", - "sha256": "086c234721fa86bbd81f331280ce2bc3171c8020794e4dd055b2458ee1ae8fd1" - }, - { - "hash": "e8d08744683d25661c6150b3b247c049719e99ba", - "channel": "dev", - "version": "v0.4.1", - "release_date": "2018-05-09T04:19:35.331440Z", - "archive": "dev/macos/flutter_macos_v0.4.1-dev.zip", - "sha256": "f90f3c4f28659c73d7bb36fb32d2c97239fa40353ce400ede5d99460f334743f" - }, - { - "hash": "7984f6e043ee661b420e70c72241973c676034e5", - "channel": "dev", - "version": "v0.4.0", - "release_date": "2018-05-07T19:52:42.604591Z", - "archive": "dev/macos/flutter_macos_v0.4.0-dev.zip", - "sha256": "98cc29681afd903e317685dc49c6427800aa2d93bb7b54082207a44d4ea8fd7b" - }, - { - "hash": "44b7e7d3f42f050a79712daab253af06e9daf530", - "channel": "beta", - "version": "v0.3.2", - "release_date": "2018-05-07T17:42:28.926290Z", - "archive": "beta/macos/flutter_macos_v0.3.2-beta.zip", - "sha256": "33154ca2dedd0d3c657668fff1b0edcb4c3f08e7c89fd12c5487dd4e5e32e496" - }, - { - "hash": "be09a200ee19024db34257653b067dcf5b998dc2", - "channel": "dev", - "version": "v0.3.6", - "release_date": "2018-05-04T19:25:06.770880Z", - "archive": "dev/macos/flutter_macos_v0.3.6-dev.zip", - "sha256": "9dfea6a1f23ad0118df636366b3efd0534e3e2034b7bc59388edb05e895b3ab1" - }, - { - "hash": "7ffcd3d22d7bc1222d53d6d3bb83f59891aac2c2", - "channel": "dev", - "version": "v0.3.5", - "release_date": "2018-04-25T02:19:36.756517Z", - "archive": "dev/macos/flutter_macos_v0.3.5-dev.zip", - "sha256": "4b31e0c38a6514181d975098bce0acd44a08b9879e5e76c3effb5a3ecbce3a54" - }, - { - "hash": "c7ee37a0d88bb3d60ac0f70cf381cd2492baf5e4", - "channel": "dev", - "version": "v0.3.4", - "release_date": "2018-04-24T21:35:21.043735Z", - "archive": "dev/macos/flutter_macos_v0.3.4-dev.zip", - "sha256": "831c7123a397d4fe034f20dbc9ad95c10099261dd3b943346799e25228307ff5" - }, - { - "hash": "12bbaba9ae044d0ea77da4dd5e4db15eed403f09", - "channel": "beta", - "version": "v0.3.1", - "release_date": "2018-04-24T16:57:22.671585Z", - "archive": "beta/macos/flutter_macos_v0.3.1-beta.zip", - "sha256": "a88356eb37c37e89f92698ed06eaf02d6364c50f6accea6fe793b9d04c9e0c98" - }, - { - "hash": "a742b11a50ad5d70f44a219e4a29a9fb5ca80252", - "channel": "dev", - "version": "v0.3.3", - "release_date": "2018-04-23T13:43:51.978824Z", - "archive": "dev/macos/flutter_macos_v0.3.3-dev.zip", - "sha256": "b00048e1ba29d7740fbee21bf6b8c8cfbcc09e57fa8c077c9aef826423db38b1" - }, - { - "hash": "44b7e7d3f42f050a79712daab253af06e9daf530", - "channel": "dev", - "version": "v0.3.2", - "release_date": "2018-04-20T08:24:07.037340Z", - "archive": "dev/macos/flutter_macos_v0.3.2-dev.zip", - "sha256": "c21cd87e752148f541b26fec2a340fb3d18d8221a1d8e7a3da2246a64b660c30" - }, - { - "hash": "12bbaba9ae044d0ea77da4dd5e4db15eed403f09", - "channel": "dev", - "version": "v0.3.1", - "release_date": "2018-04-20T07:56:25.014726Z", - "archive": "dev/macos/flutter_macos_v0.3.1-dev.zip", - "sha256": "59bc88ea1ad1f057530c63e2a05b9715b714d4f44772956c29f0b04d58a28176" - }, - { - "hash": "c73b8a7cf63455189e9dc005010f2c9b34497420", - "channel": "dev", - "version": "v0.3.0", - "release_date": "2018-04-16T20:02:18.454129Z", - "archive": "dev/macos/flutter_macos_v0.3.0-dev.zip", - "sha256": "88b2fafbd2fe8ba66d9e054c8f8f8cd211d5d3427564909821b05e9034ee709e" - }, - { - "hash": "f408bb06f9361793ca85493c38d809ee1e2f7e30", - "channel": "dev", - "version": "v0.2.11", - "release_date": "2018-04-12T01:46:11.143974Z", - "archive": "dev/macos/flutter_macos_v0.2.11-dev.zip", - "sha256": "9e2f0683f6d618d5eb831c8cd796e0481278a50b1ba3b22af1ca4f62b6206d53" - }, - { - "hash": "d6d874474b21b512aac03f1dcd0d3b88835cdcdd", - "channel": "dev", - "version": "v0.2.10", - "release_date": "2018-04-09T21:44:47.033845Z", - "archive": "dev/macos/flutter_macos_v0.2.10-dev.zip", - "sha256": "eaff3979034af367e873d8e670949b2a34fdd54abfc718f1c22120b2a40dbc6c" - }, - { - "hash": "b397406561f5e7a9c94e28f58d9e49fca0dd58b7", - "channel": "beta", - "version": "v0.2.8", - "release_date": "2018-04-09T18:32:17.453276Z", - "archive": "beta/macos/flutter_macos_v0.2.8-beta.zip", - "sha256": "f5a982c85fbe8ae3ee569181600da82b1ac19f066a605201d45438129aabdc0e" - }, - { - "hash": "487e6bc91efd3b8ef859a31963b26e19d12ca6fa", - "channel": "dev", - "version": "v0.2.9", - "release_date": "2018-04-05T15:44:39.513227Z", - "archive": "dev/macos/flutter_macos_v0.2.9-dev.zip", - "sha256": "3072ac8f2729319e17e3f987af5794aba3cac526a59ae304281523c2b33355b7" - }, - { - "hash": "b397406561f5e7a9c94e28f58d9e49fca0dd58b7", - "channel": "dev", - "version": "v0.2.8", - "release_date": "2018-04-03T01:45:21.158664Z", - "archive": "dev/macos/flutter_macos_v0.2.8-dev.zip", - "sha256": "ad3099a7fba340301d60f63d0f28b95885e58e4c3f86766c5b396980a94e7e86" - }, - { - "hash": "5a58b36e36b8d7aace89d3950e6deb307956a6a0", - "channel": "beta", - "version": "v0.2.3", - "release_date": "2018-04-02T23:22:36.698699Z", - "archive": "beta/macos/flutter_macos_v0.2.3-beta.zip", - "sha256": "c15db6dcaf94635f0df07c541821c1a8d83fb67936a3d6c14c619faafc3949e0" - }, - { - "hash": "0c89920069320b75d1fa4a47d36b2c48cf85697c", - "channel": "dev", - "version": "v0.2.7", - "release_date": "2018-04-02T23:09:52.408704Z", - "archive": "dev/macos/flutter_macos_v0.2.7-dev.zip", - "sha256": "10d6f4da364849e3354550091d18c2ba3c5b85b5c3977a2280e8f3290f63a5cf" - }, - { - "hash": "1d067220daa06be91956de1130d93e63fb2f1a5a", - "channel": "dev", - "version": "v0.2.6", - "release_date": "2018-03-30T13:54:25.947528Z", - "archive": "dev/macos/flutter_macos_v0.2.6-dev.zip", - "sha256": "706853842cca49da5ea99b9ed751109e3b2ae6e72926b0118dfd1d3aa761109c" - }, - { - "hash": "bffae2157102dd75a625153d3dc866d3de69c853", - "channel": "dev", - "version": "v0.2.5", - "release_date": "2018-03-30T01:47:02.294169Z", - "archive": "dev/macos/flutter_macos_v0.2.5-dev.zip", - "sha256": "cbcf90a0b24f4c4a2cfc7d2753a8dd52365c68b8166f5299243654815ee44fb7" - }, - { - "hash": "3352a3fb488df4742ff323243d3dc44d9b7cd3e8", - "channel": "dev", - "version": "v0.2.4", - "release_date": "2018-03-26T20:43:01.049354Z", - "archive": "dev/macos/flutter_macos_v0.2.4-dev.zip", - "sha256": "023ad351b2583684354a1b86cbf2f1147ed042a0dcf990f1eee3dcf44eeac937" - }, - { - "hash": "5a58b36e36b8d7aace89d3950e6deb307956a6a0", - "channel": "dev", - "version": "v0.2.3", - "release_date": "2018-03-20T01:07:23.881504Z", - "archive": "dev/macos/flutter_macos_v0.2.3-dev.zip", - "sha256": "024cf363bf63c72b7b01bbf95e9da8210b93d399dff4b32e36a466f5e88c3b9c" - }, - { - "hash": "b9bd51cc36b706215915711e580851901faebb40", - "channel": "dev", - "version": "v0.2.2", - "release_date": "2018-03-16T18:47:06.991431Z", - "archive": "dev/macos/flutter_macos_v0.2.2-dev.zip", - "sha256": "70b0b18d7783b4cf7dac4ab852f4fd538f2fa606a057f69838e7f65d382ad2d8" - }, - { - "hash": "3ea4d06340a97a1e9d7cae97567c64e0569dcaa2", - "channel": "beta", - "version": "v0.1.5", - "release_date": "2018-03-15T17:26:30.810733Z", - "archive": "beta/macos/flutter_macos_v0.1.5-beta.zip", - "sha256": "9f1c323cd664556e4c98e8736342a9563982c6d8d37fdc7cee8ce2461b0a4fc3" - }, - { - "hash": "f8ac23cd8646538634f63032df4bfaf3b597007d", - "channel": "dev", - "version": "v0.2.0", - "release_date": "2018-03-13T20:10:05.644658Z", - "archive": "dev/macos/flutter_macos_v0.2.0-dev.zip", - "sha256": "09055b1ea8fa7720addc26443aa78f371f285d0265ab5be4b99917a3122e1333" - }, - { - "hash": "70f60b17d7de9844c356fb7ab0e2cf1630a70965", - "channel": "dev", - "version": "v0.1.9", - "release_date": "2018-03-13T19:49:49.764538Z", - "archive": "dev/macos/flutter_macos_v0.1.9-dev.zip", - "sha256": "11fa52eb3e03b05f5cea713a8f33b3b490bf5980f8758de01b60ba2e10fc543c" - }, - { - "hash": "6993b203c05477fec537f566be7ff7fbf072d33b", - "channel": "dev", - "version": "v0.1.8", - "release_date": "2018-03-13T19:28:34.607625Z", - "archive": "dev/macos/flutter_macos_v0.1.8-dev.zip", - "sha256": "93d5adb55016ea3f8663036cf56243b45332a53c79994b1de755794c4319d42d" - }, - { - "hash": "6f5bcb97a43e45b302b6b8d9eb5ef9d54f09515e", - "channel": "dev", - "version": "v0.2.1", - "release_date": "2018-03-12T16:49:11Z", - "archive": "dev/macos/flutter_macos_v0.2.1-dev.zip", - "sha256": "5987aa8e029fc2ceafb4c3d64e87d05af10210ad4830d6e60b1238719ba0a923" - }, - { - "hash": "1f3eb5034ff2372956620b2a9eb88683eee9495e", - "channel": "dev", - "version": "v0.1.6", - "release_date": "2018-02-26T21:10:42.156717Z", - "archive": "dev/macos/flutter_macos_v0.1.6-dev.zip", - "sha256": "f063bd7fe3194865a832c204586c25d6155d8164b95949a5d1fd3426beec6e5c" - } - ] -} \ No newline at end of file diff --git a/__tests__/data/releases_windows.json b/__tests__/data/releases_windows.json deleted file mode 100644 index 05aec80..0000000 --- a/__tests__/data/releases_windows.json +++ /dev/null @@ -1,3338 +0,0 @@ -{ - "base_url": "https://storage.googleapis.com/flutter_infra_release/releases", - "current_release": { - "beta": "0941968447ea8058e56e1479f7e53147149b739e", - "dev": "0941968447ea8058e56e1479f7e53147149b739e", - "stable": "adc687823a831bbebe28bdccfac1a628ca621513" - }, - "releases": [ - { - "hash": "adc687823a831bbebe28bdccfac1a628ca621513", - "channel": "stable", - "version": "2.0.5", - "release_date": "2021-04-16T18:06:46.988183Z", - "archive": "stable/windows/flutter_windows_2.0.5-stable.zip", - "sha256": "67438f40a9b811704555b9801b52738f4156b617a03351ff143335639a23b2b2" - }, - { - "hash": "0941968447ea8058e56e1479f7e53147149b739e", - "channel": "beta", - "version": "2.2.0-10.1.pre", - "release_date": "2021-04-15T22:33:06.150073Z", - "archive": "beta/windows/flutter_windows_2.2.0-10.1.pre-beta.zip", - "sha256": "548e019c8712a0eea8e4004374a035cf3b0e222ebe4e150f01184b0dfbd6a46a" - }, - { - "hash": "0941968447ea8058e56e1479f7e53147149b739e", - "channel": "dev", - "version": "2.2.0-10.1.pre", - "release_date": "2021-04-15T21:42:19.545965Z", - "archive": "dev/windows/flutter_windows_2.2.0-10.1.pre-dev.zip", - "sha256": "bdfec73fb4d4bf2d96408a531cb9e1dc43b2b5094dc9de55ec0b84ad758e5319" - }, - { - "hash": "b1395592de68cc8ac4522094ae59956dd21a91db", - "channel": "stable", - "version": "2.0.4", - "release_date": "2021-04-02T20:40:57.314750Z", - "archive": "stable/windows/flutter_windows_2.0.4-stable.zip", - "sha256": "42a722b7b364ff4b3b639b07f08fa83794d4bd1c467c86d6b574bcb2127ac6f5" - }, - { - "hash": "4d7946a68d26794349189cf21b3f68cc6fe61dcb", - "channel": "stable", - "version": "2.0.3", - "release_date": "2021-03-19T20:17:00.731257Z", - "archive": "stable/windows/flutter_windows_2.0.3-stable.zip", - "sha256": "182911341394a7baec1c587a3b92653f43c37f7abfe5a10b67dabedbd3dfd9d9" - }, - { - "hash": "5bedb7b1d5698ce2c1c67aaf9afae7b3948b172a", - "channel": "beta", - "version": "2.1.0-12.2.pre", - "release_date": "2021-03-18T21:00:48.627463Z", - "archive": "beta/windows/flutter_windows_2.1.0-12.2.pre-beta.zip", - "sha256": "d23c843e754013f72e76350c541fd12b772ce51bd5dd0dd41a740e63bc47a9aa" - }, - { - "hash": "8962f6dc68ec8e2206ac2fa874da4a453856c7d3", - "channel": "beta", - "version": "2.0.2", - "release_date": "2021-03-15T17:02:01.795126Z", - "archive": "beta/windows/flutter_windows_2.0.2-beta.zip", - "sha256": "289badd5caf2452448b0d41d68c3f410cca0fa58df1ffd9ec56e24d463ca6a71" - }, - { - "hash": "8264cb3e8a797eef39cbcd32bb56fd07790efb7f", - "channel": "dev", - "version": "2.1.0-12.1.pre", - "release_date": "2021-03-13T00:57:16.262443Z", - "archive": "dev/windows/flutter_windows_2.1.0-12.1.pre-dev.zip", - "sha256": "ff9b3428928d5619ff48cb13fff701d9100becefbf421f50810ca93c827f73ab" - }, - { - "hash": "8962f6dc68ec8e2206ac2fa874da4a453856c7d3", - "channel": "stable", - "version": "2.0.2", - "release_date": "2021-03-12T20:16:58.889236Z", - "archive": "stable/windows/flutter_windows_2.0.2-stable.zip", - "sha256": "aba438b6b177bff0264fae43e5494c1d191144413ea52d1f386b867c117d4af7" - }, - { - "hash": "c5a4b4029c0798f37c4a39b479d7cb75daa7b05c", - "channel": "beta", - "version": "2.0.1", - "release_date": "2021-03-04T21:03:17.507284Z", - "archive": "beta/windows/flutter_windows_2.0.1-beta.zip", - "sha256": "64b173e0a66722dc6c1a83949d3358088e23aa8639d9fe91ddac302fe46f2d58" - }, - { - "hash": "c5a4b4029c0798f37c4a39b479d7cb75daa7b05c", - "channel": "stable", - "version": "2.0.1", - "release_date": "2021-03-04T19:49:50.531411Z", - "archive": "stable/windows/flutter_windows_2.0.1-stable.zip", - "sha256": "e3abdabf62d98b7b2773047f67ce3f2f996b50132a85395453de019d43bbe721" - }, - { - "hash": "cc9b78fc5c4a4d2d51316d9626523336230a89a9", - "channel": "dev", - "version": "2.1.0-10.0.pre", - "release_date": "2021-03-03T19:14:39.042872Z", - "archive": "dev/windows/flutter_windows_2.1.0-10.0.pre-dev.zip", - "sha256": "b39a0b292a39697d071ef75797efc84806d53dff011ae730ab9c91b3828b96e7" - }, - { - "hash": "60bd88df915880d23877bfc1602e8ddcf4c4dd2a", - "channel": "beta", - "version": "2.0.0", - "release_date": "2021-03-03T17:51:19.556560Z", - "archive": "beta/windows/flutter_windows_2.0.0-beta.zip", - "sha256": "23764f0513d7cebfabb23253c2b1c6a8e60b152ec619e3da542136edfbfaf88c" - }, - { - "hash": "60bd88df915880d23877bfc1602e8ddcf4c4dd2a", - "channel": "stable", - "version": "2.0.0", - "release_date": "2021-03-03T17:50:17.892863Z", - "archive": "stable/windows/flutter_windows_2.0.0-stable.zip", - "sha256": "922a5d5dd009348360c9bf88af52fd3186120a7929c031b81683654fdb45bb74" - }, - { - "hash": "044f2cf5607a26f8818dab0f766400e85c52bdff", - "channel": "beta", - "version": "1.26.0-17.8.pre", - "release_date": "2021-02-25T17:58:26.186358Z", - "archive": "beta/windows/flutter_windows_1.26.0-17.8.pre-beta.zip", - "sha256": "31b457a5bd278432bd1147cb6857b4c635f36d0c11ca44d2f2642c704367c690" - }, - { - "hash": "b7d4806243a4e906bf061f79a0e314ba28111aa6", - "channel": "dev", - "version": "1.27.0-8.0.pre", - "release_date": "2021-02-24T23:12:17.327254Z", - "archive": "dev/windows/flutter_windows_1.27.0-8.0.pre-dev.zip", - "sha256": "e3e62300ee640eb92c368e3c96c7f14519c9fb956e186f7ff46f8654fe52e0ea" - }, - { - "hash": "68e7d2e301e1969275cd11947e900b6b80405052", - "channel": "beta", - "version": "1.26.0-17.7.pre", - "release_date": "2021-02-24T18:26:29.797090Z", - "archive": "beta/windows/flutter_windows_1.26.0-17.7.pre-beta.zip", - "sha256": "eb0f8106e283d77cf125ddbe2dddfb8866f588e1b75f0d3c7e21d7aa0809fed1" - }, - { - "hash": "f8cd24de95b16b5a1ce6ebc0716154271fbf6252", - "channel": "dev", - "version": "1.27.0-4.0.pre", - "release_date": "2021-02-17T23:12:21.058306Z", - "archive": "dev/windows/flutter_windows_1.27.0-4.0.pre-dev.zip", - "sha256": "54cdb27c9d96a4268b98fdd29c4937356289255154737a7cf08d6cc6ef76b57a" - }, - { - "hash": "a29104a69b102a7485cd00d358eaeab219d258ab", - "channel": "beta", - "version": "1.26.0-17.6.pre", - "release_date": "2021-02-16T19:21:39.013663Z", - "archive": "beta/windows/flutter_windows_1.26.0-17.6.pre-beta.zip", - "sha256": "4e997dfd0dc38336d1918aebe17d701a10262ea2590d05af047a3b828c94b8b3" - }, - { - "hash": "1fe38dcb5fc58242c6e0904a318bcc3ed5a4d837", - "channel": "beta", - "version": "1.26.0-17.5.pre", - "release_date": "2021-02-11T17:55:25.670687Z", - "archive": "beta/windows/flutter_windows_1.26.0-17.5.pre-beta.zip", - "sha256": "8f5a3440d125e5413255008894163970a0462588b04c50f3eb8139f7469cd351" - }, - { - "hash": "68c96f100e42ab3dbf43e61e9e2fc875a2d50cb8", - "channel": "dev", - "version": "1.27.0-1.0.pre", - "release_date": "2021-02-10T23:58:19.092713Z", - "archive": "dev/windows/flutter_windows_1.27.0-1.0.pre-dev.zip", - "sha256": "b0aca40f8e82c798f185bae23bf62b3074f989c344002a1e13932f996b379277" - }, - { - "hash": "48c9d3e0e19e8fec84f1d316ce0559f26ca7277d", - "channel": "beta", - "version": "1.26.0-17.4.pre", - "release_date": "2021-02-10T21:39:41.420263Z", - "archive": "beta/windows/flutter_windows_1.26.0-17.4.pre-beta.zip", - "sha256": "00ac018863b95c940964109f7101debcfdb0fa1337e703fe0ad82a56ee70ccbb" - }, - { - "hash": "4b50ca7f7fbf56be72e54cd200825b760416a356", - "channel": "beta", - "version": "1.26.0-17.3.pre", - "release_date": "2021-02-05T06:39:35.115601Z", - "archive": "beta/windows/flutter_windows_1.26.0-17.3.pre-beta.zip", - "sha256": "4376b0e857c28b8634662f95bec116a4c0945b8d418d29b766ba747b3a8efc95" - }, - { - "hash": "79b49b9e1057f90ebf797725233c6b311722de69", - "channel": "beta", - "version": "1.26.0-17.2.pre", - "release_date": "2021-02-04T19:54:53.806672Z", - "archive": "beta/windows/flutter_windows_1.26.0-17.2.pre-beta.zip", - "sha256": "34efce24134aea08cd2677892b78849f4dbe315bfd76530ac4b69c63caacaff1" - }, - { - "hash": "79b49b9e1057f90ebf797725233c6b311722de69", - "channel": "dev", - "version": "1.26.0-17.2.pre", - "release_date": "2021-02-04T19:23:10.728898Z", - "archive": "dev/windows/flutter_windows_1.26.0-17.2.pre-dev.zip", - "sha256": "356023bc28318da455f6840a4f9ab7648f974004aa1fb5f0c8e7d1a6f1a8a610" - }, - { - "hash": "c40e5294dda34d04cd222dfdf765f171e12e4a8d", - "channel": "dev", - "version": "1.26.0-17.1.pre", - "release_date": "2021-01-29T18:23:10.559300Z", - "archive": "dev/windows/flutter_windows_1.26.0-17.1.pre-dev.zip", - "sha256": "dbaaaee93dd58113881218351a468d3d953555dc6c0e80d8f5e03eac3136adae" - }, - { - "hash": "9b2d32b605630f28625709ebd9d78ab3016b2bf6", - "channel": "stable", - "version": "1.22.6", - "release_date": "2021-01-25T19:48:46.814881Z", - "archive": "stable/windows/flutter_windows_1.22.6-stable.zip", - "sha256": "8a1bb036c8495c768b6d94855dcc4f603c7b1a76dceb70a15b2c48e0c9853ef3" - }, - { - "hash": "a706cd211240f27be3b61f06d70f958c7a4156fe", - "channel": "dev", - "version": "1.26.0-12.0.pre", - "release_date": "2021-01-21T18:38:49.541663Z", - "archive": "dev/windows/flutter_windows_1.26.0-12.0.pre-dev.zip", - "sha256": "400e938aa19cfe6f44e2d319dde562982d269186526acdac53fbd8480109a8a4" - }, - { - "hash": "5d36f2e7f5387b6c751449258ade8e4e6edf99be", - "channel": "beta", - "version": "1.25.0-8.3.pre", - "release_date": "2021-01-15T19:57:58.248802Z", - "archive": "beta/windows/flutter_windows_1.25.0-8.3.pre-beta.zip", - "sha256": "9a608b5fc0b9d67924dcfb736143c33f16c0d9368063009a068241f2385dc8b5" - }, - { - "hash": "b9d06fffb2db263ab7021fc39adde7f2bf988a4a", - "channel": "dev", - "version": "1.26.0-8.0.pre", - "release_date": "2021-01-13T17:27:38.376912Z", - "archive": "dev/windows/flutter_windows_1.26.0-8.0.pre-dev.zip", - "sha256": "4e73f5aad7602add6108c10e2f86e1d5228f3fd5d96e37e0b0509c527e5d1849" - }, - { - "hash": "b0a22998593fc605c723dee8ff4d9315c32cfe2c", - "channel": "beta", - "version": "1.25.0-8.2.pre", - "release_date": "2021-01-06T00:08:12.063194Z", - "archive": "beta/windows/flutter_windows_1.25.0-8.2.pre-beta.zip", - "sha256": "4553bf289f403acb904b29757d3366daadfe3088b005e7baa2a5c6fd00e69271" - }, - { - "hash": "63062a64432cce03315d6b5196fda7912866eb37", - "channel": "dev", - "version": "1.26.0-1.0.pre", - "release_date": "2020-12-16T22:09:33.471589Z", - "archive": "dev/windows/flutter_windows_1.26.0-1.0.pre-dev.zip", - "sha256": "ff926adeb9ede90d8cd27c139923c3cf0595997bf8594abf8a5931b2f83eb7e2" - }, - { - "hash": "8f89f6505b941329a864fef1527243a72800bf4d", - "channel": "beta", - "version": "1.25.0-8.1.pre", - "release_date": "2020-12-16T21:57:08.120807Z", - "archive": "beta/windows/flutter_windows_1.25.0-8.1.pre-beta.zip", - "sha256": "400d3532157f0a396c750268dc0c81da5684aff8a4ead873a0ec7ec3819cd9a0" - }, - { - "hash": "78910062997c3a836feee883712c241a5fd22983", - "channel": "stable", - "version": "1.22.5", - "release_date": "2020-12-10T23:00:04.214180Z", - "archive": "stable/windows/flutter_windows_1.22.5-stable.zip", - "sha256": "84f28062f15362934b9f427bb3312a010443f4ce663af465edf80be8a7099b8d" - }, - { - "hash": "a12e2a473a3214b4556ca589d2d9bd311ac7c6f1", - "channel": "dev", - "version": "1.25.0-8.0.pre", - "release_date": "2020-12-10T19:30:49.981962Z", - "archive": "dev/windows/flutter_windows_1.25.0-8.0.pre-dev.zip", - "sha256": "c0d9401c764bd568bb6834570ce6c37ac8a6e2df1dd9bc04521f21f36a6808f9" - }, - { - "hash": "a7f5fd5360007518644597c60a1f2169eacccc2b", - "channel": "dev", - "version": "1.25.0-4.0.pre", - "release_date": "2020-12-02T17:04:18.037297Z", - "archive": "dev/windows/flutter_windows_1.25.0-4.0.pre-dev.zip", - "sha256": "23e537539f3271fa0f335681ccb41deaa17f1db012f6e4f519d86f37daf5db31" - }, - { - "hash": "022b333a089afb81c471ec43d1f1f4f26305d876", - "channel": "beta", - "version": "1.24.0-10.2.pre", - "release_date": "2020-11-19T15:23:01.892138Z", - "archive": "beta/windows/flutter_windows_1.24.0-10.2.pre-beta.zip", - "sha256": "86459c48c6cf81c16afd4e8a6f7c77cda030b88b983ac677d7ec7a16427fe215" - }, - { - "hash": "022b333a089afb81c471ec43d1f1f4f26305d876", - "channel": "dev", - "version": "1.24.0-10.2.pre", - "release_date": "2020-11-18T22:22:51.939704Z", - "archive": "dev/windows/flutter_windows_1.24.0-10.2.pre-dev.zip", - "sha256": "4c22139db82a405ec82cd17603174a2743be13be7b0320b800b8a27af360862e" - }, - { - "hash": "405c85fe7ee688156028e87a623c9153d05591b2", - "channel": "dev", - "version": "1.24.0-10.1.pre", - "release_date": "2020-11-16T20:52:52.818886Z", - "archive": "dev/windows/flutter_windows_1.24.0-10.1.pre-dev.zip", - "sha256": "60a70fd07cfee4df7298e19699900cd560ac5d0a26be399ec7acbafc293919fc" - }, - { - "hash": "1aafb3a8b9b0c36241c5f5b34ee914770f015818", - "channel": "stable", - "version": "1.22.4", - "release_date": "2020-11-13T20:08:53.636552Z", - "archive": "stable/windows/flutter_windows_1.22.4-stable.zip", - "sha256": "1eb4406be9d37db9ac3f3d5b1030ec1bfcb8209fce901c253c5452ba8706ab7c" - }, - { - "hash": "a0860f6e87ba4f9031bee4d6f56c08b970606bee", - "channel": "dev", - "version": "1.24.0-7.0.pre", - "release_date": "2020-11-05T00:17:28.446963Z", - "archive": "dev/windows/flutter_windows_1.24.0-7.0.pre-dev.zip", - "sha256": "49a58240f816a95ce453d0348d8ea42160f41b77877d66d627f5ea57c91d3dda" - }, - { - "hash": "13896b3bd1858687a06b1639d60c877206170df8", - "channel": "dev", - "version": "1.24.0-6.0.pre", - "release_date": "2020-10-30T19:28:20.535878Z", - "archive": "dev/windows/flutter_windows_1.24.0-6.0.pre-dev.zip", - "sha256": "58f0dc4e1434b2fe7dd791f7b40b01a63d1d46cc61253eb8106f33a30ed0be75" - }, - { - "hash": "8874f21e79d7ec66d0457c7ab338348e31b17f1d", - "channel": "stable", - "version": "1.22.3", - "release_date": "2020-10-30T16:30:51.878352Z", - "archive": "stable/windows/flutter_windows_1.22.3-stable.zip", - "sha256": "31d7ccda5badebc9038c420b5953e8ebd07e95ea600a92abfdac9b4f674e97c3" - }, - { - "hash": "2783f8e2e14efec8b7e08f668dde61c40d128c24", - "channel": "dev", - "version": "1.24.0-3.0.pre", - "release_date": "2020-10-22T21:10:01.308816Z", - "archive": "dev/windows/flutter_windows_1.24.0-3.0.pre-dev.zip", - "sha256": "042c3acb272fe1c6eddd443221939662c24a274db9d30ab14492134d8520bfcd" - }, - { - "hash": "12bea61c2902784fec73b7f5f2ff3415f873fead", - "channel": "dev", - "version": "1.24.0-1.0.pre", - "release_date": "2020-10-20T02:42:24.155611Z", - "archive": "dev/windows/flutter_windows_1.24.0-1.0.pre-dev.zip", - "sha256": "50440e8ccb1ffc97ee10b156f626e88e3d7c5aa9a1b6c99956c8c7c574c8baba" - }, - { - "hash": "84f3d28555368a70270e9ac8390a9441df95e752", - "channel": "stable", - "version": "1.22.2", - "release_date": "2020-10-16T18:16:45.139977Z", - "archive": "stable/windows/flutter_windows_1.22.2-stable.zip", - "sha256": "0629b9b5272f8d395acbdcdc182c0e8aee25abf3788a21622cc58a846f145fbd" - }, - { - "hash": "198df796aa80073ef22bdf249e614e2ff33c6895", - "channel": "beta", - "version": "1.23.0-18.1.pre", - "release_date": "2020-10-15T23:22:20.329784Z", - "archive": "beta/windows/flutter_windows_1.23.0-18.1.pre-beta.zip", - "sha256": "54c1d70792a9008794293a9e0fcaaf9ddace6e4085120f8b168b3c4fb75d699f" - }, - { - "hash": "37ebe3d82a9d5faeda7d3c1a6ad193030210a2cc", - "channel": "dev", - "version": "1.23.0-18.0.pre", - "release_date": "2020-10-14T00:33:56.051416Z", - "archive": "dev/windows/flutter_windows_1.23.0-18.0.pre-dev.zip", - "sha256": "092089200ee11d3033fd956e4dec66ae190d4030daf40265ee78c0b6c5a77306" - }, - { - "hash": "4fa4f91d5cc65a5a98c7ccd91bb7d47814048a57", - "channel": "dev", - "version": "1.23.0-13.0.pre", - "release_date": "2020-10-12T18:06:41.508033Z", - "archive": "dev/windows/flutter_windows_1.23.0-13.0.pre-dev.zip", - "sha256": "5ea8c7122be27e3070770e028e9fe9880166658b785fa584a3fa306e5ab8f9e3" - }, - { - "hash": "f30b7f4db93ee747cd727df747941a28ead25ff5", - "channel": "stable", - "version": "1.22.1", - "release_date": "2020-10-08T21:55:04.701840Z", - "archive": "stable/windows/flutter_windows_1.22.1-stable.zip", - "sha256": "99d01cb973eb3b66be4b0af8462b04fbea9dcc2f67b59798ec14c760962c5f5e" - }, - { - "hash": "f30b7f4db93ee747cd727df747941a28ead25ff5", - "channel": "beta", - "version": "1.22.0-12.4.pre", - "release_date": "2020-10-08T21:31:48.568207Z", - "archive": "beta/windows/flutter_windows_1.22.0-12.4.pre-beta.zip", - "sha256": "684eafa09a20c20d947b889f56069197709ba92433b42942d96b83903fa59c08" - }, - { - "hash": "db6e2d8aa5bb9a0bd3e75fc7470268b5a56fd0b0", - "channel": "dev", - "version": "1.23.0-7.0.pre", - "release_date": "2020-10-01T23:23:47.131642Z", - "archive": "dev/windows/flutter_windows_1.23.0-7.0.pre-dev.zip", - "sha256": "9e1ae41f8dd826fca87df7403e24cffe68c8949e32241fbc256c24e7793e8403" - }, - { - "hash": "d408d302e22179d598f467e11da5dd968dbdc9ec", - "channel": "stable", - "version": "1.22.0", - "release_date": "2020-10-01T14:26:12.579271Z", - "archive": "stable/windows/flutter_windows_1.22.0-stable.zip", - "sha256": "7af70a3d159656f4c0d695a68eb3031bb2fb4381384866551308962367d24ac2" - }, - { - "hash": "d408d302e22179d598f467e11da5dd968dbdc9ec", - "channel": "beta", - "version": "1.22.0-12.3.pre", - "release_date": "2020-09-29T20:21:55.098247Z", - "archive": "beta/windows/flutter_windows_1.22.0-12.3.pre-beta.zip", - "sha256": "24c2c47c9dfbe50f9cd3a9bce72bcb0c5f17926db6b653c004d8a4bf92838f94" - }, - { - "hash": "2bafdc822636426fa09afb43236400a60ea432b2", - "channel": "beta", - "version": "1.22.0-12.2.pre", - "release_date": "2020-09-28T16:42:43.574873Z", - "archive": "beta/windows/flutter_windows_1.22.0-12.2.pre-beta.zip", - "sha256": "fc5e70612bec2350cd68c4a5f93de5196b72208b9c65af19d4f1bd55a0daca88" - }, - { - "hash": "83dd176777cd04bd2aaca050f6bb6cb9edbf56a1", - "channel": "dev", - "version": "1.23.0-4.0.pre", - "release_date": "2020-09-22T21:12:48.856721Z", - "archive": "dev/windows/flutter_windows_1.23.0-4.0.pre-dev.zip", - "sha256": "3847dc6add2caad5c8bfd5820fb2ce6ce4a404094f1ab664d1c881b9194d92a5" - }, - { - "hash": "8b3760638a189741cd9ca881aa2dd237c1df1be5", - "channel": "beta", - "version": "1.22.0-12.1.pre", - "release_date": "2020-09-16T17:12:50.559705Z", - "archive": "beta/windows/flutter_windows_1.22.0-12.1.pre-beta.zip", - "sha256": "a779a5d41233affa1460d3a4152b343df3d2bacf7be1eeedfd777c1fa6c21b3f" - }, - { - "hash": "fba99f6cf9a14512e461e3122c8ddfaa25394e89", - "channel": "stable", - "version": "1.20.4", - "release_date": "2020-09-15T17:43:40.376494Z", - "archive": "stable/windows/flutter_windows_1.20.4-stable.zip", - "sha256": "8b52de9ae41bc2d51ca5ceb752c5fac52cd468fde5e8524a0238319d357ceaa1" - }, - { - "hash": "a27c242b0eea731317cfec5bbdd9d35452ab3ecb", - "channel": "dev", - "version": "1.22.0-12.0.pre", - "release_date": "2020-09-14T21:45:02.784616Z", - "archive": "dev/windows/flutter_windows_1.22.0-12.0.pre-dev.zip", - "sha256": "65b7f68bce2f73c0881f127e68d376bffa3bbe90757a7bced19698b673085964" - }, - { - "hash": "216dee60c0cc9449f0b29bcf922974d612263e24", - "channel": "stable", - "version": "1.20.3", - "release_date": "2020-09-02T18:00:39.551574Z", - "archive": "stable/windows/flutter_windows_1.20.3-stable.zip", - "sha256": "2aa3569cd268e5fd3c50e6312821708c1af17337a1b1a0beb6737bf4353d7371" - }, - { - "hash": "7a4317519865146acda84702bba8775610598c0c", - "channel": "dev", - "version": "1.22.0-9.0.pre", - "release_date": "2020-09-01T19:30:46.508965Z", - "archive": "dev/windows/flutter_windows_1.22.0-9.0.pre-dev.zip", - "sha256": "bf6b52e21810388d154f8b16ecea8890ecac3d21e39577084f4426d932c0899d" - }, - { - "hash": "81a45ec2e5f80fa71d5135f1702ce540558b416d", - "channel": "beta", - "version": "1.21.0-9.2.pre", - "release_date": "2020-08-28T18:32:42.466122Z", - "archive": "beta/windows/flutter_windows_1.21.0-9.2.pre-beta.zip", - "sha256": "496c23fdde65a276f8b8b7bf9e9d0735e6428e8106bd14759074601e53923076" - }, - { - "hash": "ce40de69b7b4f89c66d19c8dbd3bd86ae30f1bc6", - "channel": "dev", - "version": "1.22.0-1.0.pre", - "release_date": "2020-08-21T22:00:57.926158Z", - "archive": "dev/windows/flutter_windows_1.22.0-1.0.pre-dev.zip", - "sha256": "3023efc5cf6be1276ae42f85b3b9975fa244e12776b6f96094b44a4e5b2cee31" - }, - { - "hash": "be9bc8cb3942bda5d8ef4e44b44616c470625e18", - "channel": "beta", - "version": "1.21.0-9.1.pre", - "release_date": "2020-08-19T18:37:55.123838Z", - "archive": "beta/windows/flutter_windows_1.21.0-9.1.pre-beta.zip", - "sha256": "81ffd2796d04cae103ffd9480b1f0ab34eba902aa5c9a2da318f3e3d61ac6d99" - }, - { - "hash": "bbfbf1770cca2da7c82e887e4e4af910034800b6", - "channel": "beta", - "version": "1.20.2", - "release_date": "2020-08-14T21:00:53.043744Z", - "archive": "beta/windows/flutter_windows_1.20.2-beta.zip", - "sha256": "a9ea4612b7c448b2f53786fcb5982699729cf3fac9ef8148e5de2708a3d3e646" - }, - { - "hash": "bbfbf1770cca2da7c82e887e4e4af910034800b6", - "channel": "stable", - "version": "1.20.2", - "release_date": "2020-08-13T21:43:56.996853Z", - "archive": "stable/windows/flutter_windows_1.20.2-stable.zip", - "sha256": "479ea0d2d0b15daa6f4c2f0407aa04a886a064b3597e2bd0cb61f69249aaf16e" - }, - { - "hash": "7c6f9dd2396dfe7deb6fd11edc12c10786490083", - "channel": "dev", - "version": "1.21.0-9.0.pre", - "release_date": "2020-08-13T17:29:33.581848Z", - "archive": "dev/windows/flutter_windows_1.21.0-9.0.pre-dev.zip", - "sha256": "cbeb33cc4a0961c7e282cfa512cbc15e969e62517425ea3a47e9882cacb64fd0" - }, - { - "hash": "5a6dfa35caaf7bccb35488dc03677c150ebf2d97", - "channel": "dev", - "version": "1.21.0-7.0.pre", - "release_date": "2020-08-07T16:44:28.611131Z", - "archive": "dev/windows/flutter_windows_1.21.0-7.0.pre-dev.zip", - "sha256": "ae0a4e989c3ef7219bb18e95647d28948d6c48b57557560fbdd0d935971b0b26" - }, - { - "hash": "2ae34518b87dd891355ed6c6ea8cb68c4d52bb9d", - "channel": "stable", - "version": "1.20.1", - "release_date": "2020-08-06T17:44:31.651593Z", - "archive": "stable/windows/flutter_windows_1.20.1-stable.zip", - "sha256": "4f64942e69805d9ae41016a4825909f19c6cdc907271cb26f1c5780d22ae482a" - }, - { - "hash": "840c9205b344a59e48a5926ee2d791cc5640924c", - "channel": "stable", - "version": "1.20.0", - "release_date": "2020-08-05T14:24:47.740041Z", - "archive": "stable/windows/flutter_windows_1.20.0-stable.zip", - "sha256": "9433d4b3dcccdb88afee09be9f51f2aad60db1726577589b95f4f0975bc1d742" - }, - { - "hash": "916c3ac648aa0498a70f32b5fc4f6c51447628e3", - "channel": "beta", - "version": "1.20.0-7.4.pre", - "release_date": "2020-08-03T21:42:52.456598Z", - "archive": "beta/windows/flutter_windows_1.20.0-7.4.pre-beta.zip", - "sha256": "a6d8a16dc33c4fe0648a1b67a5d0a45acb617ca8378f6167291a1255c4fd7a32" - }, - { - "hash": "e606910f28be51c8151f6169072afe3b3a8b3c5e", - "channel": "beta", - "version": "1.20.0-7.3.pre", - "release_date": "2020-07-29T03:28:05.942742Z", - "archive": "beta/windows/flutter_windows_1.20.0-7.3.pre-beta.zip", - "sha256": "aa8f9c088790b164290a631cbd8e7b40632aed097a44bb051d158ededaf45008" - }, - { - "hash": "a2bde82fbd52e09057a4146f46889f4e10342d32", - "channel": "beta", - "version": "1.20.0-7.2.pre", - "release_date": "2020-07-21T16:12:48.588988Z", - "archive": "beta/windows/flutter_windows_1.20.0-7.2.pre-beta.zip", - "sha256": "f6db3fb22adb60c84c649718bc7555e8fc5e84cbf6aae197e58af7c5068fe992" - }, - { - "hash": "f25bd9c55c48c139524139b477d04b13e9f36b2c", - "channel": "dev", - "version": "1.21.0-1.0.pre", - "release_date": "2020-07-17T03:19:22.261393Z", - "archive": "dev/windows/flutter_windows_1.21.0-1.0.pre-dev.zip", - "sha256": "004d5aa5f0366b1eb8bc9c2767816ce6bcaa9a173a24235d8e37a0d2ed7c2b3a" - }, - { - "hash": "7736f3bc90270dcb0480db2ccffbf1d13c28db85", - "channel": "dev", - "version": "1.20.0-7.1.pre", - "release_date": "2020-07-11T04:17:00.090738Z", - "archive": "dev/windows/flutter_windows_1.20.0-7.1.pre-dev.zip", - "sha256": "edd76342cf2f34b495fcbeb781101ed8ca8093972a41f55e726d0f2b55f02268" - }, - { - "hash": "cc1af3afb62187cc37185afddc2d43bfef469db7", - "channel": "dev", - "version": "1.20.0-7.0.pre", - "release_date": "2020-07-09T19:12:03.422566Z", - "archive": "dev/windows/flutter_windows_1.20.0-7.0.pre-dev.zip", - "sha256": "33709a0b9d6944d20183d07f2ab4f8b387691ba5c4bcc2e51dd4af178fa18bef" - }, - { - "hash": "0af027f80543302c65f99e1c1a2f3b3cbb8d04f3", - "channel": "dev", - "version": "1.20.0-3.0.pre", - "release_date": "2020-07-05T03:58:51.296714Z", - "archive": "dev/windows/flutter_windows_1.20.0-3.0.pre-dev.zip", - "sha256": "71e98dd58eecb59943dba836715487e889679459d02df8268ac1bcef489d7847" - }, - { - "hash": "8fe7655ed20ffd1395f68e30539a847a01a30351", - "channel": "beta", - "version": "1.19.0-4.3.pre", - "release_date": "2020-07-01T23:41:14.600259Z", - "archive": "beta/windows/flutter_windows_1.19.0-4.3.pre-beta.zip", - "sha256": "7a6ffa058e83e736aad836232e9d089bdb0e9d0fa7ca2ff9e9b9311529060103" - }, - { - "hash": "9b9b543d9265484132c798adaab6caca52055b08", - "channel": "beta", - "version": "1.19.0-4.2.pre", - "release_date": "2020-07-01T23:21:07.783044Z", - "archive": "beta/windows/flutter_windows_1.19.0-4.2.pre-beta.zip", - "sha256": "91adc51c627ba75c993eb33d43c54c1897546e03cc2dd0d2b9ddb8ea93802cbf" - }, - { - "hash": "8af6b2f038c1172e61d418869363a28dffec3cb4", - "channel": "stable", - "version": "1.17.5", - "release_date": "2020-07-01T23:20:20.230478Z", - "archive": "stable/windows/flutter_windows_1.17.5-stable.zip", - "sha256": "690946999d8a88ddf41247e516d74debac11743b94c192afdc8587c2ec48a817" - }, - { - "hash": "15a28159bcf4b3db13411cbc8d9b5fc51adc0a93", - "channel": "dev", - "version": "1.20.0-2.0.pre", - "release_date": "2020-06-26T21:20:45.564812Z", - "archive": "dev/windows/flutter_windows_1.20.0-2.0.pre-dev.zip", - "sha256": "c0189f6228510bfa1a46341ade13ae3a80d3e7a5b85ef63815abf0f653cbbac8" - }, - { - "hash": "1ad9baa8b99a2897c20f9e6e54d3b9b359ade314", - "channel": "stable", - "version": "1.17.4", - "release_date": "2020-06-18T16:01:02.711833Z", - "archive": "stable/windows/flutter_windows_1.17.4-stable.zip", - "sha256": "eef98db85ea6170868d4c1b1fc0262dacf9207635b8191c0c7c690b58a661961" - }, - { - "hash": "d9653445f4d1257b5f5adb4b271d1316469e8cf1", - "channel": "dev", - "version": "1.20.0-0.0.pre", - "release_date": "2020-06-11T15:29:25.410945Z", - "archive": "dev/windows/flutter_windows_1.20.0-0.0.pre-dev.zip", - "sha256": "02a62f577d8bbb87b40360b49a13a3530af1e769c02bb87baf5bba78ec0b3e29" - }, - { - "hash": "f994b769743368b36b9c03fb359f62230b60ab92", - "channel": "beta", - "version": "1.19.0-4.1.pre", - "release_date": "2020-06-10T22:01:51.112115Z", - "archive": "beta/windows/flutter_windows_1.19.0-4.1.pre-beta.zip", - "sha256": "a7e5cd0a2725617633f6ff5eec483b756ecf560a9ed7bfdd9164a45817de2182" - }, - { - "hash": "c264b70ec3b0cf9cd568eba5d65d0ce47fe57e1d", - "channel": "dev", - "version": "1.19.0-5.0.pre", - "release_date": "2020-06-09T23:55:05.402029Z", - "archive": "dev/windows/flutter_windows_1.19.0-5.0.pre-dev.zip", - "sha256": "e7d9a3557a765fdd4a816fef88e37f810f8930fd0729200abb5ddc137294cc22" - }, - { - "hash": "b041144f833e05cf463b8887fa12efdec9493488", - "channel": "stable", - "version": "1.17.3", - "release_date": "2020-06-05T17:29:57.795041Z", - "archive": "stable/windows/flutter_windows_1.17.3-stable.zip", - "sha256": "44eb682c73824c0e9e3b68779079a11286108e0993aeb17d722c7a3dab6f7f98" - }, - { - "hash": "2f7a59a8da20b3a7fbdfb7ac783dbca977a81653", - "channel": "dev", - "version": "1.19.0-4.0.pre", - "release_date": "2020-06-05T16:31:50.289225Z", - "archive": "dev/windows/flutter_windows_1.19.0-4.0.pre-dev.zip", - "sha256": "4fc8c8597cb77dcb1adab7af44e8c564d7857a4d57ac809e3d0cd148403f7090" - }, - { - "hash": "6135091de9f8f6befc2ec7f8835d28d43a21cd05", - "channel": "dev", - "version": "1.19.0-3.0.pre", - "release_date": "2020-06-02T20:20:44.584873Z", - "archive": "dev/windows/flutter_windows_1.19.0-3.0.pre-dev.zip", - "sha256": "9e696fc4d572c7f42dc1661f247160fea80f8ca63611c9584d359c502cad107d" - }, - { - "hash": "1d395c5e187370f2838bb043d3b438029b484bfc", - "channel": "dev", - "version": "1.19.0-2.0.pre", - "release_date": "2020-06-01T17:32:41.018798Z", - "archive": "dev/windows/flutter_windows_1.19.0-2.0.pre-dev.zip", - "sha256": "929db832e3504ebe92b9519938fc5ce2e28cd9a89bd2dd29709aa69d6a35c2be" - }, - { - "hash": "5f21edf8b66e31a39133177319414395cc5b5f48", - "channel": "stable", - "version": "1.17.2", - "release_date": "2020-05-28T21:41:45.591652Z", - "archive": "stable/windows/flutter_windows_1.17.2-stable.zip", - "sha256": "48674906cbdf78e47b3a90e4e01d3ff7ccaff16be681e22d55a7e8db919c34d5" - }, - { - "hash": "2738a1148ba6c9a6114df62358109407c3ef2553", - "channel": "beta", - "version": "1.18.0-11.1.pre", - "release_date": "2020-05-14T17:51:10.706190Z", - "archive": "beta/windows/flutter_windows_1.18.0-11.1.pre-beta.zip", - "sha256": "37724aa854e47c0603787fcea5f0b56815ca28f51192557f33a9567a413ef5f1" - }, - { - "hash": "f7a6a7906be96d2288f5d63a5a54c515a6e987fe", - "channel": "stable", - "version": "1.17.1", - "release_date": "2020-05-13T18:08:40.384099Z", - "archive": "stable/windows/flutter_windows_1.17.1-stable.zip", - "sha256": "12b1e243b5a1620be7e6beaedff0fc47afeae3e8d8661fb096e5d2358b0e1566" - }, - { - "hash": "456d80b9ddd74b4b5ca3b77bbfb70ab0e05d3fa8", - "channel": "dev", - "version": "1.19.0-1.0.pre", - "release_date": "2020-05-12T22:38:16.364915Z", - "archive": "dev/windows/flutter_windows_1.19.0-1.0.pre-dev.zip", - "sha256": "0115d43f1b6f1cba386dec7fca1721cab5cdf4e4c419152986e3537318ab6e72" - }, - { - "hash": "a849daf2836d653ef80e01f428531b3f787671cb", - "channel": "dev", - "version": "1.19.0-0.0.pre", - "release_date": "2020-05-08T19:35:59.773728Z", - "archive": "dev/windows/flutter_windows_1.19.0-0.0.pre-dev.zip", - "sha256": "a4d6913f42e972b0263b996f91337a973928f03c9bdc13f2fbaef1f644e8713a" - }, - { - "hash": "8fbfe1cfbf6ac5c5c23930556e1019385005bf81", - "channel": "dev", - "version": "1.18.0-13.0.pre", - "release_date": "2020-05-07T17:11:57.281903Z", - "archive": "dev/windows/flutter_windows_1.18.0-13.0.pre-dev.zip", - "sha256": "c5dc98f69d162d647bd82a5cb9b313b039d27c95689934dc65ef2ec8f94899ab" - }, - { - "hash": "c2b7342ca470b11cfaad4fbfb094f73aa4c85320", - "channel": "dev", - "version": "1.18.0-12.0.pre", - "release_date": "2020-05-06T22:10:51.076262Z", - "archive": "dev/windows/flutter_windows_1.18.0-12.0.pre-dev.zip", - "sha256": "34d0b8cc3861ac7e84a702f8de4872664a4579dbb00001214bda1480580f9b03" - }, - { - "hash": "8568eda15b2527afd48622257cee3811e0d9da04", - "channel": "dev", - "version": "1.18.0-11.0.pre", - "release_date": "2020-05-06T18:40:51.838982Z", - "archive": "dev/windows/flutter_windows_1.18.0-11.0.pre-dev.zip", - "sha256": "34afaa4ebf89bbd57c42ab11a8900030fcbb4c2d24214ad17716bb5ac8bb001a" - }, - { - "hash": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f", - "channel": "stable", - "version": "1.17.0", - "release_date": "2020-05-06T14:30:41.659932Z", - "archive": "stable/windows/flutter_windows_1.17.0-stable.zip", - "sha256": "b6e8ca43b046d1a10cfb995b8c63828c8fbe35bb55e9c58349982810d57b2681" - }, - { - "hash": "9b7b9d795edfdd12c6ad8dd6495bed789c1bac05", - "channel": "dev", - "version": "1.18.0-10.0.pre", - "release_date": "2020-05-06T01:41:30.981078Z", - "archive": "dev/windows/flutter_windows_1.18.0-10.0.pre-dev.zip", - "sha256": "06b941331ff98b48ef338932cabe417660b81eb7e1e704ef01475fac040a2d2e" - }, - { - "hash": "445570ba1ae89eecaf9409fb5acde7e8b49ee975", - "channel": "dev", - "version": "1.18.0-9.0.pre", - "release_date": "2020-05-05T23:08:24.569649Z", - "archive": "dev/windows/flutter_windows_1.18.0-9.0.pre-dev.zip", - "sha256": "ebd24de7f2df084ea44e971018149041ccafdb503ff7b72a49c1de53748c1fb8" - }, - { - "hash": "e6b34c2b5c96bb95325269a29a84e83ed8909b5f", - "channel": "beta", - "version": "1.17.0-3.4.pre", - "release_date": "2020-05-02T20:33:14.297290Z", - "archive": "beta/windows/flutter_windows_1.17.0-3.4.pre-beta.zip", - "sha256": "9120c5044fbbec16b639b2a5256f37fd0774e976798ff5aa44b9ecbc4c173152" - }, - { - "hash": "0da1ab09224f6c6d69fcff1195a3662fe7ad7534", - "channel": "beta", - "version": "1.17.0-3.3.pre", - "release_date": "2020-04-28T23:59:31.178024Z", - "archive": "beta/windows/flutter_windows_1.17.0-3.3.pre-beta.zip", - "sha256": "561ace7f7cb60e496da6e918f36aa88c494f40faeffa5567ef728b3b9e4f8654" - }, - { - "hash": "e0c63cd35e15e407a80dc44281cc392535fcce25", - "channel": "dev", - "version": "1.18.0-8.0.pre", - "release_date": "2020-04-24T16:37:39.453303Z", - "archive": "dev/windows/flutter_windows_1.18.0-8.0.pre-dev.zip", - "sha256": "ff85e425d739e21d2f270f30f2600a40989d71d962bee56da222ac1eb8e0a0da" - }, - { - "hash": "d482163f59c49c32cb329beb2c3111c8e961d6b9", - "channel": "dev", - "version": "1.18.0-7.0.pre", - "release_date": "2020-04-24T12:57:12.193500Z", - "archive": "dev/windows/flutter_windows_1.18.0-7.0.pre-dev.zip", - "sha256": "64b4d6ca0ac3cf86c60af935274224ce3f269e710b8e4f02b06f7d0f05227028" - }, - { - "hash": "2a7bc389f28d83c581f7ddd4601588a22e12512e", - "channel": "beta", - "version": "1.17.0-3.2.pre", - "release_date": "2020-04-22T17:11:39.904570Z", - "archive": "beta/windows/flutter_windows_1.17.0-3.2.pre-beta.zip", - "sha256": "a249672dfec50eeb20bbe9e32e2cc17a5de80f7c52b1f8592e2125ab3233907d" - }, - { - "hash": "84c84fb24914e098667649be04614f6ea19d689c", - "channel": "dev", - "version": "1.18.0-6.0.pre", - "release_date": "2020-04-21T22:10:28.586548Z", - "archive": "dev/windows/flutter_windows_1.18.0-6.0.pre-dev.zip", - "sha256": "aa287dc96d946fb2624421f4920e8633b22f04e4cd94978a698b5db0f4334f14" - }, - { - "hash": "f139b11009aeb8ed2a3a3aa8b0066e482709dde3", - "channel": "stable", - "version": "v1.12.13+hotfix.9", - "release_date": "2020-04-17T21:33:52.442843Z", - "archive": "stable/windows/flutter_windows_v1.12.13+hotfix.9-stable.zip", - "sha256": "6d1a7dd628514e3b089c15ead3db715781b1f8129403b7082d214d8c30adf3c2" - }, - { - "hash": "7f56b53de4e5da2147c4d30d857a72c6f2e4f42f", - "channel": "dev", - "version": "1.18.0-dev.5.0", - "release_date": "2020-04-13T16:12:03.423862Z", - "archive": "dev/windows/flutter_windows_1.18.0-dev.5.0-dev.zip", - "sha256": "8a64d16c52b75b32afc4509c89fd08c9312bcae5ba5eda60b98c9395d225dfbc" - }, - { - "hash": "8f7327f83a3e094285163ae402c6f94190fc1674", - "channel": "dev", - "version": "1.18.0-dev.4.0", - "release_date": "2020-04-07T16:35:08.981364Z", - "archive": "dev/windows/flutter_windows_1.18.0-dev.4.0-dev.zip", - "sha256": "f2e2eaafcae0495f6f1b3f23b00cbfdb16bf7682ae6071db5ac6b87a289dfd7a" - }, - { - "hash": "de1e5729165b61829a8fa7c41b449c6c7ad74c84", - "channel": "dev", - "version": "1.18.0-dev.3.0", - "release_date": "2020-04-07T04:21:21.678326Z", - "archive": "dev/windows/flutter_windows_1.18.0-dev.3.0-dev.zip", - "sha256": "54addbd6b0c6af7e47b0b20885761d6b2146dac04712f15c91f4d76128f67f17" - }, - { - "hash": "727552e5caa10eee5808452dfbedfc9ef02178b8", - "channel": "dev", - "version": "1.18.0-dev.2.0", - "release_date": "2020-04-06T23:25:24.897274Z", - "archive": "dev/windows/flutter_windows_1.18.0-dev.2.0-dev.zip", - "sha256": "358f415bc9d8f5337202bac7fc100bec261cb546a4d899a3e4078093f93659b2" - }, - { - "hash": "d3ed9ec945f8869f0e136c357d0c2a6be2b60c98", - "channel": "beta", - "version": "1.17.0-dev.3.1", - "release_date": "2020-04-06T23:10:03.184781Z", - "archive": "beta/windows/flutter_windows_1.17.0-dev.3.1-beta.zip", - "sha256": "d5a437151d72e4a43269d1da9686a3f2aadadd2d9f7d09706f447131d3744f7b" - }, - { - "hash": "fef9d4d7cded15e4deff318c12cc2756c5c28bd6", - "channel": "dev", - "version": "1.18.0-dev.1.0", - "release_date": "2020-04-06T18:59:59.009511Z", - "archive": "dev/windows/flutter_windows_1.18.0-dev.1.0-dev.zip", - "sha256": "e52b4639eb9b93d80fd5c5f7e1917d935c4641b23938c01ac6393870474243a3" - }, - { - "hash": "14f3a36abaace74aeba3e40001ce905336fef415", - "channel": "dev", - "version": "1.18.0-dev.0.0", - "release_date": "2020-04-04T23:12:24.477125Z", - "archive": "dev/windows/flutter_windows_1.18.0-dev.0.0-dev.zip", - "sha256": "c9780941e6fedba23cf3c78b5ac23f51777eeca4ae76809b2453c0f10c930698" - }, - { - "hash": "a8b3d1b74fac5251c61c8a898cf7544fd77ddd16", - "channel": "dev", - "version": "1.17.0-dev.5.0", - "release_date": "2020-04-04T00:55:39.007403Z", - "archive": "dev/windows/flutter_windows_1.17.0-dev.5.0-dev.zip", - "sha256": "4ff183d549e4c681a5ceaa1d8e2a4aa6ce4aa514886f099fd73355582b873706" - }, - { - "hash": "66eb92e6259687c6e3434e9c76842b0848775c6b", - "channel": "dev", - "version": "1.17.0-dev.4.0", - "release_date": "2020-04-02T23:57:42.641113Z", - "archive": "dev/windows/flutter_windows_1.17.0-dev.4.0-dev.zip", - "sha256": "7db6249feff730a8c5423fc74c66953feccc411d02b68af96744855cf853cab1" - }, - { - "hash": "3a0d8377410ba85db3fb6a900e83dd211669bfc4", - "channel": "dev", - "version": "1.17.0-dev.3.0", - "release_date": "2020-04-02T18:50:50.348918Z", - "archive": "dev/windows/flutter_windows_1.17.0-dev.3.0-dev.zip", - "sha256": "dd8899aa220e49821eab859f2c4c84ca1395b928b034c79f0c93bda4837edd5b" - }, - { - "hash": "a94e647d6b11dd8523a30130a2548d73a3eaff4f", - "channel": "dev", - "version": "1.17.0-dev.2.0", - "release_date": "2020-04-02T17:18:43.599170Z", - "archive": "dev/windows/flutter_windows_1.17.0-dev.2.0-dev.zip", - "sha256": "effe8c03100acafb7e2ea7aa431adb85f9216a844b484aa44aed5e486c299c4c" - }, - { - "hash": "d14a301e419af7f3eff7cc3a49bf936c75d2b2f0", - "channel": "dev", - "version": "1.17.0-dev.1.0", - "release_date": "2020-04-01T22:12:54.742070Z", - "archive": "dev/windows/flutter_windows_1.17.0-dev.1.0-dev.zip", - "sha256": "694f12d91fef1d3c790bd9de1d0fe8fd3361c0288db65f2bba4945e2bd678fe7" - }, - { - "hash": "aee9e94c21009bfc6c08f442eacde06f001c25f9", - "channel": "dev", - "version": "1.17.0-dev.0.0", - "release_date": "2020-03-31T19:26:52.142274Z", - "archive": "dev/windows/flutter_windows_1.17.0-dev.0.0-dev.zip", - "sha256": "fe93cd2eaff3bf5def27fa5c39332d38d1f7999c59ea5d2d32fe0f248c722d4f" - }, - { - "hash": "be3a4b37b3e9ab4e80d45b59bed53708b96d211f", - "channel": "dev", - "version": "v1.16.3", - "release_date": "2020-03-27T18:28:02.437147Z", - "archive": "dev/windows/flutter_windows_v1.16.3-dev.zip", - "sha256": "c9d1ea00f183f846c7be5cf1f5972a5ecd8a9d34de5ba15a00898cb206181583" - }, - { - "hash": "58cad787d89cc12e72f1f0ec3f1df6a9796ef029", - "channel": "dev", - "version": "v1.16.2", - "release_date": "2020-03-24T14:54:53.866987Z", - "archive": "dev/windows/flutter_windows_v1.16.2-dev.zip", - "sha256": "4b1115649ba99b63bc340fcec5e045f29135f50151c22ff535faee6fac12e610" - }, - { - "hash": "e6b0f5f238d7c67a686e54d09c91e654fa8f215d", - "channel": "dev", - "version": "v1.16.1", - "release_date": "2020-03-19T18:12:31.731717Z", - "archive": "dev/windows/flutter_windows_v1.16.1-dev.zip", - "sha256": "ebede69c40b2c5e39746146b43a0b05d62160adb9ce65b786b39f0d1e7e7069e" - }, - { - "hash": "08768e87e408fd3df8f848b468b876fef1a49f76", - "channel": "dev", - "version": "v1.16.0", - "release_date": "2020-03-18T22:12:50.781461Z", - "archive": "dev/windows/flutter_windows_v1.16.0-dev.zip", - "sha256": "d0f99959829e527f96771ece9cba9b3db59538c1ff5538ef78c717b928211ca9" - }, - { - "hash": "2294d75bfa8d067ba90230c0fc2268f3636d7584", - "channel": "beta", - "version": "v1.15.17", - "release_date": "2020-03-17T17:21:54.092214Z", - "archive": "beta/windows/flutter_windows_v1.15.17-beta.zip", - "sha256": "3957ee303ffde1bbe0d0fcbd68afd1ee9b193a96079d8d7ef68d471f4d52f23c" - }, - { - "hash": "1606d878348e98fb1c401679ca8e006c7b7eb41f", - "channel": "dev", - "version": "v1.15.22", - "release_date": "2020-03-16T19:31:09.062005Z", - "archive": "dev/windows/flutter_windows_v1.15.22-dev.zip", - "sha256": "c05b5aab1e563f8bfa4805ff6ad6392a02a25880cff3bc96091c38de425edc49" - }, - { - "hash": "e2b4edd2865794e4ce9d4e8c40d732ed14eb6fa1", - "channel": "dev", - "version": "v1.15.21", - "release_date": "2020-03-13T20:53:47.612520Z", - "archive": "dev/windows/flutter_windows_v1.15.21-dev.zip", - "sha256": "c67820d2268df02b1e014eee2257bf139fdb59891b7d57d6e81b8b1514174377" - }, - { - "hash": "4049889d9eecc8fb3eda316a5c371eeb636b2ae5", - "channel": "dev", - "version": "v1.15.20", - "release_date": "2020-03-11T16:41:11.531794Z", - "archive": "dev/windows/flutter_windows_v1.15.20-dev.zip", - "sha256": "145aded225c3c29293acdc1182b7974bfe53e7b195308b202c32baccf68dfa91" - }, - { - "hash": "60d0fef17ae60b88cb52e6158bda2d91b600299c", - "channel": "dev", - "version": "v1.15.19", - "release_date": "2020-03-10T17:31:29.234820Z", - "archive": "dev/windows/flutter_windows_v1.15.19-dev.zip", - "sha256": "5243e9e69cd35ebfc2ab592e28c1cd47c438ba8c9c96d6cf7e496757b923f798" - }, - { - "hash": "9437639590adaa91e3df31cd9ce85133e401cd51", - "channel": "dev", - "version": "v1.15.18", - "release_date": "2020-03-06T23:37:27.486753Z", - "archive": "dev/windows/flutter_windows_v1.15.18-dev.zip", - "sha256": "5866d95afaa3de13b219f4c8f6dc8785fee865c09fda9bbe1c9d0518aa7c35eb" - }, - { - "hash": "2294d75bfa8d067ba90230c0fc2268f3636d7584", - "channel": "dev", - "version": "v1.15.17", - "release_date": "2020-03-06T19:49:35.786149Z", - "archive": "dev/windows/flutter_windows_v1.15.17-dev.zip", - "sha256": "c4b0375a0587baf7ebb5249363f9dc672ad784f110de18291694233c1174dc98" - }, - { - "hash": "fc3f03886dd715dda8e640e0b8bf3871213c1420", - "channel": "dev", - "version": "v1.15.16", - "release_date": "2020-03-06T04:06:07.150634Z", - "archive": "dev/windows/flutter_windows_v1.15.16-dev.zip", - "sha256": "e5cb0e25371af7f595f34c5360719cc8e2d5202f9267906a2601c2adf56ff8d2" - }, - { - "hash": "ed94c9d856c8de67f183d8ac18b06f61f5405219", - "channel": "dev", - "version": "v1.15.15", - "release_date": "2020-03-06T03:33:27.293065Z", - "archive": "dev/windows/flutter_windows_v1.15.15-dev.zip", - "sha256": "5dec916e43282b938fdf85d1a16a711cda1b2741182d51c7d8728c6c8b2997d4" - }, - { - "hash": "a68f96ae3f51c0339477f8b4711ba1f11daffb71", - "channel": "dev", - "version": "v1.15.14", - "release_date": "2020-03-06T02:19:50.593900Z", - "archive": "dev/windows/flutter_windows_v1.15.14-dev.zip", - "sha256": "8c14e2c0de673c2f1aec5ff3f0536551b94db22e14b8776d5917b76f6120b4bc" - }, - { - "hash": "92ce53cc6e9e85e8a9f3f496c8318e556ca8f974", - "channel": "dev", - "version": "v1.15.13", - "release_date": "2020-03-06T01:23:29.253250Z", - "archive": "dev/windows/flutter_windows_v1.15.13-dev.zip", - "sha256": "ec690a0a03b097005f13d55c3c59c410333e07cdc566219da21c7b485fedd333" - }, - { - "hash": "b127868db4944013c65232af46ce02d5b5bde93e", - "channel": "dev", - "version": "v1.15.12", - "release_date": "2020-03-05T23:35:19.212272Z", - "archive": "dev/windows/flutter_windows_v1.15.12-dev.zip", - "sha256": "15ae09229013a14340e76d93c288a967132d89159cac9b77fbba5b185987bb54" - }, - { - "hash": "1dce0a51e613df290b894e28e6a7d44f5fd87eb1", - "channel": "dev", - "version": "v1.15.11", - "release_date": "2020-03-05T21:09:57.907703Z", - "archive": "dev/windows/flutter_windows_v1.15.11-dev.zip", - "sha256": "f68e570c11cdab3895897e2c82860b96347362c2440e60d89e0d63cb353f84d1" - }, - { - "hash": "3018d8ddb3b40156b6d5a32ee4deaaa80277ea71", - "channel": "dev", - "version": "v1.15.10", - "release_date": "2020-03-05T18:42:34.712607Z", - "archive": "dev/windows/flutter_windows_v1.15.10-dev.zip", - "sha256": "44dd2190ff714bd50cdfb336c50da6577f49a81a7cf8ff4579bd19f38b60df82" - }, - { - "hash": "cc52a903a8639a8f59e84942172456629eb1aa8f", - "channel": "dev", - "version": "v1.15.9", - "release_date": "2020-03-05T05:33:03.406984Z", - "archive": "dev/windows/flutter_windows_v1.15.9-dev.zip", - "sha256": "b7d2246d2b1bd85defb2586c0b0b241bf6e6d8ae13b8ee369efcc3c954c8840b" - }, - { - "hash": "83dba9bc16be4aba56df6c5752f91e777d4331d6", - "channel": "dev", - "version": "v1.15.8", - "release_date": "2020-03-05T03:12:06.534958Z", - "archive": "dev/windows/flutter_windows_v1.15.8-dev.zip", - "sha256": "3d5249094d8fcca6bb7d9b3b22d80aa8af0cb08bfc9ac5155d70bd7a42f96693" - }, - { - "hash": "db94472aeb03eb91e833686223e8d930eb8e8d45", - "channel": "dev", - "version": "v1.15.7", - "release_date": "2020-03-05T02:19:27.832978Z", - "archive": "dev/windows/flutter_windows_v1.15.7-dev.zip", - "sha256": "fe4a34631fdd53c3c368839f60a082bcf67a61988a61c5f9c080029b224757cf" - }, - { - "hash": "0b8129db1f6b01924c82f3acccc498108c0e1ff4", - "channel": "dev", - "version": "v1.15.6", - "release_date": "2020-03-05T01:21:16.506096Z", - "archive": "dev/windows/flutter_windows_v1.15.6-dev.zip", - "sha256": "279f6fb10b32f984b88e1c493b5659676b97eb5bd70c1e98888c3927cb4460e7" - }, - { - "hash": "cbbb7ec5a7031187cc906ac9f375f340c16d51af", - "channel": "dev", - "version": "v1.15.5", - "release_date": "2020-03-04T23:29:43.742838Z", - "archive": "dev/windows/flutter_windows_v1.15.5-dev.zip", - "sha256": "986f721c25dbaa57d1331ddce4344ba88c0ac7a2c2d56608b1cf56f67c795aeb" - }, - { - "hash": "a5bd678585ceda542205a54d6e650b1b4297bd0a", - "channel": "dev", - "version": "v1.15.4", - "release_date": "2020-03-04T21:35:03.675854Z", - "archive": "dev/windows/flutter_windows_v1.15.4-dev.zip", - "sha256": "fd8591d68f754dc9287df82a13381fe83d7b754ead10c8a8900f2830ff859fa5" - }, - { - "hash": "0b8abb4724aa590dd0f429683339b1e045a1594d", - "channel": "stable", - "version": "v1.12.13+hotfix.8", - "release_date": "2020-02-11T21:55:56.630802Z", - "archive": "stable/windows/flutter_windows_v1.12.13+hotfix.8-stable.zip", - "sha256": "1cd8a1bc42dfef1ced8aa8495580a5f33fd2f9b92cef7547f34734949602bd3b" - }, - { - "hash": "67826bdce54505760fe83b7ead70bdb5af6fe9f2", - "channel": "dev", - "version": "v1.15.3", - "release_date": "2020-02-11T18:03:44.733150Z", - "archive": "dev/windows/flutter_windows_v1.15.3-dev.zip", - "sha256": "b26589217989065e75caa7dfb60036d5cf4c7d5768ba9f1023684a6926549a98" - }, - { - "hash": "d94ff4bdbec7f1141d16cf97d3ceed485c9a1d36", - "channel": "dev", - "version": "v1.15.2", - "release_date": "2020-02-07T23:02:12.134575Z", - "archive": "dev/windows/flutter_windows_v1.15.2-dev.zip", - "sha256": "2c9aa6edbbabe72041e94073f45906a70279979130e3dd7a10440d3662c792ea" - }, - { - "hash": "4d2ce7be2cd4622cede017b0fe2b8a66c821fe48", - "channel": "dev", - "version": "v1.15.1", - "release_date": "2020-02-06T23:01:13.756022Z", - "archive": "dev/windows/flutter_windows_v1.15.1-dev.zip", - "sha256": "62b0152f6163473886072bcb1004d2829c912f61ff9fb354bb5a69b0aeded6f1" - }, - { - "hash": "9b3e1639db189866af55ed3a0dfd47b217106fcd", - "channel": "dev", - "version": "v1.15.0", - "release_date": "2020-02-06T14:42:55.089416Z", - "archive": "dev/windows/flutter_windows_v1.15.0-dev.zip", - "sha256": "d962766144872298a8f40fcd1e82daa959aff17d64af6b0ca9da78a523e65f80" - }, - { - "hash": "fabeb2a16f1d008ab8230f450c49141d35669798", - "channel": "beta", - "version": "v1.14.6", - "release_date": "2020-02-05T19:42:03.546038Z", - "archive": "beta/windows/flutter_windows_v1.14.6-beta.zip", - "sha256": "c57c477558243846bbbb5c8dcb5e798cba3767fd05e01f0c2d1b70c1792c1d82" - }, - { - "hash": "fabeb2a16f1d008ab8230f450c49141d35669798", - "channel": "dev", - "version": "v1.14.6", - "release_date": "2020-01-29T01:47:07.708869Z", - "archive": "dev/windows/flutter_windows_v1.14.6-dev.zip", - "sha256": "f0b41bcfe16b9cf8caa5cf2a69e1e7e6061da4de90e1cb1a1c537cffb5490a43" - }, - { - "hash": "92cbaa3efe985cc8370d0d70fef5058c971b2eee", - "channel": "dev", - "version": "v1.14.5", - "release_date": "2020-01-27T18:39:08.127653Z", - "archive": "dev/windows/flutter_windows_v1.14.5-dev.zip", - "sha256": "3c19165eea2569759d0c6ae0ff9374d3d74a391e1d29afa3a3728f1c1726e7e6" - }, - { - "hash": "9f5ff2306bb3e30b2b98eee79cd231b1336f41f4", - "channel": "stable", - "version": "v1.12.13+hotfix.7", - "release_date": "2020-01-27T15:59:34.850484Z", - "archive": "stable/windows/flutter_windows_v1.12.13+hotfix.7-stable.zip", - "sha256": "7b71b23af9149eb29e300c0e4ceed3e3de20d0104f48c9386a03f454e4d944a2" - }, - { - "hash": "5e1000cd8540a6305df5a999d4dcb0b59fe3c66a", - "channel": "dev", - "version": "v1.14.4", - "release_date": "2020-01-25T00:54:05.624871Z", - "archive": "dev/windows/flutter_windows_v1.14.4-dev.zip", - "sha256": "aafbd4a696545e421b1756f7bd5e5ed34369cbc5a876c2051742feb747403596" - }, - { - "hash": "b5a23fdf5bc01e292238627f031a34ed0adb80b0", - "channel": "dev", - "version": "v1.14.3", - "release_date": "2020-01-22T01:23:13.008501Z", - "archive": "dev/windows/flutter_windows_v1.14.3-dev.zip", - "sha256": "f6165be7687df65b0beaf315c86149e48c760b4939fecad40893961a40043dc8" - }, - { - "hash": "ec1044a8773e31b4630bf162d9c374236ad1eaaf", - "channel": "dev", - "version": "v1.14.2", - "release_date": "2020-01-21T20:11:10.596174Z", - "archive": "dev/windows/flutter_windows_v1.14.2-dev.zip", - "sha256": "3ad199e01b512e6993e7a7a86be4a5979bb0557fe62021c4c1d6703c5f337497" - }, - { - "hash": "c88320458ea86da379aec43dcd24057ad1d79652", - "channel": "dev", - "version": "v1.14.1", - "release_date": "2020-01-16T18:35:43.141813Z", - "archive": "dev/windows/flutter_windows_v1.14.1-dev.zip", - "sha256": "115c37354689972643f784582e47ae2d8e52efbaebeccdb9a3fee7aea3a6a2c9" - }, - { - "hash": "bc6f270c584d1fdba81330090ef6e822b9082919", - "channel": "dev", - "version": "v1.14.0", - "release_date": "2020-01-15T23:23:06.489455Z", - "archive": "dev/windows/flutter_windows_v1.14.0-dev.zip", - "sha256": "6c090e5985cf647c89ea63d973568c34702591db9c684f68b6514aeda2b57129" - }, - { - "hash": "659dc8129d4edb9166e9a0d600439d135740933f", - "channel": "beta", - "version": "v1.13.6", - "release_date": "2020-01-15T17:37:52.749709Z", - "archive": "beta/windows/flutter_windows_v1.13.6-beta.zip", - "sha256": "4fa64e222b857a3d28012c22fba2c2117ad45dd5bc2dbbb0b63762f8544a61cf" - }, - { - "hash": "d291de086c0840eb63d82bcde11af2ec521e2a0c", - "channel": "dev", - "version": "v1.13.9", - "release_date": "2020-01-14T21:30:02.141530Z", - "archive": "dev/windows/flutter_windows_v1.13.9-dev.zip", - "sha256": "24088133122935a84d4894a25ad2afb67c3ba17bbe0fc241a090066619acbfd8" - }, - { - "hash": "1c79347ef659402a17bf9405b3305564530d3bd2", - "channel": "dev", - "version": "v1.13.8", - "release_date": "2020-01-10T22:25:17.422602Z", - "archive": "dev/windows/flutter_windows_v1.13.8-dev.zip", - "sha256": "b96f7cf97ffeb8bc14f47ff1831f3e178b8c137fb22bb9ee910682737e98e85e" - }, - { - "hash": "a3bbdfb23acb173b1bac7cbcd7c4ac723eb584b9", - "channel": "dev", - "version": "v1.13.7", - "release_date": "2020-01-07T23:10:21.568843Z", - "archive": "dev/windows/flutter_windows_v1.13.7-dev.zip", - "sha256": "6f306eec05fd6689527d02b61d18833038d1593f2eae39bb1bc287533857553a" - }, - { - "hash": "659dc8129d4edb9166e9a0d600439d135740933f", - "channel": "dev", - "version": "v1.13.6", - "release_date": "2020-01-02T22:36:13.958616Z", - "archive": "dev/windows/flutter_windows_v1.13.6-dev.zip", - "sha256": "844c5b12eca9998ee32a1c681e6ffd4aaee60d89576aa19fd9f48ffff08be3a5" - }, - { - "hash": "41a911099b7d06f7b1c29f4420cfcfe41fd26e46", - "channel": "dev", - "version": "v1.13.5", - "release_date": "2019-12-21T02:22:07.578133Z", - "archive": "dev/windows/flutter_windows_v1.13.5-dev.zip", - "sha256": "17bac92da1a583daa90d7cbbb61d8d023c3efb121834c1ee9825e9228b63c07c" - }, - { - "hash": "bd25f70c66ccd832d53644bd33a1368e96a7aa75", - "channel": "dev", - "version": "v1.13.4", - "release_date": "2019-12-20T19:58:55.396877Z", - "archive": "dev/windows/flutter_windows_v1.13.4-dev.zip", - "sha256": "108396bb206873b9c300ea17b50145e2c9ff670fe6e4e6661eb6b1cf496d0bf7" - }, - { - "hash": "4af66e335f8d87da5cb8c7f2a3e89c1ee02ef23b", - "channel": "dev", - "version": "v1.13.3", - "release_date": "2019-12-19T21:48:07.676053Z", - "archive": "dev/windows/flutter_windows_v1.13.3-dev.zip", - "sha256": "8a8815ae6909e51e08aa34ceff353449ec4ac0f68f33b9a7432182cb58dd957c" - }, - { - "hash": "4944622b5d8e7a8ee5dbf658b0d0e8ab94b8efd3", - "channel": "dev", - "version": "v1.13.2", - "release_date": "2019-12-13T02:16:09.259647Z", - "archive": "dev/windows/flutter_windows_v1.13.2-dev.zip", - "sha256": "84b0438f1b98e1d93f249c1c9e7361e372a1ad0e80d62aa08cdfd611d6243f6f" - }, - { - "hash": "4938ea03858e178541d723dff430e6c9d044e6ae", - "channel": "dev", - "version": "v1.13.1", - "release_date": "2019-12-12T21:37:00.195784Z", - "archive": "dev/windows/flutter_windows_v1.13.1-dev.zip", - "sha256": "daf5f26fd6a57a92d745f4fb9b06ab1ed39607f5c0c3b8629b75a82ed377fb20" - }, - { - "hash": "18cd7a3601bcffb36fdf2f679f763b5e827c2e8e", - "channel": "beta", - "version": "v1.12.13+hotfix.6", - "release_date": "2019-12-11T16:10:04.578679Z", - "archive": "beta/windows/flutter_windows_v1.12.13+hotfix.6-beta.zip", - "sha256": "3435ea7cc029a74db35d02f0e96de1be1c2517a9a17a35650caa274e7ecf9427" - }, - { - "hash": "27321ebbad34b0a3fafe99fac037102196d655ff", - "channel": "stable", - "version": "v1.12.13+hotfix.5", - "release_date": "2019-12-11T15:46:55.651861Z", - "archive": "stable/windows/flutter_windows_v1.12.13+hotfix.5-stable.zip", - "sha256": "f86e162c3c732d4fc85ce85b4eb9d4e0eeaf3f6020f7fd44da247bfb87c7ac40" - }, - { - "hash": "27321ebbad34b0a3fafe99fac037102196d655ff", - "channel": "beta", - "version": "v1.12.13+hotfix.5", - "release_date": "2019-12-11T02:41:45.799918Z", - "archive": "beta/windows/flutter_windows_v1.12.13+hotfix.5-beta.zip", - "sha256": "3d6be1e7c70f137426c6a623c6b9c48896bc1a4391326a684f137413949d5b37" - }, - { - "hash": "fb60324e6fa791bedeade8be4773a42037e11f62", - "channel": "beta", - "version": "v1.12.13+hotfix.4", - "release_date": "2019-12-10T00:21:14.576869Z", - "archive": "beta/windows/flutter_windows_v1.12.13+hotfix.4-beta.zip", - "sha256": "316bf4802e27a0f337ae0382324f19d7ae084577baa35f96eda75092053d3729" - }, - { - "hash": "57f2df76d75cff290cbe2765b07db1ad3e67b50d", - "channel": "beta", - "version": "v1.12.13+hotfix.3", - "release_date": "2019-12-06T05:45:39.633852Z", - "archive": "beta/windows/flutter_windows_v1.12.13+hotfix.3-beta.zip", - "sha256": "057d67afe0774a0086ae5bb81809a6aa9f34244d3a6a604bac69d7434e1ce232" - }, - { - "hash": "09126abb222d0f25b03318a1ab4a99d27d9aaa8d", - "channel": "dev", - "version": "v1.13.0", - "release_date": "2019-12-05T19:27:28.220527Z", - "archive": "dev/windows/flutter_windows_v1.13.0-dev.zip", - "sha256": "2d7d36d3d6ab52bf871ac180a2edaa73e4a0ef8ecbab4fb5862a44fa55afea75" - }, - { - "hash": "4f54e46f56c2ffc92eb440dbdab1a7f8e722e593", - "channel": "beta", - "version": "v1.12.13+hotfix.2", - "release_date": "2019-12-04T18:24:20.953222Z", - "archive": "beta/windows/flutter_windows_v1.12.13+hotfix.2-beta.zip", - "sha256": "be49dc162cef52b48027104a9ba15ffe24833c06580921915dc5d6ab8dcf8c28" - }, - { - "hash": "5b07015393539822da275ab9a348b9e9ce92a29e", - "channel": "beta", - "version": "v1.12.13+hotfix.1", - "release_date": "2019-12-03T19:10:33.025626Z", - "archive": "beta/windows/flutter_windows_v1.12.13+hotfix.1-beta.zip", - "sha256": "6e945a3667ac4e6dbcf065ea6f1f09e446ad4d012c9e7ef0c52643a8606c3c44" - }, - { - "hash": "37f9c541165c3516f727cd36bd502d411fdad3b8", - "channel": "dev", - "version": "v1.12.16", - "release_date": "2019-12-02T19:10:43.853253Z", - "archive": "dev/windows/flutter_windows_v1.12.16-dev.zip", - "sha256": "12ebda55aabf887f375083b29d248ec7f3c8e570cda7c6957f42696a6fff992c" - }, - { - "hash": "459c7fb884d9234c45b353087e0ec8a33dde90d1", - "channel": "dev", - "version": "v1.12.15", - "release_date": "2019-11-27T18:46:05.608067Z", - "archive": "dev/windows/flutter_windows_v1.12.15-dev.zip", - "sha256": "fa53e2d9ad3d2bfda952b91cafe99315b13df5b8400ca4266766f67957458357" - }, - { - "hash": "7726910a5bc4135a9f1fd497c872c9e5cb1e51b5", - "channel": "dev", - "version": "v1.12.14", - "release_date": "2019-11-26T22:20:23.461600Z", - "archive": "dev/windows/flutter_windows_v1.12.14-dev.zip", - "sha256": "ce5f744aa57886811455ca9693d666cfefcdb652b026891c36ce574b5268ad5c" - }, - { - "hash": "cf37c2cd07a1d3ba296efff2dc75e19ba65e1665", - "channel": "dev", - "version": "v1.12.13", - "release_date": "2019-11-26T01:00:09.252014Z", - "archive": "dev/windows/flutter_windows_v1.12.13-dev.zip", - "sha256": "ddbeb2fb1f81c5f9760d16e73d0781868b1c2dc00b404d5f47c82a8d731b87e8" - }, - { - "hash": "bae92c32e5233e9113e42962179773309fb3ad8c", - "channel": "dev", - "version": "v1.12.12", - "release_date": "2019-11-25T21:13:03.510835Z", - "archive": "dev/windows/flutter_windows_v1.12.12-dev.zip", - "sha256": "2b9c4b9de3f157797f9bf7264b6cfe0728a79df5a655cdbecff0b06876ba9994" - }, - { - "hash": "f40dbf8ca07b0498eff3d6b861ecd21f2de7db6a", - "channel": "dev", - "version": "v1.12.11", - "release_date": "2019-11-23T21:34:52.523646Z", - "archive": "dev/windows/flutter_windows_v1.12.11-dev.zip", - "sha256": "5641b9d656000a7f9efc781767854dac1f886d61653572efda8a44013ae0fe9f" - }, - { - "hash": "b6e92003c8abc5e04a193b58e4a7c8b98d4b8536", - "channel": "dev", - "version": "v1.12.10", - "release_date": "2019-11-23T06:59:34.174164Z", - "archive": "dev/windows/flutter_windows_v1.12.10-dev.zip", - "sha256": "5543c15cd8fa78ccd68ab0c9dfbbd6de8bd1731bd2e34a84baf9643762937bd9" - }, - { - "hash": "33d302240d3e483fc78bf6abb43d8346260b60c5", - "channel": "dev", - "version": "v1.12.9", - "release_date": "2019-11-22T23:33:50.802011Z", - "archive": "dev/windows/flutter_windows_v1.12.9-dev.zip", - "sha256": "0ed9972983fdf96e68a2fd1fdf1693c4a12bc3e021220358ded6f510b5e69914" - }, - { - "hash": "4c64b715d9a677922ef02f2643211a6282926eb5", - "channel": "dev", - "version": "v1.12.8", - "release_date": "2019-11-22T17:46:55.878930Z", - "archive": "dev/windows/flutter_windows_v1.12.8-dev.zip", - "sha256": "61afae15547a47000db50e106e439e1ab710c4e958515e614e37704fddc16584" - }, - { - "hash": "856a90e67c9284124d44d2be6c785bacd3a1c772", - "channel": "beta", - "version": "v1.11.0", - "release_date": "2019-11-22T06:08:44.365811Z", - "archive": "beta/windows/flutter_windows_v1.11.0-beta.zip", - "sha256": "606d3e03aeb429dc7f04767441156095ffe78b68a824eaeba5ad8286fdff0436" - }, - { - "hash": "43a8a1902e5c42d084077e8ede6f14f8ddbdce24", - "channel": "dev", - "version": "v1.12.7", - "release_date": "2019-11-21T21:09:04.169283Z", - "archive": "dev/windows/flutter_windows_v1.12.7-dev.zip", - "sha256": "bb83b904d6e3f8a06c48c243a7b818f6ccc8e6f4df8431b1727e3d713613f167" - }, - { - "hash": "6eb0a0e3715c6eeb7a2733f74cf6e741fe796ef6", - "channel": "dev", - "version": "v1.12.6", - "release_date": "2019-11-21T18:02:23.560586Z", - "archive": "dev/windows/flutter_windows_v1.12.6-dev.zip", - "sha256": "0cdae42d82de12ac3e589821f2f596bb10e0549523f349218e62e282bad8c7ee" - }, - { - "hash": "2c7af1e24e45a79f4eb73d67d98fcecea8bf6146", - "channel": "dev", - "version": "v1.12.5", - "release_date": "2019-11-21T03:13:34.672312Z", - "archive": "dev/windows/flutter_windows_v1.12.5-dev.zip", - "sha256": "ad2a06c571c277de6939c7621684c71553858ca1f095a78505b3dc82190f13e4" - }, - { - "hash": "2461c75600ba6e11a49da0fca29abe3b4501efcd", - "channel": "dev", - "version": "v1.12.4", - "release_date": "2019-11-18T22:46:33.767991Z", - "archive": "dev/windows/flutter_windows_v1.12.4-dev.zip", - "sha256": "0b7b090772491742e42d4a35e3436ff75eb6200a0b766791864ebfb79cab5327" - }, - { - "hash": "028b4c4f40e4c2035961cbc35ab7b49fe48320d8", - "channel": "dev", - "version": "v1.12.3", - "release_date": "2019-11-18T17:46:49.383348Z", - "archive": "dev/windows/flutter_windows_v1.12.3-dev.zip", - "sha256": "46c45a48ee60f8518d73e9b8dd33f40c0d7513ac516f5079fef3b5cc511a9d89" - }, - { - "hash": "6de62679421abe42f0f669e191fead30ee8bf7e0", - "channel": "dev", - "version": "v1.12.2", - "release_date": "2019-11-15T21:43:02.480732Z", - "archive": "dev/windows/flutter_windows_v1.12.2-dev.zip", - "sha256": "425a6376a99667198bd7ef0fa288286b480cb2f21fb2d02075a2eed797ccce2b" - }, - { - "hash": "86c91b12d88934886b35887ec23068c1eeee5624", - "channel": "dev", - "version": "v1.12.1", - "release_date": "2019-11-15T04:33:40.272563Z", - "archive": "dev/windows/flutter_windows_v1.12.1-dev.zip", - "sha256": "8e4e8b078d83962cbfcf532e7c31f5fdff35cffb21373dfe1b0059922cff0c5f" - }, - { - "hash": "9323a623bd83f0bb994f50086344fb8933e05081", - "channel": "dev", - "version": "v1.12.0", - "release_date": "2019-11-14T21:44:10.689787Z", - "archive": "dev/windows/flutter_windows_v1.12.0-dev.zip", - "sha256": "d9fe3cdd6e4323f8fe39e98eae2a0a5bd814027f12d90a2cd6d8c4afb56593d3" - }, - { - "hash": "856a90e67c9284124d44d2be6c785bacd3a1c772", - "channel": "dev", - "version": "v1.11.0", - "release_date": "2019-11-13T23:16:04.339181Z", - "archive": "dev/windows/flutter_windows_v1.11.0-dev.zip", - "sha256": "deb3dcf911d02a5933d609837ee03d83a9b0fce7ae8eeb5c77919d4634a789a0" - }, - { - "hash": "798e4272a2e43d7daab75f225a13442e384ee0cd", - "channel": "dev", - "version": "v1.10.16", - "release_date": "2019-11-11T19:15:28.662131Z", - "archive": "dev/windows/flutter_windows_v1.10.16-dev.zip", - "sha256": "e0b0e433d113305f581528a99d18affa59c439ef250d0c996360a5025608138f" - }, - { - "hash": "fbabb264e0ab3e090d6ec056e0744aaeb1586735", - "channel": "dev", - "version": "v1.10.15", - "release_date": "2019-11-07T02:14:44.501376Z", - "archive": "dev/windows/flutter_windows_v1.10.15-dev.zip", - "sha256": "695cfe968a5e9918019f34f8d523b703b1dbca51ff7a2f7da6756ac74b83291a" - }, - { - "hash": "68587a0916366e9512a78df22c44163d041dd5f3", - "channel": "stable", - "version": "v1.9.1+hotfix.6", - "release_date": "2019-10-23T23:24:13.034186Z", - "archive": "stable/windows/flutter_windows_v1.9.1+hotfix.6-stable.zip", - "sha256": "bc267f71f1605418524ba95f5ff7d2eb1604e0a5b5c1b27d0b5bd487f81419cc" - }, - { - "hash": "1aedbb1835bd6eb44550293d57d4d124f19901f0", - "channel": "stable", - "version": "v1.9.1+hotfix.5", - "release_date": "2019-10-17T17:16:14.935506Z", - "archive": "stable/windows/flutter_windows_v1.9.1+hotfix.5-stable.zip", - "sha256": "cf0ff6d6b6bb92560d08d3cd6a5c01bca1f6932519d372047b5dd0f9761f8c28" - }, - { - "hash": "e70236e36ce1d32067dc68eb55519ec3e14b6b01", - "channel": "beta", - "version": "v1.10.7", - "release_date": "2019-10-10T20:03:48.533864Z", - "archive": "beta/windows/flutter_windows_v1.10.7-beta.zip", - "sha256": "e6505706e9aff794f68d35e612721a96a87a0dbac785e796e04e119d122bf8a2" - }, - { - "hash": "1946fc4da0f80c522d7e3ae7d4f7309908ed86f2", - "channel": "dev", - "version": "v1.10.14", - "release_date": "2019-10-08T22:16:47.809428Z", - "archive": "dev/windows/flutter_windows_v1.10.14-dev.zip", - "sha256": "02aa41557e3ad8555c2d775c13c4874b2941559b25c4904c32b74699955e9786" - }, - { - "hash": "97e00b2288938998f755c5262a118d9a0d6a915a", - "channel": "dev", - "version": "v1.10.13", - "release_date": "2019-10-08T00:48:05.249154Z", - "archive": "dev/windows/flutter_windows_v1.10.13-dev.zip", - "sha256": "836a691ccd160c8121db1dc329a1ce0bbdaae9ca0cbea0aba178b4b452869cb5" - }, - { - "hash": "0e605cc4dd83137f785769dea5e8ae7da1afb361", - "channel": "dev", - "version": "v1.10.12", - "release_date": "2019-10-04T22:56:40.518630Z", - "archive": "dev/windows/flutter_windows_v1.10.12-dev.zip", - "sha256": "7784b28c543dae62be992ea86ee81f82099fdad8fe3efaa6ca634ac612bf4432" - }, - { - "hash": "5961bcc505b589328c3c20f0841ba467db3f966a", - "channel": "dev", - "version": "v1.10.11", - "release_date": "2019-10-04T17:49:43.994595Z", - "archive": "dev/windows/flutter_windows_v1.10.11-dev.zip", - "sha256": "47d8b508d9072a20866ad9152141e4613ccfb4067e4fbe89dedf1a90a0bddaa2" - }, - { - "hash": "3a728a9b5b14e2390965be0e1e0215ef583716e2", - "channel": "dev", - "version": "v1.10.10", - "release_date": "2019-10-04T07:47:32.036862Z", - "archive": "dev/windows/flutter_windows_v1.10.10-dev.zip", - "sha256": "f10723b40d94be3776dbc7cf5ae7b748e9bb04db856f30aa51703e8352c4ded7" - }, - { - "hash": "3e2dc8ca7b59080cef04a9ff474b5b18d94e4365", - "channel": "dev", - "version": "v1.10.9", - "release_date": "2019-10-04T06:17:40.024866Z", - "archive": "dev/windows/flutter_windows_v1.10.9-dev.zip", - "sha256": "d3e94daab6381996479796d81fdb7d8221f141695a497b362c842cbabd0f119e" - }, - { - "hash": "0b0942a60caafff56c19fea07d8f7b14e6286e1c", - "channel": "dev", - "version": "v1.10.8", - "release_date": "2019-10-04T00:19:55.843611Z", - "archive": "dev/windows/flutter_windows_v1.10.8-dev.zip", - "sha256": "32644bc934d0aed3826325b013dd39741c893dee180ec6bdd9f505be3a509826" - }, - { - "hash": "e70236e36ce1d32067dc68eb55519ec3e14b6b01", - "channel": "dev", - "version": "v1.10.7", - "release_date": "2019-10-02T23:14:34.079721Z", - "archive": "dev/windows/flutter_windows_v1.10.7-dev.zip", - "sha256": "21f39e6a0ca37d327dee705d47d072937086ecddd71d6efa53747fc00a391f0b" - }, - { - "hash": "cc949a8e8b9cf394b9290a8e80f87af3e207dce5", - "channel": "stable", - "version": "v1.9.1+hotfix.4", - "release_date": "2019-10-01T16:16:21.907989Z", - "archive": "stable/windows/flutter_windows_v1.9.1+hotfix.4-stable.zip", - "sha256": "2a363c7862987987735ab06ffeeaa2a0b6984df89dd7b77ceef1a4efaceacebc" - }, - { - "hash": "cc949a8e8b9cf394b9290a8e80f87af3e207dce5", - "channel": "beta", - "version": "v1.9.1+hotfix.4", - "release_date": "2019-09-27T22:41:41.455784Z", - "archive": "beta/windows/flutter_windows_v1.9.1+hotfix.4-beta.zip", - "sha256": "6782d372798a7f18a98c3ca5624b88ee19300df2461275e2f9452d893050e5e3" - }, - { - "hash": "a72edc27064c2cbfbbae17ea1695333e1b3d9595", - "channel": "beta", - "version": "v1.9.1+hotfix.3", - "release_date": "2019-09-26T01:39:06.902214Z", - "archive": "beta/windows/flutter_windows_v1.9.1+hotfix.3-beta.zip", - "sha256": "1bfa226f45954e09cb5dcd839ee5aac0ebac66c026f4c2408f7fa049e456e95b" - }, - { - "hash": "cc3ca9a916cb1da851a1f36432154a534787da99", - "channel": "dev", - "version": "v1.10.6", - "release_date": "2019-09-25T22:57:23.691162Z", - "archive": "dev/windows/flutter_windows_v1.10.6-dev.zip", - "sha256": "0d50abd1b0cee54f461ae56d5bf696b4731baabbd30817a8b977368cf11b2af3" - }, - { - "hash": "3cf88fed6d9b016f83a4920a5db524bf5a2d2b64", - "channel": "dev", - "version": "v1.10.5", - "release_date": "2019-09-20T17:26:29.268542Z", - "archive": "dev/windows/flutter_windows_v1.10.5-dev.zip", - "sha256": "fc7fe0e20022450a23d75c7bf3163ede2b2049964f73931bfee6788835fbea7a" - }, - { - "hash": "0b24a5a2ff9eccfba77bb68a0abcf1b7f0ae5b37", - "channel": "dev", - "version": "v1.10.4", - "release_date": "2019-09-19T04:12:02.518866Z", - "archive": "dev/windows/flutter_windows_v1.10.4-dev.zip", - "sha256": "963c572bf443ddafb155cd87e24edaf04895138be886980b743cdec59cb761d4" - }, - { - "hash": "2f3515de31c0479cd09ad11cdc079281270405f4", - "channel": "dev", - "version": "v1.10.3", - "release_date": "2019-09-17T21:11:42.649478Z", - "archive": "dev/windows/flutter_windows_v1.10.3-dev.zip", - "sha256": "77743fb35f9780e83663f7b195aa3001037973a3ffa69776451d3caba80e222d" - }, - { - "hash": "f5733f7a62ebc7c2ba324a2b410cd81215956b7d", - "channel": "dev", - "version": "v1.10.2", - "release_date": "2019-09-14T00:08:37.207267Z", - "archive": "dev/windows/flutter_windows_v1.10.2-dev.zip", - "sha256": "c05c6eb8ee20602fdef7ee4d27e74ac75c752110b6ca48d725736c9a6ab64e53" - }, - { - "hash": "2d2a1ffec95cc70a3218872a2cd3f8de4933c42f", - "channel": "stable", - "version": "v1.9.1+hotfix.2", - "release_date": "2019-09-10T02:15:18.545175Z", - "archive": "stable/windows/flutter_windows_v1.9.1+hotfix.2-stable.zip", - "sha256": "a5aa54a04cbbbda95d5413352aee8c485ed4e303d200675e0c6fa726245c8798" - }, - { - "hash": "ce45c2d3e6f02022f73bd3804775cb9a89c08b49", - "channel": "dev", - "version": "v1.10.1", - "release_date": "2019-09-09T23:44:27.582102Z", - "archive": "dev/windows/flutter_windows_v1.10.1-dev.zip", - "sha256": "1605d59440a08027a6ea562383a1c95eb9a27ebb417844e95990126ab8aded28" - }, - { - "hash": "2d2a1ffec95cc70a3218872a2cd3f8de4933c42f", - "channel": "beta", - "version": "v1.9.1+hotfix.2", - "release_date": "2019-09-08T22:08:36.437403Z", - "archive": "beta/windows/flutter_windows_v1.9.1+hotfix.2-beta.zip", - "sha256": "eecfc5e62fc846ee2dbcd9e151afeb9500136b8c5a2282c16eaf446d81ca87d3" - }, - { - "hash": "3932ffb1cd5dfa0c3891c60977ee4f9cd70ade66", - "channel": "dev", - "version": "v1.10.0", - "release_date": "2019-09-06T19:58:48.372425Z", - "archive": "dev/windows/flutter_windows_v1.10.0-dev.zip", - "sha256": "75c226cce2ee75283b35b5c34b1b287700c2799a4d38a27edf8ae07a8ba12d17" - }, - { - "hash": "a1fb3fabec40144f57344635c37c28eed4fb122b", - "channel": "beta", - "version": "v1.9.1+hotfix.1", - "release_date": "2019-09-04T01:31:14.881833Z", - "archive": "beta/windows/flutter_windows_v1.9.1+hotfix.1-beta.zip", - "sha256": "87ecc04d74e21d4a0dc63162b7bc6144e1c7673e3ce7c327d678c51611d3cca4" - }, - { - "hash": "4984d1a33dd6de2862578e3f08b4ca7dfce7d54b", - "channel": "dev", - "version": "v1.9.7", - "release_date": "2019-08-29T17:39:36.773526Z", - "archive": "dev/windows/flutter_windows_v1.9.7-dev.zip", - "sha256": "1377cc70002af48bcaf46bf54ce7e3c5ee94fc6eba0ab03d2891f98e6bdb7019" - }, - { - "hash": "35de8d527842f99e30240a7fbf08cd4638ba7a5d", - "channel": "dev", - "version": "v1.9.6", - "release_date": "2019-08-29T02:33:33.883082Z", - "archive": "dev/windows/flutter_windows_v1.9.6-dev.zip", - "sha256": "2837f564d2cdfaa2d065e8e528074d17be5f02de6650309a6eface3846af0797" - }, - { - "hash": "365f577c707b092f9b97b62b0cdb331c2d7fcf75", - "channel": "dev", - "version": "v1.9.5", - "release_date": "2019-08-24T04:06:35.968847Z", - "archive": "dev/windows/flutter_windows_v1.9.5-dev.zip", - "sha256": "69d6f6c1f90ec01981a23b261ab86c1d1cf02c80f722dc49de9ed5603eb8edaf" - }, - { - "hash": "cf87f68fd08d697273c780d09fc647616749e8b1", - "channel": "dev", - "version": "v1.9.4", - "release_date": "2019-08-23T21:57:25.204250Z", - "archive": "dev/windows/flutter_windows_v1.9.4-dev.zip", - "sha256": "e875909ff9fbb5c76b794f19d0b0d2f1e3161c4beda13d037e17f390db2d30b3" - }, - { - "hash": "f515bf6abc909fddca311dca78837ce478e571aa", - "channel": "dev", - "version": "v1.9.3", - "release_date": "2019-08-22T17:04:40.502250Z", - "archive": "dev/windows/flutter_windows_v1.9.3-dev.zip", - "sha256": "733f3fadc1c8886e8175eb983d8836d6a807e05924f3fe3693068e953c0e8eb4" - }, - { - "hash": "6815f540c996b5baf559ef075a906ab1bec05a18", - "channel": "dev", - "version": "v1.9.2", - "release_date": "2019-08-21T23:37:38.775717Z", - "archive": "dev/windows/flutter_windows_v1.9.2-dev.zip", - "sha256": "39639c24cf7f9514aa02344b281c11e2353fc478feb9d5f4bb0fe0952b8ff216" - }, - { - "hash": "c382b8e990b6976f610764179f94e0416d82c057", - "channel": "dev", - "version": "v1.9.1", - "release_date": "2019-08-21T18:52:01.165799Z", - "archive": "dev/windows/flutter_windows_v1.9.1-dev.zip", - "sha256": "4827903242f7e73913594b51fbff5f977befd032ad4e71baf1807ad40a5accd6" - }, - { - "hash": "760635e6dbf9180222171ac189199982a65cf608", - "channel": "dev", - "version": "v1.9.0", - "release_date": "2019-08-15T22:17:23.998188Z", - "archive": "dev/windows/flutter_windows_v1.9.0-dev.zip", - "sha256": "be988485bbf9fa3fb39bac01d1efd5b111f78c5c5df346c6874e9f67d1b5b0f3" - }, - { - "hash": "e4ebcdf6f4facee5779c38a04d91d08dc58ea7a4", - "channel": "beta", - "version": "v1.8.3", - "release_date": "2019-08-08T21:37:54.630129Z", - "archive": "beta/windows/flutter_windows_v1.8.3-beta.zip", - "sha256": "aa1ea008779bfe8c9d403dd72c584a0adfd144b62f1c8ff0993d9ce4bf74df15" - }, - { - "hash": "e4ebcdf6f4facee5779c38a04d91d08dc58ea7a4", - "channel": "dev", - "version": "v1.8.3", - "release_date": "2019-07-31T20:24:16.118974Z", - "archive": "dev/windows/flutter_windows_v1.8.3-dev.zip", - "sha256": "be0a4a2787afac1efc667d86f0b64f6c9a5b32d5d6d65d87627a4c50def5b195" - }, - { - "hash": "20e59316b8b8474554b38493b8ca888794b0234a", - "channel": "stable", - "version": "v1.7.8+hotfix.4", - "release_date": "2019-07-24T16:12:51.214507Z", - "archive": "stable/windows/flutter_windows_v1.7.8+hotfix.4-stable.zip", - "sha256": "d2488e0744b8c59216cf4be0dc5d19364ed72d70f6101c392125207b8328accf" - }, - { - "hash": "20e59316b8b8474554b38493b8ca888794b0234a", - "channel": "beta", - "version": "v1.7.8+hotfix.4", - "release_date": "2019-07-19T20:57:20.033683Z", - "archive": "beta/windows/flutter_windows_v1.7.8+hotfix.4-beta.zip", - "sha256": "e7e58ad2e6cefa14fd31c85e1e3dbfd63c313522cab7d624a6c7478236c1b7b6" - }, - { - "hash": "0a39d8d92ed43a0b7efcc93742a17660a14d78aa", - "channel": "dev", - "version": "v1.8.2", - "release_date": "2019-07-19T19:10:06.392419Z", - "archive": "dev/windows/flutter_windows_v1.8.2-dev.zip", - "sha256": "704d2de65476a562d05169312dad7ebdfd76158a6bf0cd02fe93ce2fcbd0c809" - }, - { - "hash": "d3eee57c0bd2e19aaa944be07b24c533075fd1a0", - "channel": "dev", - "version": "v1.8.1", - "release_date": "2019-07-11T21:04:24.539963Z", - "archive": "dev/windows/flutter_windows_v1.8.1-dev.zip", - "sha256": "dba8d2b8bfe7ee1ea444a943334967d5647af00aba122aee536b9e485d2d5eaf" - }, - { - "hash": "b712a172f9694745f50505c93340883493b505e5", - "channel": "stable", - "version": "v1.7.8+hotfix.3", - "release_date": "2019-07-09T21:21:36.468820Z", - "archive": "stable/windows/flutter_windows_v1.7.8+hotfix.3-stable.zip", - "sha256": "a3c309e9db48b0bd3b9ef6ad9b18fc3b940ffd0060e5afcc15c048b88899eadc" - }, - { - "hash": "b712a172f9694745f50505c93340883493b505e5", - "channel": "beta", - "version": "v1.7.8+hotfix.3", - "release_date": "2019-07-09T21:18:17.704711Z", - "archive": "beta/windows/flutter_windows_v1.7.8+hotfix.3-beta.zip", - "sha256": "7748c05d15330aeaf64d24d7723875ba1b2887cab77105762c4f0550f657d70a" - }, - { - "hash": "2e540931f73593e35627592ca4f9a4ca3035ed31", - "channel": "stable", - "version": "v1.7.8+hotfix.2", - "release_date": "2019-07-08T17:18:23.254158Z", - "archive": "stable/windows/flutter_windows_v1.7.8+hotfix.2-stable.zip", - "sha256": "3f4db134bf2a9d25f6af6b76e2ef5749edc6ef0853bd8c6b9bc0332ae38765f6" - }, - { - "hash": "2e540931f73593e35627592ca4f9a4ca3035ed31", - "channel": "beta", - "version": "v1.7.8+hotfix.2", - "release_date": "2019-07-02T16:48:48.043368Z", - "archive": "beta/windows/flutter_windows_v1.7.8+hotfix.2-beta.zip", - "sha256": "f769dad3e1241a6f653d3262ccfd01643d2b9c35224c5da198ba85f12c361fd3" - }, - { - "hash": "43b03127d469f1f6d9a22f8dae41eea2eed2afd9", - "channel": "dev", - "version": "v1.7.11", - "release_date": "2019-06-28T16:48:59.933927Z", - "archive": "dev/windows/flutter_windows_v1.7.11-dev.zip", - "sha256": "b0aee840e09717039555625519979034b40326b135670e39cbdbcfc5c693f4d0" - }, - { - "hash": "9a3a7490c8ded5f13d4fce2e493df2a63d602e57", - "channel": "dev", - "version": "v1.7.10", - "release_date": "2019-06-26T20:46:04.814756Z", - "archive": "dev/windows/flutter_windows_v1.7.10-dev.zip", - "sha256": "d7a9dc92477fbf981f28faf8f902d255edf54f79f67827192ce45499f7cc0075" - }, - { - "hash": "8dbfc82bc7f94c721efaeff904b4388d222c7919", - "channel": "dev", - "version": "v1.7.9", - "release_date": "2019-06-25T02:39:40.151232Z", - "archive": "dev/windows/flutter_windows_v1.7.9-dev.zip", - "sha256": "cffc4aedb44b9848bbdee02d11e34c8113c08d5e72e709fe59a2455b9c381339" - }, - { - "hash": "d51fd86cdb486192e187ccdf6f02cb2a38273d8d", - "channel": "dev", - "version": "v1.7.8", - "release_date": "2019-06-22T06:39:13.284492Z", - "archive": "dev/windows/flutter_windows_v1.7.8-dev.zip", - "sha256": "9d5c3da30da9b0fdca9d6ed4191ef752802d8f93c203f806ebbded5948ee6a84" - }, - { - "hash": "363052567376976b68bc995905397156fc5a28a0", - "channel": "dev", - "version": "v1.7.7", - "release_date": "2019-06-22T01:04:15.986032Z", - "archive": "dev/windows/flutter_windows_v1.7.7-dev.zip", - "sha256": "95927bd855dfecef0149656f80cee9220eb39b4a32bedfe2361e6e0212f5967d" - }, - { - "hash": "63438b924497ed9479f4c69a03d399bcbc2b4781", - "channel": "dev", - "version": "v1.7.6", - "release_date": "2019-06-21T23:11:55.710835Z", - "archive": "dev/windows/flutter_windows_v1.7.6-dev.zip", - "sha256": "b74c8c95a909c8b4a4adcd32836c56e43c1b3d18328d9e4ca56c9a6fd94bead2" - }, - { - "hash": "dfecafa4ab30f9c509ce409241000cdd785ef23d", - "channel": "dev", - "version": "v1.7.4", - "release_date": "2019-06-14T19:52:17.260239Z", - "archive": "dev/windows/flutter_windows_v1.7.4-dev.zip", - "sha256": "13b1c3e96ada00fdb4a9be76bff897447b379633b4c0ca4b5014b0ec20dd45da" - }, - { - "hash": "362b999b90d53859aa7b926a59c970f3ea31abf4", - "channel": "dev", - "version": "v1.7.3", - "release_date": "2019-06-07T22:18:45.762789Z", - "archive": "dev/windows/flutter_windows_v1.7.3-dev.zip", - "sha256": "f18079edc1e920c381a306f4801e3d1ef1570d11bc35b9366f4e1fbb9d65bce5" - }, - { - "hash": "b3b6d03737bd3f61209570e86f2b045c80f35c44", - "channel": "dev", - "version": "v1.7.2", - "release_date": "2019-06-06T16:53:39.294265Z", - "archive": "dev/windows/flutter_windows_v1.7.2-dev.zip", - "sha256": "a5516f5c09da41a46cb965157139cf08f833072e0b3d730371f67369fd9a78f3" - }, - { - "hash": "04015b987b8b9ccb4b428decadf2b9f5cd25dc91", - "channel": "dev", - "version": "v1.7.1", - "release_date": "2019-06-04T19:31:34.153148Z", - "archive": "dev/windows/flutter_windows_v1.7.1-dev.zip", - "sha256": "5ab250415ce83abef6d32cdb1f26713a1ffabf30c93388b8a90c7bb6f318ec94" - }, - { - "hash": "f36a35d20ac5dc2936cab6ccc60f5d9afa34466e", - "channel": "dev", - "version": "v1.7.0", - "release_date": "2019-06-03T20:25:46.265801Z", - "archive": "dev/windows/flutter_windows_v1.7.0-dev.zip", - "sha256": "6cb32e1064fcc4376ddf7cdd822dac0abe3c67f477accff8351477a5f87350b0" - }, - { - "hash": "cba41ca2ec977888806a9a02fc06c459f7a806ae", - "channel": "dev", - "version": "v1.6.7", - "release_date": "2019-05-31T18:06:39.994161Z", - "archive": "dev/windows/flutter_windows_v1.6.7-dev.zip", - "sha256": "4c1d9a20436cfe62f8c629f551582136f4f98294cfa98f95b180e0f0f50ffff5" - }, - { - "hash": "bc7bc940836f1f834699625426795fd6f07c18ec", - "channel": "beta", - "version": "v1.6.3", - "release_date": "2019-05-30T23:14:51.876519Z", - "archive": "beta/windows/flutter_windows_v1.6.3-beta.zip", - "sha256": "713bb56595218dff266f0fc79d06f6caa72c11147547ab8e81823e1a9b1041de" - }, - { - "hash": "e1a784ae3f82948c33c256666c73680420f11350", - "channel": "dev", - "version": "v1.6.6", - "release_date": "2019-05-29T20:50:42.711268Z", - "archive": "dev/windows/flutter_windows_v1.6.6-dev.zip", - "sha256": "17f875d36828ea4f72128db39adb6e1559da20e3217a5a2ba7b10c16ba0b767c" - }, - { - "hash": "7c811b6a66bcbab62f87c8768decc449027e5190", - "channel": "dev", - "version": "v1.6.5", - "release_date": "2019-05-28T23:19:00.278237Z", - "archive": "dev/windows/flutter_windows_v1.6.5-dev.zip", - "sha256": "2bc2223118c2ddce479b7988125bf23ed04365855e99e883f4f0151ec6fdad7f" - }, - { - "hash": "0f6e4e6190d1c128b8baadd2dee3b2a8923d3f86", - "channel": "dev", - "version": "v1.6.4", - "release_date": "2019-05-28T20:15:28.469677Z", - "archive": "dev/windows/flutter_windows_v1.6.4-dev.zip", - "sha256": "82ed165f857f206265c1b2ec118fffa8257ecd1fb918ca7e663c9c937fdc7634" - }, - { - "hash": "bc7bc940836f1f834699625426795fd6f07c18ec", - "channel": "dev", - "version": "v1.6.3", - "release_date": "2019-05-24T00:30:54.233218Z", - "archive": "dev/windows/flutter_windows_v1.6.3-dev.zip", - "sha256": "f551069ec5f09845654565cf90f830170fb79d32d6f0e679030d35307231bad4" - }, - { - "hash": "cb576181e9549bdd9d845394b1b5feab1b93807d", - "channel": "dev", - "version": "v1.6.2", - "release_date": "2019-05-23T18:16:59.453211Z", - "archive": "dev/windows/flutter_windows_v1.6.2-dev.zip", - "sha256": "78d888a7a46e7c111fa01b10c73c8af96228a3e884d5558ab68984a15fbc0586" - }, - { - "hash": "d31ce31a274ee721f4e9b54c6dcc2de0b3fd71e4", - "channel": "dev", - "version": "v1.6.1", - "release_date": "2019-05-22T22:29:06.357908Z", - "archive": "dev/windows/flutter_windows_v1.6.1-dev.zip", - "sha256": "019b1087d36b11d789cea3eb8f0b469e0bf0c1d1c89d41bb7ad5d8546dfd18a9" - }, - { - "hash": "ed90d05596d85b0ec8e841395bce9d3b6edea134", - "channel": "dev", - "version": "v1.6.0", - "release_date": "2019-05-17T10:04:55.645686Z", - "archive": "dev/windows/flutter_windows_v1.6.0-dev.zip", - "sha256": "7d74dedc76b0b6619ff47e25ca36ffd1d306f63397e6f6f860ad20774617bf55" - }, - { - "hash": "7a4c33425ddd78c54aba07d86f3f9a4a0051769b", - "channel": "stable", - "version": "v1.5.4-hotfix.2", - "release_date": "2019-05-07T18:42:48.184320Z", - "archive": "stable/windows/flutter_windows_v1.5.4-hotfix.2-stable.zip", - "sha256": "1d5e1779430be6bbb4fa49f4bccc7c5d24a76f3d2a100129e09b4b8eef33b1b4" - }, - { - "hash": "7a4c33425ddd78c54aba07d86f3f9a4a0051769b", - "channel": "beta", - "version": "v1.5.4-hotfix.2", - "release_date": "2019-05-02T17:37:54.005614Z", - "archive": "beta/windows/flutter_windows_v1.5.4-hotfix.2-beta.zip", - "sha256": "557adfe5b96cf2bd86cfea8754cfcf4cbffe6892aa9a5ba9afc661d3a8c798e3" - }, - { - "hash": "09cbc34a0b19cef287a82aa4b9966d525369eecc", - "channel": "beta", - "version": "v1.5.4-hotfix.1", - "release_date": "2019-04-30T23:02:31.524357Z", - "archive": "beta/windows/flutter_windows_v1.5.4-hotfix.1-beta.zip", - "sha256": "e2e30202e716dd7fdb434901939cde285323815913b7e2f164d56d5725fda5be" - }, - { - "hash": "b593f5167bce84fb3cad5c258477bf3abc1b14eb", - "channel": "beta", - "version": "v1.5.4", - "release_date": "2019-04-26T23:59:41.071181Z", - "archive": "beta/windows/flutter_windows_v1.5.4-beta.zip", - "sha256": "4ef1b009816e759fbc4bf989b6c9ded43fc16c31bd169625debc121706b4bef6" - }, - { - "hash": "0ba67226ee62d6c9d663a6f8410fb4b2f1076046", - "channel": "dev", - "version": "v1.5.8", - "release_date": "2019-04-26T00:01:45.135979Z", - "archive": "dev/windows/flutter_windows_v1.5.8-dev.zip", - "sha256": "0fb1ecf4201d8ab5f2eabe6c2908d032108c46d7917b7538595a6e3abdb836d3" - }, - { - "hash": "96f15c74adebb221eb044d3fc71b2d62da0046c0", - "channel": "dev", - "version": "v1.5.7", - "release_date": "2019-04-24T23:48:38.029213Z", - "archive": "dev/windows/flutter_windows_v1.5.7-dev.zip", - "sha256": "4e72c18ccc181ab22678ef2f45a47a41f7b0479703e89d945a022a8252cc8ea2" - }, - { - "hash": "e00f1a3c17f65a751c14b821235e5c2875948ff0", - "channel": "dev", - "version": "v1.5.6", - "release_date": "2019-04-24T18:38:19.519895Z", - "archive": "dev/windows/flutter_windows_v1.5.6-dev.zip", - "sha256": "e8fb999c7b2e6b4fd1f7edae0b241e87c7321ce1fa4a1d972327872dee959285" - }, - { - "hash": "5c5ddd1fc22de7df08a6bc0e18b4ec345d702fbd", - "channel": "dev", - "version": "v1.5.5", - "release_date": "2019-04-23T23:47:32.501654Z", - "archive": "dev/windows/flutter_windows_v1.5.5-dev.zip", - "sha256": "f61667a8611412318c5b67a093890ef5d26e53960a177d4e486f3d6e27a701c1" - }, - { - "hash": "b593f5167bce84fb3cad5c258477bf3abc1b14eb", - "channel": "dev", - "version": "v1.5.4", - "release_date": "2019-04-22T21:15:27.785100Z", - "archive": "dev/windows/flutter_windows_v1.5.4-dev.zip", - "sha256": "1dc34e30faf32e57ec0e4b07877619c932f775fbb601f0b68bc8ef77da8bf183" - }, - { - "hash": "80971335c1ee259717076c1e9d308a9572f85259", - "channel": "dev", - "version": "v1.5.3", - "release_date": "2019-04-19T23:16:59.753510Z", - "archive": "dev/windows/flutter_windows_v1.5.3-dev.zip", - "sha256": "da6a1daae1ed1aa2886565dbd89e683c9ddc33f66a780572f5629d252b219c7e" - }, - { - "hash": "efe744a3609d0b8e218b5d9d13823ed394261bb5", - "channel": "dev", - "version": "v1.5.2", - "release_date": "2019-04-17T21:56:10.156468Z", - "archive": "dev/windows/flutter_windows_v1.5.2-dev.zip", - "sha256": "2374c7d4bce2f2b0557a33fa934cd6be83e0c00b3d5c42563f12fbefa98fdeb5" - }, - { - "hash": "0f5de8725e0f6778406fb5156aee1486d39771f6", - "channel": "dev", - "version": "v1.5.1", - "release_date": "2019-04-17T06:11:12.889610Z", - "archive": "dev/windows/flutter_windows_v1.5.1-dev.zip", - "sha256": "04a7c564ffb1fc386624ac11a8627543906204b1963609586ddb1e96d09d8df9" - }, - { - "hash": "a18226d06619ca1d61e453205fa89bc646c3d0fc", - "channel": "dev", - "version": "v1.5.0", - "release_date": "2019-04-16T20:59:57.654705Z", - "archive": "dev/windows/flutter_windows_v1.5.0-dev.zip", - "sha256": "343705a63e908da2023c5c1773f6e53689e54730c98dcfd62545f16ebff44de1" - }, - { - "hash": "88fa7ea4031f5c86225573e58e5558dc4ea1c251", - "channel": "beta", - "version": "v1.4.9-hotfix.1", - "release_date": "2019-04-12T21:20:23.855857Z", - "archive": "beta/windows/flutter_windows_v1.4.9-hotfix.1-beta.zip", - "sha256": "f07f7862aa22be3c5f2325133fd4d9ef76c74d077e163e55312f76eea0070ec0" - }, - { - "hash": "8bea3fb2ebadc3933b6b213483d2d4379ac53a5c", - "channel": "dev", - "version": "v1.4.18", - "release_date": "2019-04-12T00:30:11.598649Z", - "archive": "dev/windows/flutter_windows_v1.4.18-dev.zip", - "sha256": "824927379e6756b2465a6aa80642796197bbe76a21f129863de66ca4f6d5b7b1" - }, - { - "hash": "ecb468f33587bad108034c1bbe21e8cbd0d94acc", - "channel": "dev", - "version": "v1.4.17", - "release_date": "2019-04-11T21:49:06.089431Z", - "archive": "dev/windows/flutter_windows_v1.4.17-dev.zip", - "sha256": "c07296dc0e45d823b388aeb544abaa86bd87f3984190afbac99b111868becdc4" - }, - { - "hash": "d2790bd2bbf1851db2359026df7bca38e255b9d3", - "channel": "dev", - "version": "v1.4.16", - "release_date": "2019-04-11T16:55:17.323972Z", - "archive": "dev/windows/flutter_windows_v1.4.16-dev.zip", - "sha256": "6db3456739b4a59b774ec325998749efb715a4f227ab8d22a3c865bb51b116e5" - }, - { - "hash": "ed91a3be49232c336ab2cf7a3376958cb3d537d2", - "channel": "dev", - "version": "v1.4.15", - "release_date": "2019-04-10T22:17:09.873423Z", - "archive": "dev/windows/flutter_windows_v1.4.15-dev.zip", - "sha256": "52d6ed7aa86626f7302ccd510bc1887ee6aa289de184946b41c28275a2f9d45e" - }, - { - "hash": "5a4eaabaf1c0b00f8cf9ace3c63066f754facc94", - "channel": "dev", - "version": "v1.4.14", - "release_date": "2019-04-10T02:55:24.212429Z", - "archive": "dev/windows/flutter_windows_v1.4.14-dev.zip", - "sha256": "ad9062800b851c463121dcc9dd7162d3a9abf91192adfecd5ae128daea57562d" - }, - { - "hash": "514aba6e36d4c9429d307e643dde3398802ca56a", - "channel": "dev", - "version": "v1.4.13", - "release_date": "2019-04-10T01:33:50.751085Z", - "archive": "dev/windows/flutter_windows_v1.4.13-dev.zip", - "sha256": "c7f38cc4c076ce33e6d2d735ca0df542cbfb92b26400f66b8646441903705f17" - }, - { - "hash": "294d7ea0cf0c6ff84ba43682b1dddcee18bf4114", - "channel": "dev", - "version": "v1.4.12", - "release_date": "2019-04-09T02:54:47.405055Z", - "archive": "dev/windows/flutter_windows_v1.4.12-dev.zip", - "sha256": "3cc5e64b1667669af1fddff889db25be6fae11ae7b10a6de4b69825901c191b4" - }, - { - "hash": "d15b3b1c8b0b4090fa1949b106dd3870d13341ca", - "channel": "dev", - "version": "v1.4.11", - "release_date": "2019-04-08T17:58:32.208904Z", - "archive": "dev/windows/flutter_windows_v1.4.11-dev.zip", - "sha256": "a99d391d41de9e76e44b60d487eab9df6473a11ea66fafc9b2af337fc1165bc5" - }, - { - "hash": "6ba720a4890bcffd0e48ec329318c929d517ce2c", - "channel": "dev", - "version": "v1.4.10", - "release_date": "2019-04-04T21:04:31.958296Z", - "archive": "dev/windows/flutter_windows_v1.4.10-dev.zip", - "sha256": "b181382c345c8b4356e89c77dea8090fb04660741e3d2578868461a7b1716265" - }, - { - "hash": "16a16e6598cca4129da0d2e76de0320fbc0108f1", - "channel": "dev", - "version": "v1.4.9", - "release_date": "2019-04-04T18:36:42.128619Z", - "archive": "dev/windows/flutter_windows_v1.4.9-dev.zip", - "sha256": "4394f6d128d6e67ceac3e89eda0c1c790e4f8f53d476ca40730d69eda57c2cd1" - }, - { - "hash": "fbefd6b816a846936dbba847ce85dc1ed55e3faa", - "channel": "dev", - "version": "v1.4.8", - "release_date": "2019-04-03T01:18:23.773276Z", - "archive": "dev/windows/flutter_windows_v1.4.8-dev.zip", - "sha256": "09e09feebc2a30b84a5afe14453d88dd12e0253b111dba10e84202f1324b56fd" - }, - { - "hash": "1bfa2f23114829513a9d2c0a7a27d743287acc2a", - "channel": "dev", - "version": "v1.4.7", - "release_date": "2019-03-29T20:57:08.467826Z", - "archive": "dev/windows/flutter_windows_v1.4.7-dev.zip", - "sha256": "97f8f6488d26d692f81f9a52a5fdfd1ae747859376d0a9d7f09cb54ec8b46528" - }, - { - "hash": "4ed13e022cae194aebdc9c5dfa6c2c3c62eeb8fb", - "channel": "dev", - "version": "v1.4.6-hotfix.1", - "release_date": "2019-03-29T20:26:39.911600Z", - "archive": "dev/windows/flutter_windows_v1.4.6-hotfix.1-dev.zip", - "sha256": "ae0d8fc128f9fcfb6e30924a09cfdb519542f6e460198de749add5adae020025" - }, - { - "hash": "ec93c87c8902c63e5b0e71ff761f201d19dc4327", - "channel": "dev", - "version": "v1.4.6", - "release_date": "2019-03-28T23:55:47.195024Z", - "archive": "dev/windows/flutter_windows_v1.4.6-dev.zip", - "sha256": "dc476e90f57a47fd8af1972947430812dce35dbcd63b21469edabb1789b75719" - }, - { - "hash": "99866f4a3dd1bf860c846e10d02af9ad125f9fe1", - "channel": "dev", - "version": "v1.4.5", - "release_date": "2019-03-28T18:05:15.710855Z", - "archive": "dev/windows/flutter_windows_v1.4.5-dev.zip", - "sha256": "9af72d4e22aa142e8060df106126ad585b3a4e5003d8e02969191a0229010302" - }, - { - "hash": "3b3f6c7a041978505b310b5b50390c2f5ff7eaac", - "channel": "dev", - "version": "v1.4.4", - "release_date": "2019-03-28T01:02:33.198249Z", - "archive": "dev/windows/flutter_windows_v1.4.4-dev.zip", - "sha256": "42817b3017f29ce899a654acd2b5ff58a835cb684b14c5b62695524a57df1783" - }, - { - "hash": "64a28e3685bee310e697a91612d7e30d0426cda2", - "channel": "dev", - "version": "v1.4.3", - "release_date": "2019-03-27T21:47:30.798144Z", - "archive": "dev/windows/flutter_windows_v1.4.3-dev.zip", - "sha256": "2dfe087ab169e1863ea454e419d194df7725f5549ee33466f6aaafe5226a2fba" - }, - { - "hash": "141f87b32754267cc02bae03477c4b109b828324", - "channel": "dev", - "version": "v1.4.2", - "release_date": "2019-03-27T16:38:17.566955Z", - "archive": "dev/windows/flutter_windows_v1.4.2-dev.zip", - "sha256": "513276764f0b1829bf38475e31430c37d6bd425e43360a2db3204d3b9049d746" - }, - { - "hash": "204eceea93694aa081e0132c8281b76d3b3d6b4a", - "channel": "dev", - "version": "v1.4.1", - "release_date": "2019-03-27T01:08:00.714635Z", - "archive": "dev/windows/flutter_windows_v1.4.1-dev.zip", - "sha256": "5db0235a0fd4b925f204d9ea0a65cee7f85c5abbf60f0ca5a1a1320965b2bbd9" - }, - { - "hash": "18a08a8f4f7bca0d25f34706ebc8af231f3db9d4", - "channel": "dev", - "version": "v1.4.0", - "release_date": "2019-03-26T21:52:12.919295Z", - "archive": "dev/windows/flutter_windows_v1.4.0-dev.zip", - "sha256": "4c5392c6954bebd6dccce86396d36cdf57103cab7b337432ccd1630c68cbebe8" - }, - { - "hash": "8e7e435706553edea6d350c3843f1c0e5465a0d8", - "channel": "dev", - "version": "v1.3.14", - "release_date": "2019-03-26T01:02:52.394971Z", - "archive": "dev/windows/flutter_windows_v1.3.14-dev.zip", - "sha256": "e6094da177859a0336eaaf30b0c238dc89969f08518f0a506180e322c488a754" - }, - { - "hash": "59ce7d6bff0d0626ae4b90787bf993ebcdc4b110", - "channel": "dev", - "version": "v1.3.13", - "release_date": "2019-03-19T03:24:31.602612Z", - "archive": "dev/windows/flutter_windows_v1.3.13-dev.zip", - "sha256": "6ad1f183f5158eb9ab8994da811b0d648767f11566d059dbc016c61320d9ed67" - }, - { - "hash": "a1bee54fda83026c01edd53ba32f01736b4ee4ad", - "channel": "dev", - "version": "v1.3.12", - "release_date": "2019-03-18T22:44:36.807278Z", - "archive": "dev/windows/flutter_windows_v1.3.12-dev.zip", - "sha256": "8bcc362ff3b82f29d87c39f6260c3945fca8becc3dff24b7b368a1785581d961" - }, - { - "hash": "73fb457cae005cde3e351fc9e1ba1b43de458aad", - "channel": "dev", - "version": "v1.3.11", - "release_date": "2019-03-18T16:28:04.999430Z", - "archive": "dev/windows/flutter_windows_v1.3.11-dev.zip", - "sha256": "44c4381140835c117ec61a08d3dc9614e0ce8de80cee41d4361068d832b0848b" - }, - { - "hash": "e5b1ed7a7f7b85c1877e09a9495681f719be5578", - "channel": "beta", - "version": "v1.3.8", - "release_date": "2019-03-15T19:15:52.016047Z", - "archive": "beta/windows/flutter_windows_v1.3.8-beta.zip", - "sha256": "e891d6bba03abee96825ea4d14612a896ffb7651af575894ef5e5b54d8b73e5d" - }, - { - "hash": "4feefa3c9a2176ca7383246c4c01b36254fbec85", - "channel": "dev", - "version": "v1.3.10", - "release_date": "2019-03-15T03:33:07.120096Z", - "archive": "dev/windows/flutter_windows_v1.3.10-dev.zip", - "sha256": "18eccb61d6b8e866061fb734a921c0a35743871b324e8b66531d0f171944492b" - }, - { - "hash": "f91df4abe1427fef8862c9e81b2e5af6fc05a67a", - "channel": "dev", - "version": "v1.3.9", - "release_date": "2019-03-14T18:33:19.376790Z", - "archive": "dev/windows/flutter_windows_v1.3.9-dev.zip", - "sha256": "b190380d5855816bb05a9999f92c8a2534abe5b22d1a8f2860732e11e8434f4b" - }, - { - "hash": "e5b1ed7a7f7b85c1877e09a9495681f719be5578", - "channel": "dev", - "version": "v1.3.8", - "release_date": "2019-03-07T22:39:46.763858Z", - "archive": "dev/windows/flutter_windows_v1.3.8-dev.zip", - "sha256": "fd5415e4831a610571224a732d94606df8a13833e29511bd9262770687686070" - }, - { - "hash": "01a29b85eff7dd4b2d4958f61adf1840042471cc", - "channel": "dev", - "version": "v1.3.7", - "release_date": "2019-03-07T15:16:46.249703Z", - "archive": "dev/windows/flutter_windows_v1.3.7-dev.zip", - "sha256": "4940dcea2c6528743b1ec6e43176b4155608e41a26f8a5c67ee8f0efe765c2d0" - }, - { - "hash": "5099701f88f49ec12ebca676d8e61149917bde9c", - "channel": "dev", - "version": "v1.3.6", - "release_date": "2019-03-07T15:14:05.080701Z", - "archive": "dev/windows/flutter_windows_v1.3.6-dev.zip", - "sha256": "e4e29da0fbb79020b190728d2849c228c94b4bd59274d2b5840d448d3b9ca99c" - }, - { - "hash": "7fc14a55af64462763d28abfb4e610086c6e0f39", - "channel": "dev", - "version": "v1.3.4", - "release_date": "2019-03-05T15:57:06.650850Z", - "archive": "dev/windows/flutter_windows_v1.3.4-dev.zip", - "sha256": "1aff81f8dcec558fb93790baeaf140984fe50b973dcba1d3818a6ed41cc59252" - }, - { - "hash": "778e95a39b82688662e8be7cbe2deb31cad33203", - "channel": "dev", - "version": "v1.3.3", - "release_date": "2019-03-04T16:17:15.123725Z", - "archive": "dev/windows/flutter_windows_v1.3.3-dev.zip", - "sha256": "ff924c683ce4d03b207f239fcbc3a27ab93542dbd538ecf4716a94c484e05da0" - }, - { - "hash": "046f960ae210afc3887721b1b5aa1dbdab4105cb", - "channel": "dev", - "version": "v1.3.2", - "release_date": "2019-03-01T09:52:38.334579Z", - "archive": "dev/windows/flutter_windows_v1.3.2-dev.zip", - "sha256": "c316ac3eb37de905423a4f3cedcdf4ad0bc3e707c6a4033658beea9f4fd6e3d4" - }, - { - "hash": "6ed9da35c3a4f6cc79d4f91bf850159908daad8e", - "channel": "dev", - "version": "v1.3.1", - "release_date": "2019-03-01T01:28:40.082144Z", - "archive": "dev/windows/flutter_windows_v1.3.1-dev.zip", - "sha256": "b1e40e2cc586f8d31067df0644e1c6fce7317155a6afd5972fa61dae8ec851ff" - }, - { - "hash": "3054a935791bf0bcc34ba0a111df794ddb7a3589", - "channel": "dev", - "version": "v1.3.0", - "release_date": "2019-02-28T04:56:57.105643Z", - "archive": "dev/windows/flutter_windows_v1.3.0-dev.zip", - "sha256": "30570513b68d97c071a0c29ff4daaba66ec2869050019d9724511dd3f4f944a6" - }, - { - "hash": "007a415c2a2fa37e8fd5ad87d6710bca8e212ef1", - "channel": "dev", - "version": "v1.2.2", - "release_date": "2019-02-28T01:16:31.530788Z", - "archive": "dev/windows/flutter_windows_v1.2.2-dev.zip", - "sha256": "4278df950835a1cc4814d7c88580d41716e0523f19ef81a692bafe6d35d88455" - }, - { - "hash": "8661d8aecd626f7f57ccbcb735553edc05a2e713", - "channel": "stable", - "version": "v1.2.1", - "release_date": "2019-02-26T17:35:35.656639Z", - "archive": "stable/windows/flutter_windows_v1.2.1-stable.zip", - "sha256": "51cb8bcbe8fb5f58ac4831d905a8f7ab6e43ef4a7ffa0d2d80c4dd9f67774daf" - }, - { - "hash": "8661d8aecd626f7f57ccbcb735553edc05a2e713", - "channel": "beta", - "version": "v1.2.1", - "release_date": "2019-02-26T01:35:42.233164Z", - "archive": "beta/windows/flutter_windows_v1.2.1-beta.zip", - "sha256": "46a1fc6821da3f8ba478c851ee7987d1d0675ec5c6ad87921777272bf12d4e21" - }, - { - "hash": "8661d8aecd626f7f57ccbcb735553edc05a2e713", - "channel": "dev", - "version": "v1.2.1", - "release_date": "2019-02-15T06:40:06.611306Z", - "archive": "dev/windows/flutter_windows_v1.2.1-dev.zip", - "sha256": "a770a99d49b86adfaf83761d4732ede6c3eb84dd2164aeba33b4781b0ef1ef90" - }, - { - "hash": "06b979c4d5e1b499745422269f01a00341257058", - "channel": "dev", - "version": "v1.2.0", - "release_date": "2019-01-31T03:38:58.028906Z", - "archive": "dev/windows/flutter_windows_v1.2.0-dev.zip", - "sha256": "3b22823b269f7431b872ba1088159b011e224de8a9ca54e340a8b4e3290715a9" - }, - { - "hash": "985ccb6d14c6ce5ce74823a4d366df2438eac44f", - "channel": "beta", - "version": "v1.1.8", - "release_date": "2019-01-29T21:40:53.356321Z", - "archive": "beta/windows/flutter_windows_v1.1.8-beta.zip", - "sha256": "b102949802ae52243e30b08a311d042b698d7dc5e048daccf8f9ab232d782d8e" - }, - { - "hash": "985ccb6d14c6ce5ce74823a4d366df2438eac44f", - "channel": "dev", - "version": "v1.1.8", - "release_date": "2019-01-26T00:22:33.991318Z", - "archive": "dev/windows/flutter_windows_v1.1.8-dev.zip", - "sha256": "1caf79f29bd3b40097dfdd068e6ad9cd1d8425a73230c630d69fb04f69411f67" - }, - { - "hash": "3cca1a2ec35604ca50f9c656b8e761b07a00a9ed", - "channel": "dev", - "version": "v1.1.0", - "release_date": "2018-12-12T00:34:25.955378Z", - "archive": "dev/windows/flutter_windows_v1.1.0-dev.zip", - "sha256": "372f98253fdf4111a55042f502860bb3f6968afabd2ae1d4e4371e79cb498b18" - }, - { - "hash": "5391447fae6209bb21a89e6a5a6583cac1af9b4b", - "channel": "stable", - "version": "v1.0.0", - "release_date": "2018-12-04T17:39:54.184358Z", - "archive": "stable/windows/flutter_windows_v1.0.0-stable.zip", - "sha256": "043a10041cced00e6dc8734711188bfe3ad51de38f582ec41f073599f3cf0e31" - }, - { - "hash": "5391447fae6209bb21a89e6a5a6583cac1af9b4b", - "channel": "beta", - "version": "v1.0.0", - "release_date": "2018-12-04T17:08:18.222278Z", - "archive": "beta/windows/flutter_windows_v1.0.0-beta.zip", - "sha256": "069066000767051fd9b1f6ea9112200d530549403fca42baefaafb0a92e36584" - }, - { - "hash": "5391447fae6209bb21a89e6a5a6583cac1af9b4b", - "channel": "dev", - "version": "v1.0.0", - "release_date": "2018-12-04T17:01:45.707510Z", - "archive": "dev/windows/flutter_windows_v1.0.0-dev.zip", - "sha256": "d854bbeca43a1990a07241259d7993dcb95de78a7b6276670ffc34c17113cfcb" - }, - { - "hash": "58c8489fcdb4e4ef6c010117584c9b23d15221aa", - "channel": "beta", - "version": "v0.11.13", - "release_date": "2018-11-30T05:20:42.244289Z", - "archive": "beta/windows/flutter_windows_v0.11.13-beta.zip", - "sha256": "ee238ddfbd1560bdec48fe1a261ac49da1be6d0014e1f43f4ff1111a7d74ca21" - }, - { - "hash": "58c8489fcdb4e4ef6c010117584c9b23d15221aa", - "channel": "dev", - "version": "v0.11.13", - "release_date": "2018-11-30T05:04:18.030939Z", - "archive": "dev/windows/flutter_windows_v0.11.13-dev.zip", - "sha256": "aff384a08ddb3fa7023a398fd277ab9abf0e464db063f8e09b44308989fde416" - }, - { - "hash": "06ec8d3b41beb469d845626e36a246ee09300fa7", - "channel": "dev", - "version": "v0.11.12", - "release_date": "2018-11-29T03:57:29.054468Z", - "archive": "dev/windows/flutter_windows_v0.11.12-dev.zip", - "sha256": "82d2dbf93811ea0649a85142823520f7052cc496c5bc671c7ac09465c2af27ff" - }, - { - "hash": "06ec8d3b41beb469d845626e36a246ee09300fa7", - "channel": "beta", - "version": "v0.11.12", - "release_date": "2018-11-29T03:51:28.570767Z", - "archive": "beta/windows/flutter_windows_v0.11.12-beta.zip", - "sha256": "5cf8cec10ab4cbb95d3868a2ac016f4105729d4524d8ede734154dd20d2a87e8" - }, - { - "hash": "e7680128afbbde443d69f89bb264015276a8475a", - "channel": "dev", - "version": "v0.11.11", - "release_date": "2018-11-28T17:03:21.127107Z", - "archive": "dev/windows/flutter_windows_v0.11.11-dev.zip", - "sha256": "d0336e943549e9063ff51cdc18f7596db74ea8f43279ac0d4dec7fe4294a4437" - }, - { - "hash": "e7680128afbbde443d69f89bb264015276a8475a", - "channel": "beta", - "version": "v0.11.11", - "release_date": "2018-11-28T16:57:08.359707Z", - "archive": "beta/windows/flutter_windows_v0.11.11-beta.zip", - "sha256": "f3dae66affad6507f58d638dfe0f27f1a3f9c92d2a4ec2d6416e4425e7a30cc9" - }, - { - "hash": "c27c4a265e9ad295e5d434cddabbc639b2e3542d", - "channel": "beta", - "version": "v0.11.10", - "release_date": "2018-11-27T06:54:15.703157Z", - "archive": "beta/windows/flutter_windows_v0.11.10-beta.zip", - "sha256": "4ce2af70b14d4f7c645a089cd79307003e4383786b8a76cde5f61bf8fb9cda0d" - }, - { - "hash": "c27c4a265e9ad295e5d434cddabbc639b2e3542d", - "channel": "dev", - "version": "v0.11.10", - "release_date": "2018-11-27T06:51:24.611455Z", - "archive": "dev/windows/flutter_windows_v0.11.10-dev.zip", - "sha256": "b356000f9bc7ea8c47447d9e6ba4eb1dbc8e0c8a7678ff155b793f7f9fa64d56" - }, - { - "hash": "d48e6e433cc5ca67b24b19f70aaa197e84ba63c1", - "channel": "beta", - "version": "v0.11.9", - "release_date": "2018-11-21T08:00:23.368454Z", - "archive": "beta/windows/flutter_windows_v0.11.9-beta.zip", - "sha256": "5ef60afe94e0808ebdef4eed997b6a64f44eb9736dd5b46b862f7402c47aeafe" - }, - { - "hash": "d48e6e433cc5ca67b24b19f70aaa197e84ba63c1", - "channel": "dev", - "version": "v0.11.9", - "release_date": "2018-11-21T07:50:53.352206Z", - "archive": "dev/windows/flutter_windows_v0.11.9-dev.zip", - "sha256": "aae121438f6151e1ed7d76fb8e7f85c805c26d0c902af94be3fb486a5b689347" - }, - { - "hash": "f5b02e3c05ed1ab31e890add84fb56e35de2d392", - "channel": "beta", - "version": "v0.11.8", - "release_date": "2018-11-20T18:48:33.761402Z", - "archive": "beta/windows/flutter_windows_v0.11.8-beta.zip", - "sha256": "3c249f35c53dda45dd87e087b2a26c8d8b636c1c2cfb203bcc3d94d21aaf9618" - }, - { - "hash": "f5b02e3c05ed1ab31e890add84fb56e35de2d392", - "channel": "dev", - "version": "v0.11.8", - "release_date": "2018-11-20T18:35:57.353122Z", - "archive": "dev/windows/flutter_windows_v0.11.8-dev.zip", - "sha256": "245da6aef5f6006a9fbb6cf93427dd423e08bef50c6fcc1fb588071e56faa832" - }, - { - "hash": "7a005e1dcda665ace7241a24e79fae1a71f17b18", - "channel": "dev", - "version": "v0.11.7", - "release_date": "2018-11-19T19:15:28.281392Z", - "archive": "dev/windows/flutter_windows_v0.11.7-dev.zip", - "sha256": "35dd4a6b956578a685df17e3b4eb3305bb007117d01b16ee58df4cc1cdd6df07" - }, - { - "hash": "7a005e1dcda665ace7241a24e79fae1a71f17b18", - "channel": "beta", - "version": "v0.11.7", - "release_date": "2018-11-19T19:15:09.819151Z", - "archive": "beta/windows/flutter_windows_v0.11.7-beta.zip", - "sha256": "560c28fbffe4822c8ced7939d2bb863c3b4ad2ea583228b35ffdf63ff486edb6" - }, - { - "hash": "d44aa57c120c30d523c937a0455a6af30e743da9", - "channel": "dev", - "version": "v0.11.6", - "release_date": "2018-11-14T23:25:28.437105Z", - "archive": "dev/windows/flutter_windows_v0.11.6-dev.zip", - "sha256": "b0e337dd7f2ebb90085e27f243e53ab730890145afb01480637f752461f24f25" - }, - { - "hash": "97e03104a0913886a666a36f5d11ab5763d45e6e", - "channel": "dev", - "version": "v0.11.5", - "release_date": "2018-11-14T07:44:57.712582Z", - "archive": "dev/windows/flutter_windows_v0.11.5-dev.zip", - "sha256": "3b63ae111ca6c2972e763c55da8996615354e46779dae63265c243733d24e436" - }, - { - "hash": "df57dc9da9905744fa0b49fe30254d6d7b204d5b", - "channel": "dev", - "version": "v0.11.4", - "release_date": "2018-11-13T18:36:29.258456Z", - "archive": "dev/windows/flutter_windows_v0.11.4-dev.zip", - "sha256": "5e844c76fbc1cbf544f6683ec344ab5132339de28dbf1407a01c9d7ba96c748d" - }, - { - "hash": "72bf075e8d6961d2ca6df462b2228954f8d0e73a", - "channel": "beta", - "version": "v0.11.3", - "release_date": "2018-11-13T00:33:48.555390Z", - "archive": "beta/windows/flutter_windows_v0.11.3-beta.zip", - "sha256": "715e32cb5df81c2d939c9b3a1c8fec68e6f4336a4d80c5422458e89a3fdb72c0" - }, - { - "hash": "72bf075e8d6961d2ca6df462b2228954f8d0e73a", - "channel": "dev", - "version": "v0.11.3", - "release_date": "2018-11-11T18:03:52.166086Z", - "archive": "dev/windows/flutter_windows_v0.11.3-dev.zip", - "sha256": "b85783a3325cef579f8f86888359cf89611bffd544fc3fdb94609960c7ddde63" - }, - { - "hash": "e32cd85446c6fd5afdbe1ba463c18e2b2ee27781", - "channel": "dev", - "version": "v0.11.2", - "release_date": "2018-11-10T02:30:12.741484Z", - "archive": "dev/windows/flutter_windows_v0.11.2-dev.zip", - "sha256": "c5a583fa7554bd1c3d3931087cf122e4dbe0d26512835441a80e2c7ce1e2cd15" - }, - { - "hash": "756d5938d4eb4ef1572075fae7744502d870c7ba", - "channel": "dev", - "version": "v0.11.1", - "release_date": "2018-11-09T23:45:11.342960Z", - "archive": "dev/windows/flutter_windows_v0.11.1-dev.zip", - "sha256": "003020beb7f078e27d3a5d6e6c8d69716b6850009c91cddda6373371cdcbba3f" - }, - { - "hash": "c319b890b33f2c15af043f2ab857e7c2944beefa", - "channel": "dev", - "version": "v0.11.0", - "release_date": "2018-11-08T19:11:29.416559Z", - "archive": "dev/windows/flutter_windows_v0.11.0-dev.zip", - "sha256": "1e184544253fb0f33b1c37170376f2c569de90454b86581d4231a3180b6bde04" - }, - { - "hash": "d8cbb80206db06d151206f8b599b7dde5a386a2d", - "channel": "beta", - "version": "v0.10.2", - "release_date": "2018-11-06T18:23:19.570826Z", - "archive": "beta/windows/flutter_windows_v0.10.2-beta.zip", - "sha256": "14b4d4efc98f6b469ed9423bfa13c447313e4e616620a0339ab0d58bd91975b9" - }, - { - "hash": "d8cbb80206db06d151206f8b599b7dde5a386a2d", - "channel": "dev", - "version": "v0.10.2", - "release_date": "2018-11-01T23:51:33.496053Z", - "archive": "dev/windows/flutter_windows_v0.10.2-dev.zip", - "sha256": "6f39ff69a6be45021d1eb96a278840ba81e4127cbac6663ba7fcbdcf33f4996a" - }, - { - "hash": "6a3ff018b199a7febbe2b5adbb564081d8f49e2f", - "channel": "dev", - "version": "v0.10.1", - "release_date": "2018-10-20T05:31:57.647988Z", - "archive": "dev/windows/flutter_windows_v0.10.1-dev.zip", - "sha256": "f61dce884e65649839a0481b9e1a481f645c5ac2a024326ffea1174400a8a453" - }, - { - "hash": "d954ae6850a06ea461d5595cef424e278ed9f17f", - "channel": "dev", - "version": "v0.10.0", - "release_date": "2018-10-10T01:01:08.807102Z", - "archive": "dev/windows/flutter_windows_v0.10.0-dev.zip", - "sha256": "b23f95e801fa64b943d736d89bde8a4e71afc93aba0edbf079146bacd067e9d3" - }, - { - "hash": "f37c235c32fc15babe6dc7b7bc2ee4387e5ecf92", - "channel": "beta", - "version": "v0.9.4", - "release_date": "2018-10-09T21:54:34.302224Z", - "archive": "beta/windows/flutter_windows_v0.9.4-beta.zip", - "sha256": "c8d95cec455972d92c858081d923e827edf0e0b1e5f645588e3c8ee7f4f20652" - }, - { - "hash": "13684e4f8e9edb4c2b2a0fd8e1439f93e6e30fde", - "channel": "dev", - "version": "v0.9.6", - "release_date": "2018-10-04T01:00:57.657093Z", - "archive": "dev/windows/flutter_windows_v0.9.6-dev.zip", - "sha256": "e00ec8cac3818ed4ed7b1019738c0d0b8a3b2901789029b95c69cc98df26cbb0" - }, - { - "hash": "020fd590b032c403b82688933e67474215b1debc", - "channel": "dev", - "version": "v0.9.5", - "release_date": "2018-09-28T22:53:14.563655Z", - "archive": "dev/windows/flutter_windows_v0.9.5-dev.zip", - "sha256": "2fb4d43c87db6362423df18a366b72f35ff73c1f33f481f8d1978eed98bcfe57" - }, - { - "hash": "f37c235c32fc15babe6dc7b7bc2ee4387e5ecf92", - "channel": "dev", - "version": "v0.9.4", - "release_date": "2018-09-27T02:02:58.709312Z", - "archive": "dev/windows/flutter_windows_v0.9.4-dev.zip", - "sha256": "dbf46120ec8da92897c64109cdb52f1196fafb4350c481fe094e15ebfd13874e" - }, - { - "hash": "eed8c7ad07a2ba90b0a57d0aa7cc6ebed1864ecd", - "channel": "dev", - "version": "v0.9.3", - "release_date": "2018-09-25T20:32:11.519913Z", - "archive": "dev/windows/flutter_windows_v0.9.3-dev.zip", - "sha256": "418dff2076cd2215250ca91f8976e3a6095bbebb72bf66e0d294b63da724c00e" - }, - { - "hash": "85b4670b2aee067838821d4c4020315c16e8930a", - "channel": "dev", - "version": "v0.9.2", - "release_date": "2018-09-20T00:05:43.774065Z", - "archive": "dev/windows/flutter_windows_v0.9.2-dev.zip", - "sha256": "73647401ca422e61635721a8ce71dc0dc1b0abed17e53ea61ad555cc5cf56273" - }, - { - "hash": "bf7c27095cc4dc07c03d8a6ad2e9e0e28e26227e", - "channel": "dev", - "version": "v0.9.1", - "release_date": "2018-09-18T23:16:31.449857Z", - "archive": "dev/windows/flutter_windows_v0.9.1-dev.zip", - "sha256": "8d9badc9990be63d56092b563962ce94e6450c25ea099f2797e62672d30bb9f2" - }, - { - "hash": "f8c50ea15f6a78fdb6fa038cf3fb70fb154714ef", - "channel": "dev", - "version": "v0.9.0", - "release_date": "2018-09-18T21:43:57.256479Z", - "archive": "dev/windows/flutter_windows_v0.9.0-dev.zip", - "sha256": "0f82fb9edebcbfe8c1f6e7aa02f450d16446e1d1065d7e0d6c2623b1ad12a7b5" - }, - { - "hash": "ccd070a5b42d18d1b8dfce4e8b59417373122dc2", - "channel": "dev", - "version": "v0.8.7", - "release_date": "2018-09-18T20:38:09.766849Z", - "archive": "dev/windows/flutter_windows_v0.8.7-dev.zip", - "sha256": "6691aacadf9943ea90ea863eb9168eaf27bd2a51b4cf5a0a970ef71bcb055851" - }, - { - "hash": "5ab9e70727d858def3a586db7fb98ee580352957", - "channel": "beta", - "version": "v0.8.2", - "release_date": "2018-09-18T19:43:32.808469Z", - "archive": "beta/windows/flutter_windows_v0.8.2-beta.zip", - "sha256": "116974d762d45cd76a98828011a7bccc53ab5bac5314c62ed8fa9daabdb6f85f" - }, - { - "hash": "9f359aeee2a474fe9c565b3b59cf1d504b919b4d", - "channel": "dev", - "version": "v0.8.6", - "release_date": "2018-09-18T00:45:10.408413Z", - "archive": "dev/windows/flutter_windows_v0.8.6-dev.zip", - "sha256": "fc1e8d86c5cb923bd9eacacbf15d34b5e1989ec3ce5ea64d6a6ddc6d7663df45" - }, - { - "hash": "2bca8007bd1962940fa3b3d568bc52e446005616", - "channel": "dev", - "version": "v0.8.5", - "release_date": "2018-09-17T21:08:59.201252Z", - "archive": "dev/windows/flutter_windows_v0.8.5-dev.zip", - "sha256": "3f89a74d0cacb9b43204a7b3b17181ede67fa7394c796081038d8ade6d61fdbe" - }, - { - "hash": "7f7a731da095addd1ce684a6a2f4bc8651229769", - "channel": "dev", - "version": "v0.8.4", - "release_date": "2018-09-14T20:19:46.739762Z", - "archive": "dev/windows/flutter_windows_v0.8.4-dev.zip", - "sha256": "23c431ac6532da584df3973fb6533e3bb6bbe4116977551bcc3a5e32ac841bee" - }, - { - "hash": "2895d71b79b1482c8c1d1de387d04e2a5e667f1e", - "channel": "dev", - "version": "v0.8.3", - "release_date": "2018-09-14T17:22:00.411853Z", - "archive": "dev/windows/flutter_windows_v0.8.3-dev.zip", - "sha256": "401a488ccef3592d721ed9608deb4f7385b6e9396c1179c52a0263c0a60fa9b6" - }, - { - "hash": "5ab9e70727d858def3a586db7fb98ee580352957", - "channel": "dev", - "version": "v0.8.2", - "release_date": "2018-09-10T20:23:42.547783Z", - "archive": "dev/windows/flutter_windows_v0.8.2-dev.zip", - "sha256": "b3ecdd82111ccf214d62e869411ad46c4ee492701de90f7554fb196ffd940033" - }, - { - "hash": "0235ec59d108f8b4f6c6a664cc11c56c11cbb50a", - "channel": "dev", - "version": "v0.8.1", - "release_date": "2018-09-07T16:15:35.633548Z", - "archive": "dev/windows/flutter_windows_v0.8.1-dev.zip", - "sha256": "f46a6dc0211c163e0037b42f114c75e8b3ed62cf18ac2b2ef6667efb706cb32b" - }, - { - "hash": "a74f591d0c05f2173448b2b421785b8dc51e8370", - "channel": "dev", - "version": "v0.8.0", - "release_date": "2018-09-06T19:16:01.450631Z", - "archive": "dev/windows/flutter_windows_v0.8.0-dev.zip", - "sha256": "225a319c7ab13fe6118388b94e1065543be0fe0fcaecf8f2568a3d1c76bfee5d" - }, - { - "hash": "3b309bda072a6b326e8aa4591a5836af600923ce", - "channel": "beta", - "version": "v0.7.3", - "release_date": "2018-09-05T03:02:21.925247Z", - "archive": "beta/windows/flutter_windows_v0.7.3-beta.zip", - "sha256": "b82b94386407c5a26d8e799f07dcff83acd29b4dabb72f809fec5e80798bbe2e" - }, - { - "hash": "eab5cd9853c13ec2207977d9b9ef7b6750fe0817", - "channel": "dev", - "version": "v0.7.5", - "release_date": "2018-08-31T01:00:34.372963Z", - "archive": "dev/windows/flutter_windows_v0.7.5-dev.zip", - "sha256": "8a57ee265f24bb687eda6909c5a527df79445fa028dcd174ad5be5178d7ae202" - }, - { - "hash": "ce51e71d19eeadaa079d70388a61f7ae710313f7", - "channel": "dev", - "version": "v0.7.4", - "release_date": "2018-08-30T22:34:29.492382Z", - "archive": "dev/windows/flutter_windows_v0.7.4-dev.zip", - "sha256": "80601f6d3922f1fad376eb1d82ec60ff2c337ab19851e2f3ec02a045c18b8a76" - }, - { - "hash": "3b309bda072a6b326e8aa4591a5836af600923ce", - "channel": "dev", - "version": "v0.7.3", - "release_date": "2018-08-29T23:18:51.532749Z", - "archive": "dev/windows/flutter_windows_v0.7.3-dev.zip", - "sha256": "2caf8d963548da465d5954890978b7ff8d846e46dfe3de1784d3fc86301f5faa" - }, - { - "hash": "f8a2fc7c287ea0f25bb893d56caa45302d22eed6", - "channel": "dev", - "version": "v0.7.2", - "release_date": "2018-08-28T19:35:50.791929Z", - "archive": "dev/windows/flutter_windows_v0.7.2-dev.zip", - "sha256": "77fecb69008df80a21bb72b333d4101858e3fe782549f89e6ba2f63af6587b18" - }, - { - "hash": "9299c02cf708497d6f72edda8efae0bb8340660e", - "channel": "beta", - "version": "v0.6.0", - "release_date": "2018-08-28T17:55:34.486616Z", - "archive": "beta/windows/flutter_windows_v0.6.0-beta.zip", - "sha256": "54debad61d4577e7beab463761cfe0c4a8774f4e73cd620fc64b6f84d58f2d64" - }, - { - "hash": "3c624f8b2c578fe7c14ae1b2dec725e265891758", - "channel": "dev", - "version": "v0.7.1", - "release_date": "2018-08-27T19:09:23.662240Z", - "archive": "dev/windows/flutter_windows_v0.7.1-dev.zip", - "sha256": "669348ed61b9315442f9e0142c19f1c9b646f14ed5be45ca32d93392f4212a1d" - }, - { - "hash": "09fe34708f5767e3dac6b04943677d2d8962b78c", - "channel": "dev", - "version": "v0.7.0", - "release_date": "2018-08-22T22:16:53.792207Z", - "archive": "dev/windows/flutter_windows_v0.7.0-dev.zip", - "sha256": "10e371d92dd64f88081ecfcac00f23eaf3b3cf939cdfda2174abcb84133e5538" - }, - { - "hash": "392a178169a9e620a5ae8e55c40d4276cddd3b36", - "channel": "dev", - "version": "v0.6.2", - "release_date": "2018-08-21T23:40:25.457636Z", - "archive": "dev/windows/flutter_windows_v0.6.2-dev.zip", - "sha256": "e419a04e95023b91047c83ffab08985b5ba993eeff66b8a8cc3c2015c6e0176f" - }, - { - "hash": "ad1eaff45ab97ab65e2dd5aba768d19a4b48d49b", - "channel": "dev", - "version": "v0.6.1", - "release_date": "2018-08-21T19:24:27.747277Z", - "archive": "dev/windows/flutter_windows_v0.6.1-dev.zip", - "sha256": "5de491cc277a4fd8eeec13d6a1655bed40c7fc2645cfc5f3f1a4e5ab7a81863e" - }, - { - "hash": "9299c02cf708497d6f72edda8efae0bb8340660e", - "channel": "dev", - "version": "v0.6.0", - "release_date": "2018-08-20T20:02:47.690876Z", - "archive": "dev/windows/flutter_windows_v0.6.0-dev.zip", - "sha256": "bc8b6222485b44195293be21c92db444b06f9cae49401732f81df031f251f844" - }, - { - "hash": "e4b989bf3dbefc61f11bce298d16f92ebd9cde41", - "channel": "dev", - "version": "v0.5.8", - "release_date": "2018-08-10T18:56:09.177755Z", - "archive": "dev/windows/flutter_windows_v0.5.8-dev.zip", - "sha256": "c3e7d390b9b5d3794b21a9109e646e6ed3f49c14545030f4229e3b726345aa80" - }, - { - "hash": "66091f969653fd3535b265ddcd87436901858a1d", - "channel": "dev", - "version": "v0.5.7", - "release_date": "2018-07-16T17:04:55.618963Z", - "archive": "dev/windows/flutter_windows_v0.5.7-dev.zip", - "sha256": "e873339ff42069858734cd98228583debff7e14893c69ff459d7986bdafd3c73" - }, - { - "hash": "472bbccf756e7954af2a81d2c8abc46d65a570af", - "channel": "dev", - "version": "v0.5.6", - "release_date": "2018-07-03T18:06:54.219206Z", - "archive": "dev/windows/flutter_windows_v0.5.6-dev.zip", - "sha256": "67b89a8d832b6a8cfd7a45682debc458093ba20746b97442b1acb457e86de4c1" - }, - { - "hash": "c7ea3ca377e909469c68f2ab878a5bc53d3cf66b", - "channel": "beta", - "version": "v0.5.1", - "release_date": "2018-06-19T16:36:38.059752Z", - "archive": "beta/windows/flutter_windows_v0.5.1-beta.zip", - "sha256": "1d6267358f90ad2ff46c23d53add0a503c10385efe6b5bb8c50ca4d670f9197a" - }, - { - "hash": "020e0ef55ce73d94284db593f895bfc3a0b520e9", - "channel": "dev", - "version": "v0.5.5", - "release_date": "2018-06-18T19:07:35.520288Z", - "archive": "dev/windows/flutter_windows_v0.5.5-dev.zip", - "sha256": "2977a63e5e1dc39c735abc4735cf0fbf548054fdd0482cea116522439ca3e6c6" - }, - { - "hash": "3019ad976d333cceb903b3f53885cd9ae678a622", - "channel": "dev", - "version": "v0.5.4", - "release_date": "2018-06-11T23:28:53.065615Z", - "archive": "dev/windows/flutter_windows_v0.5.4-dev.zip", - "sha256": "bccb30833b7efe52e22969140396ca7beb3833e6470a42a929ebdc25ab85e0d1" - }, - { - "hash": "691cbee61343977c5fe09eef45694f0d755d2d1b", - "channel": "dev", - "version": "v0.5.3", - "release_date": "2018-06-11T17:13:50.592530Z", - "archive": "dev/windows/flutter_windows_v0.5.3-dev.zip", - "sha256": "879417e698b2e7dc6e964f24487e92108471fddefc4ea91a21998eea656f6b1f" - }, - { - "hash": "0a26ac09703b92a939fe3340c0584657a1791566", - "channel": "dev", - "version": "v0.5.2", - "release_date": "2018-06-08T00:48:03.897411Z", - "archive": "dev/windows/flutter_windows_v0.5.2-dev.zip", - "sha256": "1c06e9c368b4f0d0e5c4e73b7da074f2bfb5c3abae5ea1ba2c1aa175e8f80136" - }, - { - "hash": "c7ea3ca377e909469c68f2ab878a5bc53d3cf66b", - "channel": "dev", - "version": "v0.5.1", - "release_date": "2018-05-30T16:59:27.185160Z", - "archive": "dev/windows/flutter_windows_v0.5.1-dev.zip", - "sha256": "1268dc64ea88781d9c4bc399e2ed9b80aec7a20b9e0436c0666c9caa6115d8d7" - }, - { - "hash": "a863817c045396bad2830a80e722903154dda32b", - "channel": "dev", - "version": "v0.5.0", - "release_date": "2018-05-29T14:39:21.018904Z", - "archive": "dev/windows/flutter_windows_v0.5.0-dev.zip", - "sha256": "60d3b1cb8b40c5d8f38d57c8ff3fd42dd7fc02a81f7cc5a1ea3c1fed983c7626" - }, - { - "hash": "f9bb4289e9fd861d70ae78bcc3a042ef1b35cc9d", - "channel": "beta", - "version": "v0.4.4", - "release_date": "2018-05-22T23:02:03.213936Z", - "archive": "beta/windows/flutter_windows_v0.4.4-beta.zip", - "sha256": "ad0dbadf98850a964d0a5c8e024d651c954afdd791b9c2c808439642867d482d" - }, - { - "hash": "f9bb4289e9fd861d70ae78bcc3a042ef1b35cc9d", - "channel": "dev", - "version": "v0.4.4", - "release_date": "2018-05-14T05:25:12.326622Z", - "archive": "dev/windows/flutter_windows_v0.4.4-dev.zip", - "sha256": "361a13dedad3d55995ab08cb8f91c656116adf94f28d2659296ed477cfa60cf4" - }, - { - "hash": "f086a45f8259fa77ef931ad2bfbb630360a8f5a6", - "channel": "dev", - "version": "v0.4.3", - "release_date": "2018-05-11T18:33:38.344738Z", - "archive": "dev/windows/flutter_windows_v0.4.3-dev.zip", - "sha256": "d018104bffe1644ace9672580adffe550fac52ef3d12916b867c2f01db9c8fac" - }, - { - "hash": "de332ec78292c2d79fdb76034328f902c9087ee9", - "channel": "dev", - "version": "v0.4.2", - "release_date": "2018-05-09T05:09:18.177442Z", - "archive": "dev/windows/flutter_windows_v0.4.2-dev.zip", - "sha256": "725a03f16774e9a2fd718ef9ef7e7cd13b7e1e5a4c2345e36b74c341b5effd8b" - }, - { - "hash": "e8d08744683d25661c6150b3b247c049719e99ba", - "channel": "dev", - "version": "v0.4.1", - "release_date": "2018-05-09T04:25:46.341226Z", - "archive": "dev/windows/flutter_windows_v0.4.1-dev.zip", - "sha256": "13e9d584078a2280bd4bde11ad648b49e22c60839642a968785c15f4ced17565" - }, - { - "hash": "7984f6e043ee661b420e70c72241973c676034e5", - "channel": "dev", - "version": "v0.4.0", - "release_date": "2018-05-07T20:00:20.520104Z", - "archive": "dev/windows/flutter_windows_v0.4.0-dev.zip", - "sha256": "1037a8d62dbb2041e8750081fb0d609ce098891974996f4067971b9537e04e4a" - }, - { - "hash": "44b7e7d3f42f050a79712daab253af06e9daf530", - "channel": "beta", - "version": "v0.3.2", - "release_date": "2018-05-07T18:26:25.419021Z", - "archive": "beta/windows/flutter_windows_v0.3.2-beta.zip", - "sha256": "f18d617b844b735195a4794b01e1c3643622d2a9d22ede05832346cda9356ef1" - }, - { - "hash": "be09a200ee19024db34257653b067dcf5b998dc2", - "channel": "dev", - "version": "v0.3.6", - "release_date": "2018-05-04T20:30:25.459485Z", - "archive": "dev/windows/flutter_windows_v0.3.6-dev.zip", - "sha256": "f3a0d5d2ed17970495a222e19b313da6f9f64144d1968bad306c5872557fc12f" - }, - { - "hash": "12bbaba9ae044d0ea77da4dd5e4db15eed403f09", - "channel": "beta", - "version": "v0.3.1", - "release_date": "2018-05-02T16:59:29.875623Z", - "archive": "beta/windows/flutter_windows_v0.3.1-beta.zip", - "sha256": "943870cffe0371e73847c8756f4f4b2963937f1e52ed34879a06aaa9477ef805" - }, - { - "hash": "7ffcd3d22d7bc1222d53d6d3bb83f59891aac2c2", - "channel": "dev", - "version": "v0.3.5", - "release_date": "2018-04-25T03:30:07.841649Z", - "archive": "dev/windows/flutter_windows_v0.3.5-dev.zip", - "sha256": "389829bbaab39a07de8d1ae213838b6a66c4cb7e603b2c11082385f528fc7099" - }, - { - "hash": "c7ee37a0d88bb3d60ac0f70cf381cd2492baf5e4", - "channel": "dev", - "version": "v0.3.4", - "release_date": "2018-04-24T22:15:11.273205Z", - "archive": "dev/windows/flutter_windows_v0.3.4-dev.zip", - "sha256": "d6f84e0b5c9af0e44eed0884d10c88a1c4a7b681fef07a88ca3641843b87177e" - }, - { - "hash": "a742b11a50ad5d70f44a219e4a29a9fb5ca80252", - "channel": "dev", - "version": "v0.3.3", - "release_date": "2018-04-23T13:47:24.973323Z", - "archive": "dev/windows/flutter_windows_v0.3.3-dev.zip", - "sha256": "b00f545acbf83e20b0e595860aaa3a1415f4d838b1f7d31759a16558095d0f1b" - }, - { - "hash": "44b7e7d3f42f050a79712daab253af06e9daf530", - "channel": "dev", - "version": "v0.3.2", - "release_date": "2018-04-20T08:27:42.973136Z", - "archive": "dev/windows/flutter_windows_v0.3.2-dev.zip", - "sha256": "3c9af13a549e03288cd4ceb0d670f6c7561f8adaf70c50952e07897e3a2db445" - }, - { - "hash": "12bbaba9ae044d0ea77da4dd5e4db15eed403f09", - "channel": "dev", - "version": "v0.3.1", - "release_date": "2018-04-20T08:02:13.116176Z", - "archive": "dev/windows/flutter_windows_v0.3.1-dev.zip", - "sha256": "7fc61d325e55d5f11398190207844a46c105f151338edc08bc0df2244f1b319a" - }, - { - "hash": "c73b8a7cf63455189e9dc005010f2c9b34497420", - "channel": "dev", - "version": "v0.3.0", - "release_date": "2018-04-16T20:08:25.827219Z", - "archive": "dev/windows/flutter_windows_v0.3.0-dev.zip", - "sha256": "f97ac5bc20533d5432cd1533401a6b21e6708e29bc4c9b7b40f02f6e5d82cb9f" - }, - { - "hash": "f408bb06f9361793ca85493c38d809ee1e2f7e30", - "channel": "dev", - "version": "v0.2.11", - "release_date": "2018-04-12T01:49:57.079518Z", - "archive": "dev/windows/flutter_windows_v0.2.11-dev.zip", - "sha256": "a859a76171adb66538e314809c02d50e9307883259d6b10838936bc58d7235a4" - }, - { - "hash": "d6d874474b21b512aac03f1dcd0d3b88835cdcdd", - "channel": "dev", - "version": "v0.2.10", - "release_date": "2018-04-09T20:24:20.470671Z", - "archive": "dev/windows/flutter_windows_v0.2.10-dev.zip", - "sha256": "a3219d8b7bf5a99728267877a2289fa65560fd27b586e0aca03dd1ae24f9ae57" - }, - { - "hash": "b397406561f5e7a9c94e28f58d9e49fca0dd58b7", - "channel": "beta", - "version": "v0.2.8", - "release_date": "2018-04-09T18:38:55.340095Z", - "archive": "beta/windows/flutter_windows_v0.2.8-beta.zip", - "sha256": "03ee8e44fa9fa5ee81a1de0c3391dcc040d0eeb9f5bc0162bdfa7d3b8a6fb0bc" - }, - { - "hash": "487e6bc91efd3b8ef859a31963b26e19d12ca6fa", - "channel": "dev", - "version": "v0.2.9", - "release_date": "2018-04-05T15:51:36.760052Z", - "archive": "dev/windows/flutter_windows_v0.2.9-dev.zip", - "sha256": "7962a65b29e8487d625ac973413a4888460ec20ed412367e611cd46682b4c98d" - }, - { - "hash": "b397406561f5e7a9c94e28f58d9e49fca0dd58b7", - "channel": "dev", - "version": "v0.2.8", - "release_date": "2018-04-03T01:49:17.940779Z", - "archive": "dev/windows/flutter_windows_v0.2.8-dev.zip", - "sha256": "dfc3eb2edf4c441f65819b0c705007cdeecea173a1472a0c201c854b367afb38" - }, - { - "hash": "5a58b36e36b8d7aace89d3950e6deb307956a6a0", - "channel": "beta", - "version": "v0.2.3", - "release_date": "2018-04-02T23:26:31.795545Z", - "archive": "beta/windows/flutter_windows_v0.2.3-beta.zip", - "sha256": "707bd37d2ee44b07604fea426950673e30fb8d687188089f60977d08266eb7e1" - }, - { - "hash": "0c89920069320b75d1fa4a47d36b2c48cf85697c", - "channel": "dev", - "version": "v0.2.7", - "release_date": "2018-04-02T23:18:32.272985Z", - "archive": "dev/windows/flutter_windows_v0.2.7-dev.zip", - "sha256": "a5ac9f833cb8f89c743f5a9e6ef6650f7408e43ff91d4c00af5a884de0e3d6b1" - }, - { - "hash": "1d067220daa06be91956de1130d93e63fb2f1a5a", - "channel": "dev", - "version": "v0.2.6", - "release_date": "2018-03-30T13:59:53.621370Z", - "archive": "dev/windows/flutter_windows_v0.2.6-dev.zip", - "sha256": "34b2276f4937e830b219ebb6a9c937363da127398ba4f8914757c333d4f07f69" - }, - { - "hash": "bffae2157102dd75a625153d3dc866d3de69c853", - "channel": "dev", - "version": "v0.2.5", - "release_date": "2018-03-30T01:55:34.667473Z", - "archive": "dev/windows/flutter_windows_v0.2.5-dev.zip", - "sha256": "261439aaaf580d24b0ed61868ebe73930b70d86d2d87124c21bbc6ce4de9676a" - }, - { - "hash": "3352a3fb488df4742ff323243d3dc44d9b7cd3e8", - "channel": "dev", - "version": "v0.2.4", - "release_date": "2018-03-26T20:43:01.049354Z", - "archive": "dev/windows/flutter_windows_v0.2.4-dev.zip", - "sha256": "f85070e18f8042b6ba70482d1f286b87c8fcd99e2f5dc3eeec410d0585e7f80d" - }, - { - "hash": "5a58b36e36b8d7aace89d3950e6deb307956a6a0", - "channel": "dev", - "version": "v0.2.3", - "release_date": "2018-03-20T01:07:23.881504Z", - "archive": "dev/windows/flutter_windows_v0.2.3-dev.zip", - "sha256": "092d4b52502e1ec62a559aa64b9386668dbe7340e35fabcd1bba04767f4c10ff" - }, - { - "hash": "b9bd51cc36b706215915711e580851901faebb40", - "channel": "dev", - "version": "v0.2.2", - "release_date": "2018-03-16T18:47:06.991431Z", - "archive": "dev/windows/flutter_windows_v0.2.2-dev.zip", - "sha256": "a625b7ac89c173d667f5577db70c0dc2b2fb7836370c48aeef51f43c647a45ca" - }, - { - "hash": "3ea4d06340a97a1e9d7cae97567c64e0569dcaa2", - "channel": "beta", - "version": "v0.1.5", - "release_date": "2018-03-13T15:39:29Z", - "archive": "beta/windows/flutter_windows_v0.1.5-beta.zip", - "sha256": "d2ad814575380896f0c4d1d9c92c08e57bfbdd6ed5545d3c469cd925e111405d" - }, - { - "hash": "6f5bcb97a43e45b302b6b8d9eb5ef9d54f09515e", - "channel": "dev", - "version": "v0.2.1", - "release_date": "2018-03-12T16:49:11Z", - "archive": "dev/windows/flutter_windows_v0.2.1-dev.zip", - "sha256": "e3caeaa883bdb0d1ddd1f4af53a88e5d3ae3c84717dae91f0f7fd54eddfb36b7" - }, - { - "hash": "f8ac23cd8646538634f63032df4bfaf3b597007d", - "channel": "dev", - "version": "v0.2.0", - "release_date": "2018-03-07T19:46:18Z", - "archive": "dev/windows/flutter_windows_v0.2.0-dev.zip", - "sha256": "549f31abe71b084746efd8896e2573652de4acacbfe5b9e386c9af290b5dbe2b" - }, - { - "hash": "70f60b17d7de9844c356fb7ab0e2cf1630a70965", - "channel": "dev", - "version": "v0.1.9", - "release_date": "2018-03-07T05:35:53Z", - "archive": "dev/windows/flutter_windows_v0.1.9-dev.zip", - "sha256": "2d80e4d6fa345ba7bcb1068ce973e7f0fd210fa3fdd6a45853194e6d2472eeba" - }, - { - "hash": "6993b203c05477fec537f566be7ff7fbf072d33b", - "channel": "dev", - "version": "v0.1.8", - "release_date": "2018-03-06T08:19:54Z", - "archive": "dev/windows/flutter_windows_v0.1.8-dev.zip", - "sha256": "6b99a49474b30a0ab71def04684fe352f60e19c1db7881b6a45c5afb947f7965" - }, - { - "hash": "1f3eb5034ff2372956620b2a9eb88683eee9495e", - "channel": "dev", - "version": "v0.1.6", - "release_date": "2018-02-27T00:26:37.058993Z", - "archive": "dev/windows/flutter_windows_v0.1.6-dev.zip", - "sha256": "44fa767580b328b8e8c23bbbbe2363769119c942aed2477771455ab74f3afe21" - } - ] -} \ No newline at end of file diff --git a/__tests__/installer.test.ts b/__tests__/installer.test.ts deleted file mode 100644 index d75f001..0000000 --- a/__tests__/installer.test.ts +++ /dev/null @@ -1,76 +0,0 @@ -import io = require('@actions/io'); -import exec = require('@actions/exec'); -import fs = require('fs'); -import path = require('path'); -import nock = require('nock'); - -const toolDir = path.join(__dirname, 'runner', 'tools'); -const tempDir = path.join(__dirname, 'runner', 'temp'); -const dataDir = path.join(__dirname, 'data'); - -process.env['RUNNER_TOOL_CACHE'] = toolDir; -process.env['RUNNER_TEMP'] = tempDir; - -import * as installer from '../src/installer'; -import * as release from '../src/release'; - -describe('installer tests', () => { - beforeAll(async () => { - await io.rmRF(toolDir); - await io.rmRF(tempDir); - }, 100000); - - beforeEach(() => { - const platform = release.getPlatform(); - nock('https://storage.googleapis.com', {allowUnmocked: true}) - .get(`/flutter_infra_release/releases/releases_${platform}.json`) - .replyWithFile(200, path.join(dataDir, `releases_${platform}.json`)); - }); - - afterEach(async () => { - nock.cleanAll(); - nock.enableNetConnect(); - - await io.rmRF(toolDir); - await io.rmRF(tempDir); - }, 100000); - - it('Downloads flutter', async () => { - await installer.getFlutter('2.0.0', 'stable'); - const sdkDir = path.join(toolDir, 'flutter', '2.0.0-stable', 'x64'); - - expect(fs.existsSync(`${sdkDir}.complete`)).toBe(true); - expect(fs.existsSync(path.join(sdkDir, 'bin'))).toBe(true); - }, 300000); - - it('Downloads flutter from master channel', async () => { - await installer.getFlutter('', 'master'); - const sdkDir = path.join(toolDir, 'flutter', 'master', 'x64'); - - let stdout = ''; - - const options = { - listeners: { - stdout: (data: Buffer) => { - stdout += data.toString(); - } - } - }; - - expect(fs.existsSync(`${sdkDir}.complete`)).toBe(true); - expect(fs.existsSync(path.join(sdkDir, 'bin'))).toBe(true); - - await exec.exec(path.join(sdkDir, 'bin', 'flutter'), ['channel'], options); - expect(stdout).toContain('* master'); - }, 300000); - - it('Throws if no location contains correct flutter version', async () => { - let thrown = false; - try { - await installer.getFlutter('1000.0', 'dev'); - } catch { - thrown = true; - } - expect(thrown).toBe(true); - }); -}); diff --git a/__tests__/release.test.ts b/__tests__/release.test.ts deleted file mode 100644 index 9aab4e3..0000000 --- a/__tests__/release.test.ts +++ /dev/null @@ -1,145 +0,0 @@ -import fs = require('fs'); -import path = require('path'); -import nock = require('nock'); -import * as release from '../src/release'; - -const platform = release.getPlatform(); - -describe('release tests', () => { - it('getPlatform', () => { - const platformMap: {[index: string]: string} = { - linux: 'linux', - darwin: 'macos', - win32: 'windows' - }; - - expect(platform).toEqual(platformMap[process.platform]); - }); - - describe('determineVersion', () => { - beforeEach(() => { - const dataDir = path.join(__dirname, 'data'); - - nock('https://storage.googleapis.com', {allowUnmocked: true}) - .get(`/flutter_infra_release/releases/releases_${platform}.json`) - .replyWithFile(200, path.join(dataDir, `releases_${platform}.json`)); - }); - - afterEach(() => { - nock.cleanAll(); - nock.enableNetConnect(); - }); - - it('channel: "stable", version: ""', async () => { - const result = await release.determineVersion('', 'stable', platform); - - expect(result.version).toEqual('2.0.5'); - expect(result.rawVersion).toEqual('2.0.5'); - expect(result.downloadUrl).toContain('2.0.5'); - }); - - it('channel: "beta", version: ""', async () => { - const result = await release.determineVersion('', 'beta', platform); - - expect(result.version).toEqual('2.2.0-10.1.pre'); - expect(result.rawVersion).toEqual('2.2.0-10.1.pre'); - expect(result.downloadUrl).toContain('2.2.0-10.1.pre'); - }); - - it('channel: "dev", version: ""', async () => { - const result = await release.determineVersion('', 'dev', platform); - - expect(result.version).toEqual('2.2.0-10.1.pre'); - expect(result.rawVersion).toEqual('2.2.0-10.1.pre'); - expect(result.downloadUrl).toContain('2.2.0-10.1.pre'); - }); - - it('channel: "dev", version: "1.17.x"', async () => { - const result = await release.determineVersion('1.17.x', 'dev', platform); - - expect(result.version).toEqual('1.17.0-dev.5.0'); - expect(result.rawVersion).toEqual('1.17.0-dev.5.0'); - expect(result.downloadUrl).toContain('1.17.0-dev.5.0'); - }); - - it('channel: "dev", version: "1.17"', async () => { - const result = await release.determineVersion('1.17', 'dev', platform); - - expect(result.version).toEqual('1.17.0-dev.5.0'); - expect(result.rawVersion).toEqual('1.17.0-dev.5.0'); - expect(result.downloadUrl).toContain('1.17.0-dev.5.0'); - }); - - it('channel: "dev", version: "1.7.x" (old format)', async () => { - const result = await release.determineVersion('1.7.x', 'dev', platform); - - expect(result.version).toEqual('1.7.11'); - expect(result.rawVersion).toEqual('v1.7.11'); - expect(result.downloadUrl).toContain('v1.7.11'); - }); - - it('channel: "dev", version: "1.7" (old format)', async () => { - const result = await release.determineVersion('1.7', 'dev', platform); - - expect(result.version).toEqual('1.7.11'); - expect(result.rawVersion).toEqual('v1.7.11'); - expect(result.downloadUrl).toContain('v1.7.11'); - }); - - it('channel: "dev", version: "0.12.x" (unknown)', async () => { - try { - await release.determineVersion('0.12.x', 'dev', platform); - } catch (e) { - expect(e.message).toEqual('unable to find release for 0.12.x'); - } - }); - - it('channel: "dev", version: "0.12" (unknown)', async () => { - try { - await release.determineVersion('0.12', 'dev', platform); - } catch (e) { - expect(e.message).toEqual('unable to find release for 0.12'); - } - }); - - it('channel: "dev", version: "1.17.0-dev.5.0"', async () => { - const result = await release.determineVersion( - '1.17.0-dev.5.0', - 'dev', - platform - ); - - expect(result.version).toEqual('1.17.0-dev.5.0'); - expect(result.rawVersion).toEqual('1.17.0-dev.5.0'); - expect(result.downloadUrl).toContain('1.17.0-dev.5.0'); - }); - - it('channel: "any", version: "1.17.x"', async () => { - const result = await release.determineVersion('1.17.x', 'any', platform); - - expect(result.version).toEqual('1.17.5'); - expect(result.rawVersion).toEqual('1.17.5'); - expect(result.downloadUrl).toContain('1.17.5'); - }); - - it('channel: "any", version: "1.19.x"', async () => { - const result = await release.determineVersion('1.19.x', 'any', platform); - - expect(result.version).toEqual('1.19.0-5.0.pre'); - expect(result.rawVersion).toEqual('1.19.0-5.0.pre'); - expect(result.downloadUrl).toContain('1.19.0-5.0.pre'); - }); - - it('channel: "any", version: "1.19.0-4.x"', async () => { - const result = await release.determineVersion( - '1.19.0-4.x', - 'any', - platform - ); - - expect(result.version).toEqual('1.19.0-4.3.pre'); - expect(result.rawVersion).toEqual('1.19.0-4.3.pre'); - expect(result.downloadUrl).toContain('1.19.0-4.3.pre'); - }); - }); -}); diff --git a/dist/index.js b/dist/index.js deleted file mode 100644 index 26d5852..0000000 --- a/dist/index.js +++ /dev/null @@ -1,8797 +0,0 @@ -/******/ (() => { // webpackBootstrap -/******/ var __webpack_modules__ = ({ - -/***/ 4822: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -const core = __importStar(__nccwpck_require__(2186)); -const installer = __importStar(__nccwpck_require__(1480)); -function run() { - return __awaiter(this, void 0, void 0, function* () { - try { - const version = core.getInput('flutter-version') || ''; - const channel = core.getInput('channel') || 'stable'; - if (channel == 'master' && version != '') { - core.setFailed('using `flutter-version` with master channel is not supported.'); - return; - } - yield installer.getFlutter(version, channel); - } - catch (error) { - core.setFailed(error.message); - } - }); -} -run(); - - -/***/ }), - -/***/ 1480: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getFlutter = void 0; -const core = __importStar(__nccwpck_require__(2186)); -const io = __importStar(__nccwpck_require__(7436)); -const exec = __importStar(__nccwpck_require__(1514)); -const tc = __importStar(__nccwpck_require__(7784)); -const fs = __importStar(__nccwpck_require__(5747)); -const path = __importStar(__nccwpck_require__(5622)); -const release = __importStar(__nccwpck_require__(878)); -function getFlutter(version, channel) { - return __awaiter(this, void 0, void 0, function* () { - const platform = release.getPlatform(); - const useMaster = channel == 'master'; - const { version: selected, downloadUrl, channel: validatedChannel } = yield release.determineVersion(version, useMaster ? 'dev' : channel, platform); - if (!useMaster && channel !== validatedChannel) { - core.debug(`Channel was identified as ${validatedChannel}`); - } - let cleanver = useMaster - ? channel - : `${selected.replace('+', '-')}-${validatedChannel}`; - let toolPath = tc.find('flutter', cleanver); - if (toolPath) { - core.debug(`Tool found in cache ${toolPath}`); - } - else { - core.debug(`Downloading Flutter from Google storage ${downloadUrl}`); - const sdkFile = yield tc.downloadTool(downloadUrl); - const sdkCache = yield tmpDir(platform); - const sdkDir = yield extract(sdkFile, sdkCache, path.basename(downloadUrl)); - toolPath = yield tc.cacheDir(sdkDir, 'flutter', cleanver); - } - core.exportVariable('FLUTTER_ROOT', toolPath); - let pubCachePath = process.env['PUB_CACHE'] || ''; - if (!pubCachePath) { - pubCachePath = path.join(toolPath, '.pub-cache'); - core.exportVariable('PUB_CACHE', pubCachePath); - } - core.addPath(path.join(toolPath, 'bin')); - core.addPath(path.join(toolPath, 'bin', 'cache', 'dart-sdk', 'bin')); - core.addPath(path.join(pubCachePath, 'bin')); - if (useMaster) { - yield exec.exec('flutter', ['channel', 'master']); - yield exec.exec('flutter', ['upgrade']); - } - }); -} -exports.getFlutter = getFlutter; -function tmpBaseDir(platform) { - let tempDirectory = process.env['RUNNER_TEMP'] || ''; - if (tempDirectory) { - return tempDirectory; - } - let baseLocation; - switch (platform) { - case 'windows': - baseLocation = process.env['USERPROFILE'] || 'C:\\'; - break; - case 'macos': - baseLocation = '/Users'; - break; - default: - baseLocation = '/home'; - break; - } - return path.join(baseLocation, 'actions', 'temp'); -} -function tmpDir(platform) { - return __awaiter(this, void 0, void 0, function* () { - const baseDir = tmpBaseDir(platform); - const tempDir = path.join(baseDir, 'temp_' + Math.floor(Math.random() * 2000000000)); - yield io.mkdirP(tempDir); - return tempDir; - }); -} -function extract(sdkFile, sdkCache, originalFilename) { - return __awaiter(this, void 0, void 0, function* () { - const fileStats = fs.statSync(path.normalize(sdkFile)); - if (fileStats.isFile()) { - const stats = fs.statSync(sdkFile); - if (!stats) { - throw new Error(`Failed to extract ${sdkFile} - it doesn't exist`); - } - else if (stats.isDirectory()) { - throw new Error(`Failed to extract ${sdkFile} - it is a directory`); - } - if (originalFilename.endsWith('tar.xz')) { - yield tc.extractTar(sdkFile, sdkCache, 'x'); - } - else { - yield tc.extractZip(sdkFile, sdkCache); - } - return path.join(sdkCache, fs.readdirSync(sdkCache)[0]); - } - else { - throw new Error(`Flutter sdk argument ${sdkFile} is not a file`); - } - }); -} - - -/***/ }), - -/***/ 878: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.determineVersion = exports.getPlatform = exports.storageUrl = void 0; -const core = __importStar(__nccwpck_require__(2186)); -const httpm = __importStar(__nccwpck_require__(9925)); -const semver = __importStar(__nccwpck_require__(1383)); -exports.storageUrl = 'https://storage.googleapis.com/flutter_infra_release/releases'; -function getPlatform() { - const platform = process.platform; - if (platform == 'win32') { - return 'windows'; - } - if (platform == 'darwin') { - return 'macos'; - } - return platform; -} -exports.getPlatform = getPlatform; -function determineVersion(version, channel, platform) { - return __awaiter(this, void 0, void 0, function* () { - const storage = yield getReleases(platform); - if (version === '') { - return getLatestVersion(storage, channel); - } - if (version.endsWith('.x')) { - return getWildcardVersion(storage, channel, version); - } - return getVersion(storage, channel, version); - }); -} -exports.determineVersion = determineVersion; -function getReleases(platform) { - return __awaiter(this, void 0, void 0, function* () { - const releasesUrl = `${exports.storageUrl}/releases_${platform}.json`; - const http = new httpm.HttpClient('flutter-action'); - const storage = (yield http.getJson(releasesUrl)).result; - if (!storage) { - throw new Error('unable to get flutter releases'); - } - return storage; - }); -} -function getLatestVersion(storage, channel) { - return __awaiter(this, void 0, void 0, function* () { - const channelVersion = storage.releases.find(release => { - return (release.hash === storage.current_release[channel] && - validateChannel(release.channel, channel)); - }); - if (!channelVersion) { - throw new Error(`unable to get latest version from channel ${channel}`); - } - let rver = channelVersion.version; - let cver = rver.startsWith('v') ? rver.slice(1, rver.length) : rver; - core.debug(`latest version from channel ${channel} is ${rver}`); - const flutterData = { - channel: channelVersion.channel, - version: cver, - rawVersion: rver, - downloadUrl: `${exports.storageUrl}/${channelVersion.archive}` - }; - return flutterData; - }); -} -function validateChannel(releaseChannel, channel) { - return releaseChannel === channel || channel === 'any'; -} -function getWildcardVersion(storage, channel, version) { - return __awaiter(this, void 0, void 0, function* () { - let sver = version.endsWith('.x') - ? version.slice(0, version.length - 2) - : version; - const releases = storage.releases.filter(release => { - return (validateChannel(release.channel, channel) && - prefixCompare(sver, release.version)); - }); - const versions = releases - .map(release => release.version) - .map(version => version.startsWith('v') ? version.slice(1, version.length) : version); - const sortedVersions = versions.sort(semver.rcompare); - let cver = sortedVersions[0]; - let release = releases.find(release => compare(cver, release.version)); - if (!release) { - throw new Error(`unable to find release for ${version}`); - } - core.debug(`latest version of ${version} from channel ${channel} is ${release.version}`); - const flutterData = { - channel: release.channel, - version: cver, - rawVersion: release.version, - downloadUrl: `${exports.storageUrl}/${release.archive}` - }; - return flutterData; - }); -} -function getVersion(storage, channel, version) { - return __awaiter(this, void 0, void 0, function* () { - const release = storage.releases.find(release => { - return (validateChannel(release.channel, channel) && - compare(version, release.version)); - }); - if (!release) { - return getWildcardVersion(storage, channel, version); - } - const flutterData = { - channel: release.channel, - version, - rawVersion: release.version, - downloadUrl: `${exports.storageUrl}/${release.archive}` - }; - return flutterData; - }); -} -function compare(version, releaseVersion) { - if (releaseVersion.startsWith('v')) { - return releaseVersion === `v${version}`; - } - return releaseVersion === version; -} -function prefixCompare(version, releaseVersion) { - if (releaseVersion.startsWith('v')) { - return releaseVersion.startsWith(`v${version}`); - } - return releaseVersion.startsWith(version); -} - - -/***/ }), - -/***/ 7351: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.issue = exports.issueCommand = void 0; -const os = __importStar(__nccwpck_require__(2087)); -const utils_1 = __nccwpck_require__(5278); -/** - * Commands - * - * Command Format: - * ::name key=value,key=value::message - * - * Examples: - * ::warning::This is the message - * ::set-env name=MY_VAR::some value - */ -function issueCommand(command, properties, message) { - const cmd = new Command(command, properties, message); - process.stdout.write(cmd.toString() + os.EOL); -} -exports.issueCommand = issueCommand; -function issue(name, message = '') { - issueCommand(name, {}, message); -} -exports.issue = issue; -const CMD_STRING = '::'; -class Command { - constructor(command, properties, message) { - if (!command) { - command = 'missing.command'; - } - this.command = command; - this.properties = properties; - this.message = message; - } - toString() { - let cmdStr = CMD_STRING + this.command; - if (this.properties && Object.keys(this.properties).length > 0) { - cmdStr += ' '; - let first = true; - for (const key in this.properties) { - if (this.properties.hasOwnProperty(key)) { - const val = this.properties[key]; - if (val) { - if (first) { - first = false; - } - else { - cmdStr += ','; - } - cmdStr += `${key}=${escapeProperty(val)}`; - } - } - } - } - cmdStr += `${CMD_STRING}${escapeData(this.message)}`; - return cmdStr; - } -} -function escapeData(s) { - return utils_1.toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A'); -} -function escapeProperty(s) { - return utils_1.toCommandValue(s) - .replace(/%/g, '%25') - .replace(/\r/g, '%0D') - .replace(/\n/g, '%0A') - .replace(/:/g, '%3A') - .replace(/,/g, '%2C'); -} -//# sourceMappingURL=command.js.map - -/***/ }), - -/***/ 2186: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getState = exports.saveState = exports.group = exports.endGroup = exports.startGroup = exports.info = exports.warning = exports.error = exports.debug = exports.isDebug = exports.setFailed = exports.setCommandEcho = exports.setOutput = exports.getBooleanInput = exports.getMultilineInput = exports.getInput = exports.addPath = exports.setSecret = exports.exportVariable = exports.ExitCode = void 0; -const command_1 = __nccwpck_require__(7351); -const file_command_1 = __nccwpck_require__(717); -const utils_1 = __nccwpck_require__(5278); -const os = __importStar(__nccwpck_require__(2087)); -const path = __importStar(__nccwpck_require__(5622)); -/** - * The code to exit an action - */ -var ExitCode; -(function (ExitCode) { - /** - * A code indicating that the action was successful - */ - ExitCode[ExitCode["Success"] = 0] = "Success"; - /** - * A code indicating that the action was a failure - */ - ExitCode[ExitCode["Failure"] = 1] = "Failure"; -})(ExitCode = exports.ExitCode || (exports.ExitCode = {})); -//----------------------------------------------------------------------- -// Variables -//----------------------------------------------------------------------- -/** - * Sets env variable for this action and future actions in the job - * @param name the name of the variable to set - * @param val the value of the variable. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function exportVariable(name, val) { - const convertedVal = utils_1.toCommandValue(val); - process.env[name] = convertedVal; - const filePath = process.env['GITHUB_ENV'] || ''; - if (filePath) { - const delimiter = '_GitHubActionsFileCommandDelimeter_'; - const commandValue = `${name}<<${delimiter}${os.EOL}${convertedVal}${os.EOL}${delimiter}`; - file_command_1.issueCommand('ENV', commandValue); - } - else { - command_1.issueCommand('set-env', { name }, convertedVal); - } -} -exports.exportVariable = exportVariable; -/** - * Registers a secret which will get masked from logs - * @param secret value of the secret - */ -function setSecret(secret) { - command_1.issueCommand('add-mask', {}, secret); -} -exports.setSecret = setSecret; -/** - * Prepends inputPath to the PATH (for this action and future actions) - * @param inputPath - */ -function addPath(inputPath) { - const filePath = process.env['GITHUB_PATH'] || ''; - if (filePath) { - file_command_1.issueCommand('PATH', inputPath); - } - else { - command_1.issueCommand('add-path', {}, inputPath); - } - process.env['PATH'] = `${inputPath}${path.delimiter}${process.env['PATH']}`; -} -exports.addPath = addPath; -/** - * Gets the value of an input. - * Unless trimWhitespace is set to false in InputOptions, the value is also trimmed. - * Returns an empty string if the value is not defined. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string - */ -function getInput(name, options) { - const val = process.env[`INPUT_${name.replace(/ /g, '_').toUpperCase()}`] || ''; - if (options && options.required && !val) { - throw new Error(`Input required and not supplied: ${name}`); - } - if (options && options.trimWhitespace === false) { - return val; - } - return val.trim(); -} -exports.getInput = getInput; -/** - * Gets the values of an multiline input. Each value is also trimmed. - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns string[] - * - */ -function getMultilineInput(name, options) { - const inputs = getInput(name, options) - .split('\n') - .filter(x => x !== ''); - return inputs; -} -exports.getMultilineInput = getMultilineInput; -/** - * Gets the input value of the boolean type in the YAML 1.2 "core schema" specification. - * Support boolean input list: `true | True | TRUE | false | False | FALSE` . - * The return value is also in boolean type. - * ref: https://yaml.org/spec/1.2/spec.html#id2804923 - * - * @param name name of the input to get - * @param options optional. See InputOptions. - * @returns boolean - */ -function getBooleanInput(name, options) { - const trueValue = ['true', 'True', 'TRUE']; - const falseValue = ['false', 'False', 'FALSE']; - const val = getInput(name, options); - if (trueValue.includes(val)) - return true; - if (falseValue.includes(val)) - return false; - throw new TypeError(`Input does not meet YAML 1.2 "Core Schema" specification: ${name}\n` + - `Support boolean input list: \`true | True | TRUE | false | False | FALSE\``); -} -exports.getBooleanInput = getBooleanInput; -/** - * Sets the value of an output. - * - * @param name name of the output to set - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function setOutput(name, value) { - process.stdout.write(os.EOL); - command_1.issueCommand('set-output', { name }, value); -} -exports.setOutput = setOutput; -/** - * Enables or disables the echoing of commands into stdout for the rest of the step. - * Echoing is disabled by default if ACTIONS_STEP_DEBUG is not set. - * - */ -function setCommandEcho(enabled) { - command_1.issue('echo', enabled ? 'on' : 'off'); -} -exports.setCommandEcho = setCommandEcho; -//----------------------------------------------------------------------- -// Results -//----------------------------------------------------------------------- -/** - * Sets the action status to failed. - * When the action exits it will be with an exit code of 1 - * @param message add error issue message - */ -function setFailed(message) { - process.exitCode = ExitCode.Failure; - error(message); -} -exports.setFailed = setFailed; -//----------------------------------------------------------------------- -// Logging Commands -//----------------------------------------------------------------------- -/** - * Gets whether Actions Step Debug is on or not - */ -function isDebug() { - return process.env['RUNNER_DEBUG'] === '1'; -} -exports.isDebug = isDebug; -/** - * Writes debug message to user log - * @param message debug message - */ -function debug(message) { - command_1.issueCommand('debug', {}, message); -} -exports.debug = debug; -/** - * Adds an error issue - * @param message error issue message. Errors will be converted to string via toString() - */ -function error(message) { - command_1.issue('error', message instanceof Error ? message.toString() : message); -} -exports.error = error; -/** - * Adds an warning issue - * @param message warning issue message. Errors will be converted to string via toString() - */ -function warning(message) { - command_1.issue('warning', message instanceof Error ? message.toString() : message); -} -exports.warning = warning; -/** - * Writes info to log with console.log. - * @param message info message - */ -function info(message) { - process.stdout.write(message + os.EOL); -} -exports.info = info; -/** - * Begin an output group. - * - * Output until the next `groupEnd` will be foldable in this group - * - * @param name The name of the output group - */ -function startGroup(name) { - command_1.issue('group', name); -} -exports.startGroup = startGroup; -/** - * End an output group. - */ -function endGroup() { - command_1.issue('endgroup'); -} -exports.endGroup = endGroup; -/** - * Wrap an asynchronous function call in a group. - * - * Returns the same type as the function itself. - * - * @param name The name of the group - * @param fn The function to wrap in the group - */ -function group(name, fn) { - return __awaiter(this, void 0, void 0, function* () { - startGroup(name); - let result; - try { - result = yield fn(); - } - finally { - endGroup(); - } - return result; - }); -} -exports.group = group; -//----------------------------------------------------------------------- -// Wrapper action state -//----------------------------------------------------------------------- -/** - * Saves state for current action, the state can only be retrieved by this action's post job execution. - * - * @param name name of the state to store - * @param value value to store. Non-string values will be converted to a string via JSON.stringify - */ -// eslint-disable-next-line @typescript-eslint/no-explicit-any -function saveState(name, value) { - command_1.issueCommand('save-state', { name }, value); -} -exports.saveState = saveState; -/** - * Gets the value of an state set by this action's main execution. - * - * @param name name of the state to get - * @returns string - */ -function getState(name) { - return process.env[`STATE_${name}`] || ''; -} -exports.getState = getState; -//# sourceMappingURL=core.js.map - -/***/ }), - -/***/ 717: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -// For internal use, subject to change. -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.issueCommand = void 0; -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ -const fs = __importStar(__nccwpck_require__(5747)); -const os = __importStar(__nccwpck_require__(2087)); -const utils_1 = __nccwpck_require__(5278); -function issueCommand(command, message) { - const filePath = process.env[`GITHUB_${command}`]; - if (!filePath) { - throw new Error(`Unable to find environment variable for file command ${command}`); - } - if (!fs.existsSync(filePath)) { - throw new Error(`Missing file at path: ${filePath}`); - } - fs.appendFileSync(filePath, `${utils_1.toCommandValue(message)}${os.EOL}`, { - encoding: 'utf8' - }); -} -exports.issueCommand = issueCommand; -//# sourceMappingURL=file-command.js.map - -/***/ }), - -/***/ 5278: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -// We use any as a valid input type -/* eslint-disable @typescript-eslint/no-explicit-any */ -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.toCommandValue = void 0; -/** - * Sanitizes an input into a string so it can be passed into issueCommand safely - * @param input input to sanitize into a string - */ -function toCommandValue(input) { - if (input === null || input === undefined) { - return ''; - } - else if (typeof input === 'string' || input instanceof String) { - return input; - } - return JSON.stringify(input); -} -exports.toCommandValue = toCommandValue; -//# sourceMappingURL=utils.js.map - -/***/ }), - -/***/ 1514: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getExecOutput = exports.exec = void 0; -const string_decoder_1 = __nccwpck_require__(4304); -const tr = __importStar(__nccwpck_require__(8159)); -/** - * Exec a command. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param commandLine command to execute (can include additional args). Must be correctly escaped. - * @param args optional arguments for tool. Escaping is handled by the lib. - * @param options optional exec options. See ExecOptions - * @returns Promise exit code - */ -function exec(commandLine, args, options) { - return __awaiter(this, void 0, void 0, function* () { - const commandArgs = tr.argStringToArray(commandLine); - if (commandArgs.length === 0) { - throw new Error(`Parameter 'commandLine' cannot be null or empty.`); - } - // Path to tool to execute should be first arg - const toolPath = commandArgs[0]; - args = commandArgs.slice(1).concat(args || []); - const runner = new tr.ToolRunner(toolPath, args, options); - return runner.exec(); - }); -} -exports.exec = exec; -/** - * Exec a command and get the output. - * Output will be streamed to the live console. - * Returns promise with the exit code and collected stdout and stderr - * - * @param commandLine command to execute (can include additional args). Must be correctly escaped. - * @param args optional arguments for tool. Escaping is handled by the lib. - * @param options optional exec options. See ExecOptions - * @returns Promise exit code, stdout, and stderr - */ -function getExecOutput(commandLine, args, options) { - var _a, _b; - return __awaiter(this, void 0, void 0, function* () { - let stdout = ''; - let stderr = ''; - //Using string decoder covers the case where a mult-byte character is split - const stdoutDecoder = new string_decoder_1.StringDecoder('utf8'); - const stderrDecoder = new string_decoder_1.StringDecoder('utf8'); - const originalStdoutListener = (_a = options === null || options === void 0 ? void 0 : options.listeners) === null || _a === void 0 ? void 0 : _a.stdout; - const originalStdErrListener = (_b = options === null || options === void 0 ? void 0 : options.listeners) === null || _b === void 0 ? void 0 : _b.stderr; - const stdErrListener = (data) => { - stderr += stderrDecoder.write(data); - if (originalStdErrListener) { - originalStdErrListener(data); - } - }; - const stdOutListener = (data) => { - stdout += stdoutDecoder.write(data); - if (originalStdoutListener) { - originalStdoutListener(data); - } - }; - const listeners = Object.assign(Object.assign({}, options === null || options === void 0 ? void 0 : options.listeners), { stdout: stdOutListener, stderr: stdErrListener }); - const exitCode = yield exec(commandLine, args, Object.assign(Object.assign({}, options), { listeners })); - //flush any remaining characters - stdout += stdoutDecoder.end(); - stderr += stderrDecoder.end(); - return { - exitCode, - stdout, - stderr - }; - }); -} -exports.getExecOutput = getExecOutput; -//# sourceMappingURL=exec.js.map - -/***/ }), - -/***/ 8159: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.argStringToArray = exports.ToolRunner = void 0; -const os = __importStar(__nccwpck_require__(2087)); -const events = __importStar(__nccwpck_require__(8614)); -const child = __importStar(__nccwpck_require__(3129)); -const path = __importStar(__nccwpck_require__(5622)); -const io = __importStar(__nccwpck_require__(7436)); -const ioUtil = __importStar(__nccwpck_require__(1962)); -const timers_1 = __nccwpck_require__(8213); -/* eslint-disable @typescript-eslint/unbound-method */ -const IS_WINDOWS = process.platform === 'win32'; -/* - * Class for running command line tools. Handles quoting and arg parsing in a platform agnostic way. - */ -class ToolRunner extends events.EventEmitter { - constructor(toolPath, args, options) { - super(); - if (!toolPath) { - throw new Error("Parameter 'toolPath' cannot be null or empty."); - } - this.toolPath = toolPath; - this.args = args || []; - this.options = options || {}; - } - _debug(message) { - if (this.options.listeners && this.options.listeners.debug) { - this.options.listeners.debug(message); - } - } - _getCommandString(options, noPrefix) { - const toolPath = this._getSpawnFileName(); - const args = this._getSpawnArgs(options); - let cmd = noPrefix ? '' : '[command]'; // omit prefix when piped to a second tool - if (IS_WINDOWS) { - // Windows + cmd file - if (this._isCmdFile()) { - cmd += toolPath; - for (const a of args) { - cmd += ` ${a}`; - } - } - // Windows + verbatim - else if (options.windowsVerbatimArguments) { - cmd += `"${toolPath}"`; - for (const a of args) { - cmd += ` ${a}`; - } - } - // Windows (regular) - else { - cmd += this._windowsQuoteCmdArg(toolPath); - for (const a of args) { - cmd += ` ${this._windowsQuoteCmdArg(a)}`; - } - } - } - else { - // OSX/Linux - this can likely be improved with some form of quoting. - // creating processes on Unix is fundamentally different than Windows. - // on Unix, execvp() takes an arg array. - cmd += toolPath; - for (const a of args) { - cmd += ` ${a}`; - } - } - return cmd; - } - _processLineBuffer(data, strBuffer, onLine) { - try { - let s = strBuffer + data.toString(); - let n = s.indexOf(os.EOL); - while (n > -1) { - const line = s.substring(0, n); - onLine(line); - // the rest of the string ... - s = s.substring(n + os.EOL.length); - n = s.indexOf(os.EOL); - } - return s; - } - catch (err) { - // streaming lines to console is best effort. Don't fail a build. - this._debug(`error processing line. Failed with error ${err}`); - return ''; - } - } - _getSpawnFileName() { - if (IS_WINDOWS) { - if (this._isCmdFile()) { - return process.env['COMSPEC'] || 'cmd.exe'; - } - } - return this.toolPath; - } - _getSpawnArgs(options) { - if (IS_WINDOWS) { - if (this._isCmdFile()) { - let argline = `/D /S /C "${this._windowsQuoteCmdArg(this.toolPath)}`; - for (const a of this.args) { - argline += ' '; - argline += options.windowsVerbatimArguments - ? a - : this._windowsQuoteCmdArg(a); - } - argline += '"'; - return [argline]; - } - } - return this.args; - } - _endsWith(str, end) { - return str.endsWith(end); - } - _isCmdFile() { - const upperToolPath = this.toolPath.toUpperCase(); - return (this._endsWith(upperToolPath, '.CMD') || - this._endsWith(upperToolPath, '.BAT')); - } - _windowsQuoteCmdArg(arg) { - // for .exe, apply the normal quoting rules that libuv applies - if (!this._isCmdFile()) { - return this._uvQuoteCmdArg(arg); - } - // otherwise apply quoting rules specific to the cmd.exe command line parser. - // the libuv rules are generic and are not designed specifically for cmd.exe - // command line parser. - // - // for a detailed description of the cmd.exe command line parser, refer to - // http://stackoverflow.com/questions/4094699/how-does-the-windows-command-interpreter-cmd-exe-parse-scripts/7970912#7970912 - // need quotes for empty arg - if (!arg) { - return '""'; - } - // determine whether the arg needs to be quoted - const cmdSpecialChars = [ - ' ', - '\t', - '&', - '(', - ')', - '[', - ']', - '{', - '}', - '^', - '=', - ';', - '!', - "'", - '+', - ',', - '`', - '~', - '|', - '<', - '>', - '"' - ]; - let needsQuotes = false; - for (const char of arg) { - if (cmdSpecialChars.some(x => x === char)) { - needsQuotes = true; - break; - } - } - // short-circuit if quotes not needed - if (!needsQuotes) { - return arg; - } - // the following quoting rules are very similar to the rules that by libuv applies. - // - // 1) wrap the string in quotes - // - // 2) double-up quotes - i.e. " => "" - // - // this is different from the libuv quoting rules. libuv replaces " with \", which unfortunately - // doesn't work well with a cmd.exe command line. - // - // note, replacing " with "" also works well if the arg is passed to a downstream .NET console app. - // for example, the command line: - // foo.exe "myarg:""my val""" - // is parsed by a .NET console app into an arg array: - // [ "myarg:\"my val\"" ] - // which is the same end result when applying libuv quoting rules. although the actual - // command line from libuv quoting rules would look like: - // foo.exe "myarg:\"my val\"" - // - // 3) double-up slashes that precede a quote, - // e.g. hello \world => "hello \world" - // hello\"world => "hello\\""world" - // hello\\"world => "hello\\\\""world" - // hello world\ => "hello world\\" - // - // technically this is not required for a cmd.exe command line, or the batch argument parser. - // the reasons for including this as a .cmd quoting rule are: - // - // a) this is optimized for the scenario where the argument is passed from the .cmd file to an - // external program. many programs (e.g. .NET console apps) rely on the slash-doubling rule. - // - // b) it's what we've been doing previously (by deferring to node default behavior) and we - // haven't heard any complaints about that aspect. - // - // note, a weakness of the quoting rules chosen here, is that % is not escaped. in fact, % cannot be - // escaped when used on the command line directly - even though within a .cmd file % can be escaped - // by using %%. - // - // the saving grace is, on the command line, %var% is left as-is if var is not defined. this contrasts - // the line parsing rules within a .cmd file, where if var is not defined it is replaced with nothing. - // - // one option that was explored was replacing % with ^% - i.e. %var% => ^%var^%. this hack would - // often work, since it is unlikely that var^ would exist, and the ^ character is removed when the - // variable is used. the problem, however, is that ^ is not removed when %* is used to pass the args - // to an external program. - // - // an unexplored potential solution for the % escaping problem, is to create a wrapper .cmd file. - // % can be escaped within a .cmd file. - let reverse = '"'; - let quoteHit = true; - for (let i = arg.length; i > 0; i--) { - // walk the string in reverse - reverse += arg[i - 1]; - if (quoteHit && arg[i - 1] === '\\') { - reverse += '\\'; // double the slash - } - else if (arg[i - 1] === '"') { - quoteHit = true; - reverse += '"'; // double the quote - } - else { - quoteHit = false; - } - } - reverse += '"'; - return reverse - .split('') - .reverse() - .join(''); - } - _uvQuoteCmdArg(arg) { - // Tool runner wraps child_process.spawn() and needs to apply the same quoting as - // Node in certain cases where the undocumented spawn option windowsVerbatimArguments - // is used. - // - // Since this function is a port of quote_cmd_arg from Node 4.x (technically, lib UV, - // see https://github.com/nodejs/node/blob/v4.x/deps/uv/src/win/process.c for details), - // pasting copyright notice from Node within this function: - // - // Copyright Joyent, Inc. and other Node contributors. All rights reserved. - // - // Permission is hereby granted, free of charge, to any person obtaining a copy - // of this software and associated documentation files (the "Software"), to - // deal in the Software without restriction, including without limitation the - // rights to use, copy, modify, merge, publish, distribute, sublicense, and/or - // sell copies of the Software, and to permit persons to whom the Software is - // furnished to do so, subject to the following conditions: - // - // The above copyright notice and this permission notice shall be included in - // all copies or substantial portions of the Software. - // - // THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - // IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - // FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - // AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - // LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING - // FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS - // IN THE SOFTWARE. - if (!arg) { - // Need double quotation for empty argument - return '""'; - } - if (!arg.includes(' ') && !arg.includes('\t') && !arg.includes('"')) { - // No quotation needed - return arg; - } - if (!arg.includes('"') && !arg.includes('\\')) { - // No embedded double quotes or backslashes, so I can just wrap - // quote marks around the whole thing. - return `"${arg}"`; - } - // Expected input/output: - // input : hello"world - // output: "hello\"world" - // input : hello""world - // output: "hello\"\"world" - // input : hello\world - // output: hello\world - // input : hello\\world - // output: hello\\world - // input : hello\"world - // output: "hello\\\"world" - // input : hello\\"world - // output: "hello\\\\\"world" - // input : hello world\ - // output: "hello world\\" - note the comment in libuv actually reads "hello world\" - // but it appears the comment is wrong, it should be "hello world\\" - let reverse = '"'; - let quoteHit = true; - for (let i = arg.length; i > 0; i--) { - // walk the string in reverse - reverse += arg[i - 1]; - if (quoteHit && arg[i - 1] === '\\') { - reverse += '\\'; - } - else if (arg[i - 1] === '"') { - quoteHit = true; - reverse += '\\'; - } - else { - quoteHit = false; - } - } - reverse += '"'; - return reverse - .split('') - .reverse() - .join(''); - } - _cloneExecOptions(options) { - options = options || {}; - const result = { - cwd: options.cwd || process.cwd(), - env: options.env || process.env, - silent: options.silent || false, - windowsVerbatimArguments: options.windowsVerbatimArguments || false, - failOnStdErr: options.failOnStdErr || false, - ignoreReturnCode: options.ignoreReturnCode || false, - delay: options.delay || 10000 - }; - result.outStream = options.outStream || process.stdout; - result.errStream = options.errStream || process.stderr; - return result; - } - _getSpawnOptions(options, toolPath) { - options = options || {}; - const result = {}; - result.cwd = options.cwd; - result.env = options.env; - result['windowsVerbatimArguments'] = - options.windowsVerbatimArguments || this._isCmdFile(); - if (options.windowsVerbatimArguments) { - result.argv0 = `"${toolPath}"`; - } - return result; - } - /** - * Exec a tool. - * Output will be streamed to the live console. - * Returns promise with return code - * - * @param tool path to tool to exec - * @param options optional exec options. See ExecOptions - * @returns number - */ - exec() { - return __awaiter(this, void 0, void 0, function* () { - // root the tool path if it is unrooted and contains relative pathing - if (!ioUtil.isRooted(this.toolPath) && - (this.toolPath.includes('/') || - (IS_WINDOWS && this.toolPath.includes('\\')))) { - // prefer options.cwd if it is specified, however options.cwd may also need to be rooted - this.toolPath = path.resolve(process.cwd(), this.options.cwd || process.cwd(), this.toolPath); - } - // if the tool is only a file name, then resolve it from the PATH - // otherwise verify it exists (add extension on Windows if necessary) - this.toolPath = yield io.which(this.toolPath, true); - return new Promise((resolve, reject) => __awaiter(this, void 0, void 0, function* () { - this._debug(`exec tool: ${this.toolPath}`); - this._debug('arguments:'); - for (const arg of this.args) { - this._debug(` ${arg}`); - } - const optionsNonNull = this._cloneExecOptions(this.options); - if (!optionsNonNull.silent && optionsNonNull.outStream) { - optionsNonNull.outStream.write(this._getCommandString(optionsNonNull) + os.EOL); - } - const state = new ExecState(optionsNonNull, this.toolPath); - state.on('debug', (message) => { - this._debug(message); - }); - if (this.options.cwd && !(yield ioUtil.exists(this.options.cwd))) { - return reject(new Error(`The cwd: ${this.options.cwd} does not exist!`)); - } - const fileName = this._getSpawnFileName(); - const cp = child.spawn(fileName, this._getSpawnArgs(optionsNonNull), this._getSpawnOptions(this.options, fileName)); - let stdbuffer = ''; - if (cp.stdout) { - cp.stdout.on('data', (data) => { - if (this.options.listeners && this.options.listeners.stdout) { - this.options.listeners.stdout(data); - } - if (!optionsNonNull.silent && optionsNonNull.outStream) { - optionsNonNull.outStream.write(data); - } - stdbuffer = this._processLineBuffer(data, stdbuffer, (line) => { - if (this.options.listeners && this.options.listeners.stdline) { - this.options.listeners.stdline(line); - } - }); - }); - } - let errbuffer = ''; - if (cp.stderr) { - cp.stderr.on('data', (data) => { - state.processStderr = true; - if (this.options.listeners && this.options.listeners.stderr) { - this.options.listeners.stderr(data); - } - if (!optionsNonNull.silent && - optionsNonNull.errStream && - optionsNonNull.outStream) { - const s = optionsNonNull.failOnStdErr - ? optionsNonNull.errStream - : optionsNonNull.outStream; - s.write(data); - } - errbuffer = this._processLineBuffer(data, errbuffer, (line) => { - if (this.options.listeners && this.options.listeners.errline) { - this.options.listeners.errline(line); - } - }); - }); - } - cp.on('error', (err) => { - state.processError = err.message; - state.processExited = true; - state.processClosed = true; - state.CheckComplete(); - }); - cp.on('exit', (code) => { - state.processExitCode = code; - state.processExited = true; - this._debug(`Exit code ${code} received from tool '${this.toolPath}'`); - state.CheckComplete(); - }); - cp.on('close', (code) => { - state.processExitCode = code; - state.processExited = true; - state.processClosed = true; - this._debug(`STDIO streams have closed for tool '${this.toolPath}'`); - state.CheckComplete(); - }); - state.on('done', (error, exitCode) => { - if (stdbuffer.length > 0) { - this.emit('stdline', stdbuffer); - } - if (errbuffer.length > 0) { - this.emit('errline', errbuffer); - } - cp.removeAllListeners(); - if (error) { - reject(error); - } - else { - resolve(exitCode); - } - }); - if (this.options.input) { - if (!cp.stdin) { - throw new Error('child process missing stdin'); - } - cp.stdin.end(this.options.input); - } - })); - }); - } -} -exports.ToolRunner = ToolRunner; -/** - * Convert an arg string to an array of args. Handles escaping - * - * @param argString string of arguments - * @returns string[] array of arguments - */ -function argStringToArray(argString) { - const args = []; - let inQuotes = false; - let escaped = false; - let arg = ''; - function append(c) { - // we only escape double quotes. - if (escaped && c !== '"') { - arg += '\\'; - } - arg += c; - escaped = false; - } - for (let i = 0; i < argString.length; i++) { - const c = argString.charAt(i); - if (c === '"') { - if (!escaped) { - inQuotes = !inQuotes; - } - else { - append(c); - } - continue; - } - if (c === '\\' && escaped) { - append(c); - continue; - } - if (c === '\\' && inQuotes) { - escaped = true; - continue; - } - if (c === ' ' && !inQuotes) { - if (arg.length > 0) { - args.push(arg); - arg = ''; - } - continue; - } - append(c); - } - if (arg.length > 0) { - args.push(arg.trim()); - } - return args; -} -exports.argStringToArray = argStringToArray; -class ExecState extends events.EventEmitter { - constructor(options, toolPath) { - super(); - this.processClosed = false; // tracks whether the process has exited and stdio is closed - this.processError = ''; - this.processExitCode = 0; - this.processExited = false; // tracks whether the process has exited - this.processStderr = false; // tracks whether stderr was written to - this.delay = 10000; // 10 seconds - this.done = false; - this.timeout = null; - if (!toolPath) { - throw new Error('toolPath must not be empty'); - } - this.options = options; - this.toolPath = toolPath; - if (options.delay) { - this.delay = options.delay; - } - } - CheckComplete() { - if (this.done) { - return; - } - if (this.processClosed) { - this._setResult(); - } - else if (this.processExited) { - this.timeout = timers_1.setTimeout(ExecState.HandleTimeout, this.delay, this); - } - } - _debug(message) { - this.emit('debug', message); - } - _setResult() { - // determine whether there is an error - let error; - if (this.processExited) { - if (this.processError) { - error = new Error(`There was an error when attempting to execute the process '${this.toolPath}'. This may indicate the process failed to start. Error: ${this.processError}`); - } - else if (this.processExitCode !== 0 && !this.options.ignoreReturnCode) { - error = new Error(`The process '${this.toolPath}' failed with exit code ${this.processExitCode}`); - } - else if (this.processStderr && this.options.failOnStdErr) { - error = new Error(`The process '${this.toolPath}' failed because one or more lines were written to the STDERR stream`); - } - } - // clear the timeout - if (this.timeout) { - clearTimeout(this.timeout); - this.timeout = null; - } - this.done = true; - this.emit('done', error, this.processExitCode); - } - static HandleTimeout(state) { - if (state.done) { - return; - } - if (!state.processClosed && state.processExited) { - const message = `The STDIO streams did not close within ${state.delay / - 1000} seconds of the exit event from process '${state.toolPath}'. This may indicate a child process inherited the STDIO streams and has not yet exited.`; - state._debug(message); - } - state._setResult(); - } -} -//# sourceMappingURL=toolrunner.js.map - -/***/ }), - -/***/ 9925: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -const http = __nccwpck_require__(8605); -const https = __nccwpck_require__(7211); -const pm = __nccwpck_require__(6443); -let tunnel; -var HttpCodes; -(function (HttpCodes) { - HttpCodes[HttpCodes["OK"] = 200] = "OK"; - HttpCodes[HttpCodes["MultipleChoices"] = 300] = "MultipleChoices"; - HttpCodes[HttpCodes["MovedPermanently"] = 301] = "MovedPermanently"; - HttpCodes[HttpCodes["ResourceMoved"] = 302] = "ResourceMoved"; - HttpCodes[HttpCodes["SeeOther"] = 303] = "SeeOther"; - HttpCodes[HttpCodes["NotModified"] = 304] = "NotModified"; - HttpCodes[HttpCodes["UseProxy"] = 305] = "UseProxy"; - HttpCodes[HttpCodes["SwitchProxy"] = 306] = "SwitchProxy"; - HttpCodes[HttpCodes["TemporaryRedirect"] = 307] = "TemporaryRedirect"; - HttpCodes[HttpCodes["PermanentRedirect"] = 308] = "PermanentRedirect"; - HttpCodes[HttpCodes["BadRequest"] = 400] = "BadRequest"; - HttpCodes[HttpCodes["Unauthorized"] = 401] = "Unauthorized"; - HttpCodes[HttpCodes["PaymentRequired"] = 402] = "PaymentRequired"; - HttpCodes[HttpCodes["Forbidden"] = 403] = "Forbidden"; - HttpCodes[HttpCodes["NotFound"] = 404] = "NotFound"; - HttpCodes[HttpCodes["MethodNotAllowed"] = 405] = "MethodNotAllowed"; - HttpCodes[HttpCodes["NotAcceptable"] = 406] = "NotAcceptable"; - HttpCodes[HttpCodes["ProxyAuthenticationRequired"] = 407] = "ProxyAuthenticationRequired"; - HttpCodes[HttpCodes["RequestTimeout"] = 408] = "RequestTimeout"; - HttpCodes[HttpCodes["Conflict"] = 409] = "Conflict"; - HttpCodes[HttpCodes["Gone"] = 410] = "Gone"; - HttpCodes[HttpCodes["TooManyRequests"] = 429] = "TooManyRequests"; - HttpCodes[HttpCodes["InternalServerError"] = 500] = "InternalServerError"; - HttpCodes[HttpCodes["NotImplemented"] = 501] = "NotImplemented"; - HttpCodes[HttpCodes["BadGateway"] = 502] = "BadGateway"; - HttpCodes[HttpCodes["ServiceUnavailable"] = 503] = "ServiceUnavailable"; - HttpCodes[HttpCodes["GatewayTimeout"] = 504] = "GatewayTimeout"; -})(HttpCodes = exports.HttpCodes || (exports.HttpCodes = {})); -var Headers; -(function (Headers) { - Headers["Accept"] = "accept"; - Headers["ContentType"] = "content-type"; -})(Headers = exports.Headers || (exports.Headers = {})); -var MediaTypes; -(function (MediaTypes) { - MediaTypes["ApplicationJson"] = "application/json"; -})(MediaTypes = exports.MediaTypes || (exports.MediaTypes = {})); -/** - * Returns the proxy URL, depending upon the supplied url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ -function getProxyUrl(serverUrl) { - let proxyUrl = pm.getProxyUrl(new URL(serverUrl)); - return proxyUrl ? proxyUrl.href : ''; -} -exports.getProxyUrl = getProxyUrl; -const HttpRedirectCodes = [ - HttpCodes.MovedPermanently, - HttpCodes.ResourceMoved, - HttpCodes.SeeOther, - HttpCodes.TemporaryRedirect, - HttpCodes.PermanentRedirect -]; -const HttpResponseRetryCodes = [ - HttpCodes.BadGateway, - HttpCodes.ServiceUnavailable, - HttpCodes.GatewayTimeout -]; -const RetryableHttpVerbs = ['OPTIONS', 'GET', 'DELETE', 'HEAD']; -const ExponentialBackoffCeiling = 10; -const ExponentialBackoffTimeSlice = 5; -class HttpClientError extends Error { - constructor(message, statusCode) { - super(message); - this.name = 'HttpClientError'; - this.statusCode = statusCode; - Object.setPrototypeOf(this, HttpClientError.prototype); - } -} -exports.HttpClientError = HttpClientError; -class HttpClientResponse { - constructor(message) { - this.message = message; - } - readBody() { - return new Promise(async (resolve, reject) => { - let output = Buffer.alloc(0); - this.message.on('data', (chunk) => { - output = Buffer.concat([output, chunk]); - }); - this.message.on('end', () => { - resolve(output.toString()); - }); - }); - } -} -exports.HttpClientResponse = HttpClientResponse; -function isHttps(requestUrl) { - let parsedUrl = new URL(requestUrl); - return parsedUrl.protocol === 'https:'; -} -exports.isHttps = isHttps; -class HttpClient { - constructor(userAgent, handlers, requestOptions) { - this._ignoreSslError = false; - this._allowRedirects = true; - this._allowRedirectDowngrade = false; - this._maxRedirects = 50; - this._allowRetries = false; - this._maxRetries = 1; - this._keepAlive = false; - this._disposed = false; - this.userAgent = userAgent; - this.handlers = handlers || []; - this.requestOptions = requestOptions; - if (requestOptions) { - if (requestOptions.ignoreSslError != null) { - this._ignoreSslError = requestOptions.ignoreSslError; - } - this._socketTimeout = requestOptions.socketTimeout; - if (requestOptions.allowRedirects != null) { - this._allowRedirects = requestOptions.allowRedirects; - } - if (requestOptions.allowRedirectDowngrade != null) { - this._allowRedirectDowngrade = requestOptions.allowRedirectDowngrade; - } - if (requestOptions.maxRedirects != null) { - this._maxRedirects = Math.max(requestOptions.maxRedirects, 0); - } - if (requestOptions.keepAlive != null) { - this._keepAlive = requestOptions.keepAlive; - } - if (requestOptions.allowRetries != null) { - this._allowRetries = requestOptions.allowRetries; - } - if (requestOptions.maxRetries != null) { - this._maxRetries = requestOptions.maxRetries; - } - } - } - options(requestUrl, additionalHeaders) { - return this.request('OPTIONS', requestUrl, null, additionalHeaders || {}); - } - get(requestUrl, additionalHeaders) { - return this.request('GET', requestUrl, null, additionalHeaders || {}); - } - del(requestUrl, additionalHeaders) { - return this.request('DELETE', requestUrl, null, additionalHeaders || {}); - } - post(requestUrl, data, additionalHeaders) { - return this.request('POST', requestUrl, data, additionalHeaders || {}); - } - patch(requestUrl, data, additionalHeaders) { - return this.request('PATCH', requestUrl, data, additionalHeaders || {}); - } - put(requestUrl, data, additionalHeaders) { - return this.request('PUT', requestUrl, data, additionalHeaders || {}); - } - head(requestUrl, additionalHeaders) { - return this.request('HEAD', requestUrl, null, additionalHeaders || {}); - } - sendStream(verb, requestUrl, stream, additionalHeaders) { - return this.request(verb, requestUrl, stream, additionalHeaders); - } - /** - * Gets a typed object from an endpoint - * Be aware that not found returns a null. Other errors (4xx, 5xx) reject the promise - */ - async getJson(requestUrl, additionalHeaders = {}) { - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - let res = await this.get(requestUrl, additionalHeaders); - return this._processResponse(res, this.requestOptions); - } - async postJson(requestUrl, obj, additionalHeaders = {}) { - let data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - let res = await this.post(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - } - async putJson(requestUrl, obj, additionalHeaders = {}) { - let data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - let res = await this.put(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - } - async patchJson(requestUrl, obj, additionalHeaders = {}) { - let data = JSON.stringify(obj, null, 2); - additionalHeaders[Headers.Accept] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.Accept, MediaTypes.ApplicationJson); - additionalHeaders[Headers.ContentType] = this._getExistingOrDefaultHeader(additionalHeaders, Headers.ContentType, MediaTypes.ApplicationJson); - let res = await this.patch(requestUrl, data, additionalHeaders); - return this._processResponse(res, this.requestOptions); - } - /** - * Makes a raw http request. - * All other methods such as get, post, patch, and request ultimately call this. - * Prefer get, del, post and patch - */ - async request(verb, requestUrl, data, headers) { - if (this._disposed) { - throw new Error('Client has already been disposed.'); - } - let parsedUrl = new URL(requestUrl); - let info = this._prepareRequest(verb, parsedUrl, headers); - // Only perform retries on reads since writes may not be idempotent. - let maxTries = this._allowRetries && RetryableHttpVerbs.indexOf(verb) != -1 - ? this._maxRetries + 1 - : 1; - let numTries = 0; - let response; - while (numTries < maxTries) { - response = await this.requestRaw(info, data); - // Check if it's an authentication challenge - if (response && - response.message && - response.message.statusCode === HttpCodes.Unauthorized) { - let authenticationHandler; - for (let i = 0; i < this.handlers.length; i++) { - if (this.handlers[i].canHandleAuthentication(response)) { - authenticationHandler = this.handlers[i]; - break; - } - } - if (authenticationHandler) { - return authenticationHandler.handleAuthentication(this, info, data); - } - else { - // We have received an unauthorized response but have no handlers to handle it. - // Let the response return to the caller. - return response; - } - } - let redirectsRemaining = this._maxRedirects; - while (HttpRedirectCodes.indexOf(response.message.statusCode) != -1 && - this._allowRedirects && - redirectsRemaining > 0) { - const redirectUrl = response.message.headers['location']; - if (!redirectUrl) { - // if there's no location to redirect to, we won't - break; - } - let parsedRedirectUrl = new URL(redirectUrl); - if (parsedUrl.protocol == 'https:' && - parsedUrl.protocol != parsedRedirectUrl.protocol && - !this._allowRedirectDowngrade) { - throw new Error('Redirect from HTTPS to HTTP protocol. This downgrade is not allowed for security reasons. If you want to allow this behavior, set the allowRedirectDowngrade option to true.'); - } - // we need to finish reading the response before reassigning response - // which will leak the open socket. - await response.readBody(); - // strip authorization header if redirected to a different hostname - if (parsedRedirectUrl.hostname !== parsedUrl.hostname) { - for (let header in headers) { - // header names are case insensitive - if (header.toLowerCase() === 'authorization') { - delete headers[header]; - } - } - } - // let's make the request with the new redirectUrl - info = this._prepareRequest(verb, parsedRedirectUrl, headers); - response = await this.requestRaw(info, data); - redirectsRemaining--; - } - if (HttpResponseRetryCodes.indexOf(response.message.statusCode) == -1) { - // If not a retry code, return immediately instead of retrying - return response; - } - numTries += 1; - if (numTries < maxTries) { - await response.readBody(); - await this._performExponentialBackoff(numTries); - } - } - return response; - } - /** - * Needs to be called if keepAlive is set to true in request options. - */ - dispose() { - if (this._agent) { - this._agent.destroy(); - } - this._disposed = true; - } - /** - * Raw request. - * @param info - * @param data - */ - requestRaw(info, data) { - return new Promise((resolve, reject) => { - let callbackForResult = function (err, res) { - if (err) { - reject(err); - } - resolve(res); - }; - this.requestRawWithCallback(info, data, callbackForResult); - }); - } - /** - * Raw request with callback. - * @param info - * @param data - * @param onResult - */ - requestRawWithCallback(info, data, onResult) { - let socket; - if (typeof data === 'string') { - info.options.headers['Content-Length'] = Buffer.byteLength(data, 'utf8'); - } - let callbackCalled = false; - let handleResult = (err, res) => { - if (!callbackCalled) { - callbackCalled = true; - onResult(err, res); - } - }; - let req = info.httpModule.request(info.options, (msg) => { - let res = new HttpClientResponse(msg); - handleResult(null, res); - }); - req.on('socket', sock => { - socket = sock; - }); - // If we ever get disconnected, we want the socket to timeout eventually - req.setTimeout(this._socketTimeout || 3 * 60000, () => { - if (socket) { - socket.end(); - } - handleResult(new Error('Request timeout: ' + info.options.path), null); - }); - req.on('error', function (err) { - // err has statusCode property - // res should have headers - handleResult(err, null); - }); - if (data && typeof data === 'string') { - req.write(data, 'utf8'); - } - if (data && typeof data !== 'string') { - data.on('close', function () { - req.end(); - }); - data.pipe(req); - } - else { - req.end(); - } - } - /** - * Gets an http agent. This function is useful when you need an http agent that handles - * routing through a proxy server - depending upon the url and proxy environment variables. - * @param serverUrl The server URL where the request will be sent. For example, https://api.github.com - */ - getAgent(serverUrl) { - let parsedUrl = new URL(serverUrl); - return this._getAgent(parsedUrl); - } - _prepareRequest(method, requestUrl, headers) { - const info = {}; - info.parsedUrl = requestUrl; - const usingSsl = info.parsedUrl.protocol === 'https:'; - info.httpModule = usingSsl ? https : http; - const defaultPort = usingSsl ? 443 : 80; - info.options = {}; - info.options.host = info.parsedUrl.hostname; - info.options.port = info.parsedUrl.port - ? parseInt(info.parsedUrl.port) - : defaultPort; - info.options.path = - (info.parsedUrl.pathname || '') + (info.parsedUrl.search || ''); - info.options.method = method; - info.options.headers = this._mergeHeaders(headers); - if (this.userAgent != null) { - info.options.headers['user-agent'] = this.userAgent; - } - info.options.agent = this._getAgent(info.parsedUrl); - // gives handlers an opportunity to participate - if (this.handlers) { - this.handlers.forEach(handler => { - handler.prepareRequest(info.options); - }); - } - return info; - } - _mergeHeaders(headers) { - const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); - if (this.requestOptions && this.requestOptions.headers) { - return Object.assign({}, lowercaseKeys(this.requestOptions.headers), lowercaseKeys(headers)); - } - return lowercaseKeys(headers || {}); - } - _getExistingOrDefaultHeader(additionalHeaders, header, _default) { - const lowercaseKeys = obj => Object.keys(obj).reduce((c, k) => ((c[k.toLowerCase()] = obj[k]), c), {}); - let clientHeader; - if (this.requestOptions && this.requestOptions.headers) { - clientHeader = lowercaseKeys(this.requestOptions.headers)[header]; - } - return additionalHeaders[header] || clientHeader || _default; - } - _getAgent(parsedUrl) { - let agent; - let proxyUrl = pm.getProxyUrl(parsedUrl); - let useProxy = proxyUrl && proxyUrl.hostname; - if (this._keepAlive && useProxy) { - agent = this._proxyAgent; - } - if (this._keepAlive && !useProxy) { - agent = this._agent; - } - // if agent is already assigned use that agent. - if (!!agent) { - return agent; - } - const usingSsl = parsedUrl.protocol === 'https:'; - let maxSockets = 100; - if (!!this.requestOptions) { - maxSockets = this.requestOptions.maxSockets || http.globalAgent.maxSockets; - } - if (useProxy) { - // If using proxy, need tunnel - if (!tunnel) { - tunnel = __nccwpck_require__(4294); - } - const agentOptions = { - maxSockets: maxSockets, - keepAlive: this._keepAlive, - proxy: { - ...((proxyUrl.username || proxyUrl.password) && { - proxyAuth: `${proxyUrl.username}:${proxyUrl.password}` - }), - host: proxyUrl.hostname, - port: proxyUrl.port - } - }; - let tunnelAgent; - const overHttps = proxyUrl.protocol === 'https:'; - if (usingSsl) { - tunnelAgent = overHttps ? tunnel.httpsOverHttps : tunnel.httpsOverHttp; - } - else { - tunnelAgent = overHttps ? tunnel.httpOverHttps : tunnel.httpOverHttp; - } - agent = tunnelAgent(agentOptions); - this._proxyAgent = agent; - } - // if reusing agent across request and tunneling agent isn't assigned create a new agent - if (this._keepAlive && !agent) { - const options = { keepAlive: this._keepAlive, maxSockets: maxSockets }; - agent = usingSsl ? new https.Agent(options) : new http.Agent(options); - this._agent = agent; - } - // if not using private agent and tunnel agent isn't setup then use global agent - if (!agent) { - agent = usingSsl ? https.globalAgent : http.globalAgent; - } - if (usingSsl && this._ignoreSslError) { - // we don't want to set NODE_TLS_REJECT_UNAUTHORIZED=0 since that will affect request for entire process - // http.RequestOptions doesn't expose a way to modify RequestOptions.agent.options - // we have to cast it to any and change it directly - agent.options = Object.assign(agent.options || {}, { - rejectUnauthorized: false - }); - } - return agent; - } - _performExponentialBackoff(retryNumber) { - retryNumber = Math.min(ExponentialBackoffCeiling, retryNumber); - const ms = ExponentialBackoffTimeSlice * Math.pow(2, retryNumber); - return new Promise(resolve => setTimeout(() => resolve(), ms)); - } - static dateTimeDeserializer(key, value) { - if (typeof value === 'string') { - let a = new Date(value); - if (!isNaN(a.valueOf())) { - return a; - } - } - return value; - } - async _processResponse(res, options) { - return new Promise(async (resolve, reject) => { - const statusCode = res.message.statusCode; - const response = { - statusCode: statusCode, - result: null, - headers: {} - }; - // not found leads to null obj returned - if (statusCode == HttpCodes.NotFound) { - resolve(response); - } - let obj; - let contents; - // get the result from the body - try { - contents = await res.readBody(); - if (contents && contents.length > 0) { - if (options && options.deserializeDates) { - obj = JSON.parse(contents, HttpClient.dateTimeDeserializer); - } - else { - obj = JSON.parse(contents); - } - response.result = obj; - } - response.headers = res.message.headers; - } - catch (err) { - // Invalid resource (contents not json); leaving result obj null - } - // note that 3xx redirects are handled by the http layer. - if (statusCode > 299) { - let msg; - // if exception/error in body, attempt to get better error - if (obj && obj.message) { - msg = obj.message; - } - else if (contents && contents.length > 0) { - // it may be the case that the exception is in the body message as string - msg = contents; - } - else { - msg = 'Failed request: (' + statusCode + ')'; - } - let err = new HttpClientError(msg, statusCode); - err.result = response.result; - reject(err); - } - else { - resolve(response); - } - }); - } -} -exports.HttpClient = HttpClient; - - -/***/ }), - -/***/ 6443: -/***/ ((__unused_webpack_module, exports) => { - -"use strict"; - -Object.defineProperty(exports, "__esModule", ({ value: true })); -function getProxyUrl(reqUrl) { - let usingSsl = reqUrl.protocol === 'https:'; - let proxyUrl; - if (checkBypass(reqUrl)) { - return proxyUrl; - } - let proxyVar; - if (usingSsl) { - proxyVar = process.env['https_proxy'] || process.env['HTTPS_PROXY']; - } - else { - proxyVar = process.env['http_proxy'] || process.env['HTTP_PROXY']; - } - if (proxyVar) { - proxyUrl = new URL(proxyVar); - } - return proxyUrl; -} -exports.getProxyUrl = getProxyUrl; -function checkBypass(reqUrl) { - if (!reqUrl.hostname) { - return false; - } - let noProxy = process.env['no_proxy'] || process.env['NO_PROXY'] || ''; - if (!noProxy) { - return false; - } - // Determine the request port - let reqPort; - if (reqUrl.port) { - reqPort = Number(reqUrl.port); - } - else if (reqUrl.protocol === 'http:') { - reqPort = 80; - } - else if (reqUrl.protocol === 'https:') { - reqPort = 443; - } - // Format the request hostname and hostname with port - let upperReqHosts = [reqUrl.hostname.toUpperCase()]; - if (typeof reqPort === 'number') { - upperReqHosts.push(`${upperReqHosts[0]}:${reqPort}`); - } - // Compare request host against noproxy - for (let upperNoProxyItem of noProxy - .split(',') - .map(x => x.trim().toUpperCase()) - .filter(x => x)) { - if (upperReqHosts.some(x => x === upperNoProxyItem)) { - return true; - } - } - return false; -} -exports.checkBypass = checkBypass; - - -/***/ }), - -/***/ 1962: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var _a; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.getCmdPath = exports.tryGetExecutablePath = exports.isRooted = exports.isDirectory = exports.exists = exports.IS_WINDOWS = exports.unlink = exports.symlink = exports.stat = exports.rmdir = exports.rename = exports.readlink = exports.readdir = exports.mkdir = exports.lstat = exports.copyFile = exports.chmod = void 0; -const fs = __importStar(__nccwpck_require__(5747)); -const path = __importStar(__nccwpck_require__(5622)); -_a = fs.promises, exports.chmod = _a.chmod, exports.copyFile = _a.copyFile, exports.lstat = _a.lstat, exports.mkdir = _a.mkdir, exports.readdir = _a.readdir, exports.readlink = _a.readlink, exports.rename = _a.rename, exports.rmdir = _a.rmdir, exports.stat = _a.stat, exports.symlink = _a.symlink, exports.unlink = _a.unlink; -exports.IS_WINDOWS = process.platform === 'win32'; -function exists(fsPath) { - return __awaiter(this, void 0, void 0, function* () { - try { - yield exports.stat(fsPath); - } - catch (err) { - if (err.code === 'ENOENT') { - return false; - } - throw err; - } - return true; - }); -} -exports.exists = exists; -function isDirectory(fsPath, useStat = false) { - return __awaiter(this, void 0, void 0, function* () { - const stats = useStat ? yield exports.stat(fsPath) : yield exports.lstat(fsPath); - return stats.isDirectory(); - }); -} -exports.isDirectory = isDirectory; -/** - * On OSX/Linux, true if path starts with '/'. On Windows, true for paths like: - * \, \hello, \\hello\share, C:, and C:\hello (and corresponding alternate separator cases). - */ -function isRooted(p) { - p = normalizeSeparators(p); - if (!p) { - throw new Error('isRooted() parameter "p" cannot be empty'); - } - if (exports.IS_WINDOWS) { - return (p.startsWith('\\') || /^[A-Z]:/i.test(p) // e.g. \ or \hello or \\hello - ); // e.g. C: or C:\hello - } - return p.startsWith('/'); -} -exports.isRooted = isRooted; -/** - * Best effort attempt to determine whether a file exists and is executable. - * @param filePath file path to check - * @param extensions additional file extensions to try - * @return if file exists and is executable, returns the file path. otherwise empty string. - */ -function tryGetExecutablePath(filePath, extensions) { - return __awaiter(this, void 0, void 0, function* () { - let stats = undefined; - try { - // test file exists - stats = yield exports.stat(filePath); - } - catch (err) { - if (err.code !== 'ENOENT') { - // eslint-disable-next-line no-console - console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); - } - } - if (stats && stats.isFile()) { - if (exports.IS_WINDOWS) { - // on Windows, test for valid extension - const upperExt = path.extname(filePath).toUpperCase(); - if (extensions.some(validExt => validExt.toUpperCase() === upperExt)) { - return filePath; - } - } - else { - if (isUnixExecutable(stats)) { - return filePath; - } - } - } - // try each extension - const originalFilePath = filePath; - for (const extension of extensions) { - filePath = originalFilePath + extension; - stats = undefined; - try { - stats = yield exports.stat(filePath); - } - catch (err) { - if (err.code !== 'ENOENT') { - // eslint-disable-next-line no-console - console.log(`Unexpected error attempting to determine if executable file exists '${filePath}': ${err}`); - } - } - if (stats && stats.isFile()) { - if (exports.IS_WINDOWS) { - // preserve the case of the actual file (since an extension was appended) - try { - const directory = path.dirname(filePath); - const upperName = path.basename(filePath).toUpperCase(); - for (const actualName of yield exports.readdir(directory)) { - if (upperName === actualName.toUpperCase()) { - filePath = path.join(directory, actualName); - break; - } - } - } - catch (err) { - // eslint-disable-next-line no-console - console.log(`Unexpected error attempting to determine the actual case of the file '${filePath}': ${err}`); - } - return filePath; - } - else { - if (isUnixExecutable(stats)) { - return filePath; - } - } - } - } - return ''; - }); -} -exports.tryGetExecutablePath = tryGetExecutablePath; -function normalizeSeparators(p) { - p = p || ''; - if (exports.IS_WINDOWS) { - // convert slashes on Windows - p = p.replace(/\//g, '\\'); - // remove redundant slashes - return p.replace(/\\\\+/g, '\\'); - } - // remove redundant slashes - return p.replace(/\/\/+/g, '/'); -} -// on Mac/Linux, test the execute bit -// R W X R W X R W X -// 256 128 64 32 16 8 4 2 1 -function isUnixExecutable(stats) { - return ((stats.mode & 1) > 0 || - ((stats.mode & 8) > 0 && stats.gid === process.getgid()) || - ((stats.mode & 64) > 0 && stats.uid === process.getuid())); -} -// Get the path of cmd.exe in windows -function getCmdPath() { - var _a; - return (_a = process.env['COMSPEC']) !== null && _a !== void 0 ? _a : `cmd.exe`; -} -exports.getCmdPath = getCmdPath; -//# sourceMappingURL=io-util.js.map - -/***/ }), - -/***/ 7436: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.findInPath = exports.which = exports.mkdirP = exports.rmRF = exports.mv = exports.cp = void 0; -const assert_1 = __nccwpck_require__(2357); -const childProcess = __importStar(__nccwpck_require__(3129)); -const path = __importStar(__nccwpck_require__(5622)); -const util_1 = __nccwpck_require__(1669); -const ioUtil = __importStar(__nccwpck_require__(1962)); -const exec = util_1.promisify(childProcess.exec); -const execFile = util_1.promisify(childProcess.execFile); -/** - * Copies a file or folder. - * Based off of shelljs - https://github.com/shelljs/shelljs/blob/9237f66c52e5daa40458f94f9565e18e8132f5a6/src/cp.js - * - * @param source source path - * @param dest destination path - * @param options optional. See CopyOptions. - */ -function cp(source, dest, options = {}) { - return __awaiter(this, void 0, void 0, function* () { - const { force, recursive, copySourceDirectory } = readCopyOptions(options); - const destStat = (yield ioUtil.exists(dest)) ? yield ioUtil.stat(dest) : null; - // Dest is an existing file, but not forcing - if (destStat && destStat.isFile() && !force) { - return; - } - // If dest is an existing directory, should copy inside. - const newDest = destStat && destStat.isDirectory() && copySourceDirectory - ? path.join(dest, path.basename(source)) - : dest; - if (!(yield ioUtil.exists(source))) { - throw new Error(`no such file or directory: ${source}`); - } - const sourceStat = yield ioUtil.stat(source); - if (sourceStat.isDirectory()) { - if (!recursive) { - throw new Error(`Failed to copy. ${source} is a directory, but tried to copy without recursive flag.`); - } - else { - yield cpDirRecursive(source, newDest, 0, force); - } - } - else { - if (path.relative(source, newDest) === '') { - // a file cannot be copied to itself - throw new Error(`'${newDest}' and '${source}' are the same file`); - } - yield copyFile(source, newDest, force); - } - }); -} -exports.cp = cp; -/** - * Moves a path. - * - * @param source source path - * @param dest destination path - * @param options optional. See MoveOptions. - */ -function mv(source, dest, options = {}) { - return __awaiter(this, void 0, void 0, function* () { - if (yield ioUtil.exists(dest)) { - let destExists = true; - if (yield ioUtil.isDirectory(dest)) { - // If dest is directory copy src into dest - dest = path.join(dest, path.basename(source)); - destExists = yield ioUtil.exists(dest); - } - if (destExists) { - if (options.force == null || options.force) { - yield rmRF(dest); - } - else { - throw new Error('Destination already exists'); - } - } - } - yield mkdirP(path.dirname(dest)); - yield ioUtil.rename(source, dest); - }); -} -exports.mv = mv; -/** - * Remove a path recursively with force - * - * @param inputPath path to remove - */ -function rmRF(inputPath) { - return __awaiter(this, void 0, void 0, function* () { - if (ioUtil.IS_WINDOWS) { - // Node doesn't provide a delete operation, only an unlink function. This means that if the file is being used by another - // program (e.g. antivirus), it won't be deleted. To address this, we shell out the work to rd/del. - // Check for invalid characters - // https://docs.microsoft.com/en-us/windows/win32/fileio/naming-a-file - if (/[*"<>|]/.test(inputPath)) { - throw new Error('File path must not contain `*`, `"`, `<`, `>` or `|` on Windows'); - } - try { - const cmdPath = ioUtil.getCmdPath(); - if (yield ioUtil.isDirectory(inputPath, true)) { - yield exec(`${cmdPath} /s /c "rd /s /q "%inputPath%""`, { - env: { inputPath } - }); - } - else { - yield exec(`${cmdPath} /s /c "del /f /a "%inputPath%""`, { - env: { inputPath } - }); - } - } - catch (err) { - // if you try to delete a file that doesn't exist, desired result is achieved - // other errors are valid - if (err.code !== 'ENOENT') - throw err; - } - // Shelling out fails to remove a symlink folder with missing source, this unlink catches that - try { - yield ioUtil.unlink(inputPath); - } - catch (err) { - // if you try to delete a file that doesn't exist, desired result is achieved - // other errors are valid - if (err.code !== 'ENOENT') - throw err; - } - } - else { - let isDir = false; - try { - isDir = yield ioUtil.isDirectory(inputPath); - } - catch (err) { - // if you try to delete a file that doesn't exist, desired result is achieved - // other errors are valid - if (err.code !== 'ENOENT') - throw err; - return; - } - if (isDir) { - yield execFile(`rm`, [`-rf`, `${inputPath}`]); - } - else { - yield ioUtil.unlink(inputPath); - } - } - }); -} -exports.rmRF = rmRF; -/** - * Make a directory. Creates the full path with folders in between - * Will throw if it fails - * - * @param fsPath path to create - * @returns Promise - */ -function mkdirP(fsPath) { - return __awaiter(this, void 0, void 0, function* () { - assert_1.ok(fsPath, 'a path argument must be provided'); - yield ioUtil.mkdir(fsPath, { recursive: true }); - }); -} -exports.mkdirP = mkdirP; -/** - * Returns path of a tool had the tool actually been invoked. Resolves via paths. - * If you check and the tool does not exist, it will throw. - * - * @param tool name of the tool - * @param check whether to check if tool exists - * @returns Promise path to tool - */ -function which(tool, check) { - return __awaiter(this, void 0, void 0, function* () { - if (!tool) { - throw new Error("parameter 'tool' is required"); - } - // recursive when check=true - if (check) { - const result = yield which(tool, false); - if (!result) { - if (ioUtil.IS_WINDOWS) { - throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also verify the file has a valid extension for an executable file.`); - } - else { - throw new Error(`Unable to locate executable file: ${tool}. Please verify either the file path exists or the file can be found within a directory specified by the PATH environment variable. Also check the file mode to verify the file is executable.`); - } - } - return result; - } - const matches = yield findInPath(tool); - if (matches && matches.length > 0) { - return matches[0]; - } - return ''; - }); -} -exports.which = which; -/** - * Returns a list of all occurrences of the given tool on the system path. - * - * @returns Promise the paths of the tool - */ -function findInPath(tool) { - return __awaiter(this, void 0, void 0, function* () { - if (!tool) { - throw new Error("parameter 'tool' is required"); - } - // build the list of extensions to try - const extensions = []; - if (ioUtil.IS_WINDOWS && process.env['PATHEXT']) { - for (const extension of process.env['PATHEXT'].split(path.delimiter)) { - if (extension) { - extensions.push(extension); - } - } - } - // if it's rooted, return it if exists. otherwise return empty. - if (ioUtil.isRooted(tool)) { - const filePath = yield ioUtil.tryGetExecutablePath(tool, extensions); - if (filePath) { - return [filePath]; - } - return []; - } - // if any path separators, return empty - if (tool.includes(path.sep)) { - return []; - } - // build the list of directories - // - // Note, technically "where" checks the current directory on Windows. From a toolkit perspective, - // it feels like we should not do this. Checking the current directory seems like more of a use - // case of a shell, and the which() function exposed by the toolkit should strive for consistency - // across platforms. - const directories = []; - if (process.env.PATH) { - for (const p of process.env.PATH.split(path.delimiter)) { - if (p) { - directories.push(p); - } - } - } - // find all matches - const matches = []; - for (const directory of directories) { - const filePath = yield ioUtil.tryGetExecutablePath(path.join(directory, tool), extensions); - if (filePath) { - matches.push(filePath); - } - } - return matches; - }); -} -exports.findInPath = findInPath; -function readCopyOptions(options) { - const force = options.force == null ? true : options.force; - const recursive = Boolean(options.recursive); - const copySourceDirectory = options.copySourceDirectory == null - ? true - : Boolean(options.copySourceDirectory); - return { force, recursive, copySourceDirectory }; -} -function cpDirRecursive(sourceDir, destDir, currentDepth, force) { - return __awaiter(this, void 0, void 0, function* () { - // Ensure there is not a run away recursive copy - if (currentDepth >= 255) - return; - currentDepth++; - yield mkdirP(destDir); - const files = yield ioUtil.readdir(sourceDir); - for (const fileName of files) { - const srcFile = `${sourceDir}/${fileName}`; - const destFile = `${destDir}/${fileName}`; - const srcFileStat = yield ioUtil.lstat(srcFile); - if (srcFileStat.isDirectory()) { - // Recurse - yield cpDirRecursive(srcFile, destFile, currentDepth, force); - } - else { - yield copyFile(srcFile, destFile, force); - } - } - // Change the mode for the newly created directory - yield ioUtil.chmod(destDir, (yield ioUtil.stat(sourceDir)).mode); - }); -} -// Buffered file copy -function copyFile(srcFile, destFile, force) { - return __awaiter(this, void 0, void 0, function* () { - if ((yield ioUtil.lstat(srcFile)).isSymbolicLink()) { - // unlink/re-link it - try { - yield ioUtil.lstat(destFile); - yield ioUtil.unlink(destFile); - } - catch (e) { - // Try to override file permission - if (e.code === 'EPERM') { - yield ioUtil.chmod(destFile, '0666'); - yield ioUtil.unlink(destFile); - } - // other errors = it doesn't exist, no work to do - } - // Copy over symlink - const symlinkFull = yield ioUtil.readlink(srcFile); - yield ioUtil.symlink(symlinkFull, destFile, ioUtil.IS_WINDOWS ? 'junction' : null); - } - else if (!(yield ioUtil.exists(destFile)) || force) { - yield ioUtil.copyFile(srcFile, destFile); - } - }); -} -//# sourceMappingURL=io.js.map - -/***/ }), - -/***/ 2473: -/***/ (function(module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports._readLinuxVersionFile = exports._getOsVersion = exports._findMatch = void 0; -const semver = __importStar(__nccwpck_require__(562)); -const core_1 = __nccwpck_require__(2186); -// needs to be require for core node modules to be mocked -/* eslint @typescript-eslint/no-require-imports: 0 */ -const os = __nccwpck_require__(2087); -const cp = __nccwpck_require__(3129); -const fs = __nccwpck_require__(5747); -function _findMatch(versionSpec, stable, candidates, archFilter) { - return __awaiter(this, void 0, void 0, function* () { - const platFilter = os.platform(); - let result; - let match; - let file; - for (const candidate of candidates) { - const version = candidate.version; - core_1.debug(`check ${version} satisfies ${versionSpec}`); - if (semver.satisfies(version, versionSpec) && - (!stable || candidate.stable === stable)) { - file = candidate.files.find(item => { - core_1.debug(`${item.arch}===${archFilter} && ${item.platform}===${platFilter}`); - let chk = item.arch === archFilter && item.platform === platFilter; - if (chk && item.platform_version) { - const osVersion = module.exports._getOsVersion(); - if (osVersion === item.platform_version) { - chk = true; - } - else { - chk = semver.satisfies(osVersion, item.platform_version); - } - } - return chk; - }); - if (file) { - core_1.debug(`matched ${candidate.version}`); - match = candidate; - break; - } - } - } - if (match && file) { - // clone since we're mutating the file list to be only the file that matches - result = Object.assign({}, match); - result.files = [file]; - } - return result; - }); -} -exports._findMatch = _findMatch; -function _getOsVersion() { - // TODO: add windows and other linux, arm variants - // right now filtering on version is only an ubuntu and macos scenario for tools we build for hosted (python) - const plat = os.platform(); - let version = ''; - if (plat === 'darwin') { - version = cp.execSync('sw_vers -productVersion').toString(); - } - else if (plat === 'linux') { - // lsb_release process not in some containers, readfile - // Run cat /etc/lsb-release - // DISTRIB_ID=Ubuntu - // DISTRIB_RELEASE=18.04 - // DISTRIB_CODENAME=bionic - // DISTRIB_DESCRIPTION="Ubuntu 18.04.4 LTS" - const lsbContents = module.exports._readLinuxVersionFile(); - if (lsbContents) { - const lines = lsbContents.split('\n'); - for (const line of lines) { - const parts = line.split('='); - if (parts.length === 2 && - (parts[0].trim() === 'VERSION_ID' || - parts[0].trim() === 'DISTRIB_RELEASE')) { - version = parts[1] - .trim() - .replace(/^"/, '') - .replace(/"$/, ''); - break; - } - } - } - } - return version; -} -exports._getOsVersion = _getOsVersion; -function _readLinuxVersionFile() { - const lsbReleaseFile = '/etc/lsb-release'; - const osReleaseFile = '/etc/os-release'; - let contents = ''; - if (fs.existsSync(lsbReleaseFile)) { - contents = fs.readFileSync(lsbReleaseFile).toString(); - } - else if (fs.existsSync(osReleaseFile)) { - contents = fs.readFileSync(osReleaseFile).toString(); - } - return contents; -} -exports._readLinuxVersionFile = _readLinuxVersionFile; -//# sourceMappingURL=manifest.js.map - -/***/ }), - -/***/ 8279: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.RetryHelper = void 0; -const core = __importStar(__nccwpck_require__(2186)); -/** - * Internal class for retries - */ -class RetryHelper { - constructor(maxAttempts, minSeconds, maxSeconds) { - if (maxAttempts < 1) { - throw new Error('max attempts should be greater than or equal to 1'); - } - this.maxAttempts = maxAttempts; - this.minSeconds = Math.floor(minSeconds); - this.maxSeconds = Math.floor(maxSeconds); - if (this.minSeconds > this.maxSeconds) { - throw new Error('min seconds should be less than or equal to max seconds'); - } - } - execute(action, isRetryable) { - return __awaiter(this, void 0, void 0, function* () { - let attempt = 1; - while (attempt < this.maxAttempts) { - // Try - try { - return yield action(); - } - catch (err) { - if (isRetryable && !isRetryable(err)) { - throw err; - } - core.info(err.message); - } - // Sleep - const seconds = this.getSleepAmount(); - core.info(`Waiting ${seconds} seconds before trying again`); - yield this.sleep(seconds); - attempt++; - } - // Last attempt - return yield action(); - }); - } - getSleepAmount() { - return (Math.floor(Math.random() * (this.maxSeconds - this.minSeconds + 1)) + - this.minSeconds); - } - sleep(seconds) { - return __awaiter(this, void 0, void 0, function* () { - return new Promise(resolve => setTimeout(resolve, seconds * 1000)); - }); - } -} -exports.RetryHelper = RetryHelper; -//# sourceMappingURL=retry-helper.js.map - -/***/ }), - -/***/ 7784: -/***/ (function(__unused_webpack_module, exports, __nccwpck_require__) { - -"use strict"; - -var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } }); -}) : (function(o, m, k, k2) { - if (k2 === undefined) k2 = k; - o[k2] = m[k]; -})); -var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) { - Object.defineProperty(o, "default", { enumerable: true, value: v }); -}) : function(o, v) { - o["default"] = v; -}); -var __importStar = (this && this.__importStar) || function (mod) { - if (mod && mod.__esModule) return mod; - var result = {}; - if (mod != null) for (var k in mod) if (k !== "default" && Object.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k); - __setModuleDefault(result, mod); - return result; -}; -var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) { - function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); } - return new (P || (P = Promise))(function (resolve, reject) { - function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } } - function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } } - function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); } - step((generator = generator.apply(thisArg, _arguments || [])).next()); - }); -}; -var __importDefault = (this && this.__importDefault) || function (mod) { - return (mod && mod.__esModule) ? mod : { "default": mod }; -}; -Object.defineProperty(exports, "__esModule", ({ value: true })); -exports.evaluateVersions = exports.isExplicitVersion = exports.findFromManifest = exports.getManifestFromRepo = exports.findAllVersions = exports.find = exports.cacheFile = exports.cacheDir = exports.extractZip = exports.extractXar = exports.extractTar = exports.extract7z = exports.downloadTool = exports.HTTPError = void 0; -const core = __importStar(__nccwpck_require__(2186)); -const io = __importStar(__nccwpck_require__(7436)); -const fs = __importStar(__nccwpck_require__(5747)); -const mm = __importStar(__nccwpck_require__(2473)); -const os = __importStar(__nccwpck_require__(2087)); -const path = __importStar(__nccwpck_require__(5622)); -const httpm = __importStar(__nccwpck_require__(9925)); -const semver = __importStar(__nccwpck_require__(562)); -const stream = __importStar(__nccwpck_require__(2413)); -const util = __importStar(__nccwpck_require__(1669)); -const v4_1 = __importDefault(__nccwpck_require__(7468)); -const exec_1 = __nccwpck_require__(1514); -const assert_1 = __nccwpck_require__(2357); -const retry_helper_1 = __nccwpck_require__(8279); -class HTTPError extends Error { - constructor(httpStatusCode) { - super(`Unexpected HTTP response: ${httpStatusCode}`); - this.httpStatusCode = httpStatusCode; - Object.setPrototypeOf(this, new.target.prototype); - } -} -exports.HTTPError = HTTPError; -const IS_WINDOWS = process.platform === 'win32'; -const IS_MAC = process.platform === 'darwin'; -const userAgent = 'actions/tool-cache'; -/** - * Download a tool from an url and stream it into a file - * - * @param url url of tool to download - * @param dest path to download tool - * @param auth authorization header - * @param headers other headers - * @returns path to downloaded tool - */ -function downloadTool(url, dest, auth, headers) { - return __awaiter(this, void 0, void 0, function* () { - dest = dest || path.join(_getTempDirectory(), v4_1.default()); - yield io.mkdirP(path.dirname(dest)); - core.debug(`Downloading ${url}`); - core.debug(`Destination ${dest}`); - const maxAttempts = 3; - const minSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MIN_SECONDS', 10); - const maxSeconds = _getGlobal('TEST_DOWNLOAD_TOOL_RETRY_MAX_SECONDS', 20); - const retryHelper = new retry_helper_1.RetryHelper(maxAttempts, minSeconds, maxSeconds); - return yield retryHelper.execute(() => __awaiter(this, void 0, void 0, function* () { - return yield downloadToolAttempt(url, dest || '', auth, headers); - }), (err) => { - if (err instanceof HTTPError && err.httpStatusCode) { - // Don't retry anything less than 500, except 408 Request Timeout and 429 Too Many Requests - if (err.httpStatusCode < 500 && - err.httpStatusCode !== 408 && - err.httpStatusCode !== 429) { - return false; - } - } - // Otherwise retry - return true; - }); - }); -} -exports.downloadTool = downloadTool; -function downloadToolAttempt(url, dest, auth, headers) { - return __awaiter(this, void 0, void 0, function* () { - if (fs.existsSync(dest)) { - throw new Error(`Destination file path ${dest} already exists`); - } - // Get the response headers - const http = new httpm.HttpClient(userAgent, [], { - allowRetries: false - }); - if (auth) { - core.debug('set auth'); - if (headers === undefined) { - headers = {}; - } - headers.authorization = auth; - } - const response = yield http.get(url, headers); - if (response.message.statusCode !== 200) { - const err = new HTTPError(response.message.statusCode); - core.debug(`Failed to download from "${url}". Code(${response.message.statusCode}) Message(${response.message.statusMessage})`); - throw err; - } - // Download the response body - const pipeline = util.promisify(stream.pipeline); - const responseMessageFactory = _getGlobal('TEST_DOWNLOAD_TOOL_RESPONSE_MESSAGE_FACTORY', () => response.message); - const readStream = responseMessageFactory(); - let succeeded = false; - try { - yield pipeline(readStream, fs.createWriteStream(dest)); - core.debug('download complete'); - succeeded = true; - return dest; - } - finally { - // Error, delete dest before retry - if (!succeeded) { - core.debug('download failed'); - try { - yield io.rmRF(dest); - } - catch (err) { - core.debug(`Failed to delete '${dest}'. ${err.message}`); - } - } - } - }); -} -/** - * Extract a .7z file - * - * @param file path to the .7z file - * @param dest destination directory. Optional. - * @param _7zPath path to 7zr.exe. Optional, for long path support. Most .7z archives do not have this - * problem. If your .7z archive contains very long paths, you can pass the path to 7zr.exe which will - * gracefully handle long paths. By default 7zdec.exe is used because it is a very small program and is - * bundled with the tool lib. However it does not support long paths. 7zr.exe is the reduced command line - * interface, it is smaller than the full command line interface, and it does support long paths. At the - * time of this writing, it is freely available from the LZMA SDK that is available on the 7zip website. - * Be sure to check the current license agreement. If 7zr.exe is bundled with your action, then the path - * to 7zr.exe can be pass to this function. - * @returns path to the destination directory - */ -function extract7z(file, dest, _7zPath) { - return __awaiter(this, void 0, void 0, function* () { - assert_1.ok(IS_WINDOWS, 'extract7z() not supported on current OS'); - assert_1.ok(file, 'parameter "file" is required'); - dest = yield _createExtractFolder(dest); - const originalCwd = process.cwd(); - process.chdir(dest); - if (_7zPath) { - try { - const logLevel = core.isDebug() ? '-bb1' : '-bb0'; - const args = [ - 'x', - logLevel, - '-bd', - '-sccUTF-8', - file - ]; - const options = { - silent: true - }; - yield exec_1.exec(`"${_7zPath}"`, args, options); - } - finally { - process.chdir(originalCwd); - } - } - else { - const escapedScript = path - .join(__dirname, '..', 'scripts', 'Invoke-7zdec.ps1') - .replace(/'/g, "''") - .replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines - const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); - const escapedTarget = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); - const command = `& '${escapedScript}' -Source '${escapedFile}' -Target '${escapedTarget}'`; - const args = [ - '-NoLogo', - '-Sta', - '-NoProfile', - '-NonInteractive', - '-ExecutionPolicy', - 'Unrestricted', - '-Command', - command - ]; - const options = { - silent: true - }; - try { - const powershellPath = yield io.which('powershell', true); - yield exec_1.exec(`"${powershellPath}"`, args, options); - } - finally { - process.chdir(originalCwd); - } - } - return dest; - }); -} -exports.extract7z = extract7z; -/** - * Extract a compressed tar archive - * - * @param file path to the tar - * @param dest destination directory. Optional. - * @param flags flags for the tar command to use for extraction. Defaults to 'xz' (extracting gzipped tars). Optional. - * @returns path to the destination directory - */ -function extractTar(file, dest, flags = 'xz') { - return __awaiter(this, void 0, void 0, function* () { - if (!file) { - throw new Error("parameter 'file' is required"); - } - // Create dest - dest = yield _createExtractFolder(dest); - // Determine whether GNU tar - core.debug('Checking tar --version'); - let versionOutput = ''; - yield exec_1.exec('tar --version', [], { - ignoreReturnCode: true, - silent: true, - listeners: { - stdout: (data) => (versionOutput += data.toString()), - stderr: (data) => (versionOutput += data.toString()) - } - }); - core.debug(versionOutput.trim()); - const isGnuTar = versionOutput.toUpperCase().includes('GNU TAR'); - // Initialize args - let args; - if (flags instanceof Array) { - args = flags; - } - else { - args = [flags]; - } - if (core.isDebug() && !flags.includes('v')) { - args.push('-v'); - } - let destArg = dest; - let fileArg = file; - if (IS_WINDOWS && isGnuTar) { - args.push('--force-local'); - destArg = dest.replace(/\\/g, '/'); - // Technically only the dest needs to have `/` but for aesthetic consistency - // convert slashes in the file arg too. - fileArg = file.replace(/\\/g, '/'); - } - if (isGnuTar) { - // Suppress warnings when using GNU tar to extract archives created by BSD tar - args.push('--warning=no-unknown-keyword'); - args.push('--overwrite'); - } - args.push('-C', destArg, '-f', fileArg); - yield exec_1.exec(`tar`, args); - return dest; - }); -} -exports.extractTar = extractTar; -/** - * Extract a xar compatible archive - * - * @param file path to the archive - * @param dest destination directory. Optional. - * @param flags flags for the xar. Optional. - * @returns path to the destination directory - */ -function extractXar(file, dest, flags = []) { - return __awaiter(this, void 0, void 0, function* () { - assert_1.ok(IS_MAC, 'extractXar() not supported on current OS'); - assert_1.ok(file, 'parameter "file" is required'); - dest = yield _createExtractFolder(dest); - let args; - if (flags instanceof Array) { - args = flags; - } - else { - args = [flags]; - } - args.push('-x', '-C', dest, '-f', file); - if (core.isDebug()) { - args.push('-v'); - } - const xarPath = yield io.which('xar', true); - yield exec_1.exec(`"${xarPath}"`, _unique(args)); - return dest; - }); -} -exports.extractXar = extractXar; -/** - * Extract a zip - * - * @param file path to the zip - * @param dest destination directory. Optional. - * @returns path to the destination directory - */ -function extractZip(file, dest) { - return __awaiter(this, void 0, void 0, function* () { - if (!file) { - throw new Error("parameter 'file' is required"); - } - dest = yield _createExtractFolder(dest); - if (IS_WINDOWS) { - yield extractZipWin(file, dest); - } - else { - yield extractZipNix(file, dest); - } - return dest; - }); -} -exports.extractZip = extractZip; -function extractZipWin(file, dest) { - return __awaiter(this, void 0, void 0, function* () { - // build the powershell command - const escapedFile = file.replace(/'/g, "''").replace(/"|\n|\r/g, ''); // double-up single quotes, remove double quotes and newlines - const escapedDest = dest.replace(/'/g, "''").replace(/"|\n|\r/g, ''); - const pwshPath = yield io.which('pwsh', false); - //To match the file overwrite behavior on nix systems, we use the overwrite = true flag for ExtractToDirectory - //and the -Force flag for Expand-Archive as a fallback - if (pwshPath) { - //attempt to use pwsh with ExtractToDirectory, if this fails attempt Expand-Archive - const pwshCommand = [ - `$ErrorActionPreference = 'Stop' ;`, - `try { Add-Type -AssemblyName System.IO.Compression.ZipFile } catch { } ;`, - `try { [System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }`, - `catch { if (($_.Exception.GetType().FullName -eq 'System.Management.Automation.MethodException') -or ($_.Exception.GetType().FullName -eq 'System.Management.Automation.RuntimeException') ){ Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force } else { throw $_ } } ;` - ].join(' '); - const args = [ - '-NoLogo', - '-NoProfile', - '-NonInteractive', - '-ExecutionPolicy', - 'Unrestricted', - '-Command', - pwshCommand - ]; - core.debug(`Using pwsh at path: ${pwshPath}`); - yield exec_1.exec(`"${pwshPath}"`, args); - } - else { - const powershellCommand = [ - `$ErrorActionPreference = 'Stop' ;`, - `try { Add-Type -AssemblyName System.IO.Compression.FileSystem } catch { } ;`, - `if ((Get-Command -Name Expand-Archive -Module Microsoft.PowerShell.Archive -ErrorAction Ignore)) { Expand-Archive -LiteralPath '${escapedFile}' -DestinationPath '${escapedDest}' -Force }`, - `else {[System.IO.Compression.ZipFile]::ExtractToDirectory('${escapedFile}', '${escapedDest}', $true) }` - ].join(' '); - const args = [ - '-NoLogo', - '-Sta', - '-NoProfile', - '-NonInteractive', - '-ExecutionPolicy', - 'Unrestricted', - '-Command', - powershellCommand - ]; - const powershellPath = yield io.which('powershell', true); - core.debug(`Using powershell at path: ${powershellPath}`); - yield exec_1.exec(`"${powershellPath}"`, args); - } - }); -} -function extractZipNix(file, dest) { - return __awaiter(this, void 0, void 0, function* () { - const unzipPath = yield io.which('unzip', true); - const args = [file]; - if (!core.isDebug()) { - args.unshift('-q'); - } - args.unshift('-o'); //overwrite with -o, otherwise a prompt is shown which freezes the run - yield exec_1.exec(`"${unzipPath}"`, args, { cwd: dest }); - }); -} -/** - * Caches a directory and installs it into the tool cacheDir - * - * @param sourceDir the directory to cache into tools - * @param tool tool name - * @param version version of the tool. semver format - * @param arch architecture of the tool. Optional. Defaults to machine architecture - */ -function cacheDir(sourceDir, tool, version, arch) { - return __awaiter(this, void 0, void 0, function* () { - version = semver.clean(version) || version; - arch = arch || os.arch(); - core.debug(`Caching tool ${tool} ${version} ${arch}`); - core.debug(`source dir: ${sourceDir}`); - if (!fs.statSync(sourceDir).isDirectory()) { - throw new Error('sourceDir is not a directory'); - } - // Create the tool dir - const destPath = yield _createToolPath(tool, version, arch); - // copy each child item. do not move. move can fail on Windows - // due to anti-virus software having an open handle on a file. - for (const itemName of fs.readdirSync(sourceDir)) { - const s = path.join(sourceDir, itemName); - yield io.cp(s, destPath, { recursive: true }); - } - // write .complete - _completeToolPath(tool, version, arch); - return destPath; - }); -} -exports.cacheDir = cacheDir; -/** - * Caches a downloaded file (GUID) and installs it - * into the tool cache with a given targetName - * - * @param sourceFile the file to cache into tools. Typically a result of downloadTool which is a guid. - * @param targetFile the name of the file name in the tools directory - * @param tool tool name - * @param version version of the tool. semver format - * @param arch architecture of the tool. Optional. Defaults to machine architecture - */ -function cacheFile(sourceFile, targetFile, tool, version, arch) { - return __awaiter(this, void 0, void 0, function* () { - version = semver.clean(version) || version; - arch = arch || os.arch(); - core.debug(`Caching tool ${tool} ${version} ${arch}`); - core.debug(`source file: ${sourceFile}`); - if (!fs.statSync(sourceFile).isFile()) { - throw new Error('sourceFile is not a file'); - } - // create the tool dir - const destFolder = yield _createToolPath(tool, version, arch); - // copy instead of move. move can fail on Windows due to - // anti-virus software having an open handle on a file. - const destPath = path.join(destFolder, targetFile); - core.debug(`destination file ${destPath}`); - yield io.cp(sourceFile, destPath); - // write .complete - _completeToolPath(tool, version, arch); - return destFolder; - }); -} -exports.cacheFile = cacheFile; -/** - * Finds the path to a tool version in the local installed tool cache - * - * @param toolName name of the tool - * @param versionSpec version of the tool - * @param arch optional arch. defaults to arch of computer - */ -function find(toolName, versionSpec, arch) { - if (!toolName) { - throw new Error('toolName parameter is required'); - } - if (!versionSpec) { - throw new Error('versionSpec parameter is required'); - } - arch = arch || os.arch(); - // attempt to resolve an explicit version - if (!isExplicitVersion(versionSpec)) { - const localVersions = findAllVersions(toolName, arch); - const match = evaluateVersions(localVersions, versionSpec); - versionSpec = match; - } - // check for the explicit version in the cache - let toolPath = ''; - if (versionSpec) { - versionSpec = semver.clean(versionSpec) || ''; - const cachePath = path.join(_getCacheDirectory(), toolName, versionSpec, arch); - core.debug(`checking cache: ${cachePath}`); - if (fs.existsSync(cachePath) && fs.existsSync(`${cachePath}.complete`)) { - core.debug(`Found tool in cache ${toolName} ${versionSpec} ${arch}`); - toolPath = cachePath; - } - else { - core.debug('not found'); - } - } - return toolPath; -} -exports.find = find; -/** - * Finds the paths to all versions of a tool that are installed in the local tool cache - * - * @param toolName name of the tool - * @param arch optional arch. defaults to arch of computer - */ -function findAllVersions(toolName, arch) { - const versions = []; - arch = arch || os.arch(); - const toolPath = path.join(_getCacheDirectory(), toolName); - if (fs.existsSync(toolPath)) { - const children = fs.readdirSync(toolPath); - for (const child of children) { - if (isExplicitVersion(child)) { - const fullPath = path.join(toolPath, child, arch || ''); - if (fs.existsSync(fullPath) && fs.existsSync(`${fullPath}.complete`)) { - versions.push(child); - } - } - } - } - return versions; -} -exports.findAllVersions = findAllVersions; -function getManifestFromRepo(owner, repo, auth, branch = 'master') { - return __awaiter(this, void 0, void 0, function* () { - let releases = []; - const treeUrl = `https://api.github.com/repos/${owner}/${repo}/git/trees/${branch}`; - const http = new httpm.HttpClient('tool-cache'); - const headers = {}; - if (auth) { - core.debug('set auth'); - headers.authorization = auth; - } - const response = yield http.getJson(treeUrl, headers); - if (!response.result) { - return releases; - } - let manifestUrl = ''; - for (const item of response.result.tree) { - if (item.path === 'versions-manifest.json') { - manifestUrl = item.url; - break; - } - } - headers['accept'] = 'application/vnd.github.VERSION.raw'; - let versionsRaw = yield (yield http.get(manifestUrl, headers)).readBody(); - if (versionsRaw) { - // shouldn't be needed but protects against invalid json saved with BOM - versionsRaw = versionsRaw.replace(/^\uFEFF/, ''); - try { - releases = JSON.parse(versionsRaw); - } - catch (_a) { - core.debug('Invalid json'); - } - } - return releases; - }); -} -exports.getManifestFromRepo = getManifestFromRepo; -function findFromManifest(versionSpec, stable, manifest, archFilter = os.arch()) { - return __awaiter(this, void 0, void 0, function* () { - // wrap the internal impl - const match = yield mm._findMatch(versionSpec, stable, manifest, archFilter); - return match; - }); -} -exports.findFromManifest = findFromManifest; -function _createExtractFolder(dest) { - return __awaiter(this, void 0, void 0, function* () { - if (!dest) { - // create a temp dir - dest = path.join(_getTempDirectory(), v4_1.default()); - } - yield io.mkdirP(dest); - return dest; - }); -} -function _createToolPath(tool, version, arch) { - return __awaiter(this, void 0, void 0, function* () { - const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || ''); - core.debug(`destination ${folderPath}`); - const markerPath = `${folderPath}.complete`; - yield io.rmRF(folderPath); - yield io.rmRF(markerPath); - yield io.mkdirP(folderPath); - return folderPath; - }); -} -function _completeToolPath(tool, version, arch) { - const folderPath = path.join(_getCacheDirectory(), tool, semver.clean(version) || version, arch || ''); - const markerPath = `${folderPath}.complete`; - fs.writeFileSync(markerPath, ''); - core.debug('finished caching tool'); -} -/** - * Check if version string is explicit - * - * @param versionSpec version string to check - */ -function isExplicitVersion(versionSpec) { - const c = semver.clean(versionSpec) || ''; - core.debug(`isExplicit: ${c}`); - const valid = semver.valid(c) != null; - core.debug(`explicit? ${valid}`); - return valid; -} -exports.isExplicitVersion = isExplicitVersion; -/** - * Get the highest satisfiying semantic version in `versions` which satisfies `versionSpec` - * - * @param versions array of versions to evaluate - * @param versionSpec semantic version spec to satisfy - */ -function evaluateVersions(versions, versionSpec) { - let version = ''; - core.debug(`evaluating ${versions.length} versions`); - versions = versions.sort((a, b) => { - if (semver.gt(a, b)) { - return 1; - } - return -1; - }); - for (let i = versions.length - 1; i >= 0; i--) { - const potential = versions[i]; - const satisfied = semver.satisfies(potential, versionSpec); - if (satisfied) { - version = potential; - break; - } - } - if (version) { - core.debug(`matched: ${version}`); - } - else { - core.debug('match not found'); - } - return version; -} -exports.evaluateVersions = evaluateVersions; -/** - * Gets RUNNER_TOOL_CACHE - */ -function _getCacheDirectory() { - const cacheDirectory = process.env['RUNNER_TOOL_CACHE'] || ''; - assert_1.ok(cacheDirectory, 'Expected RUNNER_TOOL_CACHE to be defined'); - return cacheDirectory; -} -/** - * Gets RUNNER_TEMP - */ -function _getTempDirectory() { - const tempDirectory = process.env['RUNNER_TEMP'] || ''; - assert_1.ok(tempDirectory, 'Expected RUNNER_TEMP to be defined'); - return tempDirectory; -} -/** - * Gets a global variable - */ -function _getGlobal(key, defaultValue) { - /* eslint-disable @typescript-eslint/no-explicit-any */ - const value = global[key]; - /* eslint-enable @typescript-eslint/no-explicit-any */ - return value !== undefined ? value : defaultValue; -} -/** - * Returns an array of unique values. - * @param values Values to make unique. - */ -function _unique(values) { - return Array.from(new Set(values)); -} -//# sourceMappingURL=tool-cache.js.map - -/***/ }), - -/***/ 562: -/***/ ((module, exports) => { - -exports = module.exports = SemVer - -var debug -/* istanbul ignore next */ -if (typeof process === 'object' && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG)) { - debug = function () { - var args = Array.prototype.slice.call(arguments, 0) - args.unshift('SEMVER') - console.log.apply(console, args) - } -} else { - debug = function () {} -} - -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -exports.SEMVER_SPEC_VERSION = '2.0.0' - -var MAX_LENGTH = 256 -var MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || - /* istanbul ignore next */ 9007199254740991 - -// Max safe segment length for coercion. -var MAX_SAFE_COMPONENT_LENGTH = 16 - -// The actual regexps go on exports.re -var re = exports.re = [] -var src = exports.src = [] -var t = exports.tokens = {} -var R = 0 - -function tok (n) { - t[n] = R++ -} - -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. - -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. - -tok('NUMERICIDENTIFIER') -src[t.NUMERICIDENTIFIER] = '0|[1-9]\\d*' -tok('NUMERICIDENTIFIERLOOSE') -src[t.NUMERICIDENTIFIERLOOSE] = '[0-9]+' - -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. - -tok('NONNUMERICIDENTIFIER') -src[t.NONNUMERICIDENTIFIER] = '\\d*[a-zA-Z-][a-zA-Z0-9-]*' - -// ## Main Version -// Three dot-separated numeric identifiers. - -tok('MAINVERSION') -src[t.MAINVERSION] = '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIER] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIER] + ')' - -tok('MAINVERSIONLOOSE') -src[t.MAINVERSIONLOOSE] = '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')\\.' + - '(' + src[t.NUMERICIDENTIFIERLOOSE] + ')' - -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. - -tok('PRERELEASEIDENTIFIER') -src[t.PRERELEASEIDENTIFIER] = '(?:' + src[t.NUMERICIDENTIFIER] + - '|' + src[t.NONNUMERICIDENTIFIER] + ')' - -tok('PRERELEASEIDENTIFIERLOOSE') -src[t.PRERELEASEIDENTIFIERLOOSE] = '(?:' + src[t.NUMERICIDENTIFIERLOOSE] + - '|' + src[t.NONNUMERICIDENTIFIER] + ')' - -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. - -tok('PRERELEASE') -src[t.PRERELEASE] = '(?:-(' + src[t.PRERELEASEIDENTIFIER] + - '(?:\\.' + src[t.PRERELEASEIDENTIFIER] + ')*))' - -tok('PRERELEASELOOSE') -src[t.PRERELEASELOOSE] = '(?:-?(' + src[t.PRERELEASEIDENTIFIERLOOSE] + - '(?:\\.' + src[t.PRERELEASEIDENTIFIERLOOSE] + ')*))' - -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. - -tok('BUILDIDENTIFIER') -src[t.BUILDIDENTIFIER] = '[0-9A-Za-z-]+' - -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. - -tok('BUILD') -src[t.BUILD] = '(?:\\+(' + src[t.BUILDIDENTIFIER] + - '(?:\\.' + src[t.BUILDIDENTIFIER] + ')*))' - -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. - -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. - -tok('FULL') -tok('FULLPLAIN') -src[t.FULLPLAIN] = 'v?' + src[t.MAINVERSION] + - src[t.PRERELEASE] + '?' + - src[t.BUILD] + '?' - -src[t.FULL] = '^' + src[t.FULLPLAIN] + '$' - -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -tok('LOOSEPLAIN') -src[t.LOOSEPLAIN] = '[v=\\s]*' + src[t.MAINVERSIONLOOSE] + - src[t.PRERELEASELOOSE] + '?' + - src[t.BUILD] + '?' - -tok('LOOSE') -src[t.LOOSE] = '^' + src[t.LOOSEPLAIN] + '$' - -tok('GTLT') -src[t.GTLT] = '((?:<|>)?=?)' - -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -tok('XRANGEIDENTIFIERLOOSE') -src[t.XRANGEIDENTIFIERLOOSE] = src[t.NUMERICIDENTIFIERLOOSE] + '|x|X|\\*' -tok('XRANGEIDENTIFIER') -src[t.XRANGEIDENTIFIER] = src[t.NUMERICIDENTIFIER] + '|x|X|\\*' - -tok('XRANGEPLAIN') -src[t.XRANGEPLAIN] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIER] + ')' + - '(?:' + src[t.PRERELEASE] + ')?' + - src[t.BUILD] + '?' + - ')?)?' - -tok('XRANGEPLAINLOOSE') -src[t.XRANGEPLAINLOOSE] = '[v=\\s]*(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:\\.(' + src[t.XRANGEIDENTIFIERLOOSE] + ')' + - '(?:' + src[t.PRERELEASELOOSE] + ')?' + - src[t.BUILD] + '?' + - ')?)?' - -tok('XRANGE') -src[t.XRANGE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAIN] + '$' -tok('XRANGELOOSE') -src[t.XRANGELOOSE] = '^' + src[t.GTLT] + '\\s*' + src[t.XRANGEPLAINLOOSE] + '$' - -// Coercion. -// Extract anything that could conceivably be a part of a valid semver -tok('COERCE') -src[t.COERCE] = '(^|[^\\d])' + - '(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '})' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:\\.(\\d{1,' + MAX_SAFE_COMPONENT_LENGTH + '}))?' + - '(?:$|[^\\d])' -tok('COERCERTL') -re[t.COERCERTL] = new RegExp(src[t.COERCE], 'g') - -// Tilde ranges. -// Meaning is "reasonably at or greater than" -tok('LONETILDE') -src[t.LONETILDE] = '(?:~>?)' - -tok('TILDETRIM') -src[t.TILDETRIM] = '(\\s*)' + src[t.LONETILDE] + '\\s+' -re[t.TILDETRIM] = new RegExp(src[t.TILDETRIM], 'g') -var tildeTrimReplace = '$1~' - -tok('TILDE') -src[t.TILDE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAIN] + '$' -tok('TILDELOOSE') -src[t.TILDELOOSE] = '^' + src[t.LONETILDE] + src[t.XRANGEPLAINLOOSE] + '$' - -// Caret ranges. -// Meaning is "at least and backwards compatible with" -tok('LONECARET') -src[t.LONECARET] = '(?:\\^)' - -tok('CARETTRIM') -src[t.CARETTRIM] = '(\\s*)' + src[t.LONECARET] + '\\s+' -re[t.CARETTRIM] = new RegExp(src[t.CARETTRIM], 'g') -var caretTrimReplace = '$1^' - -tok('CARET') -src[t.CARET] = '^' + src[t.LONECARET] + src[t.XRANGEPLAIN] + '$' -tok('CARETLOOSE') -src[t.CARETLOOSE] = '^' + src[t.LONECARET] + src[t.XRANGEPLAINLOOSE] + '$' - -// A simple gt/lt/eq thing, or just "" to indicate "any version" -tok('COMPARATORLOOSE') -src[t.COMPARATORLOOSE] = '^' + src[t.GTLT] + '\\s*(' + src[t.LOOSEPLAIN] + ')$|^$' -tok('COMPARATOR') -src[t.COMPARATOR] = '^' + src[t.GTLT] + '\\s*(' + src[t.FULLPLAIN] + ')$|^$' - -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -tok('COMPARATORTRIM') -src[t.COMPARATORTRIM] = '(\\s*)' + src[t.GTLT] + - '\\s*(' + src[t.LOOSEPLAIN] + '|' + src[t.XRANGEPLAIN] + ')' - -// this one has to use the /g flag -re[t.COMPARATORTRIM] = new RegExp(src[t.COMPARATORTRIM], 'g') -var comparatorTrimReplace = '$1$2$3' - -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -tok('HYPHENRANGE') -src[t.HYPHENRANGE] = '^\\s*(' + src[t.XRANGEPLAIN] + ')' + - '\\s+-\\s+' + - '(' + src[t.XRANGEPLAIN] + ')' + - '\\s*$' - -tok('HYPHENRANGELOOSE') -src[t.HYPHENRANGELOOSE] = '^\\s*(' + src[t.XRANGEPLAINLOOSE] + ')' + - '\\s+-\\s+' + - '(' + src[t.XRANGEPLAINLOOSE] + ')' + - '\\s*$' - -// Star ranges basically just allow anything at all. -tok('STAR') -src[t.STAR] = '(<|>)?=?\\s*\\*' - -// Compile to actual regexp objects. -// All are flag-free, unless they were created above with a flag. -for (var i = 0; i < R; i++) { - debug(i, src[i]) - if (!re[i]) { - re[i] = new RegExp(src[i]) - } -} - -exports.parse = parse -function parse (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - - if (version instanceof SemVer) { - return version - } - - if (typeof version !== 'string') { - return null - } - - if (version.length > MAX_LENGTH) { - return null - } - - var r = options.loose ? re[t.LOOSE] : re[t.FULL] - if (!r.test(version)) { - return null - } - - try { - return new SemVer(version, options) - } catch (er) { - return null - } -} - -exports.valid = valid -function valid (version, options) { - var v = parse(version, options) - return v ? v.version : null -} - -exports.clean = clean -function clean (version, options) { - var s = parse(version.trim().replace(/^[=v]+/, ''), options) - return s ? s.version : null -} - -exports.SemVer = SemVer - -function SemVer (version, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - if (version instanceof SemVer) { - if (version.loose === options.loose) { - return version - } else { - version = version.version - } - } else if (typeof version !== 'string') { - throw new TypeError('Invalid Version: ' + version) - } - - if (version.length > MAX_LENGTH) { - throw new TypeError('version is longer than ' + MAX_LENGTH + ' characters') - } - - if (!(this instanceof SemVer)) { - return new SemVer(version, options) - } - - debug('SemVer', version, options) - this.options = options - this.loose = !!options.loose - - var m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) - - if (!m) { - throw new TypeError('Invalid Version: ' + version) - } - - this.raw = version - - // these are actually numbers - this.major = +m[1] - this.minor = +m[2] - this.patch = +m[3] - - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError('Invalid major version') - } - - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError('Invalid minor version') - } - - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError('Invalid patch version') - } - - // numberify any prerelease numeric ids - if (!m[4]) { - this.prerelease = [] - } else { - this.prerelease = m[4].split('.').map(function (id) { - if (/^[0-9]+$/.test(id)) { - var num = +id - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num - } - } - return id - }) - } - - this.build = m[5] ? m[5].split('.') : [] - this.format() -} - -SemVer.prototype.format = function () { - this.version = this.major + '.' + this.minor + '.' + this.patch - if (this.prerelease.length) { - this.version += '-' + this.prerelease.join('.') - } - return this.version -} - -SemVer.prototype.toString = function () { - return this.version -} - -SemVer.prototype.compare = function (other) { - debug('SemVer.compare', this.version, this.options, other) - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - return this.compareMain(other) || this.comparePre(other) -} - -SemVer.prototype.compareMain = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - return compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch) -} - -SemVer.prototype.comparePre = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) { - return -1 - } else if (!this.prerelease.length && other.prerelease.length) { - return 1 - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0 - } - - var i = 0 - do { - var a = this.prerelease[i] - var b = other.prerelease[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) -} - -SemVer.prototype.compareBuild = function (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - var i = 0 - do { - var a = this.build[i] - var b = other.build[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) -} - -// preminor will bump the version up to the next minor release, and immediately -// down to pre-release. premajor and prepatch work the same way. -SemVer.prototype.inc = function (release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0 - this.patch = 0 - this.minor = 0 - this.major++ - this.inc('pre', identifier) - break - case 'preminor': - this.prerelease.length = 0 - this.patch = 0 - this.minor++ - this.inc('pre', identifier) - break - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0 - this.inc('patch', identifier) - this.inc('pre', identifier) - break - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) { - this.inc('patch', identifier) - } - this.inc('pre', identifier) - break - - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if (this.minor !== 0 || - this.patch !== 0 || - this.prerelease.length === 0) { - this.major++ - } - this.minor = 0 - this.patch = 0 - this.prerelease = [] - break - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++ - } - this.patch = 0 - this.prerelease = [] - break - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) { - this.patch++ - } - this.prerelease = [] - break - // This probably shouldn't be used publicly. - // 1.0.0 "pre" would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) { - this.prerelease = [0] - } else { - var i = this.prerelease.length - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++ - i = -2 - } - } - if (i === -1) { - // didn't increment anything - this.prerelease.push(0) - } - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) { - this.prerelease = [identifier, 0] - } - } else { - this.prerelease = [identifier, 0] - } - } - break - - default: - throw new Error('invalid increment argument: ' + release) - } - this.format() - this.raw = this.version - return this -} - -exports.inc = inc -function inc (version, release, loose, identifier) { - if (typeof (loose) === 'string') { - identifier = loose - loose = undefined - } - - try { - return new SemVer(version, loose).inc(release, identifier).version - } catch (er) { - return null - } -} - -exports.diff = diff -function diff (version1, version2) { - if (eq(version1, version2)) { - return null - } else { - var v1 = parse(version1) - var v2 = parse(version2) - var prefix = '' - if (v1.prerelease.length || v2.prerelease.length) { - prefix = 'pre' - var defaultResult = 'prerelease' - } - for (var key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return prefix + key - } - } - } - return defaultResult // may be undefined - } -} - -exports.compareIdentifiers = compareIdentifiers - -var numeric = /^[0-9]+$/ -function compareIdentifiers (a, b) { - var anum = numeric.test(a) - var bnum = numeric.test(b) - - if (anum && bnum) { - a = +a - b = +b - } - - return a === b ? 0 - : (anum && !bnum) ? -1 - : (bnum && !anum) ? 1 - : a < b ? -1 - : 1 -} - -exports.rcompareIdentifiers = rcompareIdentifiers -function rcompareIdentifiers (a, b) { - return compareIdentifiers(b, a) -} - -exports.major = major -function major (a, loose) { - return new SemVer(a, loose).major -} - -exports.minor = minor -function minor (a, loose) { - return new SemVer(a, loose).minor -} - -exports.patch = patch -function patch (a, loose) { - return new SemVer(a, loose).patch -} - -exports.compare = compare -function compare (a, b, loose) { - return new SemVer(a, loose).compare(new SemVer(b, loose)) -} - -exports.compareLoose = compareLoose -function compareLoose (a, b) { - return compare(a, b, true) -} - -exports.compareBuild = compareBuild -function compareBuild (a, b, loose) { - var versionA = new SemVer(a, loose) - var versionB = new SemVer(b, loose) - return versionA.compare(versionB) || versionA.compareBuild(versionB) -} - -exports.rcompare = rcompare -function rcompare (a, b, loose) { - return compare(b, a, loose) -} - -exports.sort = sort -function sort (list, loose) { - return list.sort(function (a, b) { - return exports.compareBuild(a, b, loose) - }) -} - -exports.rsort = rsort -function rsort (list, loose) { - return list.sort(function (a, b) { - return exports.compareBuild(b, a, loose) - }) -} - -exports.gt = gt -function gt (a, b, loose) { - return compare(a, b, loose) > 0 -} - -exports.lt = lt -function lt (a, b, loose) { - return compare(a, b, loose) < 0 -} - -exports.eq = eq -function eq (a, b, loose) { - return compare(a, b, loose) === 0 -} - -exports.neq = neq -function neq (a, b, loose) { - return compare(a, b, loose) !== 0 -} - -exports.gte = gte -function gte (a, b, loose) { - return compare(a, b, loose) >= 0 -} - -exports.lte = lte -function lte (a, b, loose) { - return compare(a, b, loose) <= 0 -} - -exports.cmp = cmp -function cmp (a, op, b, loose) { - switch (op) { - case '===': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a === b - - case '!==': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a !== b - - case '': - case '=': - case '==': - return eq(a, b, loose) - - case '!=': - return neq(a, b, loose) - - case '>': - return gt(a, b, loose) - - case '>=': - return gte(a, b, loose) - - case '<': - return lt(a, b, loose) - - case '<=': - return lte(a, b, loose) - - default: - throw new TypeError('Invalid operator: ' + op) - } -} - -exports.Comparator = Comparator -function Comparator (comp, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp - } else { - comp = comp.value - } - } - - if (!(this instanceof Comparator)) { - return new Comparator(comp, options) - } - - debug('comparator', comp, options) - this.options = options - this.loose = !!options.loose - this.parse(comp) - - if (this.semver === ANY) { - this.value = '' - } else { - this.value = this.operator + this.semver.version - } - - debug('comp', this) -} - -var ANY = {} -Comparator.prototype.parse = function (comp) { - var r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - var m = comp.match(r) - - if (!m) { - throw new TypeError('Invalid comparator: ' + comp) - } - - this.operator = m[1] !== undefined ? m[1] : '' - if (this.operator === '=') { - this.operator = '' - } - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY - } else { - this.semver = new SemVer(m[2], this.options.loose) - } -} - -Comparator.prototype.toString = function () { - return this.value -} - -Comparator.prototype.test = function (version) { - debug('Comparator.test', version, this.options.loose) - - if (this.semver === ANY || version === ANY) { - return true - } - - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } - - return cmp(version, this.operator, this.semver, this.options) -} - -Comparator.prototype.intersects = function (comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required') - } - - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - - var rangeTmp - - if (this.operator === '') { - if (this.value === '') { - return true - } - rangeTmp = new Range(comp.value, options) - return satisfies(this.value, rangeTmp, options) - } else if (comp.operator === '') { - if (comp.value === '') { - return true - } - rangeTmp = new Range(this.value, options) - return satisfies(comp.semver, rangeTmp, options) - } - - var sameDirectionIncreasing = - (this.operator === '>=' || this.operator === '>') && - (comp.operator === '>=' || comp.operator === '>') - var sameDirectionDecreasing = - (this.operator === '<=' || this.operator === '<') && - (comp.operator === '<=' || comp.operator === '<') - var sameSemVer = this.semver.version === comp.semver.version - var differentDirectionsInclusive = - (this.operator === '>=' || this.operator === '<=') && - (comp.operator === '>=' || comp.operator === '<=') - var oppositeDirectionsLessThan = - cmp(this.semver, '<', comp.semver, options) && - ((this.operator === '>=' || this.operator === '>') && - (comp.operator === '<=' || comp.operator === '<')) - var oppositeDirectionsGreaterThan = - cmp(this.semver, '>', comp.semver, options) && - ((this.operator === '<=' || this.operator === '<') && - (comp.operator === '>=' || comp.operator === '>')) - - return sameDirectionIncreasing || sameDirectionDecreasing || - (sameSemVer && differentDirectionsInclusive) || - oppositeDirectionsLessThan || oppositeDirectionsGreaterThan -} - -exports.Range = Range -function Range (range, options) { - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - - if (range instanceof Range) { - if (range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease) { - return range - } else { - return new Range(range.raw, options) - } - } - - if (range instanceof Comparator) { - return new Range(range.value, options) - } - - if (!(this instanceof Range)) { - return new Range(range, options) - } - - this.options = options - this.loose = !!options.loose - this.includePrerelease = !!options.includePrerelease - - // First, split based on boolean or || - this.raw = range - this.set = range.split(/\s*\|\|\s*/).map(function (range) { - return this.parseRange(range.trim()) - }, this).filter(function (c) { - // throw out any that are not relevant for whatever reason - return c.length - }) - - if (!this.set.length) { - throw new TypeError('Invalid SemVer Range: ' + range) - } - - this.format() -} - -Range.prototype.format = function () { - this.range = this.set.map(function (comps) { - return comps.join(' ').trim() - }).join('||').trim() - return this.range -} - -Range.prototype.toString = function () { - return this.range -} - -Range.prototype.parseRange = function (range) { - var loose = this.options.loose - range = range.trim() - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - var hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] - range = range.replace(hr, hyphenReplace) - debug('hyphen replace', range) - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) - debug('comparator trim', range, re[t.COMPARATORTRIM]) - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[t.TILDETRIM], tildeTrimReplace) - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[t.CARETTRIM], caretTrimReplace) - - // normalize spaces - range = range.split(/\s+/).join(' ') - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - var compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - var set = range.split(' ').map(function (comp) { - return parseComparator(comp, this.options) - }, this).join(' ').split(/\s+/) - if (this.options.loose) { - // in loose mode, throw out any that are not valid comparators - set = set.filter(function (comp) { - return !!comp.match(compRe) - }) - } - set = set.map(function (comp) { - return new Comparator(comp, this.options) - }, this) - - return set -} - -Range.prototype.intersects = function (range, options) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required') - } - - return this.set.some(function (thisComparators) { - return ( - isSatisfiable(thisComparators, options) && - range.set.some(function (rangeComparators) { - return ( - isSatisfiable(rangeComparators, options) && - thisComparators.every(function (thisComparator) { - return rangeComparators.every(function (rangeComparator) { - return thisComparator.intersects(rangeComparator, options) - }) - }) - ) - }) - ) - }) -} - -// take a set of comparators and determine whether there -// exists a version which can satisfy it -function isSatisfiable (comparators, options) { - var result = true - var remainingComparators = comparators.slice() - var testComparator = remainingComparators.pop() - - while (result && remainingComparators.length) { - result = remainingComparators.every(function (otherComparator) { - return testComparator.intersects(otherComparator, options) - }) - - testComparator = remainingComparators.pop() - } - - return result -} - -// Mostly just for testing and legacy API reasons -exports.toComparators = toComparators -function toComparators (range, options) { - return new Range(range, options).set.map(function (comp) { - return comp.map(function (c) { - return c.value - }).join(' ').trim().split(' ') - }) -} - -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -function parseComparator (comp, options) { - debug('comp', comp, options) - comp = replaceCarets(comp, options) - debug('caret', comp) - comp = replaceTildes(comp, options) - debug('tildes', comp) - comp = replaceXRanges(comp, options) - debug('xrange', comp) - comp = replaceStars(comp, options) - debug('stars', comp) - return comp -} - -function isX (id) { - return !id || id.toLowerCase() === 'x' || id === '*' -} - -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0 -function replaceTildes (comp, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceTilde(comp, options) - }).join(' ') -} - -function replaceTilde (comp, options) { - var r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] - return comp.replace(r, function (_, M, m, p, pr) { - debug('tilde', comp, _, M, m, p, pr) - var ret - - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' - } else if (isX(p)) { - // ~1.2 == >=1.2.0 <1.3.0 - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' - } else if (pr) { - debug('replaceTilde pr', pr) - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + (+m + 1) + '.0' - } else { - // ~1.2.3 == >=1.2.3 <1.3.0 - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0' - } - - debug('tilde return', ret) - return ret - }) -} - -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0 -// ^1.2.3 --> >=1.2.3 <2.0.0 -// ^1.2.0 --> >=1.2.0 <2.0.0 -function replaceCarets (comp, options) { - return comp.trim().split(/\s+/).map(function (comp) { - return replaceCaret(comp, options) - }).join(' ') -} - -function replaceCaret (comp, options) { - debug('caret', comp, options) - var r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] - return comp.replace(r, function (_, M, m, p, pr) { - debug('caret', comp, _, M, m, p, pr) - var ret - - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = '>=' + M + '.0.0 <' + (+M + 1) + '.0.0' - } else if (isX(p)) { - if (M === '0') { - ret = '>=' + M + '.' + m + '.0 <' + M + '.' + (+m + 1) + '.0' - } else { - ret = '>=' + M + '.' + m + '.0 <' + (+M + 1) + '.0.0' - } - } else if (pr) { - debug('replaceCaret pr', pr) - if (M === '0') { - if (m === '0') { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + m + '.' + (+p + 1) - } else { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + M + '.' + (+m + 1) + '.0' - } - } else { - ret = '>=' + M + '.' + m + '.' + p + '-' + pr + - ' <' + (+M + 1) + '.0.0' - } - } else { - debug('no pr') - if (M === '0') { - if (m === '0') { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + m + '.' + (+p + 1) - } else { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + M + '.' + (+m + 1) + '.0' - } - } else { - ret = '>=' + M + '.' + m + '.' + p + - ' <' + (+M + 1) + '.0.0' - } - } - - debug('caret return', ret) - return ret - }) -} - -function replaceXRanges (comp, options) { - debug('replaceXRanges', comp, options) - return comp.split(/\s+/).map(function (comp) { - return replaceXRange(comp, options) - }).join(' ') -} - -function replaceXRange (comp, options) { - comp = comp.trim() - var r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] - return comp.replace(r, function (ret, gtlt, M, m, p, pr) { - debug('xRange', comp, ret, gtlt, M, m, p, pr) - var xM = isX(M) - var xm = xM || isX(m) - var xp = xm || isX(p) - var anyX = xp - - if (gtlt === '=' && anyX) { - gtlt = '' - } - - // if we're including prereleases in the match, then we need - // to fix this to -0, the lowest possible prerelease value - pr = options.includePrerelease ? '-0' : '' - - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0-0' - } else { - // nothing is forbidden - ret = '*' - } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0 - } - p = 0 - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - // >1.2.3 => >= 1.2.4 - gtlt = '>=' - if (xm) { - M = +M + 1 - m = 0 - p = 0 - } else { - m = +m + 1 - p = 0 - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<' - if (xm) { - M = +M + 1 - } else { - m = +m + 1 - } - } - - ret = gtlt + M + '.' + m + '.' + p + pr - } else if (xm) { - ret = '>=' + M + '.0.0' + pr + ' <' + (+M + 1) + '.0.0' + pr - } else if (xp) { - ret = '>=' + M + '.' + m + '.0' + pr + - ' <' + M + '.' + (+m + 1) + '.0' + pr - } - - debug('xRange return', ret) - - return ret - }) -} - -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -function replaceStars (comp, options) { - debug('replaceStars', comp, options) - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[t.STAR], '') -} - -// This function is passed to string.replace(re[t.HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0 -function hyphenReplace ($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) { - if (isX(fM)) { - from = '' - } else if (isX(fm)) { - from = '>=' + fM + '.0.0' - } else if (isX(fp)) { - from = '>=' + fM + '.' + fm + '.0' - } else { - from = '>=' + from - } - - if (isX(tM)) { - to = '' - } else if (isX(tm)) { - to = '<' + (+tM + 1) + '.0.0' - } else if (isX(tp)) { - to = '<' + tM + '.' + (+tm + 1) + '.0' - } else if (tpr) { - to = '<=' + tM + '.' + tm + '.' + tp + '-' + tpr - } else { - to = '<=' + to - } - - return (from + ' ' + to).trim() -} - -// if ANY of the sets match ALL of its comparators, then pass -Range.prototype.test = function (version) { - if (!version) { - return false - } - - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } - - for (var i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true - } - } - return false -} - -function testSet (set, version, options) { - for (var i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false - } - } - - if (version.prerelease.length && !options.includePrerelease) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (i = 0; i < set.length; i++) { - debug(set[i].semver) - if (set[i].semver === ANY) { - continue - } - - if (set[i].semver.prerelease.length > 0) { - var allowed = set[i].semver - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) { - return true - } - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false - } - - return true -} - -exports.satisfies = satisfies -function satisfies (version, range, options) { - try { - range = new Range(range, options) - } catch (er) { - return false - } - return range.test(version) -} - -exports.maxSatisfying = maxSatisfying -function maxSatisfying (versions, range, options) { - var max = null - var maxSV = null - try { - var rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v - maxSV = new SemVer(max, options) - } - } - }) - return max -} - -exports.minSatisfying = minSatisfying -function minSatisfying (versions, range, options) { - var min = null - var minSV = null - try { - var rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach(function (v) { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v - minSV = new SemVer(min, options) - } - } - }) - return min -} - -exports.minVersion = minVersion -function minVersion (range, loose) { - range = new Range(range, loose) - - var minver = new SemVer('0.0.0') - if (range.test(minver)) { - return minver - } - - minver = new SemVer('0.0.0-0') - if (range.test(minver)) { - return minver - } - - minver = null - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i] - - comparators.forEach(function (comparator) { - // Clone to avoid manipulating the comparator's semver object. - var compver = new SemVer(comparator.semver.version) - switch (comparator.operator) { - case '>': - if (compver.prerelease.length === 0) { - compver.patch++ - } else { - compver.prerelease.push(0) - } - compver.raw = compver.format() - /* fallthrough */ - case '': - case '>=': - if (!minver || gt(minver, compver)) { - minver = compver - } - break - case '<': - case '<=': - /* Ignore maximum versions */ - break - /* istanbul ignore next */ - default: - throw new Error('Unexpected operation: ' + comparator.operator) - } - }) - } - - if (minver && range.test(minver)) { - return minver - } - - return null -} - -exports.validRange = validRange -function validRange (range, options) { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || '*' - } catch (er) { - return null - } -} - -// Determine if version is less than all the versions possible in the range -exports.ltr = ltr -function ltr (version, range, options) { - return outside(version, range, '<', options) -} - -// Determine if version is greater than all the versions possible in the range. -exports.gtr = gtr -function gtr (version, range, options) { - return outside(version, range, '>', options) -} - -exports.outside = outside -function outside (version, range, hilo, options) { - version = new SemVer(version, options) - range = new Range(range, options) - - var gtfn, ltefn, ltfn, comp, ecomp - switch (hilo) { - case '>': - gtfn = gt - ltefn = lte - ltfn = lt - comp = '>' - ecomp = '>=' - break - case '<': - gtfn = lt - ltefn = gte - ltfn = gt - comp = '<' - ecomp = '<=' - break - default: - throw new TypeError('Must provide a hilo val of "<" or ">"') - } - - // If it satisifes the range it is not outside - if (satisfies(version, range, options)) { - return false - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (var i = 0; i < range.set.length; ++i) { - var comparators = range.set[i] - - var high = null - var low = null - - comparators.forEach(function (comparator) { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0') - } - high = high || comparator - low = low || comparator - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator - } - }) - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false - } - } - return true -} - -exports.prerelease = prerelease -function prerelease (version, options) { - var parsed = parse(version, options) - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null -} - -exports.intersects = intersects -function intersects (r1, r2, options) { - r1 = new Range(r1, options) - r2 = new Range(r2, options) - return r1.intersects(r2) -} - -exports.coerce = coerce -function coerce (version, options) { - if (version instanceof SemVer) { - return version - } - - if (typeof version === 'number') { - version = String(version) - } - - if (typeof version !== 'string') { - return null - } - - options = options || {} - - var match = null - if (!options.rtl) { - match = version.match(re[t.COERCE]) - } else { - // Find the right-most coercible string that does not share - // a terminus with a more left-ward coercible string. - // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' - // - // Walk through the string checking with a /g regexp - // Manually set the index so as to pick up overlapping matches. - // Stop when we get a match that ends at the string end, since no - // coercible string can be more right-ward without the same terminus. - var next - while ((next = re[t.COERCERTL].exec(version)) && - (!match || match.index + match[0].length !== version.length) - ) { - if (!match || - next.index + next[0].length !== match.index + match[0].length) { - match = next - } - re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length - } - // leave it in a clean state - re[t.COERCERTL].lastIndex = -1 - } - - if (match === null) { - return null - } - - return parse(match[2] + - '.' + (match[3] || '0') + - '.' + (match[4] || '0'), options) -} - - -/***/ }), - -/***/ 7701: -/***/ ((module) => { - -/** - * Convert array of 16 byte values to UUID string format of the form: - * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX - */ -var byteToHex = []; -for (var i = 0; i < 256; ++i) { - byteToHex[i] = (i + 0x100).toString(16).substr(1); -} - -function bytesToUuid(buf, offset) { - var i = offset || 0; - var bth = byteToHex; - // join used to fix memory issue caused by concatenation: https://bugs.chromium.org/p/v8/issues/detail?id=3175#c4 - return ([ - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], '-', - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]], - bth[buf[i++]], bth[buf[i++]] - ]).join(''); -} - -module.exports = bytesToUuid; - - -/***/ }), - -/***/ 7269: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -// Unique ID creation requires a high quality random # generator. In node.js -// this is pretty straight-forward - we use the crypto API. - -var crypto = __nccwpck_require__(6417); - -module.exports = function nodeRNG() { - return crypto.randomBytes(16); -}; - - -/***/ }), - -/***/ 7468: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -var rng = __nccwpck_require__(7269); -var bytesToUuid = __nccwpck_require__(7701); - -function v4(options, buf, offset) { - var i = buf && offset || 0; - - if (typeof(options) == 'string') { - buf = options === 'binary' ? new Array(16) : null; - options = null; - } - options = options || {}; - - var rnds = options.random || (options.rng || rng)(); - - // Per 4.4, set bits for version and `clock_seq_hi_and_reserved` - rnds[6] = (rnds[6] & 0x0f) | 0x40; - rnds[8] = (rnds[8] & 0x3f) | 0x80; - - // Copy bytes to buffer, if provided - if (buf) { - for (var ii = 0; ii < 16; ++ii) { - buf[i + ii] = rnds[ii]; - } - } - - return buf || bytesToUuid(rnds); -} - -module.exports = v4; - - -/***/ }), - -/***/ 7129: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - - -// A linked list to keep track of recently-used-ness -const Yallist = __nccwpck_require__(665) - -const MAX = Symbol('max') -const LENGTH = Symbol('length') -const LENGTH_CALCULATOR = Symbol('lengthCalculator') -const ALLOW_STALE = Symbol('allowStale') -const MAX_AGE = Symbol('maxAge') -const DISPOSE = Symbol('dispose') -const NO_DISPOSE_ON_SET = Symbol('noDisposeOnSet') -const LRU_LIST = Symbol('lruList') -const CACHE = Symbol('cache') -const UPDATE_AGE_ON_GET = Symbol('updateAgeOnGet') - -const naiveLength = () => 1 - -// lruList is a yallist where the head is the youngest -// item, and the tail is the oldest. the list contains the Hit -// objects as the entries. -// Each Hit object has a reference to its Yallist.Node. This -// never changes. -// -// cache is a Map (or PseudoMap) that matches the keys to -// the Yallist.Node object. -class LRUCache { - constructor (options) { - if (typeof options === 'number') - options = { max: options } - - if (!options) - options = {} - - if (options.max && (typeof options.max !== 'number' || options.max < 0)) - throw new TypeError('max must be a non-negative number') - // Kind of weird to have a default max of Infinity, but oh well. - const max = this[MAX] = options.max || Infinity - - const lc = options.length || naiveLength - this[LENGTH_CALCULATOR] = (typeof lc !== 'function') ? naiveLength : lc - this[ALLOW_STALE] = options.stale || false - if (options.maxAge && typeof options.maxAge !== 'number') - throw new TypeError('maxAge must be a number') - this[MAX_AGE] = options.maxAge || 0 - this[DISPOSE] = options.dispose - this[NO_DISPOSE_ON_SET] = options.noDisposeOnSet || false - this[UPDATE_AGE_ON_GET] = options.updateAgeOnGet || false - this.reset() - } - - // resize the cache when the max changes. - set max (mL) { - if (typeof mL !== 'number' || mL < 0) - throw new TypeError('max must be a non-negative number') - - this[MAX] = mL || Infinity - trim(this) - } - get max () { - return this[MAX] - } - - set allowStale (allowStale) { - this[ALLOW_STALE] = !!allowStale - } - get allowStale () { - return this[ALLOW_STALE] - } - - set maxAge (mA) { - if (typeof mA !== 'number') - throw new TypeError('maxAge must be a non-negative number') - - this[MAX_AGE] = mA - trim(this) - } - get maxAge () { - return this[MAX_AGE] - } - - // resize the cache when the lengthCalculator changes. - set lengthCalculator (lC) { - if (typeof lC !== 'function') - lC = naiveLength - - if (lC !== this[LENGTH_CALCULATOR]) { - this[LENGTH_CALCULATOR] = lC - this[LENGTH] = 0 - this[LRU_LIST].forEach(hit => { - hit.length = this[LENGTH_CALCULATOR](hit.value, hit.key) - this[LENGTH] += hit.length - }) - } - trim(this) - } - get lengthCalculator () { return this[LENGTH_CALCULATOR] } - - get length () { return this[LENGTH] } - get itemCount () { return this[LRU_LIST].length } - - rforEach (fn, thisp) { - thisp = thisp || this - for (let walker = this[LRU_LIST].tail; walker !== null;) { - const prev = walker.prev - forEachStep(this, fn, walker, thisp) - walker = prev - } - } - - forEach (fn, thisp) { - thisp = thisp || this - for (let walker = this[LRU_LIST].head; walker !== null;) { - const next = walker.next - forEachStep(this, fn, walker, thisp) - walker = next - } - } - - keys () { - return this[LRU_LIST].toArray().map(k => k.key) - } - - values () { - return this[LRU_LIST].toArray().map(k => k.value) - } - - reset () { - if (this[DISPOSE] && - this[LRU_LIST] && - this[LRU_LIST].length) { - this[LRU_LIST].forEach(hit => this[DISPOSE](hit.key, hit.value)) - } - - this[CACHE] = new Map() // hash of items by key - this[LRU_LIST] = new Yallist() // list of items in order of use recency - this[LENGTH] = 0 // length of items in the list - } - - dump () { - return this[LRU_LIST].map(hit => - isStale(this, hit) ? false : { - k: hit.key, - v: hit.value, - e: hit.now + (hit.maxAge || 0) - }).toArray().filter(h => h) - } - - dumpLru () { - return this[LRU_LIST] - } - - set (key, value, maxAge) { - maxAge = maxAge || this[MAX_AGE] - - if (maxAge && typeof maxAge !== 'number') - throw new TypeError('maxAge must be a number') - - const now = maxAge ? Date.now() : 0 - const len = this[LENGTH_CALCULATOR](value, key) - - if (this[CACHE].has(key)) { - if (len > this[MAX]) { - del(this, this[CACHE].get(key)) - return false - } - - const node = this[CACHE].get(key) - const item = node.value - - // dispose of the old one before overwriting - // split out into 2 ifs for better coverage tracking - if (this[DISPOSE]) { - if (!this[NO_DISPOSE_ON_SET]) - this[DISPOSE](key, item.value) - } - - item.now = now - item.maxAge = maxAge - item.value = value - this[LENGTH] += len - item.length - item.length = len - this.get(key) - trim(this) - return true - } - - const hit = new Entry(key, value, len, now, maxAge) - - // oversized objects fall out of cache automatically. - if (hit.length > this[MAX]) { - if (this[DISPOSE]) - this[DISPOSE](key, value) - - return false - } - - this[LENGTH] += hit.length - this[LRU_LIST].unshift(hit) - this[CACHE].set(key, this[LRU_LIST].head) - trim(this) - return true - } - - has (key) { - if (!this[CACHE].has(key)) return false - const hit = this[CACHE].get(key).value - return !isStale(this, hit) - } - - get (key) { - return get(this, key, true) - } - - peek (key) { - return get(this, key, false) - } - - pop () { - const node = this[LRU_LIST].tail - if (!node) - return null - - del(this, node) - return node.value - } - - del (key) { - del(this, this[CACHE].get(key)) - } - - load (arr) { - // reset the cache - this.reset() - - const now = Date.now() - // A previous serialized cache has the most recent items first - for (let l = arr.length - 1; l >= 0; l--) { - const hit = arr[l] - const expiresAt = hit.e || 0 - if (expiresAt === 0) - // the item was created without expiration in a non aged cache - this.set(hit.k, hit.v) - else { - const maxAge = expiresAt - now - // dont add already expired items - if (maxAge > 0) { - this.set(hit.k, hit.v, maxAge) - } - } - } - } - - prune () { - this[CACHE].forEach((value, key) => get(this, key, false)) - } -} - -const get = (self, key, doUse) => { - const node = self[CACHE].get(key) - if (node) { - const hit = node.value - if (isStale(self, hit)) { - del(self, node) - if (!self[ALLOW_STALE]) - return undefined - } else { - if (doUse) { - if (self[UPDATE_AGE_ON_GET]) - node.value.now = Date.now() - self[LRU_LIST].unshiftNode(node) - } - } - return hit.value - } -} - -const isStale = (self, hit) => { - if (!hit || (!hit.maxAge && !self[MAX_AGE])) - return false - - const diff = Date.now() - hit.now - return hit.maxAge ? diff > hit.maxAge - : self[MAX_AGE] && (diff > self[MAX_AGE]) -} - -const trim = self => { - if (self[LENGTH] > self[MAX]) { - for (let walker = self[LRU_LIST].tail; - self[LENGTH] > self[MAX] && walker !== null;) { - // We know that we're about to delete this one, and also - // what the next least recently used key will be, so just - // go ahead and set it now. - const prev = walker.prev - del(self, walker) - walker = prev - } - } -} - -const del = (self, node) => { - if (node) { - const hit = node.value - if (self[DISPOSE]) - self[DISPOSE](hit.key, hit.value) - - self[LENGTH] -= hit.length - self[CACHE].delete(hit.key) - self[LRU_LIST].removeNode(node) - } -} - -class Entry { - constructor (key, value, length, now, maxAge) { - this.key = key - this.value = value - this.length = length - this.now = now - this.maxAge = maxAge || 0 - } -} - -const forEachStep = (self, fn, node, thisp) => { - let hit = node.value - if (isStale(self, hit)) { - del(self, node) - if (!self[ALLOW_STALE]) - hit = undefined - } - if (hit) - fn.call(thisp, hit.value, hit.key, self) -} - -module.exports = LRUCache - - -/***/ }), - -/***/ 1532: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const ANY = Symbol('SemVer ANY') -// hoisted class for cyclic dependency -class Comparator { - static get ANY () { - return ANY - } - constructor (comp, options) { - options = parseOptions(options) - - if (comp instanceof Comparator) { - if (comp.loose === !!options.loose) { - return comp - } else { - comp = comp.value - } - } - - debug('comparator', comp, options) - this.options = options - this.loose = !!options.loose - this.parse(comp) - - if (this.semver === ANY) { - this.value = '' - } else { - this.value = this.operator + this.semver.version - } - - debug('comp', this) - } - - parse (comp) { - const r = this.options.loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - const m = comp.match(r) - - if (!m) { - throw new TypeError(`Invalid comparator: ${comp}`) - } - - this.operator = m[1] !== undefined ? m[1] : '' - if (this.operator === '=') { - this.operator = '' - } - - // if it literally is just '>' or '' then allow anything. - if (!m[2]) { - this.semver = ANY - } else { - this.semver = new SemVer(m[2], this.options.loose) - } - } - - toString () { - return this.value - } - - test (version) { - debug('Comparator.test', version, this.options.loose) - - if (this.semver === ANY || version === ANY) { - return true - } - - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } - - return cmp(version, this.operator, this.semver, this.options) - } - - intersects (comp, options) { - if (!(comp instanceof Comparator)) { - throw new TypeError('a Comparator is required') - } - - if (!options || typeof options !== 'object') { - options = { - loose: !!options, - includePrerelease: false - } - } - - if (this.operator === '') { - if (this.value === '') { - return true - } - return new Range(comp.value, options).test(this.value) - } else if (comp.operator === '') { - if (comp.value === '') { - return true - } - return new Range(this.value, options).test(comp.semver) - } - - const sameDirectionIncreasing = - (this.operator === '>=' || this.operator === '>') && - (comp.operator === '>=' || comp.operator === '>') - const sameDirectionDecreasing = - (this.operator === '<=' || this.operator === '<') && - (comp.operator === '<=' || comp.operator === '<') - const sameSemVer = this.semver.version === comp.semver.version - const differentDirectionsInclusive = - (this.operator === '>=' || this.operator === '<=') && - (comp.operator === '>=' || comp.operator === '<=') - const oppositeDirectionsLessThan = - cmp(this.semver, '<', comp.semver, options) && - (this.operator === '>=' || this.operator === '>') && - (comp.operator === '<=' || comp.operator === '<') - const oppositeDirectionsGreaterThan = - cmp(this.semver, '>', comp.semver, options) && - (this.operator === '<=' || this.operator === '<') && - (comp.operator === '>=' || comp.operator === '>') - - return ( - sameDirectionIncreasing || - sameDirectionDecreasing || - (sameSemVer && differentDirectionsInclusive) || - oppositeDirectionsLessThan || - oppositeDirectionsGreaterThan - ) - } -} - -module.exports = Comparator - -const parseOptions = __nccwpck_require__(785) -const {re, t} = __nccwpck_require__(9523) -const cmp = __nccwpck_require__(5098) -const debug = __nccwpck_require__(427) -const SemVer = __nccwpck_require__(8088) -const Range = __nccwpck_require__(9828) - - -/***/ }), - -/***/ 9828: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -// hoisted class for cyclic dependency -class Range { - constructor (range, options) { - options = parseOptions(options) - - if (range instanceof Range) { - if ( - range.loose === !!options.loose && - range.includePrerelease === !!options.includePrerelease - ) { - return range - } else { - return new Range(range.raw, options) - } - } - - if (range instanceof Comparator) { - // just put it in the set and return - this.raw = range.value - this.set = [[range]] - this.format() - return this - } - - this.options = options - this.loose = !!options.loose - this.includePrerelease = !!options.includePrerelease - - // First, split based on boolean or || - this.raw = range - this.set = range - .split(/\s*\|\|\s*/) - // map the range to a 2d array of comparators - .map(range => this.parseRange(range.trim())) - // throw out any comparator lists that are empty - // this generally means that it was not a valid range, which is allowed - // in loose mode, but will still throw if the WHOLE range is invalid. - .filter(c => c.length) - - if (!this.set.length) { - throw new TypeError(`Invalid SemVer Range: ${range}`) - } - - // if we have any that are not the null set, throw out null sets. - if (this.set.length > 1) { - // keep the first one, in case they're all null sets - const first = this.set[0] - this.set = this.set.filter(c => !isNullSet(c[0])) - if (this.set.length === 0) - this.set = [first] - else if (this.set.length > 1) { - // if we have any that are *, then the range is just * - for (const c of this.set) { - if (c.length === 1 && isAny(c[0])) { - this.set = [c] - break - } - } - } - } - - this.format() - } - - format () { - this.range = this.set - .map((comps) => { - return comps.join(' ').trim() - }) - .join('||') - .trim() - return this.range - } - - toString () { - return this.range - } - - parseRange (range) { - range = range.trim() - - // memoize range parsing for performance. - // this is a very hot path, and fully deterministic. - const memoOpts = Object.keys(this.options).join(',') - const memoKey = `parseRange:${memoOpts}:${range}` - const cached = cache.get(memoKey) - if (cached) - return cached - - const loose = this.options.loose - // `1.2.3 - 1.2.4` => `>=1.2.3 <=1.2.4` - const hr = loose ? re[t.HYPHENRANGELOOSE] : re[t.HYPHENRANGE] - range = range.replace(hr, hyphenReplace(this.options.includePrerelease)) - debug('hyphen replace', range) - // `> 1.2.3 < 1.2.5` => `>1.2.3 <1.2.5` - range = range.replace(re[t.COMPARATORTRIM], comparatorTrimReplace) - debug('comparator trim', range, re[t.COMPARATORTRIM]) - - // `~ 1.2.3` => `~1.2.3` - range = range.replace(re[t.TILDETRIM], tildeTrimReplace) - - // `^ 1.2.3` => `^1.2.3` - range = range.replace(re[t.CARETTRIM], caretTrimReplace) - - // normalize spaces - range = range.split(/\s+/).join(' ') - - // At this point, the range is completely trimmed and - // ready to be split into comparators. - - const compRe = loose ? re[t.COMPARATORLOOSE] : re[t.COMPARATOR] - const rangeList = range - .split(' ') - .map(comp => parseComparator(comp, this.options)) - .join(' ') - .split(/\s+/) - // >=0.0.0 is equivalent to * - .map(comp => replaceGTE0(comp, this.options)) - // in loose mode, throw out any that are not valid comparators - .filter(this.options.loose ? comp => !!comp.match(compRe) : () => true) - .map(comp => new Comparator(comp, this.options)) - - // if any comparators are the null set, then replace with JUST null set - // if more than one comparator, remove any * comparators - // also, don't include the same comparator more than once - const l = rangeList.length - const rangeMap = new Map() - for (const comp of rangeList) { - if (isNullSet(comp)) - return [comp] - rangeMap.set(comp.value, comp) - } - if (rangeMap.size > 1 && rangeMap.has('')) - rangeMap.delete('') - - const result = [...rangeMap.values()] - cache.set(memoKey, result) - return result - } - - intersects (range, options) { - if (!(range instanceof Range)) { - throw new TypeError('a Range is required') - } - - return this.set.some((thisComparators) => { - return ( - isSatisfiable(thisComparators, options) && - range.set.some((rangeComparators) => { - return ( - isSatisfiable(rangeComparators, options) && - thisComparators.every((thisComparator) => { - return rangeComparators.every((rangeComparator) => { - return thisComparator.intersects(rangeComparator, options) - }) - }) - ) - }) - ) - }) - } - - // if ANY of the sets match ALL of its comparators, then pass - test (version) { - if (!version) { - return false - } - - if (typeof version === 'string') { - try { - version = new SemVer(version, this.options) - } catch (er) { - return false - } - } - - for (let i = 0; i < this.set.length; i++) { - if (testSet(this.set[i], version, this.options)) { - return true - } - } - return false - } -} -module.exports = Range - -const LRU = __nccwpck_require__(7129) -const cache = new LRU({ max: 1000 }) - -const parseOptions = __nccwpck_require__(785) -const Comparator = __nccwpck_require__(1532) -const debug = __nccwpck_require__(427) -const SemVer = __nccwpck_require__(8088) -const { - re, - t, - comparatorTrimReplace, - tildeTrimReplace, - caretTrimReplace -} = __nccwpck_require__(9523) - -const isNullSet = c => c.value === '<0.0.0-0' -const isAny = c => c.value === '' - -// take a set of comparators and determine whether there -// exists a version which can satisfy it -const isSatisfiable = (comparators, options) => { - let result = true - const remainingComparators = comparators.slice() - let testComparator = remainingComparators.pop() - - while (result && remainingComparators.length) { - result = remainingComparators.every((otherComparator) => { - return testComparator.intersects(otherComparator, options) - }) - - testComparator = remainingComparators.pop() - } - - return result -} - -// comprised of xranges, tildes, stars, and gtlt's at this point. -// already replaced the hyphen ranges -// turn into a set of JUST comparators. -const parseComparator = (comp, options) => { - debug('comp', comp, options) - comp = replaceCarets(comp, options) - debug('caret', comp) - comp = replaceTildes(comp, options) - debug('tildes', comp) - comp = replaceXRanges(comp, options) - debug('xrange', comp) - comp = replaceStars(comp, options) - debug('stars', comp) - return comp -} - -const isX = id => !id || id.toLowerCase() === 'x' || id === '*' - -// ~, ~> --> * (any, kinda silly) -// ~2, ~2.x, ~2.x.x, ~>2, ~>2.x ~>2.x.x --> >=2.0.0 <3.0.0-0 -// ~2.0, ~2.0.x, ~>2.0, ~>2.0.x --> >=2.0.0 <2.1.0-0 -// ~1.2, ~1.2.x, ~>1.2, ~>1.2.x --> >=1.2.0 <1.3.0-0 -// ~1.2.3, ~>1.2.3 --> >=1.2.3 <1.3.0-0 -// ~1.2.0, ~>1.2.0 --> >=1.2.0 <1.3.0-0 -const replaceTildes = (comp, options) => - comp.trim().split(/\s+/).map((comp) => { - return replaceTilde(comp, options) - }).join(' ') - -const replaceTilde = (comp, options) => { - const r = options.loose ? re[t.TILDELOOSE] : re[t.TILDE] - return comp.replace(r, (_, M, m, p, pr) => { - debug('tilde', comp, _, M, m, p, pr) - let ret - - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = `>=${M}.0.0 <${+M + 1}.0.0-0` - } else if (isX(p)) { - // ~1.2 == >=1.2.0 <1.3.0-0 - ret = `>=${M}.${m}.0 <${M}.${+m + 1}.0-0` - } else if (pr) { - debug('replaceTilde pr', pr) - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${+m + 1}.0-0` - } else { - // ~1.2.3 == >=1.2.3 <1.3.0-0 - ret = `>=${M}.${m}.${p - } <${M}.${+m + 1}.0-0` - } - - debug('tilde return', ret) - return ret - }) -} - -// ^ --> * (any, kinda silly) -// ^2, ^2.x, ^2.x.x --> >=2.0.0 <3.0.0-0 -// ^2.0, ^2.0.x --> >=2.0.0 <3.0.0-0 -// ^1.2, ^1.2.x --> >=1.2.0 <2.0.0-0 -// ^1.2.3 --> >=1.2.3 <2.0.0-0 -// ^1.2.0 --> >=1.2.0 <2.0.0-0 -const replaceCarets = (comp, options) => - comp.trim().split(/\s+/).map((comp) => { - return replaceCaret(comp, options) - }).join(' ') - -const replaceCaret = (comp, options) => { - debug('caret', comp, options) - const r = options.loose ? re[t.CARETLOOSE] : re[t.CARET] - const z = options.includePrerelease ? '-0' : '' - return comp.replace(r, (_, M, m, p, pr) => { - debug('caret', comp, _, M, m, p, pr) - let ret - - if (isX(M)) { - ret = '' - } else if (isX(m)) { - ret = `>=${M}.0.0${z} <${+M + 1}.0.0-0` - } else if (isX(p)) { - if (M === '0') { - ret = `>=${M}.${m}.0${z} <${M}.${+m + 1}.0-0` - } else { - ret = `>=${M}.${m}.0${z} <${+M + 1}.0.0-0` - } - } else if (pr) { - debug('replaceCaret pr', pr) - if (M === '0') { - if (m === '0') { - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${m}.${+p + 1}-0` - } else { - ret = `>=${M}.${m}.${p}-${pr - } <${M}.${+m + 1}.0-0` - } - } else { - ret = `>=${M}.${m}.${p}-${pr - } <${+M + 1}.0.0-0` - } - } else { - debug('no pr') - if (M === '0') { - if (m === '0') { - ret = `>=${M}.${m}.${p - }${z} <${M}.${m}.${+p + 1}-0` - } else { - ret = `>=${M}.${m}.${p - }${z} <${M}.${+m + 1}.0-0` - } - } else { - ret = `>=${M}.${m}.${p - } <${+M + 1}.0.0-0` - } - } - - debug('caret return', ret) - return ret - }) -} - -const replaceXRanges = (comp, options) => { - debug('replaceXRanges', comp, options) - return comp.split(/\s+/).map((comp) => { - return replaceXRange(comp, options) - }).join(' ') -} - -const replaceXRange = (comp, options) => { - comp = comp.trim() - const r = options.loose ? re[t.XRANGELOOSE] : re[t.XRANGE] - return comp.replace(r, (ret, gtlt, M, m, p, pr) => { - debug('xRange', comp, ret, gtlt, M, m, p, pr) - const xM = isX(M) - const xm = xM || isX(m) - const xp = xm || isX(p) - const anyX = xp - - if (gtlt === '=' && anyX) { - gtlt = '' - } - - // if we're including prereleases in the match, then we need - // to fix this to -0, the lowest possible prerelease value - pr = options.includePrerelease ? '-0' : '' - - if (xM) { - if (gtlt === '>' || gtlt === '<') { - // nothing is allowed - ret = '<0.0.0-0' - } else { - // nothing is forbidden - ret = '*' - } - } else if (gtlt && anyX) { - // we know patch is an x, because we have any x at all. - // replace X with 0 - if (xm) { - m = 0 - } - p = 0 - - if (gtlt === '>') { - // >1 => >=2.0.0 - // >1.2 => >=1.3.0 - gtlt = '>=' - if (xm) { - M = +M + 1 - m = 0 - p = 0 - } else { - m = +m + 1 - p = 0 - } - } else if (gtlt === '<=') { - // <=0.7.x is actually <0.8.0, since any 0.7.x should - // pass. Similarly, <=7.x is actually <8.0.0, etc. - gtlt = '<' - if (xm) { - M = +M + 1 - } else { - m = +m + 1 - } - } - - if (gtlt === '<') - pr = '-0' - - ret = `${gtlt + M}.${m}.${p}${pr}` - } else if (xm) { - ret = `>=${M}.0.0${pr} <${+M + 1}.0.0-0` - } else if (xp) { - ret = `>=${M}.${m}.0${pr - } <${M}.${+m + 1}.0-0` - } - - debug('xRange return', ret) - - return ret - }) -} - -// Because * is AND-ed with everything else in the comparator, -// and '' means "any version", just remove the *s entirely. -const replaceStars = (comp, options) => { - debug('replaceStars', comp, options) - // Looseness is ignored here. star is always as loose as it gets! - return comp.trim().replace(re[t.STAR], '') -} - -const replaceGTE0 = (comp, options) => { - debug('replaceGTE0', comp, options) - return comp.trim() - .replace(re[options.includePrerelease ? t.GTE0PRE : t.GTE0], '') -} - -// This function is passed to string.replace(re[t.HYPHENRANGE]) -// M, m, patch, prerelease, build -// 1.2 - 3.4.5 => >=1.2.0 <=3.4.5 -// 1.2.3 - 3.4 => >=1.2.0 <3.5.0-0 Any 3.4.x will do -// 1.2 - 3.4 => >=1.2.0 <3.5.0-0 -const hyphenReplace = incPr => ($0, - from, fM, fm, fp, fpr, fb, - to, tM, tm, tp, tpr, tb) => { - if (isX(fM)) { - from = '' - } else if (isX(fm)) { - from = `>=${fM}.0.0${incPr ? '-0' : ''}` - } else if (isX(fp)) { - from = `>=${fM}.${fm}.0${incPr ? '-0' : ''}` - } else if (fpr) { - from = `>=${from}` - } else { - from = `>=${from}${incPr ? '-0' : ''}` - } - - if (isX(tM)) { - to = '' - } else if (isX(tm)) { - to = `<${+tM + 1}.0.0-0` - } else if (isX(tp)) { - to = `<${tM}.${+tm + 1}.0-0` - } else if (tpr) { - to = `<=${tM}.${tm}.${tp}-${tpr}` - } else if (incPr) { - to = `<${tM}.${tm}.${+tp + 1}-0` - } else { - to = `<=${to}` - } - - return (`${from} ${to}`).trim() -} - -const testSet = (set, version, options) => { - for (let i = 0; i < set.length; i++) { - if (!set[i].test(version)) { - return false - } - } - - if (version.prerelease.length && !options.includePrerelease) { - // Find the set of versions that are allowed to have prereleases - // For example, ^1.2.3-pr.1 desugars to >=1.2.3-pr.1 <2.0.0 - // That should allow `1.2.3-pr.2` to pass. - // However, `1.2.4-alpha.notready` should NOT be allowed, - // even though it's within the range set by the comparators. - for (let i = 0; i < set.length; i++) { - debug(set[i].semver) - if (set[i].semver === Comparator.ANY) { - continue - } - - if (set[i].semver.prerelease.length > 0) { - const allowed = set[i].semver - if (allowed.major === version.major && - allowed.minor === version.minor && - allowed.patch === version.patch) { - return true - } - } - } - - // Version has a -pre, but it's not one of the ones we like. - return false - } - - return true -} - - -/***/ }), - -/***/ 8088: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const debug = __nccwpck_require__(427) -const { MAX_LENGTH, MAX_SAFE_INTEGER } = __nccwpck_require__(2293) -const { re, t } = __nccwpck_require__(9523) - -const parseOptions = __nccwpck_require__(785) -const { compareIdentifiers } = __nccwpck_require__(2463) -class SemVer { - constructor (version, options) { - options = parseOptions(options) - - if (version instanceof SemVer) { - if (version.loose === !!options.loose && - version.includePrerelease === !!options.includePrerelease) { - return version - } else { - version = version.version - } - } else if (typeof version !== 'string') { - throw new TypeError(`Invalid Version: ${version}`) - } - - if (version.length > MAX_LENGTH) { - throw new TypeError( - `version is longer than ${MAX_LENGTH} characters` - ) - } - - debug('SemVer', version, options) - this.options = options - this.loose = !!options.loose - // this isn't actually relevant for versions, but keep it so that we - // don't run into trouble passing this.options around. - this.includePrerelease = !!options.includePrerelease - - const m = version.trim().match(options.loose ? re[t.LOOSE] : re[t.FULL]) - - if (!m) { - throw new TypeError(`Invalid Version: ${version}`) - } - - this.raw = version - - // these are actually numbers - this.major = +m[1] - this.minor = +m[2] - this.patch = +m[3] - - if (this.major > MAX_SAFE_INTEGER || this.major < 0) { - throw new TypeError('Invalid major version') - } - - if (this.minor > MAX_SAFE_INTEGER || this.minor < 0) { - throw new TypeError('Invalid minor version') - } - - if (this.patch > MAX_SAFE_INTEGER || this.patch < 0) { - throw new TypeError('Invalid patch version') - } - - // numberify any prerelease numeric ids - if (!m[4]) { - this.prerelease = [] - } else { - this.prerelease = m[4].split('.').map((id) => { - if (/^[0-9]+$/.test(id)) { - const num = +id - if (num >= 0 && num < MAX_SAFE_INTEGER) { - return num - } - } - return id - }) - } - - this.build = m[5] ? m[5].split('.') : [] - this.format() - } - - format () { - this.version = `${this.major}.${this.minor}.${this.patch}` - if (this.prerelease.length) { - this.version += `-${this.prerelease.join('.')}` - } - return this.version - } - - toString () { - return this.version - } - - compare (other) { - debug('SemVer.compare', this.version, this.options, other) - if (!(other instanceof SemVer)) { - if (typeof other === 'string' && other === this.version) { - return 0 - } - other = new SemVer(other, this.options) - } - - if (other.version === this.version) { - return 0 - } - - return this.compareMain(other) || this.comparePre(other) - } - - compareMain (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - return ( - compareIdentifiers(this.major, other.major) || - compareIdentifiers(this.minor, other.minor) || - compareIdentifiers(this.patch, other.patch) - ) - } - - comparePre (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - // NOT having a prerelease is > having one - if (this.prerelease.length && !other.prerelease.length) { - return -1 - } else if (!this.prerelease.length && other.prerelease.length) { - return 1 - } else if (!this.prerelease.length && !other.prerelease.length) { - return 0 - } - - let i = 0 - do { - const a = this.prerelease[i] - const b = other.prerelease[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) - } - - compareBuild (other) { - if (!(other instanceof SemVer)) { - other = new SemVer(other, this.options) - } - - let i = 0 - do { - const a = this.build[i] - const b = other.build[i] - debug('prerelease compare', i, a, b) - if (a === undefined && b === undefined) { - return 0 - } else if (b === undefined) { - return 1 - } else if (a === undefined) { - return -1 - } else if (a === b) { - continue - } else { - return compareIdentifiers(a, b) - } - } while (++i) - } - - // preminor will bump the version up to the next minor release, and immediately - // down to pre-release. premajor and prepatch work the same way. - inc (release, identifier) { - switch (release) { - case 'premajor': - this.prerelease.length = 0 - this.patch = 0 - this.minor = 0 - this.major++ - this.inc('pre', identifier) - break - case 'preminor': - this.prerelease.length = 0 - this.patch = 0 - this.minor++ - this.inc('pre', identifier) - break - case 'prepatch': - // If this is already a prerelease, it will bump to the next version - // drop any prereleases that might already exist, since they are not - // relevant at this point. - this.prerelease.length = 0 - this.inc('patch', identifier) - this.inc('pre', identifier) - break - // If the input is a non-prerelease version, this acts the same as - // prepatch. - case 'prerelease': - if (this.prerelease.length === 0) { - this.inc('patch', identifier) - } - this.inc('pre', identifier) - break - - case 'major': - // If this is a pre-major version, bump up to the same major version. - // Otherwise increment major. - // 1.0.0-5 bumps to 1.0.0 - // 1.1.0 bumps to 2.0.0 - if ( - this.minor !== 0 || - this.patch !== 0 || - this.prerelease.length === 0 - ) { - this.major++ - } - this.minor = 0 - this.patch = 0 - this.prerelease = [] - break - case 'minor': - // If this is a pre-minor version, bump up to the same minor version. - // Otherwise increment minor. - // 1.2.0-5 bumps to 1.2.0 - // 1.2.1 bumps to 1.3.0 - if (this.patch !== 0 || this.prerelease.length === 0) { - this.minor++ - } - this.patch = 0 - this.prerelease = [] - break - case 'patch': - // If this is not a pre-release version, it will increment the patch. - // If it is a pre-release it will bump up to the same patch version. - // 1.2.0-5 patches to 1.2.0 - // 1.2.0 patches to 1.2.1 - if (this.prerelease.length === 0) { - this.patch++ - } - this.prerelease = [] - break - // This probably shouldn't be used publicly. - // 1.0.0 'pre' would become 1.0.0-0 which is the wrong direction. - case 'pre': - if (this.prerelease.length === 0) { - this.prerelease = [0] - } else { - let i = this.prerelease.length - while (--i >= 0) { - if (typeof this.prerelease[i] === 'number') { - this.prerelease[i]++ - i = -2 - } - } - if (i === -1) { - // didn't increment anything - this.prerelease.push(0) - } - } - if (identifier) { - // 1.2.0-beta.1 bumps to 1.2.0-beta.2, - // 1.2.0-beta.fooblz or 1.2.0-beta bumps to 1.2.0-beta.0 - if (this.prerelease[0] === identifier) { - if (isNaN(this.prerelease[1])) { - this.prerelease = [identifier, 0] - } - } else { - this.prerelease = [identifier, 0] - } - } - break - - default: - throw new Error(`invalid increment argument: ${release}`) - } - this.format() - this.raw = this.version - return this - } -} - -module.exports = SemVer - - -/***/ }), - -/***/ 8848: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const parse = __nccwpck_require__(5925) -const clean = (version, options) => { - const s = parse(version.trim().replace(/^[=v]+/, ''), options) - return s ? s.version : null -} -module.exports = clean - - -/***/ }), - -/***/ 5098: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const eq = __nccwpck_require__(1898) -const neq = __nccwpck_require__(6017) -const gt = __nccwpck_require__(4123) -const gte = __nccwpck_require__(5522) -const lt = __nccwpck_require__(194) -const lte = __nccwpck_require__(7520) - -const cmp = (a, op, b, loose) => { - switch (op) { - case '===': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a === b - - case '!==': - if (typeof a === 'object') - a = a.version - if (typeof b === 'object') - b = b.version - return a !== b - - case '': - case '=': - case '==': - return eq(a, b, loose) - - case '!=': - return neq(a, b, loose) - - case '>': - return gt(a, b, loose) - - case '>=': - return gte(a, b, loose) - - case '<': - return lt(a, b, loose) - - case '<=': - return lte(a, b, loose) - - default: - throw new TypeError(`Invalid operator: ${op}`) - } -} -module.exports = cmp - - -/***/ }), - -/***/ 3466: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const SemVer = __nccwpck_require__(8088) -const parse = __nccwpck_require__(5925) -const {re, t} = __nccwpck_require__(9523) - -const coerce = (version, options) => { - if (version instanceof SemVer) { - return version - } - - if (typeof version === 'number') { - version = String(version) - } - - if (typeof version !== 'string') { - return null - } - - options = options || {} - - let match = null - if (!options.rtl) { - match = version.match(re[t.COERCE]) - } else { - // Find the right-most coercible string that does not share - // a terminus with a more left-ward coercible string. - // Eg, '1.2.3.4' wants to coerce '2.3.4', not '3.4' or '4' - // - // Walk through the string checking with a /g regexp - // Manually set the index so as to pick up overlapping matches. - // Stop when we get a match that ends at the string end, since no - // coercible string can be more right-ward without the same terminus. - let next - while ((next = re[t.COERCERTL].exec(version)) && - (!match || match.index + match[0].length !== version.length) - ) { - if (!match || - next.index + next[0].length !== match.index + match[0].length) { - match = next - } - re[t.COERCERTL].lastIndex = next.index + next[1].length + next[2].length - } - // leave it in a clean state - re[t.COERCERTL].lastIndex = -1 - } - - if (match === null) - return null - - return parse(`${match[2]}.${match[3] || '0'}.${match[4] || '0'}`, options) -} -module.exports = coerce - - -/***/ }), - -/***/ 2156: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const SemVer = __nccwpck_require__(8088) -const compareBuild = (a, b, loose) => { - const versionA = new SemVer(a, loose) - const versionB = new SemVer(b, loose) - return versionA.compare(versionB) || versionA.compareBuild(versionB) -} -module.exports = compareBuild - - -/***/ }), - -/***/ 2804: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const compare = __nccwpck_require__(4309) -const compareLoose = (a, b) => compare(a, b, true) -module.exports = compareLoose - - -/***/ }), - -/***/ 4309: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const SemVer = __nccwpck_require__(8088) -const compare = (a, b, loose) => - new SemVer(a, loose).compare(new SemVer(b, loose)) - -module.exports = compare - - -/***/ }), - -/***/ 4297: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const parse = __nccwpck_require__(5925) -const eq = __nccwpck_require__(1898) - -const diff = (version1, version2) => { - if (eq(version1, version2)) { - return null - } else { - const v1 = parse(version1) - const v2 = parse(version2) - const hasPre = v1.prerelease.length || v2.prerelease.length - const prefix = hasPre ? 'pre' : '' - const defaultResult = hasPre ? 'prerelease' : '' - for (const key in v1) { - if (key === 'major' || key === 'minor' || key === 'patch') { - if (v1[key] !== v2[key]) { - return prefix + key - } - } - } - return defaultResult // may be undefined - } -} -module.exports = diff - - -/***/ }), - -/***/ 1898: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const compare = __nccwpck_require__(4309) -const eq = (a, b, loose) => compare(a, b, loose) === 0 -module.exports = eq - - -/***/ }), - -/***/ 4123: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const compare = __nccwpck_require__(4309) -const gt = (a, b, loose) => compare(a, b, loose) > 0 -module.exports = gt - - -/***/ }), - -/***/ 5522: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const compare = __nccwpck_require__(4309) -const gte = (a, b, loose) => compare(a, b, loose) >= 0 -module.exports = gte - - -/***/ }), - -/***/ 900: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const SemVer = __nccwpck_require__(8088) - -const inc = (version, release, options, identifier) => { - if (typeof (options) === 'string') { - identifier = options - options = undefined - } - - try { - return new SemVer(version, options).inc(release, identifier).version - } catch (er) { - return null - } -} -module.exports = inc - - -/***/ }), - -/***/ 194: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const compare = __nccwpck_require__(4309) -const lt = (a, b, loose) => compare(a, b, loose) < 0 -module.exports = lt - - -/***/ }), - -/***/ 7520: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const compare = __nccwpck_require__(4309) -const lte = (a, b, loose) => compare(a, b, loose) <= 0 -module.exports = lte - - -/***/ }), - -/***/ 6688: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const SemVer = __nccwpck_require__(8088) -const major = (a, loose) => new SemVer(a, loose).major -module.exports = major - - -/***/ }), - -/***/ 8447: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const SemVer = __nccwpck_require__(8088) -const minor = (a, loose) => new SemVer(a, loose).minor -module.exports = minor - - -/***/ }), - -/***/ 6017: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const compare = __nccwpck_require__(4309) -const neq = (a, b, loose) => compare(a, b, loose) !== 0 -module.exports = neq - - -/***/ }), - -/***/ 5925: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const {MAX_LENGTH} = __nccwpck_require__(2293) -const { re, t } = __nccwpck_require__(9523) -const SemVer = __nccwpck_require__(8088) - -const parseOptions = __nccwpck_require__(785) -const parse = (version, options) => { - options = parseOptions(options) - - if (version instanceof SemVer) { - return version - } - - if (typeof version !== 'string') { - return null - } - - if (version.length > MAX_LENGTH) { - return null - } - - const r = options.loose ? re[t.LOOSE] : re[t.FULL] - if (!r.test(version)) { - return null - } - - try { - return new SemVer(version, options) - } catch (er) { - return null - } -} - -module.exports = parse - - -/***/ }), - -/***/ 2866: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const SemVer = __nccwpck_require__(8088) -const patch = (a, loose) => new SemVer(a, loose).patch -module.exports = patch - - -/***/ }), - -/***/ 6014: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const parse = __nccwpck_require__(5925) -const prerelease = (version, options) => { - const parsed = parse(version, options) - return (parsed && parsed.prerelease.length) ? parsed.prerelease : null -} -module.exports = prerelease - - -/***/ }), - -/***/ 7499: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const compare = __nccwpck_require__(4309) -const rcompare = (a, b, loose) => compare(b, a, loose) -module.exports = rcompare - - -/***/ }), - -/***/ 8701: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const compareBuild = __nccwpck_require__(2156) -const rsort = (list, loose) => list.sort((a, b) => compareBuild(b, a, loose)) -module.exports = rsort - - -/***/ }), - -/***/ 6055: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const Range = __nccwpck_require__(9828) -const satisfies = (version, range, options) => { - try { - range = new Range(range, options) - } catch (er) { - return false - } - return range.test(version) -} -module.exports = satisfies - - -/***/ }), - -/***/ 1426: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const compareBuild = __nccwpck_require__(2156) -const sort = (list, loose) => list.sort((a, b) => compareBuild(a, b, loose)) -module.exports = sort - - -/***/ }), - -/***/ 9601: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const parse = __nccwpck_require__(5925) -const valid = (version, options) => { - const v = parse(version, options) - return v ? v.version : null -} -module.exports = valid - - -/***/ }), - -/***/ 1383: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -// just pre-load all the stuff that index.js lazily exports -const internalRe = __nccwpck_require__(9523) -module.exports = { - re: internalRe.re, - src: internalRe.src, - tokens: internalRe.t, - SEMVER_SPEC_VERSION: __nccwpck_require__(2293).SEMVER_SPEC_VERSION, - SemVer: __nccwpck_require__(8088), - compareIdentifiers: __nccwpck_require__(2463).compareIdentifiers, - rcompareIdentifiers: __nccwpck_require__(2463).rcompareIdentifiers, - parse: __nccwpck_require__(5925), - valid: __nccwpck_require__(9601), - clean: __nccwpck_require__(8848), - inc: __nccwpck_require__(900), - diff: __nccwpck_require__(4297), - major: __nccwpck_require__(6688), - minor: __nccwpck_require__(8447), - patch: __nccwpck_require__(2866), - prerelease: __nccwpck_require__(6014), - compare: __nccwpck_require__(4309), - rcompare: __nccwpck_require__(7499), - compareLoose: __nccwpck_require__(2804), - compareBuild: __nccwpck_require__(2156), - sort: __nccwpck_require__(1426), - rsort: __nccwpck_require__(8701), - gt: __nccwpck_require__(4123), - lt: __nccwpck_require__(194), - eq: __nccwpck_require__(1898), - neq: __nccwpck_require__(6017), - gte: __nccwpck_require__(5522), - lte: __nccwpck_require__(7520), - cmp: __nccwpck_require__(5098), - coerce: __nccwpck_require__(3466), - Comparator: __nccwpck_require__(1532), - Range: __nccwpck_require__(9828), - satisfies: __nccwpck_require__(6055), - toComparators: __nccwpck_require__(2706), - maxSatisfying: __nccwpck_require__(579), - minSatisfying: __nccwpck_require__(832), - minVersion: __nccwpck_require__(4179), - validRange: __nccwpck_require__(2098), - outside: __nccwpck_require__(420), - gtr: __nccwpck_require__(9380), - ltr: __nccwpck_require__(3323), - intersects: __nccwpck_require__(7008), - simplifyRange: __nccwpck_require__(5297), - subset: __nccwpck_require__(7863), -} - - -/***/ }), - -/***/ 2293: -/***/ ((module) => { - -// Note: this is the semver.org version of the spec that it implements -// Not necessarily the package version of this code. -const SEMVER_SPEC_VERSION = '2.0.0' - -const MAX_LENGTH = 256 -const MAX_SAFE_INTEGER = Number.MAX_SAFE_INTEGER || - /* istanbul ignore next */ 9007199254740991 - -// Max safe segment length for coercion. -const MAX_SAFE_COMPONENT_LENGTH = 16 - -module.exports = { - SEMVER_SPEC_VERSION, - MAX_LENGTH, - MAX_SAFE_INTEGER, - MAX_SAFE_COMPONENT_LENGTH -} - - -/***/ }), - -/***/ 427: -/***/ ((module) => { - -const debug = ( - typeof process === 'object' && - process.env && - process.env.NODE_DEBUG && - /\bsemver\b/i.test(process.env.NODE_DEBUG) -) ? (...args) => console.error('SEMVER', ...args) - : () => {} - -module.exports = debug - - -/***/ }), - -/***/ 2463: -/***/ ((module) => { - -const numeric = /^[0-9]+$/ -const compareIdentifiers = (a, b) => { - const anum = numeric.test(a) - const bnum = numeric.test(b) - - if (anum && bnum) { - a = +a - b = +b - } - - return a === b ? 0 - : (anum && !bnum) ? -1 - : (bnum && !anum) ? 1 - : a < b ? -1 - : 1 -} - -const rcompareIdentifiers = (a, b) => compareIdentifiers(b, a) - -module.exports = { - compareIdentifiers, - rcompareIdentifiers -} - - -/***/ }), - -/***/ 785: -/***/ ((module) => { - -// parse out just the options we care about so we always get a consistent -// obj with keys in a consistent order. -const opts = ['includePrerelease', 'loose', 'rtl'] -const parseOptions = options => - !options ? {} - : typeof options !== 'object' ? { loose: true } - : opts.filter(k => options[k]).reduce((options, k) => { - options[k] = true - return options - }, {}) -module.exports = parseOptions - - -/***/ }), - -/***/ 9523: -/***/ ((module, exports, __nccwpck_require__) => { - -const { MAX_SAFE_COMPONENT_LENGTH } = __nccwpck_require__(2293) -const debug = __nccwpck_require__(427) -exports = module.exports = {} - -// The actual regexps go on exports.re -const re = exports.re = [] -const src = exports.src = [] -const t = exports.t = {} -let R = 0 - -const createToken = (name, value, isGlobal) => { - const index = R++ - debug(index, value) - t[name] = index - src[index] = value - re[index] = new RegExp(value, isGlobal ? 'g' : undefined) -} - -// The following Regular Expressions can be used for tokenizing, -// validating, and parsing SemVer version strings. - -// ## Numeric Identifier -// A single `0`, or a non-zero digit followed by zero or more digits. - -createToken('NUMERICIDENTIFIER', '0|[1-9]\\d*') -createToken('NUMERICIDENTIFIERLOOSE', '[0-9]+') - -// ## Non-numeric Identifier -// Zero or more digits, followed by a letter or hyphen, and then zero or -// more letters, digits, or hyphens. - -createToken('NONNUMERICIDENTIFIER', '\\d*[a-zA-Z-][a-zA-Z0-9-]*') - -// ## Main Version -// Three dot-separated numeric identifiers. - -createToken('MAINVERSION', `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})\\.` + - `(${src[t.NUMERICIDENTIFIER]})`) - -createToken('MAINVERSIONLOOSE', `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})\\.` + - `(${src[t.NUMERICIDENTIFIERLOOSE]})`) - -// ## Pre-release Version Identifier -// A numeric identifier, or a non-numeric identifier. - -createToken('PRERELEASEIDENTIFIER', `(?:${src[t.NUMERICIDENTIFIER] -}|${src[t.NONNUMERICIDENTIFIER]})`) - -createToken('PRERELEASEIDENTIFIERLOOSE', `(?:${src[t.NUMERICIDENTIFIERLOOSE] -}|${src[t.NONNUMERICIDENTIFIER]})`) - -// ## Pre-release Version -// Hyphen, followed by one or more dot-separated pre-release version -// identifiers. - -createToken('PRERELEASE', `(?:-(${src[t.PRERELEASEIDENTIFIER] -}(?:\\.${src[t.PRERELEASEIDENTIFIER]})*))`) - -createToken('PRERELEASELOOSE', `(?:-?(${src[t.PRERELEASEIDENTIFIERLOOSE] -}(?:\\.${src[t.PRERELEASEIDENTIFIERLOOSE]})*))`) - -// ## Build Metadata Identifier -// Any combination of digits, letters, or hyphens. - -createToken('BUILDIDENTIFIER', '[0-9A-Za-z-]+') - -// ## Build Metadata -// Plus sign, followed by one or more period-separated build metadata -// identifiers. - -createToken('BUILD', `(?:\\+(${src[t.BUILDIDENTIFIER] -}(?:\\.${src[t.BUILDIDENTIFIER]})*))`) - -// ## Full Version String -// A main version, followed optionally by a pre-release version and -// build metadata. - -// Note that the only major, minor, patch, and pre-release sections of -// the version string are capturing groups. The build metadata is not a -// capturing group, because it should not ever be used in version -// comparison. - -createToken('FULLPLAIN', `v?${src[t.MAINVERSION] -}${src[t.PRERELEASE]}?${ - src[t.BUILD]}?`) - -createToken('FULL', `^${src[t.FULLPLAIN]}$`) - -// like full, but allows v1.2.3 and =1.2.3, which people do sometimes. -// also, 1.0.0alpha1 (prerelease without the hyphen) which is pretty -// common in the npm registry. -createToken('LOOSEPLAIN', `[v=\\s]*${src[t.MAINVERSIONLOOSE] -}${src[t.PRERELEASELOOSE]}?${ - src[t.BUILD]}?`) - -createToken('LOOSE', `^${src[t.LOOSEPLAIN]}$`) - -createToken('GTLT', '((?:<|>)?=?)') - -// Something like "2.*" or "1.2.x". -// Note that "x.x" is a valid xRange identifer, meaning "any version" -// Only the first item is strictly required. -createToken('XRANGEIDENTIFIERLOOSE', `${src[t.NUMERICIDENTIFIERLOOSE]}|x|X|\\*`) -createToken('XRANGEIDENTIFIER', `${src[t.NUMERICIDENTIFIER]}|x|X|\\*`) - -createToken('XRANGEPLAIN', `[v=\\s]*(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIER]})` + - `(?:${src[t.PRERELEASE]})?${ - src[t.BUILD]}?` + - `)?)?`) - -createToken('XRANGEPLAINLOOSE', `[v=\\s]*(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:\\.(${src[t.XRANGEIDENTIFIERLOOSE]})` + - `(?:${src[t.PRERELEASELOOSE]})?${ - src[t.BUILD]}?` + - `)?)?`) - -createToken('XRANGE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAIN]}$`) -createToken('XRANGELOOSE', `^${src[t.GTLT]}\\s*${src[t.XRANGEPLAINLOOSE]}$`) - -// Coercion. -// Extract anything that could conceivably be a part of a valid semver -createToken('COERCE', `${'(^|[^\\d])' + - '(\\d{1,'}${MAX_SAFE_COMPONENT_LENGTH}})` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + - `(?:\\.(\\d{1,${MAX_SAFE_COMPONENT_LENGTH}}))?` + - `(?:$|[^\\d])`) -createToken('COERCERTL', src[t.COERCE], true) - -// Tilde ranges. -// Meaning is "reasonably at or greater than" -createToken('LONETILDE', '(?:~>?)') - -createToken('TILDETRIM', `(\\s*)${src[t.LONETILDE]}\\s+`, true) -exports.tildeTrimReplace = '$1~' - -createToken('TILDE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAIN]}$`) -createToken('TILDELOOSE', `^${src[t.LONETILDE]}${src[t.XRANGEPLAINLOOSE]}$`) - -// Caret ranges. -// Meaning is "at least and backwards compatible with" -createToken('LONECARET', '(?:\\^)') - -createToken('CARETTRIM', `(\\s*)${src[t.LONECARET]}\\s+`, true) -exports.caretTrimReplace = '$1^' - -createToken('CARET', `^${src[t.LONECARET]}${src[t.XRANGEPLAIN]}$`) -createToken('CARETLOOSE', `^${src[t.LONECARET]}${src[t.XRANGEPLAINLOOSE]}$`) - -// A simple gt/lt/eq thing, or just "" to indicate "any version" -createToken('COMPARATORLOOSE', `^${src[t.GTLT]}\\s*(${src[t.LOOSEPLAIN]})$|^$`) -createToken('COMPARATOR', `^${src[t.GTLT]}\\s*(${src[t.FULLPLAIN]})$|^$`) - -// An expression to strip any whitespace between the gtlt and the thing -// it modifies, so that `> 1.2.3` ==> `>1.2.3` -createToken('COMPARATORTRIM', `(\\s*)${src[t.GTLT] -}\\s*(${src[t.LOOSEPLAIN]}|${src[t.XRANGEPLAIN]})`, true) -exports.comparatorTrimReplace = '$1$2$3' - -// Something like `1.2.3 - 1.2.4` -// Note that these all use the loose form, because they'll be -// checked against either the strict or loose comparator form -// later. -createToken('HYPHENRANGE', `^\\s*(${src[t.XRANGEPLAIN]})` + - `\\s+-\\s+` + - `(${src[t.XRANGEPLAIN]})` + - `\\s*$`) - -createToken('HYPHENRANGELOOSE', `^\\s*(${src[t.XRANGEPLAINLOOSE]})` + - `\\s+-\\s+` + - `(${src[t.XRANGEPLAINLOOSE]})` + - `\\s*$`) - -// Star ranges basically just allow anything at all. -createToken('STAR', '(<|>)?=?\\s*\\*') -// >=0.0.0 is like a star -createToken('GTE0', '^\\s*>=\\s*0\.0\.0\\s*$') -createToken('GTE0PRE', '^\\s*>=\\s*0\.0\.0-0\\s*$') - - -/***/ }), - -/***/ 9380: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -// Determine if version is greater than all the versions possible in the range. -const outside = __nccwpck_require__(420) -const gtr = (version, range, options) => outside(version, range, '>', options) -module.exports = gtr - - -/***/ }), - -/***/ 7008: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const Range = __nccwpck_require__(9828) -const intersects = (r1, r2, options) => { - r1 = new Range(r1, options) - r2 = new Range(r2, options) - return r1.intersects(r2) -} -module.exports = intersects - - -/***/ }), - -/***/ 3323: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const outside = __nccwpck_require__(420) -// Determine if version is less than all the versions possible in the range -const ltr = (version, range, options) => outside(version, range, '<', options) -module.exports = ltr - - -/***/ }), - -/***/ 579: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const SemVer = __nccwpck_require__(8088) -const Range = __nccwpck_require__(9828) - -const maxSatisfying = (versions, range, options) => { - let max = null - let maxSV = null - let rangeObj = null - try { - rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!max || maxSV.compare(v) === -1) { - // compare(max, v, true) - max = v - maxSV = new SemVer(max, options) - } - } - }) - return max -} -module.exports = maxSatisfying - - -/***/ }), - -/***/ 832: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const SemVer = __nccwpck_require__(8088) -const Range = __nccwpck_require__(9828) -const minSatisfying = (versions, range, options) => { - let min = null - let minSV = null - let rangeObj = null - try { - rangeObj = new Range(range, options) - } catch (er) { - return null - } - versions.forEach((v) => { - if (rangeObj.test(v)) { - // satisfies(v, range, options) - if (!min || minSV.compare(v) === 1) { - // compare(min, v, true) - min = v - minSV = new SemVer(min, options) - } - } - }) - return min -} -module.exports = minSatisfying - - -/***/ }), - -/***/ 4179: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const SemVer = __nccwpck_require__(8088) -const Range = __nccwpck_require__(9828) -const gt = __nccwpck_require__(4123) - -const minVersion = (range, loose) => { - range = new Range(range, loose) - - let minver = new SemVer('0.0.0') - if (range.test(minver)) { - return minver - } - - minver = new SemVer('0.0.0-0') - if (range.test(minver)) { - return minver - } - - minver = null - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i] - - let setMin = null - comparators.forEach((comparator) => { - // Clone to avoid manipulating the comparator's semver object. - const compver = new SemVer(comparator.semver.version) - switch (comparator.operator) { - case '>': - if (compver.prerelease.length === 0) { - compver.patch++ - } else { - compver.prerelease.push(0) - } - compver.raw = compver.format() - /* fallthrough */ - case '': - case '>=': - if (!setMin || gt(compver, setMin)) { - setMin = compver - } - break - case '<': - case '<=': - /* Ignore maximum versions */ - break - /* istanbul ignore next */ - default: - throw new Error(`Unexpected operation: ${comparator.operator}`) - } - }) - if (setMin && (!minver || gt(minver, setMin))) - minver = setMin - } - - if (minver && range.test(minver)) { - return minver - } - - return null -} -module.exports = minVersion - - -/***/ }), - -/***/ 420: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const SemVer = __nccwpck_require__(8088) -const Comparator = __nccwpck_require__(1532) -const {ANY} = Comparator -const Range = __nccwpck_require__(9828) -const satisfies = __nccwpck_require__(6055) -const gt = __nccwpck_require__(4123) -const lt = __nccwpck_require__(194) -const lte = __nccwpck_require__(7520) -const gte = __nccwpck_require__(5522) - -const outside = (version, range, hilo, options) => { - version = new SemVer(version, options) - range = new Range(range, options) - - let gtfn, ltefn, ltfn, comp, ecomp - switch (hilo) { - case '>': - gtfn = gt - ltefn = lte - ltfn = lt - comp = '>' - ecomp = '>=' - break - case '<': - gtfn = lt - ltefn = gte - ltfn = gt - comp = '<' - ecomp = '<=' - break - default: - throw new TypeError('Must provide a hilo val of "<" or ">"') - } - - // If it satisfies the range it is not outside - if (satisfies(version, range, options)) { - return false - } - - // From now on, variable terms are as if we're in "gtr" mode. - // but note that everything is flipped for the "ltr" function. - - for (let i = 0; i < range.set.length; ++i) { - const comparators = range.set[i] - - let high = null - let low = null - - comparators.forEach((comparator) => { - if (comparator.semver === ANY) { - comparator = new Comparator('>=0.0.0') - } - high = high || comparator - low = low || comparator - if (gtfn(comparator.semver, high.semver, options)) { - high = comparator - } else if (ltfn(comparator.semver, low.semver, options)) { - low = comparator - } - }) - - // If the edge version comparator has a operator then our version - // isn't outside it - if (high.operator === comp || high.operator === ecomp) { - return false - } - - // If the lowest version comparator has an operator and our version - // is less than it then it isn't higher than the range - if ((!low.operator || low.operator === comp) && - ltefn(version, low.semver)) { - return false - } else if (low.operator === ecomp && ltfn(version, low.semver)) { - return false - } - } - return true -} - -module.exports = outside - - -/***/ }), - -/***/ 5297: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -// given a set of versions and a range, create a "simplified" range -// that includes the same versions that the original range does -// If the original range is shorter than the simplified one, return that. -const satisfies = __nccwpck_require__(6055) -const compare = __nccwpck_require__(4309) -module.exports = (versions, range, options) => { - const set = [] - let min = null - let prev = null - const v = versions.sort((a, b) => compare(a, b, options)) - for (const version of v) { - const included = satisfies(version, range, options) - if (included) { - prev = version - if (!min) - min = version - } else { - if (prev) { - set.push([min, prev]) - } - prev = null - min = null - } - } - if (min) - set.push([min, null]) - - const ranges = [] - for (const [min, max] of set) { - if (min === max) - ranges.push(min) - else if (!max && min === v[0]) - ranges.push('*') - else if (!max) - ranges.push(`>=${min}`) - else if (min === v[0]) - ranges.push(`<=${max}`) - else - ranges.push(`${min} - ${max}`) - } - const simplified = ranges.join(' || ') - const original = typeof range.raw === 'string' ? range.raw : String(range) - return simplified.length < original.length ? simplified : range -} - - -/***/ }), - -/***/ 7863: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const Range = __nccwpck_require__(9828) -const Comparator = __nccwpck_require__(1532) -const { ANY } = Comparator -const satisfies = __nccwpck_require__(6055) -const compare = __nccwpck_require__(4309) - -// Complex range `r1 || r2 || ...` is a subset of `R1 || R2 || ...` iff: -// - Every simple range `r1, r2, ...` is a null set, OR -// - Every simple range `r1, r2, ...` which is not a null set is a subset of -// some `R1, R2, ...` -// -// Simple range `c1 c2 ...` is a subset of simple range `C1 C2 ...` iff: -// - If c is only the ANY comparator -// - If C is only the ANY comparator, return true -// - Else if in prerelease mode, return false -// - else replace c with `[>=0.0.0]` -// - If C is only the ANY comparator -// - if in prerelease mode, return true -// - else replace C with `[>=0.0.0]` -// - Let EQ be the set of = comparators in c -// - If EQ is more than one, return true (null set) -// - Let GT be the highest > or >= comparator in c -// - Let LT be the lowest < or <= comparator in c -// - If GT and LT, and GT.semver > LT.semver, return true (null set) -// - If any C is a = range, and GT or LT are set, return false -// - If EQ -// - If GT, and EQ does not satisfy GT, return true (null set) -// - If LT, and EQ does not satisfy LT, return true (null set) -// - If EQ satisfies every C, return true -// - Else return false -// - If GT -// - If GT.semver is lower than any > or >= comp in C, return false -// - If GT is >=, and GT.semver does not satisfy every C, return false -// - If GT.semver has a prerelease, and not in prerelease mode -// - If no C has a prerelease and the GT.semver tuple, return false -// - If LT -// - If LT.semver is greater than any < or <= comp in C, return false -// - If LT is <=, and LT.semver does not satisfy every C, return false -// - If GT.semver has a prerelease, and not in prerelease mode -// - If no C has a prerelease and the LT.semver tuple, return false -// - Else return true - -const subset = (sub, dom, options = {}) => { - if (sub === dom) - return true - - sub = new Range(sub, options) - dom = new Range(dom, options) - let sawNonNull = false - - OUTER: for (const simpleSub of sub.set) { - for (const simpleDom of dom.set) { - const isSub = simpleSubset(simpleSub, simpleDom, options) - sawNonNull = sawNonNull || isSub !== null - if (isSub) - continue OUTER - } - // the null set is a subset of everything, but null simple ranges in - // a complex range should be ignored. so if we saw a non-null range, - // then we know this isn't a subset, but if EVERY simple range was null, - // then it is a subset. - if (sawNonNull) - return false - } - return true -} - -const simpleSubset = (sub, dom, options) => { - if (sub === dom) - return true - - if (sub.length === 1 && sub[0].semver === ANY) { - if (dom.length === 1 && dom[0].semver === ANY) - return true - else if (options.includePrerelease) - sub = [ new Comparator('>=0.0.0-0') ] - else - sub = [ new Comparator('>=0.0.0') ] - } - - if (dom.length === 1 && dom[0].semver === ANY) { - if (options.includePrerelease) - return true - else - dom = [ new Comparator('>=0.0.0') ] - } - - const eqSet = new Set() - let gt, lt - for (const c of sub) { - if (c.operator === '>' || c.operator === '>=') - gt = higherGT(gt, c, options) - else if (c.operator === '<' || c.operator === '<=') - lt = lowerLT(lt, c, options) - else - eqSet.add(c.semver) - } - - if (eqSet.size > 1) - return null - - let gtltComp - if (gt && lt) { - gtltComp = compare(gt.semver, lt.semver, options) - if (gtltComp > 0) - return null - else if (gtltComp === 0 && (gt.operator !== '>=' || lt.operator !== '<=')) - return null - } - - // will iterate one or zero times - for (const eq of eqSet) { - if (gt && !satisfies(eq, String(gt), options)) - return null - - if (lt && !satisfies(eq, String(lt), options)) - return null - - for (const c of dom) { - if (!satisfies(eq, String(c), options)) - return false - } - - return true - } - - let higher, lower - let hasDomLT, hasDomGT - // if the subset has a prerelease, we need a comparator in the superset - // with the same tuple and a prerelease, or it's not a subset - let needDomLTPre = lt && - !options.includePrerelease && - lt.semver.prerelease.length ? lt.semver : false - let needDomGTPre = gt && - !options.includePrerelease && - gt.semver.prerelease.length ? gt.semver : false - // exception: <1.2.3-0 is the same as <1.2.3 - if (needDomLTPre && needDomLTPre.prerelease.length === 1 && - lt.operator === '<' && needDomLTPre.prerelease[0] === 0) { - needDomLTPre = false - } - - for (const c of dom) { - hasDomGT = hasDomGT || c.operator === '>' || c.operator === '>=' - hasDomLT = hasDomLT || c.operator === '<' || c.operator === '<=' - if (gt) { - if (needDomGTPre) { - if (c.semver.prerelease && c.semver.prerelease.length && - c.semver.major === needDomGTPre.major && - c.semver.minor === needDomGTPre.minor && - c.semver.patch === needDomGTPre.patch) { - needDomGTPre = false - } - } - if (c.operator === '>' || c.operator === '>=') { - higher = higherGT(gt, c, options) - if (higher === c && higher !== gt) - return false - } else if (gt.operator === '>=' && !satisfies(gt.semver, String(c), options)) - return false - } - if (lt) { - if (needDomLTPre) { - if (c.semver.prerelease && c.semver.prerelease.length && - c.semver.major === needDomLTPre.major && - c.semver.minor === needDomLTPre.minor && - c.semver.patch === needDomLTPre.patch) { - needDomLTPre = false - } - } - if (c.operator === '<' || c.operator === '<=') { - lower = lowerLT(lt, c, options) - if (lower === c && lower !== lt) - return false - } else if (lt.operator === '<=' && !satisfies(lt.semver, String(c), options)) - return false - } - if (!c.operator && (lt || gt) && gtltComp !== 0) - return false - } - - // if there was a < or >, and nothing in the dom, then must be false - // UNLESS it was limited by another range in the other direction. - // Eg, >1.0.0 <1.0.1 is still a subset of <2.0.0 - if (gt && hasDomLT && !lt && gtltComp !== 0) - return false - - if (lt && hasDomGT && !gt && gtltComp !== 0) - return false - - // we needed a prerelease range in a specific tuple, but didn't get one - // then this isn't a subset. eg >=1.2.3-pre is not a subset of >=1.0.0, - // because it includes prereleases in the 1.2.3 tuple - if (needDomGTPre || needDomLTPre) - return false - - return true -} - -// >=1.2.3 is lower than >1.2.3 -const higherGT = (a, b, options) => { - if (!a) - return b - const comp = compare(a.semver, b.semver, options) - return comp > 0 ? a - : comp < 0 ? b - : b.operator === '>' && a.operator === '>=' ? b - : a -} - -// <=1.2.3 is higher than <1.2.3 -const lowerLT = (a, b, options) => { - if (!a) - return b - const comp = compare(a.semver, b.semver, options) - return comp < 0 ? a - : comp > 0 ? b - : b.operator === '<' && a.operator === '<=' ? b - : a -} - -module.exports = subset - - -/***/ }), - -/***/ 2706: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const Range = __nccwpck_require__(9828) - -// Mostly just for testing and legacy API reasons -const toComparators = (range, options) => - new Range(range, options).set - .map(comp => comp.map(c => c.value).join(' ').trim().split(' ')) - -module.exports = toComparators - - -/***/ }), - -/***/ 2098: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -const Range = __nccwpck_require__(9828) -const validRange = (range, options) => { - try { - // Return '*' instead of '' so that truthiness works. - // This will throw if it's invalid anyway - return new Range(range, options).range || '*' - } catch (er) { - return null - } -} -module.exports = validRange - - -/***/ }), - -/***/ 4294: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -module.exports = __nccwpck_require__(4219); - - -/***/ }), - -/***/ 4219: -/***/ ((__unused_webpack_module, exports, __nccwpck_require__) => { - -"use strict"; - - -var net = __nccwpck_require__(1631); -var tls = __nccwpck_require__(4016); -var http = __nccwpck_require__(8605); -var https = __nccwpck_require__(7211); -var events = __nccwpck_require__(8614); -var assert = __nccwpck_require__(2357); -var util = __nccwpck_require__(1669); - - -exports.httpOverHttp = httpOverHttp; -exports.httpsOverHttp = httpsOverHttp; -exports.httpOverHttps = httpOverHttps; -exports.httpsOverHttps = httpsOverHttps; - - -function httpOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - return agent; -} - -function httpsOverHttp(options) { - var agent = new TunnelingAgent(options); - agent.request = http.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} - -function httpOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - return agent; -} - -function httpsOverHttps(options) { - var agent = new TunnelingAgent(options); - agent.request = https.request; - agent.createSocket = createSecureSocket; - agent.defaultPort = 443; - return agent; -} - - -function TunnelingAgent(options) { - var self = this; - self.options = options || {}; - self.proxyOptions = self.options.proxy || {}; - self.maxSockets = self.options.maxSockets || http.Agent.defaultMaxSockets; - self.requests = []; - self.sockets = []; - - self.on('free', function onFree(socket, host, port, localAddress) { - var options = toOptions(host, port, localAddress); - for (var i = 0, len = self.requests.length; i < len; ++i) { - var pending = self.requests[i]; - if (pending.host === options.host && pending.port === options.port) { - // Detect the request to connect same origin server, - // reuse the connection. - self.requests.splice(i, 1); - pending.request.onSocket(socket); - return; - } - } - socket.destroy(); - self.removeSocket(socket); - }); -} -util.inherits(TunnelingAgent, events.EventEmitter); - -TunnelingAgent.prototype.addRequest = function addRequest(req, host, port, localAddress) { - var self = this; - var options = mergeOptions({request: req}, self.options, toOptions(host, port, localAddress)); - - if (self.sockets.length >= this.maxSockets) { - // We are over limit so we'll add it to the queue. - self.requests.push(options); - return; - } - - // If we are under maxSockets create a new one. - self.createSocket(options, function(socket) { - socket.on('free', onFree); - socket.on('close', onCloseOrRemove); - socket.on('agentRemove', onCloseOrRemove); - req.onSocket(socket); - - function onFree() { - self.emit('free', socket, options); - } - - function onCloseOrRemove(err) { - self.removeSocket(socket); - socket.removeListener('free', onFree); - socket.removeListener('close', onCloseOrRemove); - socket.removeListener('agentRemove', onCloseOrRemove); - } - }); -}; - -TunnelingAgent.prototype.createSocket = function createSocket(options, cb) { - var self = this; - var placeholder = {}; - self.sockets.push(placeholder); - - var connectOptions = mergeOptions({}, self.proxyOptions, { - method: 'CONNECT', - path: options.host + ':' + options.port, - agent: false, - headers: { - host: options.host + ':' + options.port - } - }); - if (options.localAddress) { - connectOptions.localAddress = options.localAddress; - } - if (connectOptions.proxyAuth) { - connectOptions.headers = connectOptions.headers || {}; - connectOptions.headers['Proxy-Authorization'] = 'Basic ' + - new Buffer(connectOptions.proxyAuth).toString('base64'); - } - - debug('making CONNECT request'); - var connectReq = self.request(connectOptions); - connectReq.useChunkedEncodingByDefault = false; // for v0.6 - connectReq.once('response', onResponse); // for v0.6 - connectReq.once('upgrade', onUpgrade); // for v0.6 - connectReq.once('connect', onConnect); // for v0.7 or later - connectReq.once('error', onError); - connectReq.end(); - - function onResponse(res) { - // Very hacky. This is necessary to avoid http-parser leaks. - res.upgrade = true; - } - - function onUpgrade(res, socket, head) { - // Hacky. - process.nextTick(function() { - onConnect(res, socket, head); - }); - } - - function onConnect(res, socket, head) { - connectReq.removeAllListeners(); - socket.removeAllListeners(); - - if (res.statusCode !== 200) { - debug('tunneling socket could not be established, statusCode=%d', - res.statusCode); - socket.destroy(); - var error = new Error('tunneling socket could not be established, ' + - 'statusCode=' + res.statusCode); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - if (head.length > 0) { - debug('got illegal response body from proxy'); - socket.destroy(); - var error = new Error('got illegal response body from proxy'); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - return; - } - debug('tunneling connection has established'); - self.sockets[self.sockets.indexOf(placeholder)] = socket; - return cb(socket); - } - - function onError(cause) { - connectReq.removeAllListeners(); - - debug('tunneling socket could not be established, cause=%s\n', - cause.message, cause.stack); - var error = new Error('tunneling socket could not be established, ' + - 'cause=' + cause.message); - error.code = 'ECONNRESET'; - options.request.emit('error', error); - self.removeSocket(placeholder); - } -}; - -TunnelingAgent.prototype.removeSocket = function removeSocket(socket) { - var pos = this.sockets.indexOf(socket) - if (pos === -1) { - return; - } - this.sockets.splice(pos, 1); - - var pending = this.requests.shift(); - if (pending) { - // If we have pending requests and a socket gets closed a new one - // needs to be created to take over in the pool for the one that closed. - this.createSocket(pending, function(socket) { - pending.request.onSocket(socket); - }); - } -}; - -function createSecureSocket(options, cb) { - var self = this; - TunnelingAgent.prototype.createSocket.call(self, options, function(socket) { - var hostHeader = options.request.getHeader('host'); - var tlsOptions = mergeOptions({}, self.options, { - socket: socket, - servername: hostHeader ? hostHeader.replace(/:.*$/, '') : options.host - }); - - // 0 is dummy port for v0.6 - var secureSocket = tls.connect(0, tlsOptions); - self.sockets[self.sockets.indexOf(socket)] = secureSocket; - cb(secureSocket); - }); -} - - -function toOptions(host, port, localAddress) { - if (typeof host === 'string') { // since v0.10 - return { - host: host, - port: port, - localAddress: localAddress - }; - } - return host; // for v0.11 or later -} - -function mergeOptions(target) { - for (var i = 1, len = arguments.length; i < len; ++i) { - var overrides = arguments[i]; - if (typeof overrides === 'object') { - var keys = Object.keys(overrides); - for (var j = 0, keyLen = keys.length; j < keyLen; ++j) { - var k = keys[j]; - if (overrides[k] !== undefined) { - target[k] = overrides[k]; - } - } - } - } - return target; -} - - -var debug; -if (process.env.NODE_DEBUG && /\btunnel\b/.test(process.env.NODE_DEBUG)) { - debug = function() { - var args = Array.prototype.slice.call(arguments); - if (typeof args[0] === 'string') { - args[0] = 'TUNNEL: ' + args[0]; - } else { - args.unshift('TUNNEL:'); - } - console.error.apply(console, args); - } -} else { - debug = function() {}; -} -exports.debug = debug; // for test - - -/***/ }), - -/***/ 4091: -/***/ ((module) => { - -"use strict"; - -module.exports = function (Yallist) { - Yallist.prototype[Symbol.iterator] = function* () { - for (let walker = this.head; walker; walker = walker.next) { - yield walker.value - } - } -} - - -/***/ }), - -/***/ 665: -/***/ ((module, __unused_webpack_exports, __nccwpck_require__) => { - -"use strict"; - -module.exports = Yallist - -Yallist.Node = Node -Yallist.create = Yallist - -function Yallist (list) { - var self = this - if (!(self instanceof Yallist)) { - self = new Yallist() - } - - self.tail = null - self.head = null - self.length = 0 - - if (list && typeof list.forEach === 'function') { - list.forEach(function (item) { - self.push(item) - }) - } else if (arguments.length > 0) { - for (var i = 0, l = arguments.length; i < l; i++) { - self.push(arguments[i]) - } - } - - return self -} - -Yallist.prototype.removeNode = function (node) { - if (node.list !== this) { - throw new Error('removing node which does not belong to this list') - } - - var next = node.next - var prev = node.prev - - if (next) { - next.prev = prev - } - - if (prev) { - prev.next = next - } - - if (node === this.head) { - this.head = next - } - if (node === this.tail) { - this.tail = prev - } - - node.list.length-- - node.next = null - node.prev = null - node.list = null - - return next -} - -Yallist.prototype.unshiftNode = function (node) { - if (node === this.head) { - return - } - - if (node.list) { - node.list.removeNode(node) - } - - var head = this.head - node.list = this - node.next = head - if (head) { - head.prev = node - } - - this.head = node - if (!this.tail) { - this.tail = node - } - this.length++ -} - -Yallist.prototype.pushNode = function (node) { - if (node === this.tail) { - return - } - - if (node.list) { - node.list.removeNode(node) - } - - var tail = this.tail - node.list = this - node.prev = tail - if (tail) { - tail.next = node - } - - this.tail = node - if (!this.head) { - this.head = node - } - this.length++ -} - -Yallist.prototype.push = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - push(this, arguments[i]) - } - return this.length -} - -Yallist.prototype.unshift = function () { - for (var i = 0, l = arguments.length; i < l; i++) { - unshift(this, arguments[i]) - } - return this.length -} - -Yallist.prototype.pop = function () { - if (!this.tail) { - return undefined - } - - var res = this.tail.value - this.tail = this.tail.prev - if (this.tail) { - this.tail.next = null - } else { - this.head = null - } - this.length-- - return res -} - -Yallist.prototype.shift = function () { - if (!this.head) { - return undefined - } - - var res = this.head.value - this.head = this.head.next - if (this.head) { - this.head.prev = null - } else { - this.tail = null - } - this.length-- - return res -} - -Yallist.prototype.forEach = function (fn, thisp) { - thisp = thisp || this - for (var walker = this.head, i = 0; walker !== null; i++) { - fn.call(thisp, walker.value, i, this) - walker = walker.next - } -} - -Yallist.prototype.forEachReverse = function (fn, thisp) { - thisp = thisp || this - for (var walker = this.tail, i = this.length - 1; walker !== null; i--) { - fn.call(thisp, walker.value, i, this) - walker = walker.prev - } -} - -Yallist.prototype.get = function (n) { - for (var i = 0, walker = this.head; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.next - } - if (i === n && walker !== null) { - return walker.value - } -} - -Yallist.prototype.getReverse = function (n) { - for (var i = 0, walker = this.tail; walker !== null && i < n; i++) { - // abort out of the list early if we hit a cycle - walker = walker.prev - } - if (i === n && walker !== null) { - return walker.value - } -} - -Yallist.prototype.map = function (fn, thisp) { - thisp = thisp || this - var res = new Yallist() - for (var walker = this.head; walker !== null;) { - res.push(fn.call(thisp, walker.value, this)) - walker = walker.next - } - return res -} - -Yallist.prototype.mapReverse = function (fn, thisp) { - thisp = thisp || this - var res = new Yallist() - for (var walker = this.tail; walker !== null;) { - res.push(fn.call(thisp, walker.value, this)) - walker = walker.prev - } - return res -} - -Yallist.prototype.reduce = function (fn, initial) { - var acc - var walker = this.head - if (arguments.length > 1) { - acc = initial - } else if (this.head) { - walker = this.head.next - acc = this.head.value - } else { - throw new TypeError('Reduce of empty list with no initial value') - } - - for (var i = 0; walker !== null; i++) { - acc = fn(acc, walker.value, i) - walker = walker.next - } - - return acc -} - -Yallist.prototype.reduceReverse = function (fn, initial) { - var acc - var walker = this.tail - if (arguments.length > 1) { - acc = initial - } else if (this.tail) { - walker = this.tail.prev - acc = this.tail.value - } else { - throw new TypeError('Reduce of empty list with no initial value') - } - - for (var i = this.length - 1; walker !== null; i--) { - acc = fn(acc, walker.value, i) - walker = walker.prev - } - - return acc -} - -Yallist.prototype.toArray = function () { - var arr = new Array(this.length) - for (var i = 0, walker = this.head; walker !== null; i++) { - arr[i] = walker.value - walker = walker.next - } - return arr -} - -Yallist.prototype.toArrayReverse = function () { - var arr = new Array(this.length) - for (var i = 0, walker = this.tail; walker !== null; i++) { - arr[i] = walker.value - walker = walker.prev - } - return arr -} - -Yallist.prototype.slice = function (from, to) { - to = to || this.length - if (to < 0) { - to += this.length - } - from = from || 0 - if (from < 0) { - from += this.length - } - var ret = new Yallist() - if (to < from || to < 0) { - return ret - } - if (from < 0) { - from = 0 - } - if (to > this.length) { - to = this.length - } - for (var i = 0, walker = this.head; walker !== null && i < from; i++) { - walker = walker.next - } - for (; walker !== null && i < to; i++, walker = walker.next) { - ret.push(walker.value) - } - return ret -} - -Yallist.prototype.sliceReverse = function (from, to) { - to = to || this.length - if (to < 0) { - to += this.length - } - from = from || 0 - if (from < 0) { - from += this.length - } - var ret = new Yallist() - if (to < from || to < 0) { - return ret - } - if (from < 0) { - from = 0 - } - if (to > this.length) { - to = this.length - } - for (var i = this.length, walker = this.tail; walker !== null && i > to; i--) { - walker = walker.prev - } - for (; walker !== null && i > from; i--, walker = walker.prev) { - ret.push(walker.value) - } - return ret -} - -Yallist.prototype.splice = function (start, deleteCount, ...nodes) { - if (start > this.length) { - start = this.length - 1 - } - if (start < 0) { - start = this.length + start; - } - - for (var i = 0, walker = this.head; walker !== null && i < start; i++) { - walker = walker.next - } - - var ret = [] - for (var i = 0; walker && i < deleteCount; i++) { - ret.push(walker.value) - walker = this.removeNode(walker) - } - if (walker === null) { - walker = this.tail - } - - if (walker !== this.head && walker !== this.tail) { - walker = walker.prev - } - - for (var i = 0; i < nodes.length; i++) { - walker = insert(this, walker, nodes[i]) - } - return ret; -} - -Yallist.prototype.reverse = function () { - var head = this.head - var tail = this.tail - for (var walker = head; walker !== null; walker = walker.prev) { - var p = walker.prev - walker.prev = walker.next - walker.next = p - } - this.head = tail - this.tail = head - return this -} - -function insert (self, node, value) { - var inserted = node === self.head ? - new Node(value, null, node, self) : - new Node(value, node, node.next, self) - - if (inserted.next === null) { - self.tail = inserted - } - if (inserted.prev === null) { - self.head = inserted - } - - self.length++ - - return inserted -} - -function push (self, item) { - self.tail = new Node(item, self.tail, null, self) - if (!self.head) { - self.head = self.tail - } - self.length++ -} - -function unshift (self, item) { - self.head = new Node(item, null, self.head, self) - if (!self.tail) { - self.tail = self.head - } - self.length++ -} - -function Node (value, prev, next, list) { - if (!(this instanceof Node)) { - return new Node(value, prev, next, list) - } - - this.list = list - this.value = value - - if (prev) { - prev.next = this - this.prev = prev - } else { - this.prev = null - } - - if (next) { - next.prev = this - this.next = next - } else { - this.next = null - } -} - -try { - // add if support for Symbol.iterator is present - __nccwpck_require__(4091)(Yallist) -} catch (er) {} - - -/***/ }), - -/***/ 2357: -/***/ ((module) => { - -"use strict"; -module.exports = require("assert");; - -/***/ }), - -/***/ 3129: -/***/ ((module) => { - -"use strict"; -module.exports = require("child_process");; - -/***/ }), - -/***/ 6417: -/***/ ((module) => { - -"use strict"; -module.exports = require("crypto");; - -/***/ }), - -/***/ 8614: -/***/ ((module) => { - -"use strict"; -module.exports = require("events");; - -/***/ }), - -/***/ 5747: -/***/ ((module) => { - -"use strict"; -module.exports = require("fs");; - -/***/ }), - -/***/ 8605: -/***/ ((module) => { - -"use strict"; -module.exports = require("http");; - -/***/ }), - -/***/ 7211: -/***/ ((module) => { - -"use strict"; -module.exports = require("https");; - -/***/ }), - -/***/ 1631: -/***/ ((module) => { - -"use strict"; -module.exports = require("net");; - -/***/ }), - -/***/ 2087: -/***/ ((module) => { - -"use strict"; -module.exports = require("os");; - -/***/ }), - -/***/ 5622: -/***/ ((module) => { - -"use strict"; -module.exports = require("path");; - -/***/ }), - -/***/ 2413: -/***/ ((module) => { - -"use strict"; -module.exports = require("stream");; - -/***/ }), - -/***/ 4304: -/***/ ((module) => { - -"use strict"; -module.exports = require("string_decoder");; - -/***/ }), - -/***/ 8213: -/***/ ((module) => { - -"use strict"; -module.exports = require("timers");; - -/***/ }), - -/***/ 4016: -/***/ ((module) => { - -"use strict"; -module.exports = require("tls");; - -/***/ }), - -/***/ 1669: -/***/ ((module) => { - -"use strict"; -module.exports = require("util");; - -/***/ }) - -/******/ }); -/************************************************************************/ -/******/ // The module cache -/******/ var __webpack_module_cache__ = {}; -/******/ -/******/ // The require function -/******/ function __nccwpck_require__(moduleId) { -/******/ // Check if module is in cache -/******/ var cachedModule = __webpack_module_cache__[moduleId]; -/******/ if (cachedModule !== undefined) { -/******/ return cachedModule.exports; -/******/ } -/******/ // Create a new module (and put it into the cache) -/******/ var module = __webpack_module_cache__[moduleId] = { -/******/ // no module.id needed -/******/ // no module.loaded needed -/******/ exports: {} -/******/ }; -/******/ -/******/ // Execute the module function -/******/ var threw = true; -/******/ try { -/******/ __webpack_modules__[moduleId].call(module.exports, module, module.exports, __nccwpck_require__); -/******/ threw = false; -/******/ } finally { -/******/ if(threw) delete __webpack_module_cache__[moduleId]; -/******/ } -/******/ -/******/ // Return the exports of the module -/******/ return module.exports; -/******/ } -/******/ -/************************************************************************/ -/******/ /* webpack/runtime/compat */ -/******/ -/******/ if (typeof __nccwpck_require__ !== 'undefined') __nccwpck_require__.ab = __dirname + "/";/************************************************************************/ -/******/ -/******/ // startup -/******/ // Load entry module and return exports -/******/ // This entry module is referenced by other modules so it can't be inlined -/******/ var __webpack_exports__ = __nccwpck_require__(4822); -/******/ module.exports = __webpack_exports__; -/******/ -/******/ })() -; \ No newline at end of file diff --git a/jest.config.js b/jest.config.js deleted file mode 100644 index 563d4cc..0000000 --- a/jest.config.js +++ /dev/null @@ -1,11 +0,0 @@ -module.exports = { - clearMocks: true, - moduleFileExtensions: ['js', 'ts'], - testEnvironment: 'node', - testMatch: ['**/*.test.ts'], - testRunner: 'jest-circus/runner', - transform: { - '^.+\\.ts$': 'ts-jest' - }, - verbose: true -} \ No newline at end of file diff --git a/package-lock.json b/package-lock.json deleted file mode 100644 index b913215..0000000 --- a/package-lock.json +++ /dev/null @@ -1,6500 +0,0 @@ -{ - "name": "flutter-action", - "version": "1.3.2", - "lockfileVersion": 1, - "requires": true, - "dependencies": { - "@actions/core": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/@actions/core/-/core-1.4.0.tgz", - "integrity": "sha512-CGx2ilGq5i7zSLgiiGUtBCxhRRxibJYU6Fim0Q1Wg2aQL2LTnF27zbqZOrxfvFQ55eSBW0L8uVStgtKMpa0Qlg==" - }, - "@actions/exec": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@actions/exec/-/exec-1.1.0.tgz", - "integrity": "sha512-LImpN9AY0J1R1mEYJjVJfSZWU4zYOlEcwSTgPve1rFQqK5AwrEs6uWW5Rv70gbDIQIAUwI86z6B+9mPK4w9Sbg==", - "requires": { - "@actions/io": "^1.0.1" - } - }, - "@actions/http-client": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/@actions/http-client/-/http-client-1.0.11.tgz", - "integrity": "sha512-VRYHGQV1rqnROJqdMvGUbY/Kn8vriQe/F9HR2AlYHzmKuM/p3kjNuXhmdBfcVgsvRWTz5C5XW5xvndZrVBuAYg==", - "requires": { - "tunnel": "0.0.6" - } - }, - "@actions/io": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/@actions/io/-/io-1.1.1.tgz", - "integrity": "sha512-Qi4JoKXjmE0O67wAOH6y0n26QXhMKMFo7GD/4IXNVcrtLjUlGjGuVys6pQgwF3ArfGTQu0XpqaNr0YhED2RaRA==" - }, - "@actions/tool-cache": { - "version": "1.7.1", - "resolved": "https://registry.npmjs.org/@actions/tool-cache/-/tool-cache-1.7.1.tgz", - "integrity": "sha512-y1xxxOhXaBUIUit3lhepmu/0xdgiTMpnZRLmVdtF0hTm521doi+MdRRRP62czHvM7wxH6epj4JPNJQ3iJpOrkQ==", - "requires": { - "@actions/core": "^1.2.6", - "@actions/exec": "^1.0.0", - "@actions/http-client": "^1.0.8", - "@actions/io": "^1.1.1", - "semver": "^6.1.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==" - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" - } - } - }, - "@babel/code-frame": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.12.13.tgz", - "integrity": "sha512-HV1Cm0Q3ZrpCR93tkWOYiuYIgLxZXZFVG2VgK+MBWjUqZTundupbfx2aXarXuw5Ko5aMcjtJgbSs4vUGBS5v6g==", - "dev": true, - "requires": { - "@babel/highlight": "^7.12.13" - } - }, - "@babel/compat-data": { - "version": "7.13.15", - "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.13.15.tgz", - "integrity": "sha512-ltnibHKR1VnrU4ymHyQ/CXtNXI6yZC0oJThyW78Hft8XndANwi+9H+UIklBDraIjFEJzw8wmcM427oDd9KS5wA==", - "dev": true - }, - "@babel/core": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.13.16.tgz", - "integrity": "sha512-sXHpixBiWWFti0AV2Zq7avpTasr6sIAu7Y396c608541qAU2ui4a193m0KSQmfPSKFZLnQ3cvlKDOm3XkuXm3Q==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.16", - "@babel/helper-compilation-targets": "^7.13.16", - "@babel/helper-module-transforms": "^7.13.14", - "@babel/helpers": "^7.13.16", - "@babel/parser": "^7.13.16", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.15", - "@babel/types": "^7.13.16", - "convert-source-map": "^1.7.0", - "debug": "^4.1.0", - "gensync": "^1.0.0-beta.2", - "json5": "^2.1.2", - "semver": "^6.3.0", - "source-map": "^0.5.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/generator": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.13.16.tgz", - "integrity": "sha512-grBBR75UnKOcUWMp8WoDxNsWCFl//XCK6HWTrBQKTr5SV9f5g0pNOjdyzi/DTBv12S9GnYPInIXQBTky7OXEMg==", - "dev": true, - "requires": { - "@babel/types": "^7.13.16", - "jsesc": "^2.5.1", - "source-map": "^0.5.0" - }, - "dependencies": { - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "@babel/helper-compilation-targets": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.13.16.tgz", - "integrity": "sha512-3gmkYIrpqsLlieFwjkGgLaSHmhnvlAYzZLlYVjlW+QwI+1zE17kGxuJGmIqDQdYp56XdmGeD+Bswx0UTyG18xA==", - "dev": true, - "requires": { - "@babel/compat-data": "^7.13.15", - "@babel/helper-validator-option": "^7.12.17", - "browserslist": "^4.14.5", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "@babel/helper-function-name": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.12.13.tgz", - "integrity": "sha512-TZvmPn0UOqmvi5G4vvw0qZTpVptGkB1GL61R6lKvrSdIxGm5Pky7Q3fpKiIkQCAtRCBUwB0PaThlx9vebCDSwA==", - "dev": true, - "requires": { - "@babel/helper-get-function-arity": "^7.12.13", - "@babel/template": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-get-function-arity": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.12.13.tgz", - "integrity": "sha512-DjEVzQNz5LICkzN0REdpD5prGoidvbdYk1BVgRUOINaWJP2t6avB27X1guXK1kXNrX0WMfsrm1A/ZBthYuIMQg==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-member-expression-to-functions": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.13.12.tgz", - "integrity": "sha512-48ql1CLL59aKbU94Y88Xgb2VFy7a95ykGRbJJaaVv+LX5U8wFpLfiGXJJGUozsmA1oEh/o5Bp60Voq7ACyA/Sw==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-imports": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.13.12.tgz", - "integrity": "sha512-4cVvR2/1B693IuOvSI20xqqa/+bl7lqAMR59R4iu39R9aOX8/JoYY1sFaNvUMyMBGnHdwvJgUrzNLoUZxXypxA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-module-transforms": { - "version": "7.13.14", - "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.13.14.tgz", - "integrity": "sha512-QuU/OJ0iAOSIatyVZmfqB0lbkVP0kDRiKj34xy+QNsnVZi/PA6BoSoreeqnxxa9EHFAIL0R9XOaAR/G9WlIy5g==", - "dev": true, - "requires": { - "@babel/helper-module-imports": "^7.13.12", - "@babel/helper-replace-supers": "^7.13.12", - "@babel/helper-simple-access": "^7.13.12", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/helper-validator-identifier": "^7.12.11", - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.13", - "@babel/types": "^7.13.14" - } - }, - "@babel/helper-optimise-call-expression": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-optimise-call-expression/-/helper-optimise-call-expression-7.12.13.tgz", - "integrity": "sha512-BdWQhoVJkp6nVjB7nkFWcn43dkprYauqtk++Py2eaf/GRDFm5BxRqEIZCiHlZUGAVmtwKcsVL1dC68WmzeFmiA==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-plugin-utils": { - "version": "7.13.0", - "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.13.0.tgz", - "integrity": "sha512-ZPafIPSwzUlAoWT8DKs1W2VyF2gOWthGd5NGFMsBcMMol+ZhK+EQY/e6V96poa6PA/Bh+C9plWN0hXO1uB8AfQ==", - "dev": true - }, - "@babel/helper-replace-supers": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.13.12.tgz", - "integrity": "sha512-Gz1eiX+4yDO8mT+heB94aLVNCL+rbuT2xy4YfyNqu8F+OI6vMvJK891qGBTqL9Uc8wxEvRW92Id6G7sDen3fFw==", - "dev": true, - "requires": { - "@babel/helper-member-expression-to-functions": "^7.13.12", - "@babel/helper-optimise-call-expression": "^7.12.13", - "@babel/traverse": "^7.13.0", - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-simple-access": { - "version": "7.13.12", - "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.13.12.tgz", - "integrity": "sha512-7FEjbrx5SL9cWvXioDbnlYTppcZGuCY6ow3/D5vMggb2Ywgu4dMrpTJX0JdQAIcRRUElOIxF3yEooa9gUb9ZbA==", - "dev": true, - "requires": { - "@babel/types": "^7.13.12" - } - }, - "@babel/helper-split-export-declaration": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.12.13.tgz", - "integrity": "sha512-tCJDltF83htUtXx5NLcaDqRmknv652ZWCHyoTETf1CXYJdPC7nohZohjUgieXhv0hTJdRf2FjDueFehdNucpzg==", - "dev": true, - "requires": { - "@babel/types": "^7.12.13" - } - }, - "@babel/helper-validator-identifier": { - "version": "7.12.11", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.12.11.tgz", - "integrity": "sha512-np/lG3uARFybkoHokJUmf1QfEvRVCPbmQeUQpKow5cQ3xWrV9i3rUHodKDJPQfTVX61qKi+UdYk8kik84n7XOw==", - "dev": true - }, - "@babel/helper-validator-option": { - "version": "7.12.17", - "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.12.17.tgz", - "integrity": "sha512-TopkMDmLzq8ngChwRlyjR6raKD6gMSae4JdYDB8bByKreQgG0RBTuKe9LRxW3wFtUnjxOPRKBDwEH6Mg5KeDfw==", - "dev": true - }, - "@babel/helpers": { - "version": "7.13.17", - "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.13.17.tgz", - "integrity": "sha512-Eal4Gce4kGijo1/TGJdqp3WuhllaMLSrW6XcL0ulyUAQOuxHcCafZE8KHg9857gcTehsm/v7RcOx2+jp0Ryjsg==", - "dev": true, - "requires": { - "@babel/template": "^7.12.13", - "@babel/traverse": "^7.13.17", - "@babel/types": "^7.13.17" - } - }, - "@babel/highlight": { - "version": "7.13.10", - "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.13.10.tgz", - "integrity": "sha512-5aPpe5XQPzflQrFwL1/QoeHkP2MsA4JCntcXHRhEsdsfPVkvPi2w7Qix4iV7t5S/oC9OodGrggd8aco1g3SZFg==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "chalk": "^2.0.0", - "js-tokens": "^4.0.0" - } - }, - "@babel/parser": { - "version": "7.13.16", - "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.13.16.tgz", - "integrity": "sha512-6bAg36mCwuqLO0hbR+z7PHuqWiCeP7Dzg73OpQwsAB1Eb8HnGEz5xYBzCfbu+YjoaJsJs+qheDxVAuqbt3ILEw==", - "dev": true - }, - "@babel/plugin-syntax-async-generators": { - "version": "7.8.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", - "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-bigint": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", - "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-class-properties": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", - "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/plugin-syntax-import-meta": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", - "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-json-strings": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", - "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-logical-assignment-operators": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", - "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-nullish-coalescing-operator": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", - "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-numeric-separator": { - "version": "7.10.4", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", - "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.10.4" - } - }, - "@babel/plugin-syntax-object-rest-spread": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", - "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-catch-binding": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", - "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-optional-chaining": { - "version": "7.8.3", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", - "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.8.0" - } - }, - "@babel/plugin-syntax-top-level-await": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.12.13.tgz", - "integrity": "sha512-A81F9pDwyS7yM//KwbCSDqy3Uj4NMIurtplxphWxoYtNPov7cJsDkAFNNyVlIZ3jwGycVsurZ+LtOA8gZ376iQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.12.13" - } - }, - "@babel/template": { - "version": "7.12.13", - "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.12.13.tgz", - "integrity": "sha512-/7xxiGA57xMo/P2GVvdEumr8ONhFOhfgq2ihK3h1e6THqzTAkHbkXgB0xI9yeTfIUoH3+oAeHhqm/I43OTbbjA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/parser": "^7.12.13", - "@babel/types": "^7.12.13" - } - }, - "@babel/traverse": { - "version": "7.13.17", - "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.13.17.tgz", - "integrity": "sha512-BMnZn0R+X6ayqm3C3To7o1j7Q020gWdqdyP50KEoVqaCO2c/Im7sYZSmVgvefp8TTMQ+9CtwuBp0Z1CZ8V3Pvg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.12.13", - "@babel/generator": "^7.13.16", - "@babel/helper-function-name": "^7.12.13", - "@babel/helper-split-export-declaration": "^7.12.13", - "@babel/parser": "^7.13.16", - "@babel/types": "^7.13.17", - "debug": "^4.1.0", - "globals": "^11.1.0" - } - }, - "@babel/types": { - "version": "7.13.17", - "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.13.17.tgz", - "integrity": "sha512-RawydLgxbOPDlTLJNtoIypwdmAy//uQIzlKt2+iBiJaRlVuI6QLUxVAyWGNfOzp8Yu4L4lLIacoCyTNtpb4wiA==", - "dev": true, - "requires": { - "@babel/helper-validator-identifier": "^7.12.11", - "to-fast-properties": "^2.0.0" - } - }, - "@bcoe/v8-coverage": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", - "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", - "dev": true - }, - "@cnakazawa/watch": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/@cnakazawa/watch/-/watch-1.0.4.tgz", - "integrity": "sha512-v9kIhKwjeZThiWrLmj0y17CWoyddASLj9O2yvbZkbvw/N3rWOYy9zkV66ursAoVr0mV15bL8g0c4QZUE6cdDoQ==", - "dev": true, - "requires": { - "exec-sh": "^0.3.2", - "minimist": "^1.2.0" - } - }, - "@istanbuljs/load-nyc-config": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", - "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", - "dev": true, - "requires": { - "camelcase": "^5.3.1", - "find-up": "^4.1.0", - "get-package-type": "^0.1.0", - "js-yaml": "^3.13.1", - "resolve-from": "^5.0.0" - } - }, - "@istanbuljs/schema": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", - "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", - "dev": true - }, - "@jest/console": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/console/-/console-26.6.2.tgz", - "integrity": "sha512-IY1R2i2aLsLr7Id3S6p2BA82GNWryt4oSvEXLAKc+L2zdi89dSkE8xC1C+0kpATG4JhBJREnQOH7/zmccM2B0g==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "jest-message-util": "^26.6.2", - "jest-util": "^26.6.2", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/core": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/core/-/core-26.6.3.tgz", - "integrity": "sha512-xvV1kKbhfUqFVuZ8Cyo+JPpipAHHAV3kcDBftiduK8EICXmTFddryy3P7NfZt8Pv37rA9nEJBKCCkglCPt/Xjw==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/reporters": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-changed-files": "^26.6.2", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-resolve-dependencies": "^26.6.3", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "jest-watcher": "^26.6.2", - "micromatch": "^4.0.2", - "p-each-series": "^2.1.0", - "rimraf": "^3.0.0", - "slash": "^3.0.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/environment": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-26.6.2.tgz", - "integrity": "sha512-nFy+fHl28zUrRsCeMB61VDThV1pVTtlEokBRgqPrcT1JNq4yRNIyTHfyht6PqtUvY9IsuLGTrbG8kPXjSZIZwA==", - "dev": true, - "requires": { - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2" - } - }, - "@jest/fake-timers": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-26.6.2.tgz", - "integrity": "sha512-14Uleatt7jdzefLPYM3KLcnUl1ZNikaKq34enpb5XG9i81JpppDb5muZvonvKyrl7ftEHkKS5L5/eB/kxJ+bvA==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "@sinonjs/fake-timers": "^6.0.1", - "@types/node": "*", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - } - }, - "@jest/globals": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-26.6.2.tgz", - "integrity": "sha512-85Ltnm7HlB/KesBUuALwQ68YTU72w9H2xW9FjZ1eL1U3lhtefjjl5c2MiUbpXt/i6LaPRvoOFJ22yCBSfQ0JIA==", - "dev": true, - "requires": { - "@jest/environment": "^26.6.2", - "@jest/types": "^26.6.2", - "expect": "^26.6.2" - } - }, - "@jest/reporters": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-26.6.2.tgz", - "integrity": "sha512-h2bW53APG4HvkOnVMo8q3QXa6pcaNt1HkwVsOPMBV6LD/q9oSpxNSYZQYkAnjdMjrJ86UuYeLo+aEZClV6opnw==", - "dev": true, - "requires": { - "@bcoe/v8-coverage": "^0.2.3", - "@jest/console": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.2", - "graceful-fs": "^4.2.4", - "istanbul-lib-coverage": "^3.0.0", - "istanbul-lib-instrument": "^4.0.3", - "istanbul-lib-report": "^3.0.0", - "istanbul-lib-source-maps": "^4.0.0", - "istanbul-reports": "^3.0.2", - "jest-haste-map": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "node-notifier": "^8.0.0", - "slash": "^3.0.0", - "source-map": "^0.6.0", - "string-length": "^4.0.1", - "terminal-link": "^2.0.0", - "v8-to-istanbul": "^7.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/source-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-26.6.2.tgz", - "integrity": "sha512-YwYcCwAnNmOVsZ8mr3GfnzdXDAl4LaenZP5z+G0c8bzC9/dugL8zRmxZzdoTl4IaS3CryS1uWnROLPFmb6lVvA==", - "dev": true, - "requires": { - "callsites": "^3.0.0", - "graceful-fs": "^4.2.4", - "source-map": "^0.6.0" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - } - } - }, - "@jest/test-result": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-26.6.2.tgz", - "integrity": "sha512-5O7H5c/7YlojphYNrK02LlDIV2GNPYisKwHm2QTKjNZeEzezCbwYs9swJySv2UfPMyZ0VdsmMv7jIlD/IKYQpQ==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/istanbul-lib-coverage": "^2.0.0", - "collect-v8-coverage": "^1.0.0" - } - }, - "@jest/test-sequencer": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-26.6.3.tgz", - "integrity": "sha512-YHlVIjP5nfEyjlrSr8t/YdNfU/1XEt7c5b4OxcXCjyRhjzLYu/rO69/WHPuYcbCWkz8kAeZVZp2N2+IOLLEPGw==", - "dev": true, - "requires": { - "@jest/test-result": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - } - } - }, - "@jest/transform": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-26.6.2.tgz", - "integrity": "sha512-E9JjhUgNzvuQ+vVAL21vlyfy12gP0GhazGgJC4h6qUt1jSdUXGWJ1wfu/X7Sd8etSgxV4ovT1pb9v5D6QW4XgA==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/types": "^26.6.2", - "babel-plugin-istanbul": "^6.0.0", - "chalk": "^4.0.0", - "convert-source-map": "^1.4.0", - "fast-json-stable-stringify": "^2.0.0", - "graceful-fs": "^4.2.4", - "jest-haste-map": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-util": "^26.6.2", - "micromatch": "^4.0.2", - "pirates": "^4.0.1", - "slash": "^3.0.0", - "source-map": "^0.6.1", - "write-file-atomic": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@jest/types": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", - "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.0", - "@types/istanbul-reports": "^3.0.0", - "@types/node": "*", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "@sinonjs/commons": { - "version": "1.8.3", - "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-1.8.3.tgz", - "integrity": "sha512-xkNcLAn/wZaX14RPlwizcKicDk9G3F8m2nU3L7Ukm5zBgTwiT0wsoFAHx9Jq56fJA1z/7uKGtCRu16sOUCLIHQ==", - "dev": true, - "requires": { - "type-detect": "4.0.8" - } - }, - "@sinonjs/fake-timers": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-6.0.1.tgz", - "integrity": "sha512-MZPUxrmFubI36XS1DI3qmI0YdN1gks62JtFZvxR67ljjSNCeK6U08Zx4msEWOXuofgqUt6zPHSi1H9fbjR/NRA==", - "dev": true, - "requires": { - "@sinonjs/commons": "^1.7.0" - } - }, - "@types/babel__core": { - "version": "7.1.14", - "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.1.14.tgz", - "integrity": "sha512-zGZJzzBUVDo/eV6KgbE0f0ZI7dInEYvo12Rb70uNQDshC3SkRMb67ja0GgRHZgAX3Za6rhaWlvbDO8rrGyAb1g==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0", - "@types/babel__generator": "*", - "@types/babel__template": "*", - "@types/babel__traverse": "*" - } - }, - "@types/babel__generator": { - "version": "7.6.2", - "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.2.tgz", - "integrity": "sha512-MdSJnBjl+bdwkLskZ3NGFp9YcXGx5ggLpQQPqtgakVhsWK0hTtNYhjpZLlWQTviGTvF8at+Bvli3jV7faPdgeQ==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0" - } - }, - "@types/babel__template": { - "version": "7.4.0", - "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.0.tgz", - "integrity": "sha512-NTPErx4/FiPCGScH7foPyr+/1Dkzkni+rHiYHHoTjvwou7AQzJkNeD60A9CXRy+ZEN2B1bggmkTMCDb+Mv5k+A==", - "dev": true, - "requires": { - "@babel/parser": "^7.1.0", - "@babel/types": "^7.0.0" - } - }, - "@types/babel__traverse": { - "version": "7.11.1", - "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.11.1.tgz", - "integrity": "sha512-Vs0hm0vPahPMYi9tDjtP66llufgO3ST16WXaSTtDGEl9cewAl3AibmxWw6TINOqHPT9z0uABKAYjT9jNSg4npw==", - "dev": true, - "requires": { - "@babel/types": "^7.3.0" - } - }, - "@types/graceful-fs": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.5.tgz", - "integrity": "sha512-anKkLmZZ+xm4p8JWBf4hElkM4XR+EZeA2M9BAkkTldmcyDY4mbdIJnRghDJH3Ov5ooY7/UAoENtmdMSkaAd7Cw==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, - "@types/istanbul-lib-coverage": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.3.tgz", - "integrity": "sha512-sz7iLqvVUg1gIedBOvlkxPlc8/uVzyS5OwGz1cKjXzkl3FpL3al0crU8YGU1WoHkxn0Wxbw5tyi6hvzJKNzFsw==", - "dev": true - }, - "@types/istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-plGgXAPfVKFoYfa9NpYDAkseG+g6Jr294RqeqcqDixSbU34MZVJRi/P+7Y8GDpzkEwLaGZZOpKIEmeVZNtKsrg==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "*" - } - }, - "@types/istanbul-reports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.0.tgz", - "integrity": "sha512-nwKNbvnwJ2/mndE9ItP/zc2TCzw6uuodnF4EHYWD+gCQDVBuRQL5UzbZD0/ezy1iKsFU2ZQiDqg4M9dN4+wZgA==", - "dev": true, - "requires": { - "@types/istanbul-lib-report": "*" - } - }, - "@types/jest": { - "version": "26.0.23", - "resolved": "https://registry.npmjs.org/@types/jest/-/jest-26.0.23.tgz", - "integrity": "sha512-ZHLmWMJ9jJ9PTiT58juykZpL7KjwJywFN3Rr2pTSkyQfydf/rk22yS7W8p5DaVUMQ2BQC7oYiU3FjbTM/mYrOA==", - "dev": true, - "requires": { - "jest-diff": "^26.0.0", - "pretty-format": "^26.0.0" - } - }, - "@types/node": { - "version": "14.17.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-14.17.3.tgz", - "integrity": "sha512-e6ZowgGJmTuXa3GyaPbTGxX17tnThl2aSSizrFthQ7m9uLGZBXiGhgE55cjRZTF5kjZvYn9EOPOMljdjwbflxw==", - "dev": true - }, - "@types/normalize-package-data": { - "version": "2.4.0", - "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.0.tgz", - "integrity": "sha512-f5j5b/Gf71L+dbqxIpQ4Z2WlmI/mPJ0fOkGGmFgtb6sAu97EPczzbS3/tJKxmcYDj55OX6ssqwDAWOHIYDRDGA==", - "dev": true - }, - "@types/prettier": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/@types/prettier/-/prettier-2.2.3.tgz", - "integrity": "sha512-PijRCG/K3s3w1We6ynUKdxEc5AcuuH3NBmMDP8uvKVp6X43UY7NQlTzczakXP3DJR0F4dfNQIGjU2cUeRYs2AA==", - "dev": true - }, - "@types/semver": { - "version": "7.3.6", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.3.6.tgz", - "integrity": "sha512-0caWDWmpCp0uifxFh+FaqK3CuZ2SkRR/ZRxAV5+zNdC3QVUi6wyOJnefhPvtNt8NQWXB5OA93BUvZsXpWat2Xw==", - "dev": true - }, - "@types/stack-utils": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.0.tgz", - "integrity": "sha512-RJJrrySY7A8havqpGObOB4W92QXKJo63/jFLLgpvOtsGUqbQZ9Sbgl35KMm1DjC6j7AvmmU2bIno+3IyEaemaw==", - "dev": true - }, - "@types/uuid": { - "version": "8.3.0", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.0.tgz", - "integrity": "sha512-eQ9qFW/fhfGJF8WKHGEHZEyVWfZxrT+6CLIJGBcZPfxUh/+BnEj+UCGYMlr9qZuX/2AltsvwrGqp0LhEW8D0zQ==", - "dev": true - }, - "@types/yargs": { - "version": "15.0.13", - "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.13.tgz", - "integrity": "sha512-kQ5JNTrbDv3Rp5X2n/iUu37IJBDU2gsZ5R/g1/KHOOEc5IKfUFjXT6DENPGduh08I/pamwtEq4oul7gUqKTQDQ==", - "dev": true, - "requires": { - "@types/yargs-parser": "*" - } - }, - "@types/yargs-parser": { - "version": "20.2.0", - "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-20.2.0.tgz", - "integrity": "sha512-37RSHht+gzzgYeobbG+KWryeAW8J33Nhr69cjTqSYymXVZEN9NbRYWoYlRtDhHKPVT1FyNKwaTPC1NynKZpzRA==", - "dev": true - }, - "@vercel/ncc": { - "version": "0.28.6", - "resolved": "https://registry.npmjs.org/@vercel/ncc/-/ncc-0.28.6.tgz", - "integrity": "sha512-t4BoSSuyK8BZaUE0gV18V6bkFs4st7baumtFGa50dv1tMu2GDBEBF8sUZaKBdKiL6DzJ2D2+XVCwYWWDcQOYdQ==", - "dev": true - }, - "abab": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.5.tgz", - "integrity": "sha512-9IK9EadsbHo6jLWIpxpR6pL0sazTXV6+SQv25ZB+F7Bj9mJNaOc4nCRabwd5M/JwmUa8idz6Eci6eKfJryPs6Q==", - "dev": true - }, - "acorn": { - "version": "8.2.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.2.1.tgz", - "integrity": "sha512-z716cpm5TX4uzOzILx8PavOE6C6DKshHDw1aQN52M/yNSqE9s5O8SMfyhCCfCJ3HmTL0NkVOi+8a/55T7YB3bg==", - "dev": true - }, - "acorn-globals": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/acorn-globals/-/acorn-globals-6.0.0.tgz", - "integrity": "sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==", - "dev": true, - "requires": { - "acorn": "^7.1.1", - "acorn-walk": "^7.1.1" - }, - "dependencies": { - "acorn": { - "version": "7.4.1", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", - "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", - "dev": true - } - } - }, - "acorn-walk": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", - "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==", - "dev": true - }, - "ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - } - }, - "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", - "dev": true, - "requires": { - "type-fest": "^0.21.3" - }, - "dependencies": { - "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", - "dev": true - } - } - }, - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dev": true, - "requires": { - "color-convert": "^1.9.0" - } - }, - "anymatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", - "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", - "dev": true, - "requires": { - "normalize-path": "^3.0.0", - "picomatch": "^2.0.4" - } - }, - "argparse": { - "version": "1.0.10", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", - "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", - "dev": true, - "requires": { - "sprintf-js": "~1.0.2" - } - }, - "arr-diff": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/arr-diff/-/arr-diff-4.0.0.tgz", - "integrity": "sha1-1kYQdP6/7HHn4VI1dhoyml3HxSA=", - "dev": true - }, - "arr-flatten": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/arr-flatten/-/arr-flatten-1.1.0.tgz", - "integrity": "sha512-L3hKV5R/p5o81R7O02IGnwpDmkp6E982XhtbuwSe3O4qOtMMMtodicASA1Cny2U+aCXcNpml+m4dPsvsJ3jatg==", - "dev": true - }, - "arr-union": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", - "integrity": "sha1-45sJrqne+Gao8gbiiK9jkZuuOcQ=", - "dev": true - }, - "array-unique": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/array-unique/-/array-unique-0.3.2.tgz", - "integrity": "sha1-qJS3XUvE9s1nnvMkSp/Y9Gri1Cg=", - "dev": true - }, - "asn1": { - "version": "0.2.4", - "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz", - "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==", - "dev": true, - "requires": { - "safer-buffer": "~2.1.0" - } - }, - "assert-plus": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz", - "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=", - "dev": true - }, - "assign-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", - "integrity": "sha1-WWZ/QfrdTyDMvCu5a41Pf3jsA2c=", - "dev": true - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=", - "dev": true - }, - "atob": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", - "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", - "dev": true - }, - "aws-sign2": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz", - "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=", - "dev": true - }, - "aws4": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.11.0.tgz", - "integrity": "sha512-xh1Rl34h6Fi1DC2WWKfxUTVqRsNnr6LsKz2+hfwDxQJWmrx8+c7ylaqBMcHfl1U1r2dsifOvKX3LQuLNZ+XSvA==", - "dev": true - }, - "babel-jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-26.6.3.tgz", - "integrity": "sha512-pl4Q+GAVOHwvjrck6jKjvmGhnO3jHX/xuB9d27f+EJZ/6k+6nMuPjorrYp7s++bKKdANwzElBWnLWaObvTnaZA==", - "dev": true, - "requires": { - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__core": "^7.1.7", - "babel-plugin-istanbul": "^6.0.0", - "babel-preset-jest": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "babel-plugin-istanbul": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.0.0.tgz", - "integrity": "sha512-AF55rZXpe7trmEylbaE1Gv54wn6rwU03aptvRoVIGP8YykoSxqdVLV1TfwflBCE/QtHmqtP8SWlTENqbK8GCSQ==", - "dev": true, - "requires": { - "@babel/helper-plugin-utils": "^7.0.0", - "@istanbuljs/load-nyc-config": "^1.0.0", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-instrument": "^4.0.0", - "test-exclude": "^6.0.0" - } - }, - "babel-plugin-jest-hoist": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-26.6.2.tgz", - "integrity": "sha512-PO9t0697lNTmcEHH69mdtYiOIkkOlj9fySqfO3K1eCcdISevLAE0xY59VLLUj0SoiPiTX/JU2CYFpILydUa5Lw==", - "dev": true, - "requires": { - "@babel/template": "^7.3.3", - "@babel/types": "^7.3.3", - "@types/babel__core": "^7.0.0", - "@types/babel__traverse": "^7.0.6" - } - }, - "babel-preset-current-node-syntax": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", - "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", - "dev": true, - "requires": { - "@babel/plugin-syntax-async-generators": "^7.8.4", - "@babel/plugin-syntax-bigint": "^7.8.3", - "@babel/plugin-syntax-class-properties": "^7.8.3", - "@babel/plugin-syntax-import-meta": "^7.8.3", - "@babel/plugin-syntax-json-strings": "^7.8.3", - "@babel/plugin-syntax-logical-assignment-operators": "^7.8.3", - "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", - "@babel/plugin-syntax-numeric-separator": "^7.8.3", - "@babel/plugin-syntax-object-rest-spread": "^7.8.3", - "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", - "@babel/plugin-syntax-optional-chaining": "^7.8.3", - "@babel/plugin-syntax-top-level-await": "^7.8.3" - } - }, - "babel-preset-jest": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-26.6.2.tgz", - "integrity": "sha512-YvdtlVm9t3k777c5NPQIv6cxFFFapys25HiUmuSgHwIZhfifweR5c5Sf5nwE3MAbfu327CYSvps8Yx6ANLyleQ==", - "dev": true, - "requires": { - "babel-plugin-jest-hoist": "^26.6.2", - "babel-preset-current-node-syntax": "^1.0.0" - } - }, - "balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", - "dev": true - }, - "base": { - "version": "0.11.2", - "resolved": "https://registry.npmjs.org/base/-/base-0.11.2.tgz", - "integrity": "sha512-5T6P4xPgpp0YDFvSWwEZ4NoE3aM4QBQXDzmVbraCkFj8zHM+mba8SyqB5DbZWyR7mYHo6Y7BdQo3MoA4m0TeQg==", - "dev": true, - "requires": { - "cache-base": "^1.0.1", - "class-utils": "^0.3.5", - "component-emitter": "^1.2.1", - "define-property": "^1.0.0", - "isobject": "^3.0.1", - "mixin-deep": "^1.2.0", - "pascalcase": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "bcrypt-pbkdf": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz", - "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=", - "dev": true, - "requires": { - "tweetnacl": "^0.14.3" - } - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", - "dev": true, - "requires": { - "fill-range": "^7.0.1" - } - }, - "browser-process-hrtime": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/browser-process-hrtime/-/browser-process-hrtime-1.0.0.tgz", - "integrity": "sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==", - "dev": true - }, - "browserslist": { - "version": "4.16.5", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.16.5.tgz", - "integrity": "sha512-C2HAjrM1AI/djrpAUU/tr4pml1DqLIzJKSLDBXBrNErl9ZCCTXdhwxdJjYc16953+mBWf7Lw+uUJgpgb8cN71A==", - "dev": true, - "requires": { - "caniuse-lite": "^1.0.30001214", - "colorette": "^1.2.2", - "electron-to-chromium": "^1.3.719", - "escalade": "^3.1.1", - "node-releases": "^1.1.71" - } - }, - "bs-logger": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/bs-logger/-/bs-logger-0.2.6.tgz", - "integrity": "sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==", - "dev": true, - "requires": { - "fast-json-stable-stringify": "2.x" - } - }, - "bser": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", - "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", - "dev": true, - "requires": { - "node-int64": "^0.4.0" - } - }, - "buffer-from": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.1.tgz", - "integrity": "sha512-MQcXEUbCKtEo7bhqEs6560Hyd4XaovZlO/k9V3hjVUF/zwW7KBVdSK4gIt/bzwS9MbR5qob+F5jusZsb0YQK2A==", - "dev": true - }, - "cache-base": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/cache-base/-/cache-base-1.0.1.tgz", - "integrity": "sha512-AKcdTnFSWATd5/GCPRxr2ChwIJ85CeyrEyjRHlKxQ56d4XJMGym0uAiKn0xbLOGOl3+yRpOTi484dVCEc5AUzQ==", - "dev": true, - "requires": { - "collection-visit": "^1.0.0", - "component-emitter": "^1.2.1", - "get-value": "^2.0.6", - "has-value": "^1.0.0", - "isobject": "^3.0.1", - "set-value": "^2.0.0", - "to-object-path": "^0.3.0", - "union-value": "^1.0.0", - "unset-value": "^1.0.0" - } - }, - "callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", - "dev": true - }, - "camelcase": { - "version": "5.3.1", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", - "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", - "dev": true - }, - "caniuse-lite": { - "version": "1.0.30001216", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001216.tgz", - "integrity": "sha512-1uU+ww/n5WCJRwUcc9UH/W6925Se5aNnem/G5QaSDga2HzvjYMs8vRbekGUN/PnTZ7ezTHcxxTEb9fgiMYwH6Q==", - "dev": true - }, - "capture-exit": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/capture-exit/-/capture-exit-2.0.0.tgz", - "integrity": "sha512-PiT/hQmTonHhl/HFGN+Lx3JJUznrVYJ3+AQsnthneZbvW7x+f08Tk7yLJTLEOUvBTbduLeeBkxEaYXUOUrRq6g==", - "dev": true, - "requires": { - "rsvp": "^4.8.4" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", - "dev": true - }, - "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - } - }, - "char-regex": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", - "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", - "dev": true - }, - "ci-info": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", - "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", - "dev": true - }, - "cjs-module-lexer": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-0.6.0.tgz", - "integrity": "sha512-uc2Vix1frTfnuzxxu1Hp4ktSvM3QaI4oXl4ZUqL1wjTu/BGki9TrCWoqLTg/drR1KwAEarXuRFCG2Svr1GxPFw==", - "dev": true - }, - "class-utils": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", - "integrity": "sha512-qOhPa/Fj7s6TY8H8esGu5QNpMMQxz79h+urzrNYN6mn+9BnxlDGf5QZ+XeCDsxSjPqsSR56XOZOJmpeurnLMeg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "define-property": "^0.2.5", - "isobject": "^3.0.0", - "static-extend": "^0.1.1" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "cliui": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", - "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", - "dev": true, - "requires": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^6.2.0" - } - }, - "co": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", - "integrity": "sha1-bqa989hTrlTMuOR7+gvz+QMfsYQ=", - "dev": true - }, - "collect-v8-coverage": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.1.tgz", - "integrity": "sha512-iBPtljfCNcTKNAto0KEtDfZ3qzjJvqE3aTGZsbhjSBlorqpXJlaWWtPO35D+ZImoC3KWejX64o+yPGxhWSTzfg==", - "dev": true - }, - "collection-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/collection-visit/-/collection-visit-1.0.0.tgz", - "integrity": "sha1-S8A3PBZLwykbTTaMgpzxqApZ3KA=", - "dev": true, - "requires": { - "map-visit": "^1.0.0", - "object-visit": "^1.0.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dev": true, - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "colorette": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.2.2.tgz", - "integrity": "sha512-MKGMzyfeuutC/ZJ1cba9NqcNpfeqMUcYmyF1ZFY6/Cn7CNSAKx6a+s48sqLqyAiZuaP2TcqMhoo+dlwFnVxT9w==", - "dev": true - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "dev": true, - "requires": { - "delayed-stream": "~1.0.0" - } - }, - "component-emitter": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", - "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==", - "dev": true - }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "convert-source-map": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.7.0.tgz", - "integrity": "sha512-4FJkXzKXEDB1snCFZlLP4gpC3JILicCpGbzG9f9G7tGqGCzETQ2hWPrcinA9oU4wtf2biUaEH5065UnMeR33oA==", - "dev": true, - "requires": { - "safe-buffer": "~5.1.1" - } - }, - "copy-descriptor": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/copy-descriptor/-/copy-descriptor-0.1.1.tgz", - "integrity": "sha1-Z29us8OZl8LuGsOpJP1hJHSPV40=", - "dev": true - }, - "core-util-is": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz", - "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac=", - "dev": true - }, - "cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", - "dev": true, - "requires": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - }, - "dependencies": { - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - } - } - }, - "cssom": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.4.4.tgz", - "integrity": "sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==", - "dev": true - }, - "cssstyle": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/cssstyle/-/cssstyle-2.3.0.tgz", - "integrity": "sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==", - "dev": true, - "requires": { - "cssom": "~0.3.6" - }, - "dependencies": { - "cssom": { - "version": "0.3.8", - "resolved": "https://registry.npmjs.org/cssom/-/cssom-0.3.8.tgz", - "integrity": "sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==", - "dev": true - } - } - }, - "dashdash": { - "version": "1.14.1", - "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz", - "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "data-urls": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/data-urls/-/data-urls-2.0.0.tgz", - "integrity": "sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==", - "dev": true, - "requires": { - "abab": "^2.0.3", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.0.0" - } - }, - "debug": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.1.tgz", - "integrity": "sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==", - "dev": true, - "requires": { - "ms": "2.1.2" - } - }, - "decamelize": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", - "dev": true - }, - "decimal.js": { - "version": "10.2.1", - "resolved": "https://registry.npmjs.org/decimal.js/-/decimal.js-10.2.1.tgz", - "integrity": "sha512-KaL7+6Fw6i5A2XSnsbhm/6B+NuEA7TZ4vqxnd5tXz9sbKtrN9Srj8ab4vKVdK8YAqZO9P1kg45Y6YLoduPf+kw==", - "dev": true - }, - "decode-uri-component": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.2.0.tgz", - "integrity": "sha1-6zkTMzRYd1y4TNGh+uBiEGu4dUU=", - "dev": true - }, - "dedent": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", - "integrity": "sha1-JJXduvbrh0q7Dhvp3yLS5aVEMmw=", - "dev": true - }, - "deep-is": { - "version": "0.1.3", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.3.tgz", - "integrity": "sha1-s2nW+128E+7PUk+RsHD+7cNXzzQ=", - "dev": true - }, - "deepmerge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.2.2.tgz", - "integrity": "sha512-FJ3UgI4gIl+PHZm53knsuSFpE+nESMr7M4v9QcgB7S63Kj/6WqMiFQJpBBYz1Pt+66bZpP3Q7Lye0Oo9MPKEdg==", - "dev": true - }, - "define-properties": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.3.tgz", - "integrity": "sha512-3MqfYKj2lLzdMSf8ZIZE/V+Zuy+BgD6f164e8K2w7dgnpKArBDerGYpM46IYYcjnkdPNMjPk9A6VFB8+3SKlXQ==", - "dev": true, - "requires": { - "object-keys": "^1.0.12" - } - }, - "define-property": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-2.0.2.tgz", - "integrity": "sha512-jwK2UV4cnPpbcG7+VRARKTZPUWowwXA8bzH5NP6ud0oeAxyYPuGZUAC7hMugpCdz4BeSZl2Dl9k66CHJ/46ZYQ==", - "dev": true, - "requires": { - "is-descriptor": "^1.0.2", - "isobject": "^3.0.1" - }, - "dependencies": { - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=", - "dev": true - }, - "detect-newline": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", - "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", - "dev": true - }, - "diff-sequences": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-26.6.2.tgz", - "integrity": "sha512-Mv/TDa3nZ9sbc5soK+OoA74BsS3mL37yixCvUAQkiuA4Wz6YtwP/K47n2rv2ovzHZvoiQeA5FTQOschKkEwB0Q==", - "dev": true - }, - "domexception": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/domexception/-/domexception-2.0.1.tgz", - "integrity": "sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==", - "dev": true, - "requires": { - "webidl-conversions": "^5.0.0" - }, - "dependencies": { - "webidl-conversions": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-5.0.0.tgz", - "integrity": "sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==", - "dev": true - } - } - }, - "ecc-jsbn": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz", - "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=", - "dev": true, - "requires": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "electron-to-chromium": { - "version": "1.3.720", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.3.720.tgz", - "integrity": "sha512-B6zLTxxaOFP4WZm6DrvgRk8kLFYWNhQ5TrHMC0l5WtkMXhU5UbnvWoTfeEwqOruUSlNMhVLfYak7REX6oC5Yfw==", - "dev": true - }, - "emittery": { - "version": "0.7.2", - "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.7.2.tgz", - "integrity": "sha512-A8OG5SR/ij3SsJdWDJdkkSYUjQdCUx6APQXem0SaEePBSRg4eymGYwBkKo1Y6DU+af/Jn2dBQqDBvjnr9Vi8nQ==", - "dev": true - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, - "error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", - "dev": true, - "requires": { - "is-arrayish": "^0.2.1" - } - }, - "escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", - "dev": true - }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", - "dev": true - }, - "escodegen": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.0.0.tgz", - "integrity": "sha512-mmHKys/C8BFUGI+MAWNcSYoORYLMdPzjrknd2Vc+bUsjN5bXcr8EhrNB+UTqfL1y3I9c4fw2ihgtMPQLBRiQxw==", - "dev": true, - "requires": { - "esprima": "^4.0.1", - "estraverse": "^5.2.0", - "esutils": "^2.0.2", - "optionator": "^0.8.1", - "source-map": "~0.6.1" - } - }, - "esprima": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", - "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", - "dev": true - }, - "estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true - }, - "esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", - "dev": true - }, - "exec-sh": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/exec-sh/-/exec-sh-0.3.6.tgz", - "integrity": "sha512-nQn+hI3yp+oD0huYhKwvYI32+JFeq+XkNcD1GAo3Y/MjxsfVGmrrzrnzjWiNY6f+pUCP440fThsFh5gZrRAU/w==", - "dev": true - }, - "execa": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-1.0.0.tgz", - "integrity": "sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==", - "dev": true, - "requires": { - "cross-spawn": "^6.0.0", - "get-stream": "^4.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - } - }, - "exit": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", - "integrity": "sha1-BjJjj42HfMghB9MKD/8aF8uhzQw=", - "dev": true - }, - "expand-brackets": { - "version": "2.1.4", - "resolved": "https://registry.npmjs.org/expand-brackets/-/expand-brackets-2.1.4.tgz", - "integrity": "sha1-t3c14xXOMPa27/D4OwQVGiJEliI=", - "dev": true, - "requires": { - "debug": "^2.3.3", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "posix-character-classes": "^0.1.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - } - } - }, - "expect": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/expect/-/expect-26.6.2.tgz", - "integrity": "sha512-9/hlOBkQl2l/PLHJx6JjoDF6xPKcJEsUlWKb23rKE7KzeDqUZKXKNMW27KIue5JMdBV9HgmoJPcc8HtO85t9IA==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "ansi-styles": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-regex-util": "^26.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, - "extend-shallow": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", - "integrity": "sha1-Jqcarwc7OfshJxcnRhMcJwQCjbg=", - "dev": true, - "requires": { - "assign-symbols": "^1.0.0", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "extglob": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/extglob/-/extglob-2.0.4.tgz", - "integrity": "sha512-Nmb6QXkELsuBr24CJSkilo6UHHgbekK5UiZgfE6UHD3Eb27YC6oD+bhcT+tJ6cl8dmsgdQxnWlcry8ksBIBLpw==", - "dev": true, - "requires": { - "array-unique": "^0.3.2", - "define-property": "^1.0.0", - "expand-brackets": "^2.1.4", - "extend-shallow": "^2.0.1", - "fragment-cache": "^0.2.1", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "extsprintf": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz", - "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=", - "dev": true - }, - "fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha1-PYpcZog6FqMMqGQ+hR8Zuqd5eRc=", - "dev": true - }, - "fb-watchman": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.1.tgz", - "integrity": "sha512-DkPJKQeY6kKwmuMretBhr7G6Vodr7bFwDYTXIkfG1gjvNpaxBTQV3PbXg6bR1c1UP4jPOX0jHUbbHANL9vRjVg==", - "dev": true, - "requires": { - "bser": "2.1.1" - } - }, - "fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", - "dev": true, - "requires": { - "to-regex-range": "^5.0.1" - } - }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "for-in": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/for-in/-/for-in-1.0.2.tgz", - "integrity": "sha1-gQaNKVqBQuwKxybG4iAMMPttXoA=", - "dev": true - }, - "forever-agent": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz", - "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=", - "dev": true - }, - "form-data": { - "version": "2.3.3", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz", - "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==", - "dev": true, - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, - "fragment-cache": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/fragment-cache/-/fragment-cache-0.2.1.tgz", - "integrity": "sha1-QpD60n8T6Jvn8zeZxrxaCr//DRk=", - "dev": true, - "requires": { - "map-cache": "^0.2.2" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true - }, - "fsevents": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", - "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", - "dev": true, - "optional": true - }, - "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true - }, - "gensync": { - "version": "1.0.0-beta.2", - "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", - "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", - "dev": true - }, - "get-caller-file": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", - "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", - "dev": true - }, - "get-package-type": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", - "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", - "dev": true - }, - "get-stream": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz", - "integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "get-value": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", - "integrity": "sha1-3BXKHGcjh8p2vTesCjlbogQqLCg=", - "dev": true - }, - "getpass": { - "version": "0.1.7", - "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz", - "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0" - } - }, - "glob": { - "version": "7.1.6", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", - "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", - "dev": true, - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "globals": { - "version": "11.12.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", - "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.0.tgz", - "integrity": "sha512-jpSvDPV4Cq/bgtpndIWbI5hmYxhQGHPC4d4cqBPb4DLniCfhJokdXhwhaDuLBGLQdvvRum/UiX6ECVIPvDXqdg==", - "dev": true - }, - "growly": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/growly/-/growly-1.3.0.tgz", - "integrity": "sha1-8QdIy+dq+WS3yWyTxrzCivEgwIE=", - "dev": true, - "optional": true - }, - "har-schema": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz", - "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=", - "dev": true - }, - "har-validator": { - "version": "5.1.5", - "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz", - "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==", - "dev": true, - "requires": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - } - }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", - "dev": true, - "requires": { - "function-bind": "^1.1.1" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", - "dev": true - }, - "has-symbols": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.0.tgz", - "integrity": "sha1-uhqPGvKg/DllD1yFA2dwQSIGO0Q=", - "dev": true - }, - "has-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-1.0.0.tgz", - "integrity": "sha1-GLKB2lhbHFxR3vJMkw7SmgvmsXc=", - "dev": true, - "requires": { - "get-value": "^2.0.6", - "has-values": "^1.0.0", - "isobject": "^3.0.0" - } - }, - "has-values": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-1.0.0.tgz", - "integrity": "sha1-lbC2P+whRmGab+V/51Yo1aOe/k8=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "kind-of": "^4.0.0" - }, - "dependencies": { - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "kind-of": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-4.0.0.tgz", - "integrity": "sha1-IIE989cSkosgc3hpGkUGb65y3Vc=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "html-encoding-sniffer": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/html-encoding-sniffer/-/html-encoding-sniffer-2.0.1.tgz", - "integrity": "sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==", - "dev": true, - "requires": { - "whatwg-encoding": "^1.0.5" - } - }, - "html-escaper": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", - "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", - "dev": true - }, - "http-signature": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz", - "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - } - }, - "human-signals": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-1.1.1.tgz", - "integrity": "sha512-SEQu7vl8KjNL2eoGBLF3+wAjpsNfA9XMlXAYj/3EdaNfAlxKthD1xjEQfGOUhllCGGJVNY34bRr6lPINhNjyZw==", - "dev": true - }, - "iconv-lite": { - "version": "0.4.24", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", - "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", - "dev": true, - "requires": { - "safer-buffer": ">= 2.1.2 < 3" - } - }, - "import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, - "imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true - }, - "is-accessor-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-0.1.6.tgz", - "integrity": "sha1-qeEss66Nh2cn7u84Q/igiXtcmNY=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", - "dev": true - }, - "is-buffer": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.6.tgz", - "integrity": "sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==", - "dev": true - }, - "is-ci": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-ci/-/is-ci-2.0.0.tgz", - "integrity": "sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==", - "dev": true, - "requires": { - "ci-info": "^2.0.0" - } - }, - "is-core-module": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.3.0.tgz", - "integrity": "sha512-xSphU2KG9867tsYdLD4RWQ1VqdFl4HTO9Thf3I/3dLEfr0dbPTWKsuCKrgqMljg4nPE+Gq0VCnzT3gr0CyBmsw==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - }, - "is-data-descriptor": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-0.1.4.tgz", - "integrity": "sha1-C17mSDiOLIYCgueT8YVv7D8wG1Y=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "is-date-object": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.1.tgz", - "integrity": "sha1-mqIOtq7rv/d/vTPnTKAbM1gdOhY=", - "dev": true - }, - "is-descriptor": { - "version": "0.1.6", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-0.1.6.tgz", - "integrity": "sha512-avDYr0SB3DwO9zsMov0gKCESFYqCnE4hq/4z3TdUlukEy5t9C0YRq7HLrsN52NAcqXKaepeCD0n+B0arnVG3Hg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^0.1.6", - "is-data-descriptor": "^0.1.4", - "kind-of": "^5.0.0" - }, - "dependencies": { - "kind-of": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-5.1.0.tgz", - "integrity": "sha512-NGEErnH6F2vUuXDh+OlbcKW7/wOcfdRHaZ7VWtqCztfHri/++YKmP51OdWeGPuqCOba6kk2OTe5d02VmTB80Pw==", - "dev": true - } - } - }, - "is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "dev": true, - "optional": true - }, - "is-extendable": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", - "integrity": "sha1-YrEQ4omkcUGOPsNqYX1HLjAd/Ik=", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "is-generator-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", - "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", - "dev": true - }, - "is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "is-potential-custom-element-name": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-potential-custom-element-name/-/is-potential-custom-element-name-1.0.1.tgz", - "integrity": "sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==", - "dev": true - }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha1-EtSj3U5o4Lec6428hBc66A2RykQ=", - "dev": true - }, - "is-symbol": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.2.tgz", - "integrity": "sha512-HS8bZ9ox60yCJLH9snBpIwv9pYUAkcuLhSA1oero1UB5y9aiQpRA8y2ex945AOtCZL1lJDeIk3G5LthswI46Lw==", - "dev": true, - "requires": { - "has-symbols": "^1.0.0" - } - }, - "is-typedarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz", - "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=", - "dev": true - }, - "is-windows": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-windows/-/is-windows-1.0.2.tgz", - "integrity": "sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==", - "dev": true - }, - "is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dev": true, - "optional": true, - "requires": { - "is-docker": "^2.0.0" - } - }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=", - "dev": true - }, - "isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, - "isstream": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz", - "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=", - "dev": true - }, - "istanbul-lib-coverage": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.0.0.tgz", - "integrity": "sha512-UiUIqxMgRDET6eR+o5HbfRYP1l0hqkWOs7vNxC/mggutCMUIhWMm8gAHb8tHlyfD3/l6rlgNA5cKdDzEAf6hEg==", - "dev": true - }, - "istanbul-lib-instrument": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-4.0.3.tgz", - "integrity": "sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==", - "dev": true, - "requires": { - "@babel/core": "^7.7.5", - "@istanbuljs/schema": "^0.1.2", - "istanbul-lib-coverage": "^3.0.0", - "semver": "^6.3.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "istanbul-lib-report": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.0.tgz", - "integrity": "sha512-wcdi+uAKzfiGT2abPpKZ0hSU1rGQjUQnLvtY5MpQ7QCTahD3VODhcu4wcfY1YtkGaDD5yuydOLINXsfbus9ROw==", - "dev": true, - "requires": { - "istanbul-lib-coverage": "^3.0.0", - "make-dir": "^3.0.0", - "supports-color": "^7.1.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "istanbul-lib-source-maps": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.0.tgz", - "integrity": "sha512-c16LpFRkR8vQXyHZ5nLpY35JZtzj1PQY1iZmesUbf1FZHbIupcWfjgOXBY9YHkLEQ6puz1u4Dgj6qmU/DisrZg==", - "dev": true, - "requires": { - "debug": "^4.1.1", - "istanbul-lib-coverage": "^3.0.0", - "source-map": "^0.6.1" - } - }, - "istanbul-reports": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.0.2.tgz", - "integrity": "sha512-9tZvz7AiR3PEDNGiV9vIouQ/EAcqMXFmkcA1CDFTwOB98OZVDL0PH9glHotf5Ugp6GCOTypfzGWI/OqjWNCRUw==", - "dev": true, - "requires": { - "html-escaper": "^2.0.0", - "istanbul-lib-report": "^3.0.0" - } - }, - "jest": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest/-/jest-26.6.3.tgz", - "integrity": "sha512-lGS5PXGAzR4RF7V5+XObhqz2KZIDUA1yD0DG6pBVmy10eh0ZIXQImRuzocsI/N2XZ1GrLFwTS27In2i2jlpq1Q==", - "dev": true, - "requires": { - "@jest/core": "^26.6.3", - "import-local": "^3.0.2", - "jest-cli": "^26.6.3" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "jest-cli": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-26.6.3.tgz", - "integrity": "sha512-GF9noBSa9t08pSyl3CY4frMrqp+aQXFGFkf5hEPbh/pIUFYWMK6ZLTfbmadxJVcJrdRoChlWQsA2VkJcDFK8hg==", - "dev": true, - "requires": { - "@jest/core": "^26.6.3", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "import-local": "^3.0.2", - "is-ci": "^2.0.0", - "jest-config": "^26.6.3", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "prompts": "^2.0.1", - "yargs": "^15.4.1" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-changed-files": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-26.6.2.tgz", - "integrity": "sha512-fDS7szLcY9sCtIip8Fjry9oGf3I2ht/QT21bAHm5Dmf0mD4X3ReNUf17y+bO6fR8WgbIZTlbyG1ak/53cbRzKQ==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "execa": "^4.0.0", - "throat": "^5.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", - "dev": true, - "requires": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" - } - }, - "execa": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-4.1.0.tgz", - "integrity": "sha512-j5W0//W7f8UxAn8hXVnwG8tLwdiUy4FJLcSupCg6maBYZDpyBvTApK7KyuI4bKj8KOh1r2YH+6ucuYtJv1bTZA==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.0", - "get-stream": "^5.0.0", - "human-signals": "^1.1.1", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.0", - "onetime": "^5.1.0", - "signal-exit": "^3.0.2", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - }, - "is-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.0.tgz", - "integrity": "sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - }, - "path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", - "dev": true - }, - "shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", - "dev": true, - "requires": { - "shebang-regex": "^3.0.0" - } - }, - "shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", - "dev": true - }, - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "jest-circus": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-26.6.3.tgz", - "integrity": "sha512-ACrpWZGcQMpbv13XbzRzpytEJlilP/Su0JtNCi5r/xLpOUhnaIJr8leYYpLEMgPFURZISEHrnnpmB54Q/UziPw==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "dedent": "^0.7.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runner": "^26.6.3", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "stack-utils": "^2.0.2", - "throat": "^5.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-config": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-26.6.3.tgz", - "integrity": "sha512-t5qdIj/bCj2j7NFVHb2nFB4aUdfucDn3JRKgrZnplb8nieAirAzRSHP8uDEd+qV6ygzg9Pz4YG7UTJf94LPSyg==", - "dev": true, - "requires": { - "@babel/core": "^7.1.0", - "@jest/test-sequencer": "^26.6.3", - "@jest/types": "^26.6.2", - "babel-jest": "^26.6.3", - "chalk": "^4.0.0", - "deepmerge": "^4.2.2", - "glob": "^7.1.1", - "graceful-fs": "^4.2.4", - "jest-environment-jsdom": "^26.6.2", - "jest-environment-node": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-jasmine2": "^26.6.3", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-diff": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-26.6.2.tgz", - "integrity": "sha512-6m+9Z3Gv9wN0WFVasqjCL/06+EFCMTqDEUl/b87HYK2rAPTyfz4ZIuSlPhY51PIQRWx5TaxeF1qmXKe9gfN3sA==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "diff-sequences": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-docblock": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-26.0.0.tgz", - "integrity": "sha512-RDZ4Iz3QbtRWycd8bUEPxQsTlYazfYn/h5R65Fc6gOfwozFhoImx+affzky/FFBuqISPTqjXomoIGJVKBWoo0w==", - "dev": true, - "requires": { - "detect-newline": "^3.0.0" - } - }, - "jest-each": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-26.6.2.tgz", - "integrity": "sha512-Mer/f0KaATbjl8MCJ+0GEpNdqmnVmDYqCTJYTvoo7rqmRiDllmp2AYN+06F93nXcY3ur9ShIjS+CO/uD+BbH4A==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-environment-jsdom": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-jsdom/-/jest-environment-jsdom-26.6.2.tgz", - "integrity": "sha512-jgPqCruTlt3Kwqg5/WVFyHIOJHsiAvhcp2qiR2QQstuG9yWox5+iHpU3ZrcBxW14T4fe5Z68jAfLRh7joCSP2Q==", - "dev": true, - "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2", - "jsdom": "^16.4.0" - } - }, - "jest-environment-node": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-26.6.2.tgz", - "integrity": "sha512-zhtMio3Exty18dy8ee8eJ9kjnRyZC1N4C1Nt/VShN1apyXc8rWGtJ9lI7vqiWcyyXS4BVSEn9lxAM2D+07/Tag==", - "dev": true, - "requires": { - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "jest-mock": "^26.6.2", - "jest-util": "^26.6.2" - } - }, - "jest-get-type": { - "version": "26.3.0", - "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-26.3.0.tgz", - "integrity": "sha512-TpfaviN1R2pQWkIihlfEanwOXK0zcxrKEE4MlU6Tn7keoXdN6/3gK/xl0yEh8DOunn5pOVGKf8hB4R9gVh04ig==", - "dev": true - }, - "jest-haste-map": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-26.6.2.tgz", - "integrity": "sha512-easWIJXIw71B2RdR8kgqpjQrbMRWQBgiBwXYEhtGUTaX+doCjBheluShdDMeR8IMfJiTqH4+zfhtg29apJf/8w==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "@types/graceful-fs": "^4.1.2", - "@types/node": "*", - "anymatch": "^3.0.3", - "fb-watchman": "^2.0.0", - "fsevents": "^2.1.2", - "graceful-fs": "^4.2.4", - "jest-regex-util": "^26.0.0", - "jest-serializer": "^26.6.2", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "micromatch": "^4.0.2", - "sane": "^4.0.3", - "walker": "^1.0.7" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - } - } - }, - "jest-jasmine2": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-jasmine2/-/jest-jasmine2-26.6.3.tgz", - "integrity": "sha512-kPKUrQtc8aYwBV7CqBg5pu+tmYXlvFlSFYn18ev4gPFtrRzB15N2gW/Roew3187q2w2eHuu0MU9TJz6w0/nPEg==", - "dev": true, - "requires": { - "@babel/traverse": "^7.1.0", - "@jest/environment": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "co": "^4.6.0", - "expect": "^26.6.2", - "is-generator-fn": "^2.0.0", - "jest-each": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "pretty-format": "^26.6.2", - "throat": "^5.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-leak-detector": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-26.6.2.tgz", - "integrity": "sha512-i4xlXpsVSMeKvg2cEKdfhh0H39qlJlP5Ex1yQxwF9ubahboQYMgTtz5oML35AVA3B4Eu+YsmwaiKVev9KCvLxg==", - "dev": true, - "requires": { - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - } - }, - "jest-matcher-utils": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-26.6.2.tgz", - "integrity": "sha512-llnc8vQgYcNqDrqRDXWwMr9i7rS5XFiCwvh6DTP7Jqa2mqpcCBBlpCbn+trkG0KNhPu/h8rzyBkriOtBstvWhw==", - "dev": true, - "requires": { - "chalk": "^4.0.0", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-message-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-26.6.2.tgz", - "integrity": "sha512-rGiLePzQ3AzwUshu2+Rn+UMFk0pHN58sOG+IaJbk5Jxuqo3NYO1U2/MIR4S1sKgsoYSXSzdtSa0TgrmtUwEbmA==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/stack-utils": "^2.0.0", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "micromatch": "^4.0.2", - "pretty-format": "^26.6.2", - "slash": "^3.0.0", - "stack-utils": "^2.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-mock": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-26.6.2.tgz", - "integrity": "sha512-YyFjePHHp1LzpzYcmgqkJ0nm0gg/lJx2aZFzFy1S6eUqNjXsOqTK10zNRff2dNfssgokjkG65OlWNcIlgd3zew==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*" - } - }, - "jest-pnp-resolver": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.2.tgz", - "integrity": "sha512-olV41bKSMm8BdnuMsewT4jqlZ8+3TCARAXjZGT9jcoSnrfUnRCqnMoF9XEeoWjbzObpqF9dRhHQj0Xb9QdF6/w==", - "dev": true - }, - "jest-regex-util": { - "version": "26.0.0", - "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-26.0.0.tgz", - "integrity": "sha512-Gv3ZIs/nA48/Zvjrl34bf+oD76JHiGDUxNOVgUjh3j890sblXryjY4rss71fPtD/njchl6PSE2hIhvyWa1eT0A==", - "dev": true - }, - "jest-resolve": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-26.6.2.tgz", - "integrity": "sha512-sOxsZOq25mT1wRsfHcbtkInS+Ek7Q8jCHUB0ZUTP0tc/c41QHriU/NunqMfCUWsL4H3MHpvQD4QR9kSYhS7UvQ==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "jest-pnp-resolver": "^1.2.2", - "jest-util": "^26.6.2", - "read-pkg-up": "^7.0.1", - "resolve": "^1.18.1", - "slash": "^3.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "resolve": { - "version": "1.20.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.20.0.tgz", - "integrity": "sha512-wENBPt4ySzg4ybFQW2TT1zMQucPK95HSh/nq2CFTZVOGut2+pQvSsgtda4d26YrYcr067wjbmzOG8byDPBX63A==", - "dev": true, - "requires": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - } - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-resolve-dependencies": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-26.6.3.tgz", - "integrity": "sha512-pVwUjJkxbhe4RY8QEWzN3vns2kqyuldKpxlxJlzEYfKSvY6/bMvxoFrYYzUO1Gx28yKWN37qyV7rIoIp2h8fTg==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-snapshot": "^26.6.2" - } - }, - "jest-runner": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-26.6.3.tgz", - "integrity": "sha512-atgKpRHnaA2OvByG/HpGA4g6CSPS/1LK0jK3gATJAoptC1ojltpmVlYC3TYgdmGp+GLuhzpH30Gvs36szSL2JQ==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "emittery": "^0.7.1", - "exit": "^0.1.2", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-docblock": "^26.0.0", - "jest-haste-map": "^26.6.2", - "jest-leak-detector": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "jest-runtime": "^26.6.3", - "jest-util": "^26.6.2", - "jest-worker": "^26.6.2", - "source-map-support": "^0.5.6", - "throat": "^5.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-runtime": { - "version": "26.6.3", - "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-26.6.3.tgz", - "integrity": "sha512-lrzyR3N8sacTAMeonbqpnSka1dHNux2uk0qqDXVkMv2c/A3wYnvQ4EXuI013Y6+gSKSCxdaczvf4HF0mVXHRdw==", - "dev": true, - "requires": { - "@jest/console": "^26.6.2", - "@jest/environment": "^26.6.2", - "@jest/fake-timers": "^26.6.2", - "@jest/globals": "^26.6.2", - "@jest/source-map": "^26.6.2", - "@jest/test-result": "^26.6.2", - "@jest/transform": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/yargs": "^15.0.0", - "chalk": "^4.0.0", - "cjs-module-lexer": "^0.6.0", - "collect-v8-coverage": "^1.0.0", - "exit": "^0.1.2", - "glob": "^7.1.3", - "graceful-fs": "^4.2.4", - "jest-config": "^26.6.3", - "jest-haste-map": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-mock": "^26.6.2", - "jest-regex-util": "^26.0.0", - "jest-resolve": "^26.6.2", - "jest-snapshot": "^26.6.2", - "jest-util": "^26.6.2", - "jest-validate": "^26.6.2", - "slash": "^3.0.0", - "strip-bom": "^4.0.0", - "yargs": "^15.4.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "strip-bom": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", - "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-serializer": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-serializer/-/jest-serializer-26.6.2.tgz", - "integrity": "sha512-S5wqyz0DXnNJPd/xfIzZ5Xnp1HrJWBczg8mMfMpN78OJ5eDxXyf+Ygld9wX1DnUWbIbhM1YDY95NjR4CBXkb2g==", - "dev": true, - "requires": { - "@types/node": "*", - "graceful-fs": "^4.2.4" - }, - "dependencies": { - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - } - } - }, - "jest-snapshot": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-26.6.2.tgz", - "integrity": "sha512-OLhxz05EzUtsAmOMzuupt1lHYXCNib0ECyuZ/PZOx9TrZcC8vL0x+DUG3TL+GLX3yHG45e6YGjIm0XwDc3q3og==", - "dev": true, - "requires": { - "@babel/types": "^7.0.0", - "@jest/types": "^26.6.2", - "@types/babel__traverse": "^7.0.4", - "@types/prettier": "^2.0.0", - "chalk": "^4.0.0", - "expect": "^26.6.2", - "graceful-fs": "^4.2.4", - "jest-diff": "^26.6.2", - "jest-get-type": "^26.3.0", - "jest-haste-map": "^26.6.2", - "jest-matcher-utils": "^26.6.2", - "jest-message-util": "^26.6.2", - "jest-resolve": "^26.6.2", - "natural-compare": "^1.4.0", - "pretty-format": "^26.6.2", - "semver": "^7.3.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-util": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-26.6.2.tgz", - "integrity": "sha512-MDW0fKfsn0OI7MS7Euz6h8HNDXVQ0gaM9uW6RjfDmd1DAFcaxX9OqIakHIqhbnmF08Cf2DLDG+ulq8YQQ0Lp0Q==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "@types/node": "*", - "chalk": "^4.0.0", - "graceful-fs": "^4.2.4", - "is-ci": "^2.0.0", - "micromatch": "^4.0.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "graceful-fs": { - "version": "4.2.6", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.6.tgz", - "integrity": "sha512-nTnJ528pbqxYanhpDYsi4Rd8MAeaBA67+RZ10CM1m3bTAVFEDcd5AuA4a6W5YkGZ1iNXHzZz8T6TBKLeBuNriQ==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-validate": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-26.6.2.tgz", - "integrity": "sha512-NEYZ9Aeyj0i5rQqbq+tpIOom0YS1u2MVu6+euBsvpgIme+FOfRmoC4R5p0JiAUpaFvFy24xgrpMknarR/93XjQ==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "camelcase": "^6.0.0", - "chalk": "^4.0.0", - "jest-get-type": "^26.3.0", - "leven": "^3.1.0", - "pretty-format": "^26.6.2" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "camelcase": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.2.0.tgz", - "integrity": "sha512-c7wVvbw3f37nuobQNtgsgG9POC9qMbNuMQmTCqZv23b6MIz0fcYpBiOlv9gEN/hdLdnZTDQhg6e9Dq5M1vKvfg==", - "dev": true - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-watcher": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-26.6.2.tgz", - "integrity": "sha512-WKJob0P/Em2csiVthsI68p6aGKTIcsfjH9Gsx1f0A3Italz43e3ho0geSAVsmj09RWOELP1AZ/DXyJgOgDKxXQ==", - "dev": true, - "requires": { - "@jest/test-result": "^26.6.2", - "@jest/types": "^26.6.2", - "@types/node": "*", - "ansi-escapes": "^4.2.1", - "chalk": "^4.0.0", - "jest-util": "^26.6.2", - "string-length": "^4.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "jest-worker": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-26.6.2.tgz", - "integrity": "sha512-KWYVV1c4i+jbMpaBC+U++4Va0cp8OisU185o73T1vo99hqi7w8tSJfUXYswwqqrjzwxa6KpRK54WhPvwf5w6PQ==", - "dev": true, - "requires": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "js-yaml": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", - "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", - "dev": true, - "requires": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - } - }, - "jsbn": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz", - "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=", - "dev": true - }, - "jsdom": { - "version": "16.5.3", - "resolved": "https://registry.npmjs.org/jsdom/-/jsdom-16.5.3.tgz", - "integrity": "sha512-Qj1H+PEvUsOtdPJ056ewXM4UJPCi4hhLA8wpiz9F2YvsRBhuFsXxtrIFAgGBDynQA9isAMGE91PfUYbdMPXuTA==", - "dev": true, - "requires": { - "abab": "^2.0.5", - "acorn": "^8.1.0", - "acorn-globals": "^6.0.0", - "cssom": "^0.4.4", - "cssstyle": "^2.3.0", - "data-urls": "^2.0.0", - "decimal.js": "^10.2.1", - "domexception": "^2.0.1", - "escodegen": "^2.0.0", - "html-encoding-sniffer": "^2.0.1", - "is-potential-custom-element-name": "^1.0.0", - "nwsapi": "^2.2.0", - "parse5": "6.0.1", - "request": "^2.88.2", - "request-promise-native": "^1.0.9", - "saxes": "^5.0.1", - "symbol-tree": "^3.2.4", - "tough-cookie": "^4.0.0", - "w3c-hr-time": "^1.0.2", - "w3c-xmlserializer": "^2.0.0", - "webidl-conversions": "^6.1.0", - "whatwg-encoding": "^1.0.5", - "whatwg-mimetype": "^2.3.0", - "whatwg-url": "^8.5.0", - "ws": "^7.4.4", - "xml-name-validator": "^3.0.0" - } - }, - "jsesc": { - "version": "2.5.2", - "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", - "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", - "dev": true - }, - "json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "json-schema": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz", - "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=", - "dev": true - }, - "json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true - }, - "json-stringify-safe": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz", - "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=", - "dev": true - }, - "json5": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz", - "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==", - "dev": true, - "requires": { - "minimist": "^1.2.5" - } - }, - "jsprim": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz", - "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=", - "dev": true, - "requires": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.2.3", - "verror": "1.10.0" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, - "kleur": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", - "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", - "dev": true - }, - "leven": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", - "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", - "dev": true - }, - "levn": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", - "integrity": "sha1-OwmSTt+fCDwEkP3UwLxEIeBHZO4=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2" - } - }, - "lines-and-columns": { - "version": "1.1.6", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz", - "integrity": "sha1-HADHQ7QzzQpOgHWPe2SldEDZ/wA=", - "dev": true - }, - "load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha1-L19Fq5HjMhYjT9U62rZo607AmTs=", - "dev": true, - "requires": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - } - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "requires": { - "p-locate": "^4.1.0" - } - }, - "lodash": { - "version": "4.17.21", - "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", - "dev": true - }, - "lodash.set": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/lodash.set/-/lodash.set-4.3.2.tgz", - "integrity": "sha1-2HV7HagH3eJIFrDWqEvqGnYjCyM=", - "dev": true - }, - "lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", - "requires": { - "yallist": "^4.0.0" - } - }, - "make-dir": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", - "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", - "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", - "dev": true - } - } - }, - "make-error": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/make-error/-/make-error-1.3.6.tgz", - "integrity": "sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==", - "dev": true - }, - "makeerror": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.11.tgz", - "integrity": "sha1-4BpckQnyr3lmDk6LlYd5AYT1qWw=", - "dev": true, - "requires": { - "tmpl": "1.0.x" - } - }, - "map-cache": { - "version": "0.2.2", - "resolved": "https://registry.npmjs.org/map-cache/-/map-cache-0.2.2.tgz", - "integrity": "sha1-wyq9C9ZSXZsFFkW7TyasXcmKDb8=", - "dev": true - }, - "map-visit": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/map-visit/-/map-visit-1.0.0.tgz", - "integrity": "sha1-7Nyo8TFE5mDxtb1B8S80edmN+48=", - "dev": true, - "requires": { - "object-visit": "^1.0.0" - } - }, - "memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha1-htcJCzDORV1j+64S3aUaR93K+bI=", - "dev": true - }, - "merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", - "dev": true, - "requires": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - } - }, - "mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", - "dev": true - }, - "mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", - "dev": true, - "requires": { - "mime-db": "1.47.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "minimatch": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", - "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", - "dev": true, - "requires": { - "brace-expansion": "^1.1.7" - } - }, - "minimist": { - "version": "1.2.5", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz", - "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw==", - "dev": true - }, - "mixin-deep": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.2.tgz", - "integrity": "sha512-WRoDn//mXBiJ1H40rqa3vH0toePwSsGb45iInWlTySa+Uu4k3tYUSxa2v1KqAiLtvlrSzaExqS1gtk96A9zvEA==", - "dev": true, - "requires": { - "for-in": "^1.0.2", - "is-extendable": "^1.0.1" - }, - "dependencies": { - "is-extendable": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", - "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4" - } - } - } - }, - "mkdirp": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", - "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", - "dev": true - }, - "ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "nanomatch": { - "version": "1.2.13", - "resolved": "https://registry.npmjs.org/nanomatch/-/nanomatch-1.2.13.tgz", - "integrity": "sha512-fpoe2T0RbHwBTBUOftAfBPaDEi06ufaUai0mE6Yn1kacc3SnTErfb/h+X94VXzI64rKFHYImXSvdwGGCmwOqCA==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "fragment-cache": "^0.2.1", - "is-windows": "^1.0.2", - "kind-of": "^6.0.2", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.1" - } - }, - "natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "nock": { - "version": "13.1.0", - "resolved": "https://registry.npmjs.org/nock/-/nock-13.1.0.tgz", - "integrity": "sha512-3N3DUY8XYrxxzWazQ+nSBpiaJ3q6gcpNh4gXovC/QBxrsvNp4tq+wsLHF6mJ3nrn3lPLn7KCJqKxy/9aD+0fdw==", - "dev": true, - "requires": { - "debug": "^4.1.0", - "json-stringify-safe": "^5.0.1", - "lodash.set": "^4.3.2", - "propagate": "^2.0.0" - } - }, - "node-int64": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", - "integrity": "sha1-h6kGXNs1XTGC2PlM4RGIuCXGijs=", - "dev": true - }, - "node-modules-regexp": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/node-modules-regexp/-/node-modules-regexp-1.0.0.tgz", - "integrity": "sha1-jZ2+KJZKSsVxLpExZCEHxx6Q7EA=", - "dev": true - }, - "node-notifier": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/node-notifier/-/node-notifier-8.0.2.tgz", - "integrity": "sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==", - "dev": true, - "optional": true, - "requires": { - "growly": "^1.3.0", - "is-wsl": "^2.2.0", - "semver": "^7.3.2", - "shellwords": "^0.1.1", - "uuid": "^8.3.0", - "which": "^2.0.2" - }, - "dependencies": { - "which": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", - "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", - "dev": true, - "optional": true, - "requires": { - "isexe": "^2.0.0" - } - } - } - }, - "node-releases": { - "version": "1.1.71", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-1.1.71.tgz", - "integrity": "sha512-zR6HoT6LrLCRBwukmrVbHv0EpEQjksO6GmFcZQQuCAy139BEsoVKPYnf3jongYW83fAa1torLGYwxxky/p28sg==", - "dev": true - }, - "normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", - "dev": true, - "requires": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.0", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.0.tgz", - "integrity": "sha512-Ya52jSX2u7QKghxeoFGpLwCtGlt7j0oY9DYb5apt9nPlJ42ID+ulTXESnt/qAQcoSERyZ5sl3LDIOw0nAn/5DA==", - "dev": true - } - } - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, - "npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", - "dev": true, - "requires": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "dependencies": { - "read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha1-nLxoaXj+5l0WwA4rGcI3/Pbjg4k=", - "dev": true, - "requires": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" - } - } - } - }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha1-NakjLfo11wZ7TLLd8jV7GHFTbF8=", - "dev": true, - "requires": { - "path-key": "^2.0.0" - } - }, - "nwsapi": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/nwsapi/-/nwsapi-2.2.0.tgz", - "integrity": "sha512-h2AatdwYH+JHiZpv7pt/gSX1XoRGb7L/qSIeuqA6GwYoF9w1vP1cw42TO0aI2pNyshRK5893hNSl+1//vHK7hQ==", - "dev": true - }, - "oauth-sign": { - "version": "0.9.0", - "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz", - "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==", - "dev": true - }, - "object-copy": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/object-copy/-/object-copy-0.1.0.tgz", - "integrity": "sha1-fn2Fi3gb18mRpBupde04EnVOmYw=", - "dev": true, - "requires": { - "copy-descriptor": "^0.1.0", - "define-property": "^0.2.5", - "kind-of": "^3.0.3" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "object-inspect": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.7.0.tgz", - "integrity": "sha512-a7pEHdh1xKIAgTySUGgLMx/xwDZskN1Ud6egYYN3EdRW4ZMPNEDUTF+hwy2LUC+Bl+SyLXANnwz/jyh/qutKUw==", - "dev": true - }, - "object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", - "dev": true - }, - "object-visit": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/object-visit/-/object-visit-1.0.1.tgz", - "integrity": "sha1-95xEk68MU3e1n+OdOV5BBC3QRbs=", - "dev": true, - "requires": { - "isobject": "^3.0.0" - } - }, - "object.assign": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.0.tgz", - "integrity": "sha512-exHJeq6kBKj58mqGyTQ9DFvrZC/eR6OwxzoM9YRoGBqrXYonaFyGiFMuc9VZrXf7DarreEwMpurG3dd+CNyW5w==", - "dev": true, - "requires": { - "define-properties": "^1.1.2", - "function-bind": "^1.1.1", - "has-symbols": "^1.0.0", - "object-keys": "^1.0.11" - } - }, - "object.pick": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/object.pick/-/object.pick-1.3.0.tgz", - "integrity": "sha1-h6EKxMFpS9Lhy/U1kaZhQftd10c=", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", - "dev": true, - "requires": { - "wrappy": "1" - } - }, - "onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", - "dev": true, - "requires": { - "mimic-fn": "^2.1.0" - } - }, - "optionator": { - "version": "0.8.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", - "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", - "dev": true, - "requires": { - "deep-is": "~0.1.3", - "fast-levenshtein": "~2.0.6", - "levn": "~0.3.0", - "prelude-ls": "~1.1.2", - "type-check": "~0.3.2", - "word-wrap": "~1.2.3" - } - }, - "p-each-series": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-each-series/-/p-each-series-2.2.0.tgz", - "integrity": "sha512-ycIL2+1V32th+8scbpTvyHNaHe02z0sjgh91XXjAk+ZeXoPN4Z46DVUnzdso0aX4KckKw0FNNFHdjZ2UsZvxiA==", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha1-P7z7FbiZpEEjs0ttzBi3JDNqLK4=", - "dev": true - }, - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, - "parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha1-vjX1Qlvh9/bHRxhPmKeIy5lHfuA=", - "dev": true, - "requires": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" - } - }, - "parse5": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/parse5/-/parse5-6.0.1.tgz", - "integrity": "sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==", - "dev": true - }, - "pascalcase": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/pascalcase/-/pascalcase-0.1.1.tgz", - "integrity": "sha1-s2PlXoAGym/iF4TS2yK9FdeRfxQ=", - "dev": true - }, - "path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", - "dev": true - }, - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha1-QRyttXTFoUDTpLGRDUDYDMn0C0A=", - "dev": true - }, - "path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", - "dev": true - }, - "path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", - "dev": true, - "requires": { - "pify": "^3.0.0" - } - }, - "performance-now": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", - "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=", - "dev": true - }, - "picomatch": { - "version": "2.2.3", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.2.3.tgz", - "integrity": "sha512-KpELjfwcCDUb9PeigTs2mBJzXUPzAuP2oPcA989He8Rte0+YUAjw1JVedDhuTKPkHjSYzMN3npC9luThGYEKdg==", - "dev": true - }, - "pidtree": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.0.tgz", - "integrity": "sha512-9CT4NFlDcosssyg8KVFltgokyKZIFjoBxw8CTGy+5F38Y1eQWrt8tRayiUOXE+zVKQnYu5BR8JjCtvK3BcnBhg==", - "dev": true - }, - "pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha1-5aSs0sEB/fPZpNB/DbxNtJ3SgXY=", - "dev": true - }, - "pirates": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.1.tgz", - "integrity": "sha512-WuNqLTbMI3tmfef2TKxlQmAiLHKtFhlsCZnPIpuv2Ow0RDVO8lfy1Opf4NUzlMXLjPl+Men7AuVdX6TA+s+uGA==", - "dev": true, - "requires": { - "node-modules-regexp": "^1.0.0" - } - }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, - "posix-character-classes": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/posix-character-classes/-/posix-character-classes-0.1.1.tgz", - "integrity": "sha1-AerA/jta9xoqbAL+q7jB/vfgDqs=", - "dev": true - }, - "prelude-ls": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.1.2.tgz", - "integrity": "sha1-IZMqVJ9eUv/ZqCf1cOBL5iqX2lQ=", - "dev": true - }, - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true - }, - "pretty-format": { - "version": "26.6.2", - "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", - "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", - "dev": true, - "requires": { - "@jest/types": "^26.6.2", - "ansi-regex": "^5.0.0", - "ansi-styles": "^4.0.0", - "react-is": "^17.0.1" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "prompts": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.1.tgz", - "integrity": "sha512-EQyfIuO2hPDsX1L/blblV+H7I0knhgAd82cVneCwcdND9B8AuCDuRcBH6yIcG4dFzlOUqbazQqwGjx5xmsNLuQ==", - "dev": true, - "requires": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - } - }, - "propagate": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/propagate/-/propagate-2.0.1.tgz", - "integrity": "sha512-vGrhOavPSTz4QVNuBNdcNXePNdNMaO1xj9yBeH1ScQPjk/rhg9sSlCXPhMkFuaNNW/syTvYqsnbIJxMBfRbbag==", - "dev": true - }, - "psl": { - "version": "1.8.0", - "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz", - "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true - }, - "qs": { - "version": "6.5.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", - "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==", - "dev": true - }, - "react-is": { - "version": "17.0.2", - "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", - "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", - "dev": true - }, - "read-pkg": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-5.2.0.tgz", - "integrity": "sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==", - "dev": true, - "requires": { - "@types/normalize-package-data": "^2.4.0", - "normalize-package-data": "^2.5.0", - "parse-json": "^5.0.0", - "type-fest": "^0.6.0" - }, - "dependencies": { - "parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", - "dev": true, - "requires": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" - } - }, - "type-fest": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.6.0.tgz", - "integrity": "sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==", - "dev": true - } - } - }, - "read-pkg-up": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", - "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", - "dev": true, - "requires": { - "find-up": "^4.1.0", - "read-pkg": "^5.2.0", - "type-fest": "^0.8.1" - } - }, - "regex-not": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/regex-not/-/regex-not-1.0.2.tgz", - "integrity": "sha512-J6SDjUgDxQj5NusnOtdFxDwN/+HWykR8GELwctJ7mdqhcyy1xEc4SRFHUXvxTp661YaVKAjfRLZ9cCqS6tn32A==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.2", - "safe-regex": "^1.1.0" - } - }, - "remove-trailing-separator": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/remove-trailing-separator/-/remove-trailing-separator-1.1.0.tgz", - "integrity": "sha1-wkvOKig62tW8P1jg1IJJuSN52O8=", - "dev": true - }, - "repeat-element": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/repeat-element/-/repeat-element-1.1.4.tgz", - "integrity": "sha512-LFiNfRcSu7KK3evMyYOuCzv3L10TW7yC1G2/+StMjK8Y6Vqd2MG7r/Qjw4ghtuCOjFvlnms/iMmLqpvW/ES/WQ==", - "dev": true - }, - "repeat-string": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", - "dev": true - }, - "request": { - "version": "2.88.2", - "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz", - "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==", - "dev": true, - "requires": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.3", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.5.0", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - }, - "uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", - "dev": true - } - } - }, - "request-promise-core": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/request-promise-core/-/request-promise-core-1.1.4.tgz", - "integrity": "sha512-TTbAfBBRdWD7aNNOoVOBH4pN/KigV6LyapYNNlAPA8JwbovRti1E88m3sYAwsLi5ryhPKsE9APwnjFTgdUjTpw==", - "dev": true, - "requires": { - "lodash": "^4.17.19" - } - }, - "request-promise-native": { - "version": "1.0.9", - "resolved": "https://registry.npmjs.org/request-promise-native/-/request-promise-native-1.0.9.tgz", - "integrity": "sha512-wcW+sIUiWnKgNY0dqCpOZkUbF/I+YPi+f09JZIDa39Ec+q82CpSYniDp+ISgTTbKmnpJWASeJBPZmoxH84wt3g==", - "dev": true, - "requires": { - "request-promise-core": "1.1.4", - "stealthy-require": "^1.1.1", - "tough-cookie": "^2.3.3" - }, - "dependencies": { - "tough-cookie": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz", - "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==", - "dev": true, - "requires": { - "psl": "^1.1.28", - "punycode": "^2.1.1" - } - } - } - }, - "require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", - "dev": true - }, - "require-main-filename": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", - "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", - "dev": true - }, - "resolve": { - "version": "1.11.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.11.1.tgz", - "integrity": "sha512-vIpgF6wfuJOZI7KKKSP+HmiKggadPQAdsp5HiC1mvqnfp0gF1vdwgBWZIdrVft9pgqoMFQN+R7BSWZiBxx+BBw==", - "dev": true, - "requires": { - "path-parse": "^1.0.6" - } - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - } - }, - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - }, - "resolve-url": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/resolve-url/-/resolve-url-0.2.1.tgz", - "integrity": "sha1-LGN/53yJOv0qZj/iGqkIAGjiBSo=", - "dev": true - }, - "ret": { - "version": "0.1.15", - "resolved": "https://registry.npmjs.org/ret/-/ret-0.1.15.tgz", - "integrity": "sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==", - "dev": true - }, - "rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "requires": { - "glob": "^7.1.3" - } - }, - "rsvp": { - "version": "4.8.5", - "resolved": "https://registry.npmjs.org/rsvp/-/rsvp-4.8.5.tgz", - "integrity": "sha512-nfMOlASu9OnRJo1mbEk2cz0D56a1MBNrJ7orjRZQG10XDyuvwksKbuXNp6qa+kbn839HwjwhBzhFmdsaEAfauA==", - "dev": true - }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", - "dev": true - }, - "safe-regex": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/safe-regex/-/safe-regex-1.1.0.tgz", - "integrity": "sha1-QKNmnzsHfR6UPURinhV91IAjvy4=", - "dev": true, - "requires": { - "ret": "~0.1.10" - } - }, - "safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "sane": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/sane/-/sane-4.1.0.tgz", - "integrity": "sha512-hhbzAgTIX8O7SHfp2c8/kREfEn4qO/9q8C9beyY6+tvZ87EpoZ3i1RIEvp27YBswnNbY9mWd6paKVmKbAgLfZA==", - "dev": true, - "requires": { - "@cnakazawa/watch": "^1.0.3", - "anymatch": "^2.0.0", - "capture-exit": "^2.0.0", - "exec-sh": "^0.3.2", - "execa": "^1.0.0", - "fb-watchman": "^2.0.0", - "micromatch": "^3.1.4", - "minimist": "^1.1.1", - "walker": "~1.0.5" - }, - "dependencies": { - "anymatch": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-2.0.0.tgz", - "integrity": "sha512-5teOsQWABXHHBFP9y3skS5P3d/WfWXpv3FUpy+LorMrNYaT9pI4oLMQX7jzQ2KklNpGpWHzdCXTDT2Y3XGlZBw==", - "dev": true, - "requires": { - "micromatch": "^3.1.4", - "normalize-path": "^2.1.1" - } - }, - "braces": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-2.3.2.tgz", - "integrity": "sha512-aNdbnj9P8PjdXU4ybaWLK2IF3jc/EoDYbC7AazW6to3TRsfXxscC9UXOB5iDiEQrkyIbWp2SLQda4+QAa7nc3w==", - "dev": true, - "requires": { - "arr-flatten": "^1.1.0", - "array-unique": "^0.3.2", - "extend-shallow": "^2.0.1", - "fill-range": "^4.0.0", - "isobject": "^3.0.1", - "repeat-element": "^1.1.2", - "snapdragon": "^0.8.1", - "snapdragon-node": "^2.0.1", - "split-string": "^3.0.2", - "to-regex": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "fill-range": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-4.0.0.tgz", - "integrity": "sha1-1USBHUKPmOsGpj3EAtJAPDKMOPc=", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-number": "^3.0.0", - "repeat-string": "^1.6.1", - "to-regex-range": "^2.1.0" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "is-number": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-3.0.0.tgz", - "integrity": "sha1-JP1iAaR4LPUFYcgQJ2r8fRLXEZU=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "micromatch": { - "version": "3.1.10", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-3.1.10.tgz", - "integrity": "sha512-MWikgl9n9M3w+bpsY3He8L+w9eF9338xRl8IAO5viDizwSzziFEyUzo2xrrloB64ADbTf8uA8vRqqttDTOmccg==", - "dev": true, - "requires": { - "arr-diff": "^4.0.0", - "array-unique": "^0.3.2", - "braces": "^2.3.1", - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "extglob": "^2.0.4", - "fragment-cache": "^0.2.1", - "kind-of": "^6.0.2", - "nanomatch": "^1.2.9", - "object.pick": "^1.3.0", - "regex-not": "^1.0.0", - "snapdragon": "^0.8.1", - "to-regex": "^3.0.2" - } - }, - "normalize-path": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-2.1.1.tgz", - "integrity": "sha1-GrKLVW4Zg2Oowab35vogE3/mrtk=", - "dev": true, - "requires": { - "remove-trailing-separator": "^1.0.1" - } - }, - "to-regex-range": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-2.1.1.tgz", - "integrity": "sha1-fIDBe53+vlmeJzZ+DU3VWQFB2zg=", - "dev": true, - "requires": { - "is-number": "^3.0.0", - "repeat-string": "^1.6.1" - } - } - } - }, - "saxes": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/saxes/-/saxes-5.0.1.tgz", - "integrity": "sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==", - "dev": true, - "requires": { - "xmlchars": "^2.2.0" - } - }, - "semver": { - "version": "7.3.5", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.3.5.tgz", - "integrity": "sha512-PoeGJYh8HK4BTO/a9Tf6ZG3veo/A7ZVsYrSA6J8ny9nb3B1VrpkuN+z9OE5wfE5p6H4LchYZsegiQgbJD94ZFQ==", - "requires": { - "lru-cache": "^6.0.0" - } - }, - "set-blocking": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", - "dev": true - }, - "set-value": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", - "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", - "dev": true, - "requires": { - "extend-shallow": "^2.0.1", - "is-extendable": "^0.1.1", - "is-plain-object": "^2.0.3", - "split-string": "^3.0.1" - }, - "dependencies": { - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - } - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha1-RKrGW2lbAzmJaMOfNj/uXer98eo=", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha1-2kL0l0DAtC2yypcoVxyxkMmO/qM=", - "dev": true - }, - "shell-quote": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.2.tgz", - "integrity": "sha512-mRz/m/JVscCrkMyPqHc/bczi3OQHkLTqXHEFu0zDhK/qfv3UcOA4SVmRCLmos4bhjr9ekVQubj/R7waKapmiQg==", - "dev": true - }, - "shellwords": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/shellwords/-/shellwords-0.1.1.tgz", - "integrity": "sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==", - "dev": true, - "optional": true - }, - "signal-exit": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz", - "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA==", - "dev": true - }, - "sisteransi": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", - "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", - "dev": true - }, - "slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", - "dev": true - }, - "snapdragon": { - "version": "0.8.2", - "resolved": "https://registry.npmjs.org/snapdragon/-/snapdragon-0.8.2.tgz", - "integrity": "sha512-FtyOnWN/wCHTVXOMwvSv26d+ko5vWlIDD6zoUJ7LW8vh+ZBC8QdljveRP+crNrtBwioEUWy/4dMtbBjA4ioNlg==", - "dev": true, - "requires": { - "base": "^0.11.1", - "debug": "^2.2.0", - "define-property": "^0.2.5", - "extend-shallow": "^2.0.1", - "map-cache": "^0.2.2", - "source-map": "^0.5.6", - "source-map-resolve": "^0.5.0", - "use": "^3.1.0" - }, - "dependencies": { - "debug": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", - "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", - "dev": true, - "requires": { - "ms": "2.0.0" - } - }, - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - }, - "extend-shallow": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", - "integrity": "sha1-Ua99YUrZqfYQ6huvu5idaxxWiQ8=", - "dev": true, - "requires": { - "is-extendable": "^0.1.0" - } - }, - "ms": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", - "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=", - "dev": true - }, - "source-map": { - "version": "0.5.7", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", - "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", - "dev": true - } - } - }, - "snapdragon-node": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/snapdragon-node/-/snapdragon-node-2.1.1.tgz", - "integrity": "sha512-O27l4xaMYt/RSQ5TR3vpWCAB5Kb/czIcqUFOM/C4fYcLnbZUc1PkjTAMjof2pBWaSTwOUd6qUHcFGVGj7aIwnw==", - "dev": true, - "requires": { - "define-property": "^1.0.0", - "isobject": "^3.0.0", - "snapdragon-util": "^3.0.1" - }, - "dependencies": { - "define-property": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-1.0.0.tgz", - "integrity": "sha1-dp66rz9KY6rTr56NMEybvnm/sOY=", - "dev": true, - "requires": { - "is-descriptor": "^1.0.0" - } - }, - "is-accessor-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-accessor-descriptor/-/is-accessor-descriptor-1.0.0.tgz", - "integrity": "sha512-m5hnHTkcVsPfqx3AKlyttIPb7J+XykHvJP2B9bZDjlhLIoEq4XoK64Vg7boZlVWYK6LUY94dYPEE7Lh0ZkZKcQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-data-descriptor": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-data-descriptor/-/is-data-descriptor-1.0.0.tgz", - "integrity": "sha512-jbRXy1FmtAoCjQkVmIVYwuuqDFUbaOeDjmed1tOGPrsMhtJA4rD9tkgA0F1qJ3gRFRXcHYVkdeaP50Q5rE/jLQ==", - "dev": true, - "requires": { - "kind-of": "^6.0.0" - } - }, - "is-descriptor": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-descriptor/-/is-descriptor-1.0.2.tgz", - "integrity": "sha512-2eis5WqQGV7peooDyLmNEPUrps9+SXX5c9pL3xEB+4e9HnGuDa7mB7kHxHw4CbqS9k1T2hOH3miL8n8WtiYVtg==", - "dev": true, - "requires": { - "is-accessor-descriptor": "^1.0.0", - "is-data-descriptor": "^1.0.0", - "kind-of": "^6.0.2" - } - } - } - }, - "snapdragon-util": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/snapdragon-util/-/snapdragon-util-3.0.1.tgz", - "integrity": "sha512-mbKkMdQKsjX4BAL4bRYTj21edOf8cN7XHdYUJEe+Zn99hVEYcMvKPct1IqNe7+AZPirn8BCDOQBHQZknqmKlZQ==", - "dev": true, - "requires": { - "kind-of": "^3.2.0" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true - }, - "source-map-resolve": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/source-map-resolve/-/source-map-resolve-0.5.3.tgz", - "integrity": "sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==", - "dev": true, - "requires": { - "atob": "^2.1.2", - "decode-uri-component": "^0.2.0", - "resolve-url": "^0.2.1", - "source-map-url": "^0.4.0", - "urix": "^0.1.0" - } - }, - "source-map-support": { - "version": "0.5.19", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.19.tgz", - "integrity": "sha512-Wonm7zOCIJzBGQdB+thsPar0kYuCIzYvxZwlBa87yi/Mdjv7Tip2cyVbLj5o0cFPN4EVkuTwb3GDDyUx2DGnGw==", - "dev": true, - "requires": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" - } - }, - "source-map-url": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/source-map-url/-/source-map-url-0.4.1.tgz", - "integrity": "sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==", - "dev": true - }, - "spdx-correct": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.0.tgz", - "integrity": "sha512-lr2EZCctC2BNR7j7WzJ2FpDznxky1sjfxvvYEyzxNyb6lZXHODmEoJeFu4JupYlkfha1KZpJyoqiJ7pgA1qq8Q==", - "dev": true, - "requires": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-exceptions": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.2.0.tgz", - "integrity": "sha512-2XQACfElKi9SlVb1CYadKDXvoajPgBVPn/gOQLrTvHdElaVhr7ZEbqJaRnJLVNeaI4cMEAgVCeBMKF6MWRDCRA==", - "dev": true - }, - "spdx-expression-parse": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.0.tgz", - "integrity": "sha512-Yg6D3XpRD4kkOmTpdgbUiEJFKghJH03fiC1OPll5h/0sO6neh2jqRDVHOQ4o/LMea0tgCkbMgea5ip/e+MkWyg==", - "dev": true, - "requires": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "spdx-license-ids": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.5.tgz", - "integrity": "sha512-J+FWzZoynJEXGphVIS+XEh3kFSjZX/1i9gFBaWQcB+/tmpe2qUsSBABpcxqxnAxFdiUFEgAX1bjYGQvIZmoz9Q==", - "dev": true - }, - "split-string": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", - "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", - "dev": true, - "requires": { - "extend-shallow": "^3.0.0" - } - }, - "sprintf-js": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", - "dev": true - }, - "sshpk": { - "version": "1.16.1", - "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz", - "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==", - "dev": true, - "requires": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - } - }, - "stack-utils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.3.tgz", - "integrity": "sha512-gL//fkxfWUsIlFL2Tl42Cl6+HFALEaB1FU76I/Fy+oZjRreP7OPMXFlGbxM7NQsI0ZpUfw76sHnv0WNYuTb7Iw==", - "dev": true, - "requires": { - "escape-string-regexp": "^2.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", - "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", - "dev": true - } - } - }, - "static-extend": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/static-extend/-/static-extend-0.1.2.tgz", - "integrity": "sha1-YICcOcv/VTNyJv1eC1IPNB8ftcY=", - "dev": true, - "requires": { - "define-property": "^0.2.5", - "object-copy": "^0.1.0" - }, - "dependencies": { - "define-property": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/define-property/-/define-property-0.2.5.tgz", - "integrity": "sha1-w1se+RjsPJkPmlvFe+BKrOxcgRY=", - "dev": true, - "requires": { - "is-descriptor": "^0.1.0" - } - } - } - }, - "stealthy-require": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/stealthy-require/-/stealthy-require-1.1.1.tgz", - "integrity": "sha1-NbCYdbT/SfJqd35QmzCQoyJr8ks=", - "dev": true - }, - "string-length": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", - "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", - "dev": true, - "requires": { - "char-regex": "^1.0.2", - "strip-ansi": "^6.0.0" - } - }, - "string-width": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.2.tgz", - "integrity": "sha512-XBJbT3N4JhVumXE0eoLU9DCjcaF92KLNqTmFCnG1pf8duUxFGwtP6AD6nkjw9a3IdiRtL3E2w3JDiE/xi3vOeA==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.0" - } - }, - "string.prototype.padend": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.0.tgz", - "integrity": "sha512-3aIv8Ffdp8EZj8iLwREGpQaUZiPyrWrpzMBHvkiSW/bK/EGve9np07Vwy7IJ5waydpGXzQZu/F8Oze2/IWkBaA==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "es-abstract": "^1.17.0-next.1" - }, - "dependencies": { - "es-abstract": { - "version": "1.17.4", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.17.4.tgz", - "integrity": "sha512-Ae3um/gb8F0mui/jPL+QiqmglkUsaQf7FwBEHYIFkztkneosu9imhqHpBzQ3h1vit8t5iQ74t6PEVvphBZiuiQ==", - "dev": true, - "requires": { - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1", - "is-callable": "^1.1.5", - "is-regex": "^1.0.5", - "object-inspect": "^1.7.0", - "object-keys": "^1.1.1", - "object.assign": "^4.1.0", - "string.prototype.trimleft": "^2.1.1", - "string.prototype.trimright": "^2.1.1" - } - }, - "es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", - "dev": true, - "requires": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" - } - }, - "has-symbols": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.1.tgz", - "integrity": "sha512-PLcsoqu++dmEIZB+6totNFKq/7Do+Z0u4oT0zKOJNl3lYK6vGwwu2hjHs+68OEZbTjiUE9bgOABXbP/GvrS0Kg==", - "dev": true - }, - "is-callable": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.1.5.tgz", - "integrity": "sha512-ESKv5sMCJB2jnHTWZ3O5itG+O128Hsus4K4Qh1h2/cgn2vbgnLSVqfV46AeJA9D5EeeLa9w81KUXMtn34zhX+Q==", - "dev": true - }, - "is-regex": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.0.5.tgz", - "integrity": "sha512-vlKW17SNq44owv5AQR3Cq0bQPEb8+kF3UKZ2fiZNOWtztYE5i0CzCZxFDwO58qAOWtxdBRVO/V5Qin1wjCqFYQ==", - "dev": true, - "requires": { - "has": "^1.0.3" - } - } - } - }, - "string.prototype.trimleft": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimleft/-/string.prototype.trimleft-2.1.1.tgz", - "integrity": "sha512-iu2AGd3PuP5Rp7x2kEZCrB2Nf41ehzh+goo8TV7z8/XDBbsvc6HQIlUl9RjkZ4oyrW1XM5UwlGl1oVEaDjg6Ag==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "string.prototype.trimright": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/string.prototype.trimright/-/string.prototype.trimright-2.1.1.tgz", - "integrity": "sha512-qFvWL3/+QIgZXVmJBfpHmxLB7xsUXz6HsUmP8+5dRaC3Q7oKUv9Vo6aMCRZC1smrtyECFsIT30PqBJ1gTjAs+g==", - "dev": true, - "requires": { - "define-properties": "^1.1.3", - "function-bind": "^1.1.1" - } - }, - "strip-ansi": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.0.tgz", - "integrity": "sha512-AuvKTrTfQNYNIctbR1K/YGTR1756GycPsg7b9bdV9Duqur4gv6aKqHXah67Z8ImS7WEz5QVcOtlfW2rZEugt6w==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.0" - } - }, - "strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha1-IzTBjpx1n3vdVv3vfprj1YjmjtM=", - "dev": true - }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha1-u0P/VZim6wXYm1n80SnJgzE2Br8=", - "dev": true - }, - "strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", - "dev": true - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dev": true, - "requires": { - "has-flag": "^3.0.0" - } - }, - "supports-hyperlinks": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/supports-hyperlinks/-/supports-hyperlinks-2.2.0.tgz", - "integrity": "sha512-6sXEzV5+I5j8Bmq9/vUphGRM/RJNT9SCURJLjwfOg51heRtguGWDzcaBlgAzKhQa0EVNpPEKzQuBwZ8S8WaCeQ==", - "dev": true, - "requires": { - "has-flag": "^4.0.0", - "supports-color": "^7.0.0" - }, - "dependencies": { - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "symbol-tree": { - "version": "3.2.4", - "resolved": "https://registry.npmjs.org/symbol-tree/-/symbol-tree-3.2.4.tgz", - "integrity": "sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==", - "dev": true - }, - "terminal-link": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/terminal-link/-/terminal-link-2.1.1.tgz", - "integrity": "sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==", - "dev": true, - "requires": { - "ansi-escapes": "^4.2.1", - "supports-hyperlinks": "^2.0.0" - } - }, - "test-exclude": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", - "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", - "dev": true, - "requires": { - "@istanbuljs/schema": "^0.1.2", - "glob": "^7.1.4", - "minimatch": "^3.0.4" - } - }, - "throat": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", - "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", - "dev": true - }, - "tmpl": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", - "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", - "dev": true - }, - "to-fast-properties": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", - "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", - "dev": true - }, - "to-object-path": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/to-object-path/-/to-object-path-0.3.0.tgz", - "integrity": "sha1-KXWIt7Dn4KwI4E5nL4XB9JmeF68=", - "dev": true, - "requires": { - "kind-of": "^3.0.2" - }, - "dependencies": { - "kind-of": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", - "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", - "dev": true, - "requires": { - "is-buffer": "^1.1.5" - } - } - } - }, - "to-regex": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/to-regex/-/to-regex-3.0.2.tgz", - "integrity": "sha512-FWtleNAtZ/Ki2qtqej2CXTOayOH9bHDQF+Q48VpWyDXjbYxA4Yz8iDB31zXOBUlOHHKidDbqGVrTUvQMPmBGBw==", - "dev": true, - "requires": { - "define-property": "^2.0.2", - "extend-shallow": "^3.0.2", - "regex-not": "^1.0.2", - "safe-regex": "^1.1.0" - } - }, - "to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", - "dev": true, - "requires": { - "is-number": "^7.0.0" - } - }, - "tough-cookie": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-4.0.0.tgz", - "integrity": "sha512-tHdtEpQCMrc1YLrMaqXXcj6AxhYi/xgit6mZu1+EDWUn+qhUf8wMQoFIy9NXuq23zAwtcB0t/MjACGR18pcRbg==", - "dev": true, - "requires": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.1.2" - } - }, - "tr46": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-2.0.2.tgz", - "integrity": "sha512-3n1qG+/5kg+jrbTzwAykB5yRYtQCTqOGKq5U5PE3b0a1/mzo6snDhjGS0zJVJunO0NrT3Dg1MLy5TjWP/UJppg==", - "dev": true, - "requires": { - "punycode": "^2.1.1" - } - }, - "ts-jest": { - "version": "26.5.6", - "resolved": "https://registry.npmjs.org/ts-jest/-/ts-jest-26.5.6.tgz", - "integrity": "sha512-rua+rCP8DxpA8b4DQD/6X2HQS8Zy/xzViVYfEs2OQu68tkCuKLV0Md8pmX55+W24uRIyAsf/BajRfxOs+R2MKA==", - "dev": true, - "requires": { - "bs-logger": "0.x", - "buffer-from": "1.x", - "fast-json-stable-stringify": "2.x", - "jest-util": "^26.1.0", - "json5": "2.x", - "lodash": "4.x", - "make-error": "1.x", - "mkdirp": "1.x", - "semver": "7.x", - "yargs-parser": "20.x" - }, - "dependencies": { - "yargs-parser": { - "version": "20.2.7", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.7.tgz", - "integrity": "sha512-FiNkvbeHzB/syOjIUxFDCnhSfzAL8R5vs40MgLFBorXACCOAEaWu0gRZl14vG8MR9AOJIZbmkjhusqBYZ3HTHw==", - "dev": true - } - } - }, - "tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" - }, - "tunnel-agent": { - "version": "0.6.0", - "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz", - "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=", - "dev": true, - "requires": { - "safe-buffer": "^5.0.1" - } - }, - "tweetnacl": { - "version": "0.14.5", - "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz", - "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=", - "dev": true - }, - "type-check": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", - "integrity": "sha1-WITKtRLPHTVeP7eE8wgEsrUg23I=", - "dev": true, - "requires": { - "prelude-ls": "~1.1.2" - } - }, - "type-detect": { - "version": "4.0.8", - "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", - "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", - "dev": true - }, - "type-fest": { - "version": "0.8.1", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", - "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", - "dev": true - }, - "typedarray-to-buffer": { - "version": "3.1.5", - "resolved": "https://registry.npmjs.org/typedarray-to-buffer/-/typedarray-to-buffer-3.1.5.tgz", - "integrity": "sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==", - "dev": true, - "requires": { - "is-typedarray": "^1.0.0" - } - }, - "typescript": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.2.tgz", - "integrity": "sha512-zZ4hShnmnoVnAHpVHWpTcxdv7dWP60S2FsydQLV8V5PbS3FifjWFFRiHSWpDJahly88PRyV5teTSLoq4eG7mKw==", - "dev": true - }, - "union-value": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", - "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", - "dev": true, - "requires": { - "arr-union": "^3.1.0", - "get-value": "^2.0.6", - "is-extendable": "^0.1.1", - "set-value": "^2.0.1" - } - }, - "universalify": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", - "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", - "dev": true - }, - "unset-value": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/unset-value/-/unset-value-1.0.0.tgz", - "integrity": "sha1-g3aHP30jNRef+x5vw6jtDfyKtVk=", - "dev": true, - "requires": { - "has-value": "^0.3.1", - "isobject": "^3.0.0" - }, - "dependencies": { - "has-value": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/has-value/-/has-value-0.3.1.tgz", - "integrity": "sha1-ex9YutpiyoJ+wKIHgCVlSEWZXh8=", - "dev": true, - "requires": { - "get-value": "^2.0.3", - "has-values": "^0.1.4", - "isobject": "^2.0.0" - }, - "dependencies": { - "isobject": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-2.1.0.tgz", - "integrity": "sha1-8GVWEJaj8dou9GJy+BXIQNh+DIk=", - "dev": true, - "requires": { - "isarray": "1.0.0" - } - } - } - }, - "has-values": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/has-values/-/has-values-0.1.4.tgz", - "integrity": "sha1-bWHeldkd/Km5oCCJrThL/49it3E=", - "dev": true - } - } - }, - "uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "requires": { - "punycode": "^2.1.0" - } - }, - "urix": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/urix/-/urix-0.1.0.tgz", - "integrity": "sha1-2pN/emLiH+wf0Y1Js1wpNQZ6bHI=", - "dev": true - }, - "use": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/use/-/use-3.1.1.tgz", - "integrity": "sha512-cwESVXlO3url9YWlFW/TA9cshCEhtu7IKJ/p5soJ/gGpj7vbvFrAY/eIioQ6Dw23KjZhYgiIo8HOs1nQ2vr/oQ==", - "dev": true - }, - "uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==" - }, - "v8-to-istanbul": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-7.1.1.tgz", - "integrity": "sha512-p0BB09E5FRjx0ELN6RgusIPsSPhtgexSRcKETybEs6IGOTXJSZqfwxp7r//55nnu0f1AxltY5VvdVqy2vZf9AA==", - "dev": true, - "requires": { - "@types/istanbul-lib-coverage": "^2.0.1", - "convert-source-map": "^1.6.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "source-map": { - "version": "0.7.3", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.3.tgz", - "integrity": "sha512-CkCj6giN3S+n9qrYiBTX5gystlENnRW5jZeNLHpe6aue+SrHcG5VYwujhW9s4dY31mEGsxBDrHR6oI69fTXsaQ==", - "dev": true - } - } - }, - "validate-npm-package-license": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/validate-npm-package-license/-/validate-npm-package-license-3.0.4.tgz", - "integrity": "sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==", - "dev": true, - "requires": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "verror": { - "version": "1.10.0", - "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz", - "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=", - "dev": true, - "requires": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "w3c-hr-time": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/w3c-hr-time/-/w3c-hr-time-1.0.2.tgz", - "integrity": "sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==", - "dev": true, - "requires": { - "browser-process-hrtime": "^1.0.0" - } - }, - "w3c-xmlserializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/w3c-xmlserializer/-/w3c-xmlserializer-2.0.0.tgz", - "integrity": "sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==", - "dev": true, - "requires": { - "xml-name-validator": "^3.0.0" - } - }, - "walker": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.7.tgz", - "integrity": "sha1-L3+bj9ENZ3JisYqITijRlhjgKPs=", - "dev": true, - "requires": { - "makeerror": "1.0.x" - } - }, - "webidl-conversions": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-6.1.0.tgz", - "integrity": "sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==", - "dev": true - }, - "whatwg-encoding": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/whatwg-encoding/-/whatwg-encoding-1.0.5.tgz", - "integrity": "sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==", - "dev": true, - "requires": { - "iconv-lite": "0.4.24" - } - }, - "whatwg-mimetype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/whatwg-mimetype/-/whatwg-mimetype-2.3.0.tgz", - "integrity": "sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==", - "dev": true - }, - "whatwg-url": { - "version": "8.5.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-8.5.0.tgz", - "integrity": "sha512-fy+R77xWv0AiqfLl4nuGUlQ3/6b5uNfQ4WAbGQVMYshCTCCPK9psC1nWh3XHuxGVCtlcDDQPQW1csmmIQo+fwg==", - "dev": true, - "requires": { - "lodash": "^4.7.0", - "tr46": "^2.0.2", - "webidl-conversions": "^6.1.0" - } - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "which-module": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", - "dev": true - }, - "word-wrap": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.3.tgz", - "integrity": "sha512-Hz/mrNwitNRh/HUAtM/VT/5VH+ygD6DV7mYKZAtHOrbs8U7lvPS6xf7EJKMF0uW1KJCl0H701g3ZGus+muE5vQ==", - "dev": true - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - } - } - }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", - "dev": true - }, - "write-file-atomic": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-3.0.3.tgz", - "integrity": "sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==", - "dev": true, - "requires": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "ws": { - "version": "7.4.6", - "resolved": "https://registry.npmjs.org/ws/-/ws-7.4.6.tgz", - "integrity": "sha512-YmhHDO4MzaDLB+M9ym/mDA5z0naX8j7SIlT8f8z+I0VtzsRbekxEutHSme7NPS2qE8StCYQNUnfWdXta/Yu85A==", - "dev": true - }, - "xml-name-validator": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-3.0.0.tgz", - "integrity": "sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==", - "dev": true - }, - "xmlchars": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/xmlchars/-/xmlchars-2.2.0.tgz", - "integrity": "sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==", - "dev": true - }, - "y18n": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", - "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", - "dev": true - }, - "yallist": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", - "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" - }, - "yargs": { - "version": "15.4.1", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", - "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", - "dev": true, - "requires": { - "cliui": "^6.0.0", - "decamelize": "^1.2.0", - "find-up": "^4.1.0", - "get-caller-file": "^2.0.1", - "require-directory": "^2.1.1", - "require-main-filename": "^2.0.0", - "set-blocking": "^2.0.0", - "string-width": "^4.2.0", - "which-module": "^2.0.0", - "y18n": "^4.0.0", - "yargs-parser": "^18.1.2" - } - }, - "yargs-parser": { - "version": "18.1.3", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", - "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", - "dev": true, - "requires": { - "camelcase": "^5.0.0", - "decamelize": "^1.2.0" - } - } - } -} diff --git a/package.json b/package.json deleted file mode 100644 index a42841f..0000000 --- a/package.json +++ /dev/null @@ -1,53 +0,0 @@ -{ - "name": "flutter-action", - "version": "1.3.2", - "private": true, - "description": "Flutter environment for use in actions", - "main": "lib/index.js", - "scripts": { - "build-tsc": "tsc", - "build-ncc": "ncc build", - "build": "run-s build-tsc build-ncc", - "format": "prettier --write **/*.ts", - "format-check": "prettier --check **/*.ts", - "test": "jest" - }, - "repository": { - "type": "git", - "url": "git+https://github.com/subosito/flutter-action.git" - }, - "keywords": [ - "actions", - "node", - "flutter", - "setup" - ], - "author": "Alif Rachmawadi ", - "license": "MIT", - "dependencies": { - "@actions/core": "^1.4.0", - "@actions/exec": "^1.1.0", - "@actions/http-client": "^1.0.11", - "@actions/io": "^1.1.1", - "@actions/tool-cache": "^1.7.1", - "semver": "^7.3.5", - "uuid": "^8.3.2" - }, - "devDependencies": { - "@types/jest": "^26.0.23", - "@types/node": "^14.17.3", - "@types/semver": "^7.3.6", - "@types/uuid": "^8.3.0", - "@vercel/ncc": "^0.28.6", - "jest": "^26.6.3", - "jest-circus": "^26.6.3", - "nock": "^13.1.0", - "npm-run-all": "^4.1.5", - "prettier": "1.19.1", - "ts-jest": "^26.5.6", - "typescript": "^4.3.2" - }, - "resolutions": { - "minimist": "^1.2.2" - } -} diff --git a/src/index.ts b/src/index.ts deleted file mode 100644 index 7a9d463..0000000 --- a/src/index.ts +++ /dev/null @@ -1,23 +0,0 @@ -import * as core from '@actions/core'; -import * as installer from './installer'; - -async function run() { - try { - const version = core.getInput('flutter-version') || ''; - const channel = core.getInput('channel') || 'stable'; - - if (channel == 'master' && version != '') { - core.setFailed( - 'using `flutter-version` with master channel is not supported.' - ); - - return; - } - - await installer.getFlutter(version, channel); - } catch (error) { - core.setFailed(error.message); - } -} - -run(); diff --git a/src/installer.ts b/src/installer.ts deleted file mode 100644 index 334a86f..0000000 --- a/src/installer.ts +++ /dev/null @@ -1,128 +0,0 @@ -import * as core from '@actions/core'; -import * as io from '@actions/io'; -import * as exec from '@actions/exec'; -import * as tc from '@actions/tool-cache'; -import * as fs from 'fs'; -import * as path from 'path'; -import * as release from './release'; - -export async function getFlutter( - version: string, - channel: string -): Promise { - const platform = release.getPlatform(); - const useMaster = channel == 'master'; - - const { - version: selected, - downloadUrl, - channel: validatedChannel - } = await release.determineVersion( - version, - useMaster ? 'dev' : channel, - platform - ); - - if (!useMaster && channel !== validatedChannel) { - core.debug(`Channel was identified as ${validatedChannel}`); - } - - let cleanver = useMaster - ? channel - : `${selected.replace('+', '-')}-${validatedChannel}`; - - let toolPath = tc.find('flutter', cleanver); - - if (toolPath) { - core.debug(`Tool found in cache ${toolPath}`); - } else { - core.debug(`Downloading Flutter from Google storage ${downloadUrl}`); - - const sdkFile = await tc.downloadTool(downloadUrl); - const sdkCache = await tmpDir(platform); - const sdkDir = await extract(sdkFile, sdkCache, path.basename(downloadUrl)); - - toolPath = await tc.cacheDir(sdkDir, 'flutter', cleanver); - } - - core.exportVariable('FLUTTER_ROOT', toolPath); - - let pubCachePath = process.env['PUB_CACHE'] || ''; - - if (!pubCachePath) { - pubCachePath = path.join(toolPath, '.pub-cache'); - core.exportVariable('PUB_CACHE', pubCachePath); - } - - core.addPath(path.join(toolPath, 'bin')); - core.addPath(path.join(toolPath, 'bin', 'cache', 'dart-sdk', 'bin')); - core.addPath(path.join(pubCachePath, 'bin')); - - if (useMaster) { - await exec.exec('flutter', ['channel', 'master']); - await exec.exec('flutter', ['upgrade']); - } -} - -function tmpBaseDir(platform: string): string { - let tempDirectory = process.env['RUNNER_TEMP'] || ''; - - if (tempDirectory) { - return tempDirectory; - } - - let baseLocation; - - switch (platform) { - case 'windows': - baseLocation = process.env['USERPROFILE'] || 'C:\\'; - break; - case 'macos': - baseLocation = '/Users'; - break; - default: - baseLocation = '/home'; - break; - } - - return path.join(baseLocation, 'actions', 'temp'); -} - -async function tmpDir(platform: string): Promise { - const baseDir = tmpBaseDir(platform); - const tempDir = path.join( - baseDir, - 'temp_' + Math.floor(Math.random() * 2000000000) - ); - - await io.mkdirP(tempDir); - return tempDir; -} - -async function extract( - sdkFile: string, - sdkCache: string, - originalFilename: string -): Promise { - const fileStats = fs.statSync(path.normalize(sdkFile)); - - if (fileStats.isFile()) { - const stats = fs.statSync(sdkFile); - - if (!stats) { - throw new Error(`Failed to extract ${sdkFile} - it doesn't exist`); - } else if (stats.isDirectory()) { - throw new Error(`Failed to extract ${sdkFile} - it is a directory`); - } - - if (originalFilename.endsWith('tar.xz')) { - await tc.extractTar(sdkFile, sdkCache, 'x'); - } else { - await tc.extractZip(sdkFile, sdkCache); - } - - return path.join(sdkCache, fs.readdirSync(sdkCache)[0]); - } else { - throw new Error(`Flutter sdk argument ${sdkFile} is not a file`); - } -} diff --git a/src/release.ts b/src/release.ts deleted file mode 100644 index 43bf171..0000000 --- a/src/release.ts +++ /dev/null @@ -1,199 +0,0 @@ -import * as core from '@actions/core'; -import * as httpm from '@actions/http-client'; -import * as semver from 'semver'; - -export const storageUrl = - 'https://storage.googleapis.com/flutter_infra_release/releases'; - -interface IFlutterData { - channel: string; - version: string; - rawVersion: string; - downloadUrl: string; -} - -interface IFlutterChannel { - [key: string]: string; - beta: string; - dev: string; - stable: string; -} - -interface IFlutterRelease { - hash: string; - channel: string; - version: string; - archive: string; -} - -interface IFlutterStorage { - current_release: IFlutterChannel; - releases: IFlutterRelease[]; -} - -export function getPlatform(): string { - const platform = process.platform; - - if (platform == 'win32') { - return 'windows'; - } - - if (platform == 'darwin') { - return 'macos'; - } - - return platform; -} - -export async function determineVersion( - version: string, - channel: string, - platform: string -): Promise { - const storage = await getReleases(platform); - - if (version === '') { - return getLatestVersion(storage, channel); - } - - if (version.endsWith('.x')) { - return getWildcardVersion(storage, channel, version); - } - - return getVersion(storage, channel, version); -} - -async function getReleases(platform: string): Promise { - const releasesUrl: string = `${storageUrl}/releases_${platform}.json`; - const http: httpm.HttpClient = new httpm.HttpClient('flutter-action'); - const storage: IFlutterStorage | null = ( - await http.getJson(releasesUrl) - ).result; - - if (!storage) { - throw new Error('unable to get flutter releases'); - } - - return storage; -} - -async function getLatestVersion( - storage: IFlutterStorage, - channel: string -): Promise { - const channelVersion = storage.releases.find(release => { - return ( - release.hash === storage.current_release[channel] && - validateChannel(release.channel, channel) - ); - }); - - if (!channelVersion) { - throw new Error(`unable to get latest version from channel ${channel}`); - } - - let rver = channelVersion.version; - let cver = rver.startsWith('v') ? rver.slice(1, rver.length) : rver; - - core.debug(`latest version from channel ${channel} is ${rver}`); - - const flutterData: IFlutterData = { - channel: channelVersion.channel, - version: cver, - rawVersion: rver, - downloadUrl: `${storageUrl}/${channelVersion.archive}` - }; - - return flutterData; -} - -function validateChannel(releaseChannel: string, channel: string) { - return releaseChannel === channel || channel === 'any'; -} - -async function getWildcardVersion( - storage: IFlutterStorage, - channel: string, - version: string -): Promise { - let sver = version.endsWith('.x') - ? version.slice(0, version.length - 2) - : version; - - const releases = storage.releases.filter(release => { - return ( - validateChannel(release.channel, channel) && - prefixCompare(sver, release.version) - ); - }); - - const versions = releases - .map(release => release.version) - .map(version => - version.startsWith('v') ? version.slice(1, version.length) : version - ); - - const sortedVersions = versions.sort(semver.rcompare); - - let cver = sortedVersions[0]; - let release = releases.find(release => compare(cver, release.version)); - - if (!release) { - throw new Error(`unable to find release for ${version}`); - } - - core.debug( - `latest version of ${version} from channel ${channel} is ${release.version}` - ); - - const flutterData = { - channel: release.channel, - version: cver, - rawVersion: release.version, - downloadUrl: `${storageUrl}/${release.archive}` - }; - - return flutterData; -} - -async function getVersion( - storage: IFlutterStorage, - channel: string, - version: string -): Promise { - const release = storage.releases.find(release => { - return ( - validateChannel(release.channel, channel) && - compare(version, release.version) - ); - }); - - if (!release) { - return getWildcardVersion(storage, channel, version); - } - - const flutterData = { - channel: release.channel, - version, - rawVersion: release.version, - downloadUrl: `${storageUrl}/${release.archive}` - }; - - return flutterData; -} - -function compare(version: string, releaseVersion: string): boolean { - if (releaseVersion.startsWith('v')) { - return releaseVersion === `v${version}`; - } - - return releaseVersion === version; -} - -function prefixCompare(version: string, releaseVersion: string): boolean { - if (releaseVersion.startsWith('v')) { - return releaseVersion.startsWith(`v${version}`); - } - - return releaseVersion.startsWith(version); -} diff --git a/tsconfig.json b/tsconfig.json deleted file mode 100644 index 470e192..0000000 --- a/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "compilerOptions": { - "target": "es6", - "module": "commonjs", - "outDir": "./lib", - "rootDir": "./src", - "strict": true, - "esModuleInterop": true - }, - "exclude": ["node_modules", "**/*.test.ts"] -}