{"version":3,"sources":["webpack:///src/app/Services/data-access.service.ts","webpack:///src/environments/environment.ts","webpack:///src/app/Components/request-form/request-form.component.ts","webpack:///src/app/Components/request-form/request-form.component.html","webpack:///src/app/Directives/scroll-after-visible.directive.ts","webpack:///src/app/app.component.ts","webpack:///src/app/app.component.html","webpack:///src/app/app.module.ts","webpack:///src/main.ts","webpack:///$_lazy_route_resource lazy namespace object"],"names":["DataAccessService","http","categoryID","promotionWeeks","weeklyUnitMovement","averageRegularRetailPrice","promotionValuePerUnit","promotionProductRespondWell","get","apiURL","pipe","handleError","emailAddress","phone","message","options","headers","request","put","JSON","stringify","error","errorMessage","ErrorEvent","status","console","log","alert","providedIn","environment","production","RequestFormComponent","fb","dataAccessService","disabled","formSubmitted","requestSubmitted","group","email","validateEmailAddressFunction","validatePhoneNumberFunction","submittedRequest","patchValue","changes","currentValue","valid","insertRequest","value","subscribe","data","controls","disable","requestModel","emit","control","regexLiteral","regex","RegExp","test","invalidEmail","invalidPhone","submitRequestForm","selector","templateUrl","styleUrls","ScrollAfterVisibleDirective","window","scrollTo","document","body","scrollHeight","AppComponent","titleService","title","isDataLoaded","showResults","showForm","requestFormDisabled","weeklyUnitOptions","promoResponse","key","savingsCalculation","category","required","promoWeeks","weeklyUnits","validateDecimalPriceFunction","setTitle","getSavingsCalculationCategories","categoryData","categories","getSavingsCalculationPromotionWeek","promoWeekData","promoWeeksOptions","buttonAlignment","innerWidth","vertical","horizontal","categoriesButtonGroup","deselectButton","selectedIndexes","promoWeeksButtonGroup","weeklyUnitButtonGroup","promoResponseButtonGroup","reset","controlKey","controlValue","allowDecimal","invalidPrice","val","getSavingsCalculationResults","split","join","savingsCalculationResult","resultName","learnMoreDialog","open","learnMoreResultText","event","AppModule","declarations","imports","providers","bootstrap","bootstrapModule","err","webpackEmptyAsyncContext","req","Promise","resolve","then","e","Error","code","keys","module","exports","id"],"mappings":"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","file":"main-es5.js","sourcesContent":["import { Injectable, isDevMode } from '@angular/core';\r\nimport { HttpClient, HttpHeaders } from '@angular/common/http';\r\nimport {\r\n SavingsCalculationCategoryModel,\r\n SavingsCalculationPercentTypeModel,\r\n SavingsCalculationPromotionWeekModel,\r\n SavingsCalculationResultModel,\r\n SavingsCalculationGenericResultModel,\r\n SavingsCalculationRequestModel,\r\n} from '../Models/savings-calculation-model';\r\nimport { Observable, throwError } from 'rxjs';\r\nimport { retry, catchError } from 'rxjs/operators';\r\nimport { environment } from 'src/environments/environment';\r\nimport { PathLocationStrategy } from '@angular/common';\r\n\r\n@Injectable({\r\n providedIn: 'root',\r\n})\r\nexport class DataAccessService {\r\n constructor(private http: HttpClient) {}\r\n\r\n getSavingsCalculationResults(\r\n categoryID: number,\r\n promotionWeeks: number,\r\n weeklyUnitMovement: number,\r\n averageRegularRetailPrice: number,\r\n promotionValuePerUnit: number,\r\n promotionProductRespondWell: boolean\r\n ): Observable {\r\n // let resultObj: SavingsCalculationResultModel = new SavingsCalculationResultModel();\r\n // resultObj.estimatedCostSavings = 1;\r\n // resultObj.estimatedIncreaseInIncrementalUnits = 1;\r\n // resultObj.incrementalUnits = 1;\r\n // resultObj.promoResponse = true;\r\n // resultObj.promoWeeks = 1;\r\n // resultObj.promotionCost = 1;\r\n // resultObj.savingsCalculationCategoryName = \"Dry Grocery\"\r\n // resultObj.savingsCalculationPercentTypeName = \"Medium\"\r\n // resultObj.totalUnitsMoved = 1;\r\n\r\n // return resultObj;\r\n return this.http\r\n .get(\r\n environment.apiURL +\r\n 'SavingsCalculation/' +\r\n categoryID +\r\n '/' +\r\n promotionWeeks +\r\n '/' +\r\n weeklyUnitMovement +\r\n '/' +\r\n averageRegularRetailPrice +\r\n '/' +\r\n promotionValuePerUnit +\r\n '/' +\r\n promotionProductRespondWell\r\n )\r\n .pipe(retry(1), catchError(this.handleError));\r\n }\r\n\r\n getSavingsCalculationCategories(): Observable<\r\n SavingsCalculationCategoryModel[]\r\n > {\r\n // let resultObj: SavingsCalculationCategoryModel;\r\n // resultObj.savingsCalculationCategoryID = 1;\r\n // resultObj.savingsCalculationCategoryName = \"Dry Grocery\";\r\n // let resultObj2: SavingsCalculationCategoryModel;\r\n // resultObj2.savingsCalculationCategoryID = 2;\r\n // resultObj2.savingsCalculationCategoryName = \"Refrigerated/Frozen\";\r\n // let resultObj3: SavingsCalculationCategoryModel;\r\n // resultObj3.savingsCalculationCategoryID = 3;\r\n // resultObj3.savingsCalculationCategoryName = \"HBC/General Merchandise\";\r\n\r\n // let result: SavingsCalculationCategoryModel[] = [resultObj, resultObj2, resultObj3]\r\n return this.http\r\n .get(\r\n environment.apiURL + 'SavingsCalculation/Category'\r\n )\r\n .pipe(retry(1), catchError(this.handleError));\r\n }\r\n\r\n getSavingsCalculationPercentTypes(): Observable<\r\n SavingsCalculationPercentTypeModel[]\r\n > {\r\n // let resultObj: SavingsCalculationPercentTypeModel;\r\n // resultObj.savingsCalculationPercentTypeID = 1;\r\n // resultObj.savingsCalculationPercentTypeName = \"Lower\";\r\n // resultObj.LowerBound = 0;\r\n // let resultObj2: SavingsCalculationPercentTypeModel;\r\n // resultObj2.savingsCalculationPercentTypeID = 2;\r\n // resultObj2.savingsCalculationPercentTypeName = \"Medium\";\r\n // resultObj2.LowerBound = 12;\r\n\r\n // let result: SavingsCalculationPercentTypeModel[] = [resultObj, resultObj2]\r\n // return result;\r\n\r\n return this.http\r\n .get(\r\n environment.apiURL + 'SavingsCalculation/PercentType'\r\n )\r\n .pipe(retry(1), catchError(this.handleError));\r\n }\r\n\r\n getSavingsCalculationPromotionWeek(): Observable<\r\n SavingsCalculationPromotionWeekModel[]\r\n > {\r\n // let resultObj: SavingsCalculationPromotionWeekModel;\r\n // resultObj.promoWeeks = 2;\r\n // let resultObj2: SavingsCalculationPromotionWeekModel;\r\n // resultObj2.promoWeeks = 4;\r\n // let resultObj3: SavingsCalculationPromotionWeekModel;\r\n // resultObj3.promoWeeks = 13;\r\n\r\n // let result: SavingsCalculationPromotionWeekModel[] = [resultObj, resultObj2, resultObj3]\r\n // return result;\r\n\r\n return this.http\r\n .get(\r\n environment.apiURL + 'SavingsCalculation/PromotionWeek'\r\n )\r\n .pipe(retry(1), catchError(this.handleError));\r\n }\r\n\r\n insertRequest(\r\n emailAddress: any,\r\n phone: any,\r\n message: any\r\n ): Observable {\r\n const options: any = {\r\n headers: { 'Content-Type': 'application/json;charset=UTF-8;' },\r\n };\r\n\r\n const request: SavingsCalculationRequestModel = {\r\n emailAddress: emailAddress,\r\n phone: phone,\r\n message: message,\r\n };\r\n\r\n return this.http\r\n .put(\r\n environment.apiURL + 'SavingsCalculation/Request',\r\n JSON.stringify(request),\r\n options\r\n )\r\n .pipe(retry(1), catchError(this.handleError));\r\n }\r\n\r\n handleError(error) {\r\n let errorMessage = '';\r\n if (error.error instanceof ErrorEvent) {\r\n // client-side error\r\n errorMessage = `Error: ${error.error.message}`;\r\n } else {\r\n // server-side error\r\n errorMessage = `Error Code: ${error.status}\\nMessage: ${error.message}`;\r\n }\r\n console.log(errorMessage);\r\n alert(errorMessage);\r\n return throwError(errorMessage);\r\n }\r\n}\r\n","export const environment = {\r\n production: true,\r\n apiURL: 'https://prod-fintech-trade-api.azurewebsites.net/api/'\r\n};\r\n","import {\r\n Component,\r\n OnInit,\r\n Input,\r\n Output,\r\n EventEmitter,\r\n SimpleChanges,\r\n} from '@angular/core';\r\nimport {\r\n AbstractControl,\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n ValidatorFn,\r\n} from '@angular/forms';\r\nimport { SavingsCalculationRequestModel } from 'src/app/Models/savings-calculation-model';\r\nimport { DataAccessService } from 'src/app/Services/data-access.service';\r\n\r\n@Component({\r\n selector: 'app-request-form',\r\n templateUrl: './request-form.component.html',\r\n styleUrls: ['./request-form.component.css'],\r\n})\r\nexport class RequestFormComponent implements OnInit {\r\n @Input() disabled = false;\r\n @Input() submittedRequest: SavingsCalculationRequestModel; //This is passed in when a request has already been submitted in the parent (app) component\r\n\r\n @Output() formSubmitted: EventEmitter =\r\n new EventEmitter();\r\n\r\n request: FormGroup;\r\n requestSubmitted = false;\r\n\r\n constructor(fb: FormBuilder, private dataAccessService: DataAccessService) {\r\n this.request = fb.group({\r\n email: new FormControl(null, [this.validateEmailAddressFunction()]),\r\n phone: new FormControl(null, [this.validatePhoneNumberFunction()]),\r\n message: new FormControl(null),\r\n });\r\n }\r\n\r\n ngOnInit(): void {\r\n if (this.submittedRequest != null) {\r\n this.request.patchValue({ message: this.submittedRequest.message });\r\n this.request.patchValue({ email: this.submittedRequest.emailAddress });\r\n this.request.patchValue({ phone: this.submittedRequest.phone });\r\n }\r\n }\r\n\r\n ngOnChanges(changes: SimpleChanges): void {\r\n if (changes['submittedRequest'].currentValue != null) {\r\n this.request.patchValue({ message: this.submittedRequest.message });\r\n this.request.patchValue({ email: this.submittedRequest.emailAddress });\r\n this.request.patchValue({ phone: this.submittedRequest.phone });\r\n }\r\n }\r\n\r\n submitRequestForm(): void {\r\n if (this.request.valid) {\r\n this.dataAccessService\r\n .insertRequest(\r\n this.request.value['email'],\r\n this.request.value['phone'],\r\n this.request.value['message']\r\n )\r\n .subscribe((data) => {\r\n this.requestSubmitted = true;\r\n this.request.controls.email.disable();\r\n this.request.controls.phone.disable();\r\n this.request.controls.message.disable();\r\n let requestModel: SavingsCalculationRequestModel = {\r\n emailAddress: this.request.value['email'],\r\n phone: this.request.value['phone'],\r\n message: this.request.value['message'],\r\n };\r\n this.formSubmitted.emit(requestModel);\r\n });\r\n }\r\n }\r\n\r\n validateEmailAddressFunction(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (!control.value) {\r\n return null;\r\n }\r\n const regexLiteral = /^\\S+@\\S+$/g;\r\n const regex = new RegExp(regexLiteral);\r\n const valid = regex.test(control.value);\r\n return valid ? null : { invalidEmail: true };\r\n };\r\n }\r\n\r\n validatePhoneNumberFunction(): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (!control.value) {\r\n return null;\r\n }\r\n const regexLiteral = /^\\d{3,4}\\-?\\d{3}\\-?\\d{4}$/g;\r\n const regex = new RegExp(regexLiteral);\r\n const valid = regex.test(control.value);\r\n return valid ? null : { invalidPhone: true };\r\n };\r\n }\r\n}\r\n","
\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n
","import { AfterContentInit, Output, Directive, EventEmitter } from '@angular/core';\r\n\r\n@Directive({\r\n selector: '[scrollAfterVisible]'\r\n})\r\nexport class ScrollAfterVisibleDirective implements AfterContentInit {\r\n\r\n public ngAfterContentInit(): void {\r\n window.scrollTo(0, document.body.scrollHeight);\r\n }\r\n\r\n}\r\n","import { Component, ViewChild } from '@angular/core';\r\nimport {\r\n FormBuilder,\r\n FormControl,\r\n FormGroup,\r\n Validators,\r\n ValidatorFn,\r\n AbstractControl,\r\n} from '@angular/forms';\r\nimport {\r\n ButtonGroupAlignment,\r\n IgxButtonGroupComponent,\r\n IgxDialogComponent,\r\n} from 'igniteui-angular';\r\nimport { DataAccessService } from './Services/data-access.service';\r\nimport {\r\n SavingsCalculationResultModel,\r\n SavingsCalculationCategoryModel,\r\n SavingsCalculationPromotionWeekModel,\r\n SavingsCalculationRequestModel,\r\n} from './Models/savings-calculation-model';\r\nimport { Title } from '@angular/platform-browser';\r\n\r\n@Component({\r\n selector: 'app-root',\r\n templateUrl: './app.component.html',\r\n styleUrls: ['./app.component.css'],\r\n})\r\nexport class AppComponent {\r\n title = 'ISA Savings Calculator';\r\n savingsCalculation: FormGroup;\r\n isDataLoaded = false;\r\n showResults = false;\r\n showForm = true;\r\n requestFormDisabled = false;\r\n submittedRequest: SavingsCalculationRequestModel;\r\n buttonAlignment: ButtonGroupAlignment;\r\n\r\n @ViewChild('learnMoreDialog') learnMoreDialog: IgxDialogComponent;\r\n learnMoreResultText: string;\r\n\r\n @ViewChild('categoriesButtonGroup')\r\n categoriesButtonGroup: IgxButtonGroupComponent;\r\n @ViewChild('promoWeeksButtonGroup')\r\n promoWeeksButtonGroup: IgxButtonGroupComponent;\r\n @ViewChild('weeklyUnitButtonGroup')\r\n weeklyUnitButtonGroup: IgxButtonGroupComponent;\r\n @ViewChild('promoResponseButtonGroup')\r\n promoResponseButtonGroup: IgxButtonGroupComponent;\r\n\r\n savingsCalculationResult: SavingsCalculationResultModel;\r\n\r\n categories: Array;\r\n promoWeeksOptions: Array;\r\n weeklyUnitOptions: Array = [100000, 250000, 500000];\r\n promoResponse: Array<{ key: string; value: boolean }> = [\r\n { key: 'Yes', value: true },\r\n { key: 'No', value: false },\r\n ];\r\n\r\n constructor(\r\n fb: FormBuilder,\r\n private dataAccessService: DataAccessService,\r\n private titleService: Title\r\n ) {\r\n this.savingsCalculation = fb.group({\r\n category: new FormControl(null, [Validators.required]),\r\n promoWeeks: new FormControl(null, [Validators.required]),\r\n weeklyUnits: new FormControl(null, [\r\n Validators.required,\r\n this.validateDecimalPriceFunction(false),\r\n ]),\r\n averageRegularRetailPrice: new FormControl(null, [\r\n Validators.required,\r\n this.validateDecimalPriceFunction(true),\r\n ]),\r\n promotionValuePerUnit: new FormControl(null, [\r\n Validators.required,\r\n this.validateDecimalPriceFunction(true),\r\n ]),\r\n promoResponse: new FormControl(null, [Validators.required]),\r\n });\r\n\r\n this.titleService.setTitle(this.title);\r\n }\r\n\r\n ngOnInit(): void {\r\n this.dataAccessService\r\n .getSavingsCalculationCategories()\r\n .subscribe((categoryData) => {\r\n this.categories = categoryData;\r\n\r\n this.dataAccessService\r\n .getSavingsCalculationPromotionWeek()\r\n .subscribe((promoWeekData) => {\r\n this.promoWeeksOptions = promoWeekData;\r\n\r\n this.isDataLoaded = true;\r\n });\r\n });\r\n\r\n this.buttonAlignment =\r\n window.innerWidth <= 480\r\n ? ButtonGroupAlignment.vertical\r\n : ButtonGroupAlignment.horizontal;\r\n\r\n this.isDataLoaded = false;\r\n }\r\n\r\n clearForm(): void {\r\n this.categoriesButtonGroup.deselectButton(\r\n this.categoriesButtonGroup.selectedIndexes[0]\r\n );\r\n this.promoWeeksButtonGroup.deselectButton(\r\n this.promoWeeksButtonGroup.selectedIndexes[0]\r\n );\r\n this.weeklyUnitButtonGroup.deselectButton(\r\n this.weeklyUnitButtonGroup.selectedIndexes[0]\r\n );\r\n this.promoResponseButtonGroup.deselectButton(\r\n this.promoResponseButtonGroup.selectedIndexes[0]\r\n );\r\n this.savingsCalculation.reset();\r\n }\r\n\r\n onButtonSelection(controlKey: string, controlValue: any): void {\r\n if (this.savingsCalculation.controls[controlKey].value == controlValue) {\r\n this.savingsCalculation.controls[controlKey].patchValue(null);\r\n } else {\r\n this.savingsCalculation.controls[controlKey].patchValue(controlValue);\r\n }\r\n }\r\n\r\n validateDecimalPriceFunction(allowDecimal: boolean): ValidatorFn {\r\n return (control: AbstractControl): { [key: string]: any } => {\r\n if (!control.value) {\r\n return null;\r\n }\r\n let regexLiteral;\r\n if (allowDecimal) {\r\n regexLiteral =\r\n /^[0-9]{1,3}(,?[0-9]{3})*(\\.[0-9]{2})?$|^[0]*(\\.[0-9]{2})$/g;\r\n } else {\r\n regexLiteral = /^[0-9]{1,3}(,?[0-9]{3})*(\\.[0]{2})?$/g;\r\n }\r\n const regex = new RegExp(regexLiteral);\r\n const valid = regex.test(control.value);\r\n return valid ? null : { invalidPrice: true };\r\n };\r\n }\r\n\r\n calculateForm(): void {\r\n if (this.savingsCalculation.valid) {\r\n const val = this.savingsCalculation.value;\r\n this.dataAccessService\r\n .getSavingsCalculationResults(\r\n val['category'],\r\n val['promoWeeks'],\r\n val['weeklyUnits'],\r\n val['averageRegularRetailPrice'].split(',').join(''),\r\n val['promotionValuePerUnit'].split(',').join(''),\r\n val['promoResponse']\r\n )\r\n .subscribe((data) => {\r\n this.savingsCalculationResult = data;\r\n\r\n this.showForm = false;\r\n\r\n if (this.showResults == true) {\r\n window.scrollTo(0, document.body.scrollHeight);\r\n } else {\r\n this.showResults = true;\r\n }\r\n });\r\n }\r\n }\r\n\r\n openLearnMoreDialog(resultName: string): void {\r\n this.learnMoreDialog.open();\r\n\r\n switch (resultName) {\r\n case 'totalUnitsMoved':\r\n this.learnMoreResultText = `Total Units Moved: This number represents our estimate of the total promoted product sold during the promotion period.`;\r\n break;\r\n case 'incrementalUnits':\r\n this.learnMoreResultText = `Incremental Units: This number is our estimate of \"lift\" or total extra units sold because of the promotion.`;\r\n break;\r\n case 'promotionCost':\r\n this.learnMoreResultText = `Promotion Cost: This number is our estimate of your all-in cost for the promotion including service fees and retailer payments.`;\r\n break;\r\n case 'estimatedCostSavings':\r\n this.learnMoreResultText = `Estimated Cost Savings: This number is our estimate of your total you'll save on this promotion with our validation services.`;\r\n break;\r\n case 'estimatedIncreaseInIncrementalUnits':\r\n this.learnMoreResultText = `Estimated Increase In Incremental Units: This is our estimate of the extra units you'll move by letting ISA manage your trade promotion.`;\r\n break;\r\n default:\r\n this.learnMoreResultText = '';\r\n break;\r\n }\r\n }\r\n\r\n requestFormSubmitted(event: SavingsCalculationRequestModel): void {\r\n this.submittedRequest = event;\r\n this.requestFormDisabled = true;\r\n }\r\n}\r\n\r\ninterface savingsCalculation {\r\n totalUnitsMoved: { header: 'totalUnitsMoved'; value: number };\r\n incrementalUnits: number;\r\n promotionCost: number;\r\n estimatedCostSavings: number;\r\n estimatedIncreaseInIncrementalUnits: number;\r\n}\r\n","
\r\n
\r\n
\r\n
\r\n
\r\n \r\n TRADE SAVINGS CALCULATOR\r\n

\r\n \r\n
\r\n\r\n \r\n
\r\n
\r\n
\r\n
\r\n \r\n TRADE SAVINGS CALCULATOR\r\n \r\n
\r\n

\r\n Use this tool to calculate savings by selecting a category,\r\n promotion length, number of units moved, entering the retail price\r\n and promotion value, and selecting the promotion response.\r\n

\r\n
\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n
\r\n\r\n\r\n
\r\n \r\n \r\n

Calculate Savings

\r\n \r\n
\r\n \r\n\r\n
\r\n\r\n","import { BrowserModule } from '@angular/platform-browser';\r\nimport { NgModule } from '@angular/core';\r\nimport { HttpClientModule } from '@angular/common/http';\r\nimport { AppComponent } from './app.component';\r\nimport { BrowserAnimationsModule } from '@angular/platform-browser/animations';\r\nimport { IgxDialogModule, IgxCarouselModule, IgxInputGroupModule, IgxDropDownModule, IgxButtonModule, IgxToggleModule, IgxRadioModule, IgxButtonGroupModule, IgxCardModule } from 'igniteui-angular';\r\nimport { FormsModule, ReactiveFormsModule } from '@angular/forms';\r\nimport { RequestFormComponent } from './Components/request-form/request-form.component';\r\nimport { ScrollAfterVisibleDirective } from './Directives/scroll-after-visible.directive';\r\n\r\n\r\n@NgModule({\r\n declarations: [\r\n AppComponent,\r\n RequestFormComponent,\r\n ScrollAfterVisibleDirective\r\n ],\r\n imports: [\r\n BrowserModule,\r\n BrowserAnimationsModule,\r\n IgxCarouselModule,\r\n IgxInputGroupModule, \r\n IgxDropDownModule,\r\n IgxButtonModule,\r\n IgxToggleModule,\r\n IgxButtonGroupModule,\r\n FormsModule, \r\n ReactiveFormsModule,\r\n HttpClientModule,\r\n IgxCardModule,\r\n IgxDialogModule\r\n ],\r\n providers: [],\r\n bootstrap: [AppComponent]\r\n})\r\nexport class AppModule {\r\n}\r\n","import { enableProdMode } from '@angular/core';\r\nimport { platformBrowserDynamic } from '@angular/platform-browser-dynamic';\r\n\r\nimport { AppModule } from './app/app.module';\r\nimport { environment } from './environments/environment';\r\n\r\nif (environment.production) {\r\n enableProdMode();\r\n}\r\n\r\nplatformBrowserDynamic().bootstrapModule(AppModule)\r\n .catch(err => console.error(err));\r\n","function webpackEmptyAsyncContext(req) {\n\t// Here Promise.resolve().then() is used instead of new Promise() to prevent\n\t// uncaught exception popping up in devtools\n\treturn Promise.resolve().then(function() {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t});\n}\nwebpackEmptyAsyncContext.keys = function() { return []; };\nwebpackEmptyAsyncContext.resolve = webpackEmptyAsyncContext;\nmodule.exports = webpackEmptyAsyncContext;\nwebpackEmptyAsyncContext.id = \"zn8P\";"]}