diff --git a/404.html b/404.html index 65ffb1d3..7162172e 100644 --- a/404.html +++ b/404.html @@ -14,13 +14,13 @@ - +

404

How did we get here?
Take me home.
- + diff --git a/assets/js/7.eb3d9dbc.js b/assets/js/7.eb3d9dbc.js new file mode 100644 index 00000000..28b8adb1 --- /dev/null +++ b/assets/js/7.eb3d9dbc.js @@ -0,0 +1 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{378:function(e,r,t){"use strict";t.r(r);var a=t(45),n=Object(a.a)({},function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"progressive-delivery"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#progressive-delivery","aria-hidden":"true"}},[e._v("#")]),e._v(" Progressive Delivery")]),e._v(" "),t("p",[e._v("Flagger was designed to give developers confidence in automating production releases with progressive delivery techniques.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Canary release")]),e._v(" "),t("p",[e._v("A benefit of using canary releases is the ability to do capacity testing of the new version in a production environment\nwith a safe rollback strategy if issues are found. By slowly ramping up the load, you can monitor and capture metrics\nabout how the new version impacts the production environment.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://martinfowler.com/bliki/CanaryRelease.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Martin Fowler"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("Flagger can run automated application analysis, testing, promotion and rollback for the following deployment strategies:")]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("Canary")]),e._v(" (progressive traffic shifting)")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://docs.flagger.app/tutorials/istio-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Istio"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/linkerd-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Linkerd"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/appmesh-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("App Mesh"),t("OutboundLink")],1),e._v(",")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://docs.flagger.app/tutorials/osm-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Service Mesh"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/contour-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Contour"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/gloo-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gloo"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/nginx-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("NGINX"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/skipper-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Skipper"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/traefik-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Traefik"),t("OutboundLink")],1)])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("A/B Testing")]),e._v(" (HTTP headers and cookies traffic routing)")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://docs.flagger.app/tutorials/istio-ab-testing",target:"_blank",rel:"noopener noreferrer"}},[e._v("Istio"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/appmesh-progressive-delivery#a-b-testing",target:"_blank",rel:"noopener noreferrer"}},[e._v("App Mesh"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/contour-progressive-delivery#a-b-testing",target:"_blank",rel:"noopener noreferrer"}},[e._v("Contour"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/nginx-progressive-delivery#a-b-testing",target:"_blank",rel:"noopener noreferrer"}},[e._v("NGINX"),t("OutboundLink")],1)])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Blue/Green")]),e._v(" (traffic switching and mirroring)")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://docs.flagger.app/tutorials/kubernetes-blue-green",target:"_blank",rel:"noopener noreferrer"}},[e._v("Kubernetes CNI"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/istio-progressive-delivery#traffic-mirroring",target:"_blank",rel:"noopener noreferrer"}},[e._v("Istio"),t("OutboundLink")],1),e._v(",\nLinkerd, App Mesh, OSM, Contour, Gloo, NGINX, Skipper, Traefik")])])])]),e._v(" "),t("p",[e._v("Flagger's application analysis can be extended with metric queries targeting Prometheus, Datadog,\nCloudWatch, New Relic, Graphite, Dynatrace, InfluxDB and Google Cloud Monitoring (Stackdriver).")]),e._v(" "),t("p",[e._v("Flagger can be configured to "),t("a",{attrs:{href:"https://docs.flagger.app/usage/alerting",target:"_blank",rel:"noopener noreferrer"}},[e._v("send notifications"),t("OutboundLink")],1),e._v(" to\nSlack, Microsoft Teams, Discord and Rocket.\nIt will post messages when a deployment has been initialised,\nwhen a new revision has been detected and if the canary analysis failed or succeeded.")]),e._v(" "),t("h2",{attrs:{id:"gitops"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gitops","aria-hidden":"true"}},[e._v("#")]),e._v(" GitOps")]),e._v(" "),t("p",[t("img",{attrs:{src:"/flagger-gitops.png",alt:"GitOps with Flagger and Flux"}})]),e._v(" "),t("p",[e._v("You can build fully automated GitOps pipelines for canary deployments with Flagger and\n"),t("a",{attrs:{href:"https://github.com/fluxcd/flux2",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flux"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("GitOps")]),e._v(" "),t("p",[e._v("GitOps is a way to do Kubernetes cluster management and application delivery.\nIt works by using Git as a single source of truth for declarative infrastructure and applications.\nWith Git at the center of your delivery pipelines, developers can make pull requests\nto accelerate and simplify application deployments and operations tasks to Kubernetes.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.weave.works/technologies/gitops/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Weaveworks"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("GitOps tutorials:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/stefanprodan/gitops-istio",target:"_blank",rel:"noopener noreferrer"}},[e._v("Progressive Delivery for Istio with Flagger and Flux"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://eks.handson.flagger.dev",target:"_blank",rel:"noopener noreferrer"}},[e._v("Progressive Delivery for AWS App Mesh with Flagger and Flux"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/stefanprodan/gitops-linkerd",target:"_blank",rel:"noopener noreferrer"}},[e._v("Progressive Delivery for Linkerd and Contour with Flagger and Flux"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"getting-help"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getting-help","aria-hidden":"true"}},[e._v("#")]),e._v(" Getting Help")]),e._v(" "),t("p",[e._v("If you have any questions about Flagger and progressive delivery:")]),e._v(" "),t("ul",[t("li",[e._v("Read the Flagger "),t("a",{attrs:{href:"https://docs.flagger.app",target:"_blank",rel:"noopener noreferrer"}},[e._v("docs"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[e._v("Invite yourself to the "),t("a",{attrs:{href:"https://slack.cncf.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CNCF community slack"),t("OutboundLink")],1),e._v("\nand join the "),t("a",{attrs:{href:"https://cloud-native.slack.com/messages/flagger/",target:"_blank",rel:"noopener noreferrer"}},[e._v("#flagger"),t("OutboundLink")],1),e._v(" channel.")]),e._v(" "),t("li",[e._v("Check out the "),t("a",{attrs:{href:"https://fluxcd.io/community/#talks",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flux talks section"),t("OutboundLink")],1),e._v(" and to see a list of online talks,\nhands-on training and meetups.")]),e._v(" "),t("li",[e._v("File an "),t("a",{attrs:{href:"https://github.com/fluxcd/flagger/issues/new",target:"_blank",rel:"noopener noreferrer"}},[e._v("issue"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("p",[e._v("Your feedback is always welcome!")]),e._v(" "),t("h2",{attrs:{id:"license"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#license","aria-hidden":"true"}},[e._v("#")]),e._v(" License")]),e._v(" "),t("p",[e._v("Flagger is "),t("a",{attrs:{href:"https://raw.githubusercontent.com/fluxcd/flagger/main/LICENSE",target:"_blank",rel:"noopener noreferrer"}},[e._v("Apache 2.0"),t("OutboundLink")],1),e._v("\nlicensed and accepts contributions via GitHub pull requests.")]),e._v(" "),t("p",[e._v("Flagger was initially developed in 2018 at Weaveworks by Stefan Prodan.\nIn 2020 Flagger became a "),t("a",{attrs:{href:"https://cncf.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cloud Native Computing Foundation"),t("OutboundLink")],1),e._v(" project,\npart of "),t("a",{attrs:{href:"https://fluxcd.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flux"),t("OutboundLink")],1),e._v(" family of GitOps tools.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://cncf.io/",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:"/cncf.png",alt:"CNCF"}}),t("OutboundLink")],1)])])},[],!1,null,null,null);r.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/7.ec9222d7.js b/assets/js/7.ec9222d7.js deleted file mode 100644 index ee712446..00000000 --- a/assets/js/7.ec9222d7.js +++ /dev/null @@ -1 +0,0 @@ -(window.webpackJsonp=window.webpackJsonp||[]).push([[7],{378:function(e,r,t){"use strict";t.r(r);var a=t(45),n=Object(a.a)({},function(){var e=this,r=e.$createElement,t=e._self._c||r;return t("ContentSlotsDistributor",{attrs:{"slot-key":e.$parent.slotKey}},[t("h2",{attrs:{id:"progressive-delivery"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#progressive-delivery","aria-hidden":"true"}},[e._v("#")]),e._v(" Progressive Delivery")]),e._v(" "),t("p",[e._v("Flagger was designed to give developers confidence in automating production releases with progressive delivery techniques.")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("Canary release")]),e._v(" "),t("p",[e._v("A benefit of using canary releases is the ability to do capacity testing of the new version in a production environment\nwith a safe rollback strategy if issues are found. By slowly ramping up the load, you can monitor and capture metrics\nabout how the new version impacts the production environment.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://martinfowler.com/bliki/CanaryRelease.html",target:"_blank",rel:"noopener noreferrer"}},[e._v("Martin Fowler"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("Flagger can run automated application analysis, testing, promotion and rollback for the following deployment strategies:")]),e._v(" "),t("ul",[t("li",[t("p",[t("strong",[e._v("Canary")]),e._v(" (progressive traffic shifting)")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://docs.flagger.app/tutorials/istio-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Istio"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/linkerd-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Linkerd"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/appmesh-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("App Mesh"),t("OutboundLink")],1),e._v(",")]),e._v(" "),t("li",[t("a",{attrs:{href:"https://docs.flagger.app/tutorials/osm-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Open Service Mesh"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/contour-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Contour"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/gloo-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Gloo"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/nginx-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("NGINX"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/skipper-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Skipper"),t("OutboundLink")],1),e._v(" "),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/traefik-progressive-delivery",target:"_blank",rel:"noopener noreferrer"}},[e._v("Traefik"),t("OutboundLink")],1)])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("A/B Testing")]),e._v(" (HTTP headers and cookies traffic routing)")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://docs.flagger.app/tutorials/istio-ab-testing",target:"_blank",rel:"noopener noreferrer"}},[e._v("Istio"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/appmesh-progressive-delivery#a-b-testing",target:"_blank",rel:"noopener noreferrer"}},[e._v("App Mesh"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/contour-progressive-delivery#a-b-testing",target:"_blank",rel:"noopener noreferrer"}},[e._v("Contour"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/nginx-progressive-delivery#a-b-testing",target:"_blank",rel:"noopener noreferrer"}},[e._v("NGINX"),t("OutboundLink")],1)])])]),e._v(" "),t("li",[t("p",[t("strong",[e._v("Blue/Green")]),e._v(" (traffic switching and mirroring)")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://docs.flagger.app/tutorials/kubernetes-blue-green",target:"_blank",rel:"noopener noreferrer"}},[e._v("Kubernetes CNI"),t("OutboundLink")],1),e._v(",\n"),t("a",{attrs:{href:"https://docs.flagger.app/tutorials/istio-progressive-delivery#traffic-mirroring",target:"_blank",rel:"noopener noreferrer"}},[e._v("Istio"),t("OutboundLink")],1),e._v(",\nLinkerd, App Mesh, OSM, Contour, Gloo, NGINX, Skipper, Traefik")])])])]),e._v(" "),t("p",[e._v("Flagger's application analysis can be extended with metric queries targeting Prometheus, Datadog,\nCloudWatch, New Relic, Graphite, Dynatrace, InfluxDB and Google Cloud Monitoring (Stackdriver).")]),e._v(" "),t("p",[e._v("Flagger can be configured to "),t("a",{attrs:{href:"https://docs.flagger.app/usage/alerting",target:"_blank",rel:"noopener noreferrer"}},[e._v("send notifications"),t("OutboundLink")],1),e._v(" to\nSlack, Microsoft Teams, Discord and Rocket.\nIt will post messages when a deployment has been initialised,\nwhen a new revision has been detected and if the canary analysis failed or succeeded.")]),e._v(" "),t("h2",{attrs:{id:"gitops"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#gitops","aria-hidden":"true"}},[e._v("#")]),e._v(" GitOps")]),e._v(" "),t("p",[t("img",{attrs:{src:"/flagger-gitops.png",alt:"GitOps with Flagger and Flux"}})]),e._v(" "),t("p",[e._v("You can build fully automated GitOps pipelines for canary deployments with Flagger and\n"),t("a",{attrs:{href:"https://github.com/fluxcd/flux2",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flux"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("div",{staticClass:"custom-block tip"},[t("p",{staticClass:"custom-block-title"},[e._v("GitOps")]),e._v(" "),t("p",[e._v("GitOps is a way to do Kubernetes cluster management and application delivery.\nIt works by using Git as a single source of truth for declarative infrastructure and applications.\nWith Git at the center of your delivery pipelines, developers can make pull requests\nto accelerate and simplify application deployments and operations tasks to Kubernetes.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://www.weave.works/technologies/gitops/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Weaveworks"),t("OutboundLink")],1)])]),e._v(" "),t("p",[e._v("GitOps tutorials:")]),e._v(" "),t("ul",[t("li",[t("a",{attrs:{href:"https://github.com/stefanprodan/gitops-istio",target:"_blank",rel:"noopener noreferrer"}},[e._v("Progressive Delivery for Istio with Flagger and Flux"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://eks.handson.flagger.dev",target:"_blank",rel:"noopener noreferrer"}},[e._v("Progressive Delivery for AWS App Mesh with Flagger and Flux"),t("OutboundLink")],1)]),e._v(" "),t("li",[t("a",{attrs:{href:"https://github.com/stefanprodan/gitops-linkerd",target:"_blank",rel:"noopener noreferrer"}},[e._v("Progressive Delivery for Linkerd and Contour with Flagger and Flux"),t("OutboundLink")],1)])]),e._v(" "),t("h2",{attrs:{id:"getting-help"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#getting-help","aria-hidden":"true"}},[e._v("#")]),e._v(" Getting Help")]),e._v(" "),t("p",[e._v("If you have any questions about Flagger and progressive delivery:")]),e._v(" "),t("ul",[t("li",[e._v("Read the Flagger "),t("a",{attrs:{href:"https://docs.flagger.app",target:"_blank",rel:"noopener noreferrer"}},[e._v("docs"),t("OutboundLink")],1),e._v(".")]),e._v(" "),t("li",[e._v("Invite yourself to the "),t("a",{attrs:{href:"https://slack.cncf.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("CNCF community slack"),t("OutboundLink")],1),e._v("\nand join the "),t("a",{attrs:{href:"https://cloud-native.slack.com/messages/flagger/",target:"_blank",rel:"noopener noreferrer"}},[e._v("#flagger"),t("OutboundLink")],1),e._v(" channel.")]),e._v(" "),t("li",[e._v("Check out the "),t("a",{attrs:{href:"https://fluxcd.io/community/#talks",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flux talks section"),t("OutboundLink")],1),e._v(" and to see a list of online talks,\nhands-on training and meetups.")]),e._v(" "),t("li",[e._v("File an "),t("a",{attrs:{href:"https://github.com/fluxcd/flagger/issues/new",target:"_blank",rel:"noopener noreferrer"}},[e._v("issue"),t("OutboundLink")],1),e._v(".")])]),e._v(" "),t("p",[e._v("Your feedback is always welcome!")]),e._v(" "),t("h2",{attrs:{id:"license"}},[t("a",{staticClass:"header-anchor",attrs:{href:"#license","aria-hidden":"true"}},[e._v("#")]),e._v(" License")]),e._v(" "),t("p",[e._v("Flagger is "),t("a",{attrs:{href:"https://raw.githubusercontent.com/fluxcd/flagger/main/LICENSE",target:"_blank",rel:"noopener noreferrer"}},[e._v("Apache 2.0"),t("OutboundLink")],1),e._v("\nlicensed and accepts contributions via GitHub pull requests.")]),e._v(" "),t("p",[e._v("Flagger was initially developed in 2018 at Weaveworks by Stefan Prodan.\nIn 2020 Flagger became a "),t("a",{attrs:{href:"https://cncf.io/",target:"_blank",rel:"noopener noreferrer"}},[e._v("Cloud Native Computing Foundation"),t("OutboundLink")],1),e._v(" project,\npart of "),t("a",{attrs:{href:"https://fluxcd.io",target:"_blank",rel:"noopener noreferrer"}},[e._v("Flux"),t("OutboundLink")],1),e._v(" family of GitOps tools.")]),e._v(" "),t("p",[t("a",{attrs:{href:"https://cncf.io/",target:"_blank",rel:"noopener noreferrer"}},[t("img",{attrs:{src:"/cncf.png",alt:"CNCF"}}),t("OutboundLink")],1)])])},[],!1,null,null,null);r.default=n.exports}}]); \ No newline at end of file diff --git a/assets/js/app.af8bb7c4.js b/assets/js/app.af8bb7c4.js new file mode 100644 index 00000000..69dd313e --- /dev/null +++ b/assets/js/app.af8bb7c4.js @@ -0,0 +1,8 @@ +(window.webpackJsonp=window.webpackJsonp||[]).push([[0],[]]);!function(t){function e(e){for(var r,a,c=e[0],u=e[1],s=e[2],l=0,p=[];l=n.length?{value:void 0,done:!0}:(t=r(n,o),e.index+=t.length,{value:t,done:!1})})},function(t,e,n){var r=n(55),o=Math.min;t.exports=function(t){return t>0?o(r(t),9007199254740991):0}},function(t,e,n){var r=n(2),o=n(4),i=n(8),a=n(22),c=n(79),u=n(57),s=n(27),f=n(75).CONFIGURABLE,l=s.get,p=s.enforce,h=String(String).split("String");(t.exports=function(t,e,n,u){var s,l=!!u&&!!u.unsafe,v=!!u&&!!u.enumerable,d=!!u&&!!u.noTargetGet,y=u&&void 0!==u.name?u.name:e;o(n)&&("Symbol("===String(y).slice(0,7)&&(y="["+String(y).replace(/^Symbol\(([^)]*)\)/,"$1")+"]"),(!i(n,"name")||f&&n.name!==y)&&a(n,"name",y),(s=p(n)).source||(s.source=h.join("string"==typeof y?y:""))),t!==r?(l?!d&&t[e]&&(v=!0):delete t[e],v?t[e]=n:a(t,e,n)):v?t[e]=n:c(e,n)})(Function.prototype,"toString",function(){return o(this)&&l(this).source||u(this)})},function(t,e){var n=Array.isArray;t.exports=n},function(t,e,n){var r=n(33),o=n(26);t.exports=function(t){return r(o(t))}},function(t,e,n){var r=n(2),o=n(134),i=n(135),a=n(110),c=n(22),u=n(3),s=u("iterator"),f=u("toStringTag"),l=a.values,p=function(t,e){if(t){if(t[s]!==l)try{c(t,s,l)}catch(e){t[s]=l}if(t[f]||c(t,f,e),o[e])for(var n in a)if(t[n]!==a[n])try{c(t,n,a[n])}catch(e){t[n]=a[n]}}};for(var h in o)p(r[h]&&r[h].prototype,h);p(i,"DOMTokenList")},function(t,e,n){var r=n(146),o="object"==typeof self&&self&&self.Object===Object&&self,i=r||o||Function("return this")();t.exports=i},function(t,e,n){var r=n(60);t.exports=function(t){if("Symbol"===r(t))throw TypeError("Cannot convert a Symbol value to a string");return String(t)}},function(t,e){t.exports=!1},function(t,e,n){var r=n(7),o=n(9),i=n(37);t.exports=r?function(t,e,n){return o.f(t,e,i(1,n))}:function(t,e,n){return t[e]=n,t}},function(t,e,n){var r,o=n(6),i=n(190),a=n(83),c=n(35),u=n(116),s=n(52),f=n(56),l=f("IE_PROTO"),p=function(){},h=function(t){return" +