8000 java-design-patterns/event-driven-architecture at master · Proful/java-design-patterns · GitHub
[go: up one dir, main page]

Skip to content
< 7A23 script type="application/json" data-target="react-app.embeddedData">{"payload":{"allShortcutsEnabled":false,"path":"event-driven-architecture","repo":{"id":214089533,"defaultBranch":"master","name":"java-design-patterns","ownerLogin":"Proful","currentUserCanPush":false,"isFork":true,"isEmpty":false,"createdAt":"2019-10-10T04:53:20.000Z","ownerAvatar":"https://avatars.githubusercontent.com/u/354596?v=4","public":true,"private":false,"isOrgOwned":false},"currentUser":null,"refInfo":{"name":"master","listCacheKey":"v0:1620320715.081954","canEdit":false,"refType":"branch","currentOid":"66254c5b23bad2c873519ae83ad1b5f4e17ea45e"},"tree":{"items":[{"name":"etc","path":"event-driven-architecture/etc","contentType":"directory"},{"name":"src","path":"event-driven-architecture/src","contentType":"directory"},{"name":"README.md","path":"event-driven-architecture/README.md","contentType":"file"},{"name":"pom.xml","path":"event-driven-architecture/pom.xml","contentType":"file"}],"templateDirectorySuggestionUrl":null,"readme":{"displayName":"README.md","richText":"\u003carticle class=\"markdown-body entry-content container-lg\" itemprop=\"text\"\u003e\u003cmarkdown-accessiblity-table\u003e\u003ctable\u003e\n \u003cthead\u003e\n \u003ctr\u003e\n \u003cth\u003elayout\u003c/th\u003e\n \u003cth\u003etitle\u003c/th\u003e\n \u003cth\u003efolder\u003c/th\u003e\n \u003cth\u003epermalink\u003c/th\u003e\n \u003cth\u003ecategories\u003c/th\u003e\n \u003cth\u003etags\u003c/th\u003e\n \u003c/tr\u003e\n \u003c/thead\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cdiv dir=\"auto\"\u003epattern\u003c/div\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cdiv dir=\"auto\"\u003eEvent Driven Architecture\u003c/div\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cdiv dir=\"auto\"\u003eevent-driven-architecture\u003c/div\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cdiv dir=\"auto\"\u003e/patterns/event-driven-architecture/\u003c/div\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cdiv dir=\"auto\"\u003eArchitectural\u003c/div\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cdiv dir=\"auto\"\u003e\u003ctable\u003e\n \u003ctbody\u003e\n \u003ctr\u003e\n \u003ctd\u003e\u003cdiv dir=\"auto\"\u003eJava\u003c/div\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cdiv dir=\"auto\"\u003eDifficulty-Intermediate\u003c/div\u003e\u003c/td\u003e\n \u003ctd\u003e\u003cdiv dir=\"auto\"\u003eReactive\u003c/div\u003e\u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\u003c/td\u003e\n \u003c/tr\u003e\n \u003c/tbody\u003e\n\u003c/table\u003e\u003c/markdown-accessiblity-table\u003e\n\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eIntent\u003c/h2\u003e\u003ca id=\"user-content-intent\" class=\"anchor\" aria-label=\"Permalink: Intent\" href=\"#intent\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eSend and notify state changes of your objects to other applications using an Event-driven Architecture.\u003c/p\u003e\n\u003cp dir=\"auto\"\u003e\u003ca target=\"_blank\" rel=\"noopener noreferrer\" href=\"/Proful/java-design-patterns/blob/master/event-driven-architecture/etc/eda.png\"\u003e\u003cimg src=\"/Proful/java-design-patterns/raw/master/event-driven-architecture/etc/eda.png\" alt=\"alt text\" title=\"Event Driven Architecture\" style=\"max-width: 100%;\"\u003e\u003c/a\u003e\u003c/p\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eApplicability\u003c/h2\u003e\u003ca id=\"user-content-applicability\" class=\"anchor\" aria-label=\"Permalink: Applicability\" href=\"#applicability\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cp dir=\"auto\"\u003eUse an Event-driven architecture when\u003c/p\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eyou want to create a loosely coupled system\u003c/li\u003e\n\u003cli\u003eyou want to build a more responsive system\u003c/li\u003e\n\u003cli\u003eyou want a system that is easier to extend\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eReal world examples\u003c/h2\u003e\u003ca id=\"user-content-real-world-examples\" class=\"anchor\" aria-label=\"Permalink: Real world examples\" href=\"#real-world-examples\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003eSendGrid, an email API, sends events whenever an email is processed, delivered, opened etc... (\u003ca href=\"https://sendgrid.com/docs/API_Reference/Webhooks/event.html\" rel=\"nofollow\"\u003ehttps://sendgrid.com/docs/API_Reference/Webhooks/event.html\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eChargify, a billing API, exposes payment activity through various events (\u003ca href=\"https://docs.chargify.com/api-events\" rel=\"nofollow\"\u003ehttps://docs.chargify.com/api-events\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eAmazon's AWS Lambda, lets you execute code in response to events such as changes to Amazon S3 buckets, updates to an Amazon DynamoDB table, or custom events generated by your applications or devices. (\u003ca href=\"https://aws.amazon.com/lambda\" rel=\"nofollow\"\u003ehttps://aws.amazon.com/lambda\u003c/a\u003e)\u003c/li\u003e\n\u003cli\u003eMySQL runs triggers based on events such as inserts and update events happening on database tables.\u003c/li\u003e\n\u003c/ul\u003e\n\u003cdiv class=\"markdown-heading\" dir=\"auto\"\u003e\u003ch2 tabindex=\"-1\" class=\"heading-element\" dir=\"auto\"\u003eCredits\u003c/h2\u003e\u003ca id=\"user-content-credits\" class=\"anchor\" aria-label=\"Permalink: Credits\" href=\"#credits\"\u003e\u003csvg class=\"octicon octicon-link\" viewBox=\"0 0 16 16\" version=\"1.1\" width=\"16\" height=\"16\" aria-hidden=\"true\"\u003e\u003cpath d=\"m7.775 3.275 1.25-1.25a3.5 3.5 0 1 1 4.95 4.95l-2.5 2.5a3.5 3.5 0 0 1-4.95 0 .751.751 0 0 1 .018-1.042.751.751 0 0 1 1.042-.018 1.998 1.998 0 0 0 2.83 0l2.5-2.5a2.002 2.002 0 0 0-2.83-2.83l-1.25 1.25a.751.751 0 0 1-1.042-.018.751.751 0 0 1-.018-1.042Zm-4.69 9.64a1.998 1.998 0 0 0 2.83 0l1.25-1.25a.751.751 0 0 1 1.042.018.751.751 0 0 1 .018 1.042l-1.25 1.25a3.5 3.5 0 1 1-4.95-4.95l2.5-2.5a3.5 3.5 0 0 1 4.95 0 .751.751 0 0 1-.018 1.042.751.751 0 0 1-1.042.018 1.998 1.998 0 0 0-2.83 0l-2.5 2.5a1.998 1.998 0 0 0 0 2.83Z\"\u003e\u003c/path\u003e\u003c/svg\u003e\u003c/a\u003e\u003c/div\u003e\n\u003cul dir=\"auto\"\u003e\n\u003cli\u003e\u003ca href=\"https://en.wikipedia.org/wiki/Event-driven_architecture\" rel=\"nofollow\"\u003eEvent-driven architecture - Wikipedia\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://giocc.com/fundamental-components-of-an-event-driven-architecture.html\" rel=\"nofollow\"\u003eFundamental Components of an Event-Driven Architecture\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"https://wiki.haskell.org/Real_World_Applications/Event_Driven_Applications\" rel=\"nofollow\"\u003eReal World Applications/Event Driven Applications\u003c/a\u003e\u003c/li\u003e\n\u003cli\u003e\u003ca href=\"http://searchsoa.techtarget.com/definition/event-driven-architecture\" rel=\"nofollow\"\u003eEvent-driven architecture definition\u003c/a\u003e\u003c/li\u003e\n\u003c/ul\u003e\n\u003c/article\u003e","errorMessage":null,"headerInfo":{"toc":[{"level":2,"text":"Intent","anchor":"intent","htmlText":"Intent"},{"level":2,"text":"Applicability","anchor":"applicability","htmlText":"Applicability"},{"level":2,"text":"Real world examples","anchor":"real-world-examples","htmlText":"Real world examples"},{"level":2,"text":"Credits","anchor":"credits","htmlText":"Credits"}],"siteNavLoginPath":"/login?return_to=https%3A%2F%2Fgithub.com%2FProful%2Fjava-design-patterns%2Ftree%2Fmaster%2Fevent-driven-architecture"}},"totalCount":4,"showBranchInfobar":true},"fileTree":{"":{"items":[{"name":"abstract-document","path":"abstract-document","contentType":"directory"},{"name":"abstract-factory","path":"abstract-factory","contentType":"directory"},{"name":"acyclic-visitor","path":"acyclic-visitor","contentType":"directory"},{"name":"adapter","path":"adapter","contentType":"directory"},{"name":"aggregator-microservices","path":"aggregator-microservices","contentType":"directory"},{"name":"ambassador","path":"ambassador","contentType":"directory"},{"name":"api-gateway","path":"api-gateway","contentType":"directory"},{"name":"async-method-invocation","path":"async-method-invocation","contentType":"directory"},{"name":"balking","path":"balking","contentType":"directory"},{"name":"bridge","path":"bridge","contentType":"directory"},{"name":"builder","path":"builder","contentType":"directory"},{"name":"business-delegate","path":"business-delegate","contentType":"directory"},{"name":"bytecode","path":"bytecode","contentType":"directory"},{"name":"caching","path":"caching","contentType":"directory"},{"name":"callback","path":"callback","contentType":"directory"},{"name":"chain","path":"chain","contentType":"directory"},{"name":"collection-pipeline","path":"collection-pipeline","contentType":"directory"},{"name":"command","path":"command","contentType":"directory"},{"name":"commander","path":"commander","contentType":"directory"},{"name":"composite","path":"composite","contentType":"directory"},{"name":"converter","path":"converter","contentType":"directory"},{"name":"cqrs","path":"cqrs","contentType":"directory"},{"name":"dao","path":"dao","contentType":"directory"},{"name":"data-bus","path":"data-bus","contentType":"directory"},{"name":"data-locality","path":"data-locality","contentType":"directory"},{"name":"data-mapper","path":"data-mapper","contentType":"directory"},{"name":"data-transfer-object","path":"data-transfer-object","contentType":"directory"},{"name":"decorator","path":"decorator","contentType":"directory"},{"name":"delegation","path":"delegation","contentType":"directory"},{"name":"dependency-injection","path":"dependency-injection","contentType":"directory"},{"name":"dirty-flag","path":"dirty-flag","contentType":"directory"},{"name":"double-checked-locking","path":"double-checked-locking","contentType":"directory"},{"name":"double-dispatch","path":"double-dispatch","contentType":"directory"},{"name":"eip-aggregator","path":"eip-aggregator","contentType":"directory"},{"name":"eip-message-channel","path":"eip-message-channel","contentType":"directory"},{"name":"eip-publish-subscribe","path":"eip-publish-subscribe","contentType":"directory"},{"name":"eip-splitter","path":"eip-splitter","contentType":"directory"},{"name":"eip-wire-tap","path":"eip-wire-tap","contentType":"directory"},{"name":"event-aggregator","path":"event-aggregator","contentType":"directory"},{"name":"event-asynchronous","path":"event-asynchronous","contentType":"directory"},{"name":"event-driven-architecture","path":"event-driven-architecture","contentType":"directory"},{"name":"event-queue","path":"event-queue","contentType":"directory"},{"name":"event-sourcing","path":"event-sourcing","contentType":"directory"},{"name":"execute-around","path":"execute-around","contentType":"directory"},{"name":"extension-objects","path":"extension-objects","contentType":"directory"},{"name":"facade","path":"facade","contentType":"directory"},{"name":"factory-kit","path":"factory-kit","contentType":"directory"},{"name":"factory-method","path":"factory-method","contentType":"directory"},{"name":"feature-toggle","path":"feature-toggle","contentType":"directory"},{"name":"fluentinterface","path":"fluentinterface","contentType":"directory"},{"name":"flux","path":"flux","contentType":"directory"},{"name":"flyweight","path":"flyweight","contentType":"directory"},{"name":"front-controller","path":"front-controller","contentType":"directory"},{"name":"guarded-suspension","path":"guarded-suspension","contentType":"directory"},{"name":"half-sync-half-async","path":"half-sync-half-async","contentType":"directory"},{"name":"hexagonal","path":"hexagonal","contentType":"directory"},{"name":"intercepting-filter","path":"intercepting-filter","contentType":"directory"},{"name":"interpreter","path":"interpreter","contentType":"directory"},{"name":"iterator","path":"iterator","contentType":"directory"},{"name":"layers","path":"layers","contentType":"directory"},{"name":"lazy-loading","path":"lazy-loading","contentType":"directory"},{"name":"leader-election","path":"leader-election","contentType":"directory"},{"name":"marker","path":"marker","contentType":"directory"},{"name":"master-worker-pattern","path":"master-worker-pattern","contentType":"directory"},{"name":"mediator","path":"mediator","contentType":"directory"},{"name":"memento","path":"memento","contentType":"directory"},{"name":"model-view-controller","path":"model-view-controller","contentType":"directory"},{"name":"model-view-presenter","path":"model-view-presenter","contentType":"directory"},{"name":"module","path":"module","contentType":"directory"},{"name":"monad","path":"monad","contentType":"directory"},{"name":"monostate","path":"monostate","contentType":"directory"},{"name":"multiton","path":"multiton","contentType":"directory"},{"name":"mute-idiom","path":"mute-idiom","contentType":"directory"},{"name":"mutex","path":"mutex","contentType":"directory"},{"name":"naked-objects","path":"naked-objects","contentType":"directory"},{"name":"null-object","path":"null-object","contentType":"directory"},{"name":"object-mother","path":"object-mother","contentType":"directory"},{"name":"object-pool","path":"object-pool","contentType":"directory"},{"name":"observer","path":"observer","contentType":"directory"},{"name":"page-object","path":"page-object","contentType":"directory"},{"name":"partial-response","path":"partial-response","contentType":"directory"},{"name":"pipeline","path":"pipeline","contentType":"directory"},{"name":"poison-pill","path":"poison-pill","contentType":"directory"},{"name":"priority-queue","path":"priority-queue","contentType":"directory"},{"name":"private-class-data","path":"private-class-data","contentType":"directory"},{"name":"producer-consumer","path":"producer-consumer","contentType":"directory"},{"name":"promise","path":"promise","contentType":"directory"},{"name":"property","path":"property","contentType":"directory"},{"name":"prototype","path":"prototype","contentType":"directory"},{"name":"proxy","path":"proxy","contentType":"directory"},{"name":"queue-load-leveling","path":"queue-load-leveling","contentType":"directory"},{"name":"reactor","path":"reactor","contentType":"directory"},{"name":"reader-writer-lock","path":"reader-writer-lock","contentType":"directory"},{"name":"repository","path":"repository","contentType":"directory"},{"name":"resource-acquisition-is-initialization","path":"resource-acquisition-is-initialization","contentType":"directory"},{"name":"retry","path":"retry","contentType":"directory"},{"name":"semaphore","path":"semaphore","contentType":"directory"},{"name":"servant","path":"servant","contentType":"directory"},{"name":"serverless","path":"serverless","contentType":"directory"},{"name":"service-layer","path":"service-layer","contentType":"directory"},{"name":"service-locator","path":"service-locator","contentType":"directory"},{"name":"singleton","path":"singleton","contentType":"directory"},{"name":"spatial-partition","path":"spatial-partition","contentType":"directory"},{"name":"specification","path":"specification","contentType":"directory"},{"name":"state","path":"state","contentType":"directory"},{"name":"step-builder","path":"step-builder","contentType":"directory"},{"name":"strategy","path":"strategy","contentType":"directory"},{"name":"template-method","path":"template-method","contentType":"directory"},{"name":"thread-pool","path":"thread-pool","contentType":"directory"},{"name":"throttling","path":"throttling","contentType":"directory"},{"name":"tls","path":"tls","contentType":"directory"},{"name":"tolerant-reader","path":"tolerant-reader","contentType":"directory"},{"name":"trampoline","path":"trampoline","contentType":"directory"},{"name":"twin","path":"twin","contentType":"directory"},{"name":"typeobjectpattern","path":"typeobjectpattern","contentType":"directory"},{"name":"unit-of-work","path":"unit-of-work","contentType":"directory"},{"name":"value-object","path":"value-object","contentType":"directory"},{"name":"visitor","path":"visitor","contentType":"directory"},{"name":".gitignore","path":".gitignore","contentType":"file"},{"name":".sonarcloud.properties","path":".sonarcloud.properties","contentType":"file"},{"name":".travis.yml","path":".travis.yml","contentType":"file"},{"name":"CODE_COVERAGE.md","path":"CODE_COVERAGE.md","contentType":"file"},{"name":"CONTRIBUTING.MD","path":"CONTRIBUTING.MD","contentType":"file"},{"name":"LICENSE.md","path":"LICENSE.md","contentType":"file"},{"name":"PULL_REQUEST_TEMPLATE.md","path":"PULL_REQUEST_TEMPLATE.md","contentType":"file"},{"name":"README.md","path":"README.md","contentType":"file"},{"name":"checkstyle-suppressions.xml","path":"checkstyle-suppressions.xml","contentType":"file"},{"name":"checkstyle.xml","path":"checkstyle.xml","contentType":"file"},{"name":"exclude-pmd.properties","path":"exclude-pmd.properties","contentType":"file"},{"name":"faq.md","path":"faq.md","contentType":"file"},{"name":"pom.xml","path":"pom.xml","contentType":"file"},{"name":"update-ghpages.sh","path":"update-ghpages.sh","contentType":"file"}],"totalCount":132}},"fileTreeProcessingTime":11.652188,"foldersToFetch":[],"treeExpanded":true,"symbolsExpanded":false,"csrf_tokens":{"/Proful/java-design-patterns/branches":{"post":"XA3ul43SUuyXLXEfPXFW29qEq9b3KxUiIgcfUbe_tVAhPjTwRR1VOT4HJhEEsbKDBhNl69fYNPlVrXTivHVj0g"},"/Proful/java-design-patterns/branches/fetch_and_merge/master":{"post":"V1f78OVd6PE4XTpD4C-i0IuLd_K2BrfyWaiOU_CWBd1nZk5730E-82Lq44Re-9EkstTI1wqkI-1VzYh2aGGWqA"},"/Proful/java-design-patterns/branches/fetch_and_merge/master?discard_changes=true":{"post":"rIW5h7xTaUFATIw8n18JZqo0TQaOY5HVy6DiawZCNmCctAwMhk-_Qxr7Vfshi3qSk2vyIzLBBcrHxeROnrWlFQ"}}},"title":"java-design-patterns/event-driven-architecture at master · Proful/java-design-patterns","appPayload":{"helpUrl":"https://docs.github.com","findFileWorkerPath":"/assets-cdn/worker/find-file-worker-263cab1760dd.js","findInFileWorkerPath":"/assets-cdn/worker/find-in-file-worker-b84e9496fc59.js","githubDevUrl":null,"enabled_features":{"code_nav_ui_events":false,"react_blob_overlay":false,"accessible_code_button":true}}}
0