@renaissancerentals/renaissance-component 12.0.23 → 12.0.25
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/announcement/Banner.js +13 -23
- package/lib/application/ApplicationModal.js +9 -7
- package/lib/application/ApplicationSection.js +46 -58
- package/lib/application/service/ApplicationService.js +3 -5
- package/lib/asset/AssetModal.js +15 -29
- package/lib/asset/VideoModal.js +9 -11
- package/lib/asset/service/AssetService.js +9 -17
- package/lib/card/Card.js +7 -5
- package/lib/contact/ContactModal.js +12 -10
- package/lib/contact/ContactSection.js +42 -82
- package/lib/contact/ContactSectionSkeleton.js +2 -2
- package/lib/contact/data/Contact.js +2 -3
- package/lib/contact/service/ContactService.js +6 -9
- package/lib/data/RenaissanceData.js +2 -3
- package/lib/feature/FeatureSection.js +5 -3
- package/lib/floorplan/card/FloorplanCard.js +31 -49
- package/lib/floorplan/card/FloorplanCardSkeleton.js +2 -2
- package/lib/floorplan/card/FloorplanCardSlider.js +18 -31
- package/lib/floorplan/card/FloorplanSliderCard.js +16 -18
- package/lib/floorplan/card/SimilarFloorplanCard.js +31 -43
- package/lib/floorplan/card/TestimonialsCard.js +6 -6
- package/lib/floorplan/data/Calendar.js +2 -3
- package/lib/floorplan/data/Floorplan.js +6 -11
- package/lib/floorplan/data/FloorplanFilters.js +4 -6
- package/lib/floorplan/data/Unit.js +4 -7
- package/lib/floorplan/filter/FloorplanDropDown.js +10 -18
- package/lib/floorplan/section/FloorplanHero.js +66 -118
- package/lib/floorplan/section/FloorplanSection.js +74 -133
- package/lib/floorplan/section/FloorplanSectionSkeleton.js +9 -15
- package/lib/floorplan/section/FloorplansHeader.js +97 -132
- package/lib/floorplan/section/FloorplansHeaderSekeleton.js +5 -3
- package/lib/floorplan/section/FloorplansSection.js +35 -51
- package/lib/floorplan/section/HeroBadgeStats.js +13 -13
- package/lib/floorplan/section/filter/Availability.js +17 -21
- package/lib/floorplan/section/filter/Bedroom.js +17 -21
- package/lib/floorplan/section/filter/Price.js +8 -6
- package/lib/floorplan/section/filter/Sort.js +17 -27
- package/lib/floorplan/section/filter/Style.js +16 -18
- package/lib/floorplan/service/FloorplanService.d.ts +8 -0
- package/lib/floorplan/service/FloorplanService.js +88 -127
- package/lib/footer/Footer.js +10 -6
- package/lib/gallery/DriveGallery.js +20 -37
- package/lib/gallery/Gallery.js +46 -79
- package/lib/gallery/GalleryHeroMain.js +41 -57
- package/lib/gallery/GalleryHeroMobile.js +31 -41
- package/lib/gallery/GalleryHeroSkeleton.js +2 -2
- package/lib/gallery/GalleryModal.js +20 -28
- package/lib/gallery/HeroImageCard.js +9 -7
- package/lib/gallery/ImageCard.js +7 -5
- package/lib/gallery/ImageCardSkeleton.js +6 -4
- package/lib/gallery/VideoTours.js +6 -4
- package/lib/gallery/VirtualTour.js +5 -3
- package/lib/header/InfoHeader.js +5 -3
- package/lib/index.js +91 -91
- package/lib/input/Captcha.js +10 -18
- package/lib/map/MapSection.js +5 -3
- package/lib/property/LeaseOfficeSkeleton.js +2 -2
- package/lib/property/PropertyLocation.js +18 -15
- package/lib/property/PropertyLocationSkeleton.js +2 -2
- package/lib/property/data/Property.js +4 -7
- package/lib/property/service/PropertyService.js +4 -6
- package/lib/review/ReviewSection.js +33 -51
- package/lib/service/AdminApi.js +3 -5
- package/lib/service/Api.js +3 -5
- package/lib/service/AssetApi.js +4 -7
- package/lib/service/GraphqlQuery.js +5 -8
- package/lib/service/RoundRobin.js +5 -8
- package/lib/sublet/SubletCard.js +10 -20
- package/lib/sublet/SubletImage.js +19 -35
- package/lib/sublet/SubletMessageModal.js +21 -44
- package/lib/sublet/SubletNotFound.js +2 -2
- package/lib/sublet/SubletSection.js +116 -165
- package/lib/sublet/SubletsSection.js +16 -29
- package/lib/sublet/data/Sublet.js +2 -3
- package/lib/sublet/services/SubletService.js +18 -28
- package/lib/summer-house/SummerHouseFeatures.js +2 -2
- package/lib/summer-house/SummerHousePricing.js +2 -2
- package/lib/summer-house/data/SummerHouseAmenities.js +2 -3
- package/lib/team/TeamSection.js +14 -22
- package/lib/team/card/TeamCard.js +8 -7
- package/lib/team/card/TeamCardSkeleton.js +2 -2
- package/lib/team/service/TeamService.js +3 -5
- package/lib/utils/PrettyPrintJson.js +5 -3
- package/lib/utils/Utils.d.ts +2 -0
- package/lib/utils/Utils.js +35 -55
- package/lib/video/Video.js +16 -30
- package/package.json +12 -11
|
@@ -8,6 +8,7 @@ export declare const getAllPropertyFilterData: () => Promise<PropertyFilterData[
|
|
|
8
8
|
export declare const getFloorplansFilterData: (propertyId: PropertyId) => Promise<FloorplanCardData[]>;
|
|
9
9
|
export declare const sortAndFilter: (floorplans: FloorplanCardData[], currentFilters: CurrentFilters) => FloorplanCardData[];
|
|
10
10
|
export declare const isDateWithinTwelveMonths: (date: string) => boolean;
|
|
11
|
+
export declare const isDateAfterToday: (date: string) => boolean;
|
|
11
12
|
export declare const defaultAvailabilityToMonthYear: (dateString: string) => string;
|
|
12
13
|
export declare const momentToMonthYear: (date: Moment) => string;
|
|
13
14
|
export declare const sortFloorplans: (floorplans: FloorplanCardData[], sortBy: SortBy) => FloorplanCardData[];
|
|
@@ -22,3 +23,10 @@ export declare const getTestimonials: (floorplanId: string) => Promise<Testimoni
|
|
|
22
23
|
export declare const permittedPets: (floorplan: Floorplan) => string[];
|
|
23
24
|
export declare const notPermittedPets: (floorplan: Floorplan) => string[];
|
|
24
25
|
export declare const petPolicy: (floorplan: Floorplan) => string | undefined;
|
|
26
|
+
export declare const floorplanAddress: (currentFloorplan: Floorplan) => FloorplanAddress;
|
|
27
|
+
export interface FloorplanAddress {
|
|
28
|
+
address: string;
|
|
29
|
+
city: string;
|
|
30
|
+
state: string;
|
|
31
|
+
zipcode: string;
|
|
32
|
+
}
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
Object.defineProperty(exports, "__esModule", {
|
|
4
4
|
value: true
|
|
5
5
|
});
|
|
6
|
-
exports.sortFloorplans = exports.sortAndFilter = exports.petPolicy = exports.permittedPets = exports.notPermittedPets = exports.momentToMonthYear = exports.isFloorplanAvailable = exports.isDateWithinTwelveMonths = exports.getTestimonials = exports.getSimilarFloorplans = exports.getFloorplansFilterData = exports.getFloorplanVariations = exports.getFloorplan = exports.getFeaturedFloorplans = exports.getAllPropertyFilterData = exports.getAllActiveFloorplans = exports.filtersFrom = exports.defaultAvailabilityToMonthYear = exports.convertToHttps = exports.AVAILABLE_NOW = void 0;
|
|
6
|
+
exports.sortFloorplans = exports.sortAndFilter = exports.petPolicy = exports.permittedPets = exports.notPermittedPets = exports.momentToMonthYear = exports.isFloorplanAvailable = exports.isDateWithinTwelveMonths = exports.isDateAfterToday = exports.getTestimonials = exports.getSimilarFloorplans = exports.getFloorplansFilterData = exports.getFloorplanVariations = exports.getFloorplan = exports.getFeaturedFloorplans = exports.getAllPropertyFilterData = exports.getAllActiveFloorplans = exports.floorplanAddress = exports.filtersFrom = exports.defaultAvailabilityToMonthYear = exports.convertToHttps = exports.AVAILABLE_NOW = void 0;
|
|
7
7
|
var _lodash = _interopRequireDefault(require("lodash"));
|
|
8
8
|
var _FloorplanFilters = require("../data/FloorplanFilters");
|
|
9
9
|
var _moment = _interopRequireDefault(require("moment"));
|
|
@@ -12,20 +12,13 @@ var _Unit = require("../data/Unit");
|
|
|
12
12
|
var _RoundRobin = require("../../service/RoundRobin");
|
|
13
13
|
var _GraphqlQuery = require("../../service/GraphqlQuery");
|
|
14
14
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
function _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === "string") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === "Object" && o.constructor) n = o.constructor.name; if (n === "Map" || n === "Set") return Array.from(o); if (n === "Arguments" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }
|
|
18
|
-
function _iterableToArray(iter) { if (typeof Symbol !== "undefined" && iter[Symbol.iterator] != null || iter["@@iterator"] != null) return Array.from(iter); }
|
|
19
|
-
function _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }
|
|
20
|
-
function _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i]; return arr2; }
|
|
21
|
-
var AVAILABLE_NOW = "Available Now";
|
|
22
|
-
exports.AVAILABLE_NOW = AVAILABLE_NOW;
|
|
23
|
-
var convertToHttps = function convertToHttps(url) {
|
|
15
|
+
const AVAILABLE_NOW = exports.AVAILABLE_NOW = "Available Now";
|
|
16
|
+
const convertToHttps = url => {
|
|
24
17
|
if (url === null) return "";
|
|
25
18
|
return url.replace(/^http:\/\//i, 'https://');
|
|
26
19
|
};
|
|
27
20
|
exports.convertToHttps = convertToHttps;
|
|
28
|
-
|
|
21
|
+
const getAllPropertyFilterDataQuery = () => {
|
|
29
22
|
return '{ \
|
|
30
23
|
properties { \
|
|
31
24
|
name active \
|
|
@@ -40,26 +33,20 @@ var getAllPropertyFilterDataQuery = function getAllPropertyFilterDataQuery() {
|
|
|
40
33
|
} \
|
|
41
34
|
}';
|
|
42
35
|
};
|
|
43
|
-
|
|
44
|
-
return (0, _GraphqlQuery.graphql)(getAllPropertyFilterDataQuery()).then(
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
return floorplan.active;
|
|
51
|
-
});
|
|
52
|
-
property.floorplans.forEach(function (floorplan) {
|
|
53
|
-
floorplan.units = floorplan.units.filter(function (unit) {
|
|
54
|
-
return unit.active;
|
|
55
|
-
});
|
|
36
|
+
const getAllPropertyFilterData = () => {
|
|
37
|
+
return (0, _GraphqlQuery.graphql)(getAllPropertyFilterDataQuery()).then(response => {
|
|
38
|
+
const properties = response.data.data.properties.filter(property => property.active);
|
|
39
|
+
properties.forEach(property => {
|
|
40
|
+
property.floorplans = property.floorplans.filter(floorplan => floorplan.active);
|
|
41
|
+
property.floorplans.forEach(floorplan => {
|
|
42
|
+
floorplan.units = floorplan.units.filter(unit => unit.active);
|
|
56
43
|
});
|
|
57
44
|
});
|
|
58
45
|
return properties;
|
|
59
46
|
});
|
|
60
47
|
};
|
|
61
48
|
exports.getAllPropertyFilterData = getAllPropertyFilterData;
|
|
62
|
-
|
|
49
|
+
const getFloorplansFilterDataQuery = propertyId => {
|
|
63
50
|
return '{ \
|
|
64
51
|
property(id: "' + propertyId + '") { \
|
|
65
52
|
floorplans { \
|
|
@@ -73,45 +60,38 @@ var getFloorplansFilterDataQuery = function getFloorplansFilterDataQuery(propert
|
|
|
73
60
|
} \
|
|
74
61
|
}';
|
|
75
62
|
};
|
|
76
|
-
|
|
77
|
-
return (0, _GraphqlQuery.graphql)(getFloorplansFilterDataQuery(propertyId)).then(
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
floorplans.forEach(function (floorplan) {
|
|
82
|
-
floorplan.units = floorplan.units.filter(function (unit) {
|
|
83
|
-
return unit.active;
|
|
84
|
-
});
|
|
63
|
+
const getFloorplansFilterData = propertyId => {
|
|
64
|
+
return (0, _GraphqlQuery.graphql)(getFloorplansFilterDataQuery(propertyId)).then(response => {
|
|
65
|
+
const floorplans = response.data.data.property.floorplans.filter(floorplan => floorplan.active);
|
|
66
|
+
floorplans.forEach(floorplan => {
|
|
67
|
+
floorplan.units = floorplan.units.filter(unit => unit.active);
|
|
85
68
|
});
|
|
86
69
|
return floorplans;
|
|
87
70
|
});
|
|
88
71
|
};
|
|
89
72
|
exports.getFloorplansFilterData = getFloorplansFilterData;
|
|
90
|
-
|
|
91
|
-
return sortFloorplans(floorplans.filter(
|
|
92
|
-
return filterMatches(floorplan, currentFilters);
|
|
93
|
-
}), currentFilters.sortBy);
|
|
73
|
+
const sortAndFilter = (floorplans, currentFilters) => {
|
|
74
|
+
return sortFloorplans(floorplans.filter(floorplan => filterMatches(floorplan, currentFilters)), currentFilters.sortBy);
|
|
94
75
|
};
|
|
95
76
|
exports.sortAndFilter = sortAndFilter;
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
77
|
+
const isDateWithinTwelveMonths = date => {
|
|
78
|
+
const today = (0, _moment.default)();
|
|
79
|
+
const diff = (0, _moment.default)(date, "YYYY-MM-DD").diff(today, 'months', false);
|
|
99
80
|
return diff >= 0 && diff <= 12;
|
|
100
81
|
};
|
|
101
82
|
exports.isDateWithinTwelveMonths = isDateWithinTwelveMonths;
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
var defaultAvailabilityToMonthYear = function defaultAvailabilityToMonthYear(dateString) {
|
|
106
|
-
return AVAILABLE_NOW === dateString ? dateString : (0, _moment.default)(dateString, "MM-YYYY").format('MMM YYYY');
|
|
83
|
+
const isDateAfterToday = date => {
|
|
84
|
+
const today = (0, _moment.default)();
|
|
85
|
+
return (0, _moment.default)(date, "YYYY-MM-DD").isAfter(today);
|
|
107
86
|
};
|
|
87
|
+
exports.isDateAfterToday = isDateAfterToday;
|
|
88
|
+
const dateToMonthYear = dateString => (0, _moment.default)(dateString, "YYYY-MM-DD").format('MMM YYYY');
|
|
89
|
+
const defaultAvailabilityToMonthYear = dateString => AVAILABLE_NOW === dateString ? dateString : (0, _moment.default)(dateString, "MM-YYYY").format('MMM YYYY');
|
|
108
90
|
exports.defaultAvailabilityToMonthYear = defaultAvailabilityToMonthYear;
|
|
109
|
-
|
|
110
|
-
return date.format('MMM YYYY');
|
|
111
|
-
};
|
|
91
|
+
const momentToMonthYear = date => date.format('MMM YYYY');
|
|
112
92
|
exports.momentToMonthYear = momentToMonthYear;
|
|
113
|
-
|
|
114
|
-
return availabilityFilters.length === 0 ? true : floorplan.units.some(
|
|
93
|
+
const isAvailable = (floorplan, availabilityFilters) => {
|
|
94
|
+
return availabilityFilters.length === 0 ? true : floorplan.units.some(unit => {
|
|
115
95
|
if (availabilityFilters.indexOf(AVAILABLE_NOW) > -1) {
|
|
116
96
|
if (isBeforeToday(unit.moveInDate)) {
|
|
117
97
|
return true;
|
|
@@ -125,50 +105,44 @@ var isAvailable = function isAvailable(floorplan, availabilityFilters) {
|
|
|
125
105
|
return availabilityFilters.indexOf(dateToMonthYear(unit.moveInDate)) > -1;
|
|
126
106
|
});
|
|
127
107
|
};
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
};
|
|
131
|
-
var isBedroomsMatch = function isBedroomsMatch(floorplan, bedroomFilters) {
|
|
108
|
+
const isBeforeToday = date => (0, _moment.default)(date).isBefore(today);
|
|
109
|
+
const isBedroomsMatch = (floorplan, bedroomFilters) => {
|
|
132
110
|
return bedroomFilters.length === 0 ? true : bedroomFilters.indexOf(floorplan.bedroom) > -1;
|
|
133
111
|
};
|
|
134
|
-
|
|
112
|
+
const isStyleMatch = (floorplan, styleFilters) => {
|
|
135
113
|
return styleFilters.length === 0 ? true : styleFilters.indexOf(floorplan.style) > -1;
|
|
136
114
|
};
|
|
137
|
-
|
|
138
|
-
|
|
115
|
+
const isInPriceRange = (floorplan, minRent, maxRent) => {
|
|
116
|
+
const minMax = (0, _Utils.minumMaximum)(floorplan.units, "rent");
|
|
139
117
|
return minMax.min >= minRent && minMax.max <= maxRent;
|
|
140
118
|
};
|
|
141
|
-
|
|
119
|
+
const isFloorplanIdsMatch = (floorplan, floorplanIds) => {
|
|
142
120
|
return floorplanIds.length === 0 ? true : floorplanIds.indexOf(floorplan.id) > -1;
|
|
143
121
|
};
|
|
144
|
-
|
|
122
|
+
const filterMatches = (floorplan, currentFilters) => {
|
|
145
123
|
return isAvailable(floorplan, currentFilters.availabilityFilters) && isInPriceRange(floorplan, currentFilters.minRent, currentFilters.maxRent) && isStyleMatch(floorplan, currentFilters.styleFilters) && isBedroomsMatch(floorplan, currentFilters.bedroomFilters) && isFloorplanIdsMatch(floorplan, currentFilters.floorplanIds);
|
|
146
124
|
};
|
|
147
|
-
|
|
125
|
+
const sortFloorplans = (floorplans, sortBy) => {
|
|
148
126
|
if (_FloorplanFilters.SortFields[sortBy].sortField === "minRate" && _FloorplanFilters.SortFields[sortBy].order === "desc") {
|
|
149
|
-
return floorplans.sort(
|
|
150
|
-
return (0, _Utils.minumMaximum)(b.units, "rent").min - (0, _Utils.minumMaximum)(a.units, "rent").min;
|
|
151
|
-
});
|
|
127
|
+
return floorplans.sort((a, b) => (0, _Utils.minumMaximum)(b.units, "rent").min - (0, _Utils.minumMaximum)(a.units, "rent").min);
|
|
152
128
|
}
|
|
153
|
-
|
|
154
|
-
return (0, _Utils.minumMaximum)(a.units, "rent").min - (0, _Utils.minumMaximum)(b.units, "rent").min;
|
|
155
|
-
});
|
|
129
|
+
const minRateSorted = floorplans.sort((a, b) => (0, _Utils.minumMaximum)(a.units, "rent").min - (0, _Utils.minumMaximum)(b.units, "rent").min);
|
|
156
130
|
if (_FloorplanFilters.SortFields[sortBy].sortField === "minRate" && _FloorplanFilters.SortFields[sortBy].order === "asc") {
|
|
157
131
|
return minRateSorted;
|
|
158
132
|
}
|
|
159
133
|
return _lodash.default.orderBy(minRateSorted, _FloorplanFilters.SortFields[sortBy].sortField, _FloorplanFilters.SortFields[sortBy].order);
|
|
160
134
|
};
|
|
161
135
|
exports.sortFloorplans = sortFloorplans;
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
136
|
+
const filtersFrom = floorplans => {
|
|
137
|
+
const bedroomFilters = new Set();
|
|
138
|
+
const availabilityFilters = new Set();
|
|
139
|
+
const styleFilters = new Set();
|
|
166
140
|
availabilityFilters.add(AVAILABLE_NOW);
|
|
167
|
-
floorplans.forEach(
|
|
141
|
+
floorplans.forEach(floorplan => {
|
|
168
142
|
bedroomFilters.add(floorplan.bedroom);
|
|
169
143
|
styleFilters.add(floorplan.style);
|
|
170
|
-
floorplan.units.forEach(
|
|
171
|
-
if (value.moveInDate && isDateWithinTwelveMonths(value.moveInDate)) availabilityFilters.add(dateToMonthYear(value.moveInDate));
|
|
144
|
+
floorplan.units.forEach(value => {
|
|
145
|
+
if (value.moveInDate && isDateWithinTwelveMonths(value.moveInDate) && isDateAfterToday(value.moveInDate)) availabilityFilters.add(dateToMonthYear(value.moveInDate));
|
|
172
146
|
});
|
|
173
147
|
});
|
|
174
148
|
return {
|
|
@@ -178,57 +152,27 @@ var filtersFrom = function filtersFrom(floorplans) {
|
|
|
178
152
|
};
|
|
179
153
|
};
|
|
180
154
|
exports.filtersFrom = filtersFrom;
|
|
181
|
-
|
|
182
|
-
return (0, _RoundRobin.get)("floorplans?projection=spotlight&size=200").then(
|
|
183
|
-
return response.data._embedded.floorplans.filter(function (floorplan) {
|
|
184
|
-
return floorplan.featured && floorplan.property.active;
|
|
185
|
-
});
|
|
186
|
-
});
|
|
155
|
+
const getFeaturedFloorplans = () => {
|
|
156
|
+
return (0, _RoundRobin.get)("floorplans?projection=spotlight&size=200").then(response => response.data._embedded.floorplans.filter(floorplan => floorplan.featured && floorplan.property.active));
|
|
187
157
|
};
|
|
188
158
|
exports.getFeaturedFloorplans = getFeaturedFloorplans;
|
|
189
|
-
|
|
190
|
-
return (0, _RoundRobin.get)("floorplans?projection=details&size=200").then(
|
|
191
|
-
return response.data._embedded.floorplans.filter(function (floorplan) {
|
|
192
|
-
return floorplan.active;
|
|
193
|
-
}).filter(function (floorplan) {
|
|
194
|
-
return floorplan.style !== "GARAGE";
|
|
195
|
-
});
|
|
196
|
-
});
|
|
159
|
+
const getAllActiveFloorplans = () => {
|
|
160
|
+
return (0, _RoundRobin.get)("floorplans?projection=details&size=200").then(response => response.data._embedded.floorplans.filter(floorplan => floorplan.active).filter(floorplan => floorplan.style !== "GARAGE"));
|
|
197
161
|
};
|
|
198
162
|
exports.getAllActiveFloorplans = getAllActiveFloorplans;
|
|
199
|
-
|
|
200
|
-
return (0, _RoundRobin.get)("floorplans/" + floorplanId + "?projection=withId").then(function (response) {
|
|
201
|
-
return response.data;
|
|
202
|
-
});
|
|
203
|
-
};
|
|
163
|
+
const getFloorplan = floorplanId => (0, _RoundRobin.get)("floorplans/" + floorplanId + "?projection=withId").then(response => response.data);
|
|
204
164
|
exports.getFloorplan = getFloorplan;
|
|
205
|
-
|
|
206
|
-
return (0, _RoundRobin.get)("similarFloorplans/search/byFloorplanId?projection=withId&floorplanId=" + floorplanId).then(function (response) {
|
|
207
|
-
return response.data._embedded.similarFloorplans;
|
|
208
|
-
});
|
|
209
|
-
};
|
|
165
|
+
const getSimilarFloorplans = floorplanId => (0, _RoundRobin.get)("similarFloorplans/search/byFloorplanId?projection=withId&floorplanId=" + floorplanId).then(response => response.data._embedded.similarFloorplans);
|
|
210
166
|
exports.getSimilarFloorplans = getSimilarFloorplans;
|
|
211
|
-
|
|
212
|
-
return (0, _RoundRobin.get)("floorplanVariations/search/byFloorplanId?projection=withId&floorplanId=" + floorplanId).then(function (response) {
|
|
213
|
-
return response.data._embedded.floorplanVariations;
|
|
214
|
-
});
|
|
215
|
-
};
|
|
167
|
+
const getFloorplanVariations = floorplanId => (0, _RoundRobin.get)("floorplanVariations/search/byFloorplanId?projection=withId&floorplanId=" + floorplanId).then(response => response.data._embedded.floorplanVariations);
|
|
216
168
|
exports.getFloorplanVariations = getFloorplanVariations;
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
return floorplan.units.some(function (unit) {
|
|
220
|
-
return today.isAfter((0, _Utils.dateToMoment)(unit.moveInDate));
|
|
221
|
-
});
|
|
222
|
-
};
|
|
169
|
+
const today = (0, _moment.default)();
|
|
170
|
+
const isFloorplanAvailable = floorplan => floorplan.units.some(unit => today.isAfter((0, _Utils.dateToMoment)(unit.moveInDate)));
|
|
223
171
|
exports.isFloorplanAvailable = isFloorplanAvailable;
|
|
224
|
-
|
|
225
|
-
return (0, _RoundRobin.get)("testimonials/search/byFloorplanId?projection=withId&floorplanId=" + floorplanId).then(function (response) {
|
|
226
|
-
return response.data._embedded.testimonials;
|
|
227
|
-
});
|
|
228
|
-
};
|
|
172
|
+
const getTestimonials = floorplanId => (0, _RoundRobin.get)("testimonials/search/byFloorplanId?projection=withId&floorplanId=" + floorplanId).then(response => response.data._embedded.testimonials);
|
|
229
173
|
exports.getTestimonials = getTestimonials;
|
|
230
|
-
|
|
231
|
-
|
|
174
|
+
const permittedPets = floorplan => {
|
|
175
|
+
const unit = unitWithMostAllowedPet([...floorplan.units]);
|
|
232
176
|
switch (unit === null || unit === void 0 ? void 0 : unit.allowedPet) {
|
|
233
177
|
case _Unit.Pet.LARGE_DOG_SMALL_DOG_CAT:
|
|
234
178
|
return ['Large Dog', 'Small Dog', 'Cat'];
|
|
@@ -241,8 +185,8 @@ var permittedPets = function permittedPets(floorplan) {
|
|
|
241
185
|
}
|
|
242
186
|
};
|
|
243
187
|
exports.permittedPets = permittedPets;
|
|
244
|
-
|
|
245
|
-
|
|
188
|
+
const notPermittedPets = floorplan => {
|
|
189
|
+
const unit = unitWithMostAllowedPet([...floorplan.units]);
|
|
246
190
|
switch (unit === null || unit === void 0 ? void 0 : unit.allowedPet) {
|
|
247
191
|
case _Unit.Pet.LARGE_DOG_SMALL_DOG_CAT:
|
|
248
192
|
return [];
|
|
@@ -257,17 +201,34 @@ var notPermittedPets = function notPermittedPets(floorplan) {
|
|
|
257
201
|
}
|
|
258
202
|
};
|
|
259
203
|
exports.notPermittedPets = notPermittedPets;
|
|
260
|
-
|
|
261
|
-
|
|
204
|
+
const petPolicy = floorplan => {
|
|
205
|
+
const unit = unitWithMostAllowedPet([...floorplan.units]);
|
|
262
206
|
return unit === null || unit === void 0 ? void 0 : unit.petPolicy;
|
|
263
207
|
};
|
|
264
208
|
exports.petPolicy = petPolicy;
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
209
|
+
const unitWithMostAllowedPet = units => {
|
|
210
|
+
const petOrdinal = pet => Object.keys(_Unit.Pet).indexOf(pet);
|
|
211
|
+
return units.sort((a, b) => petOrdinal(b.allowedPet) - petOrdinal(a.allowedPet)).pop();
|
|
212
|
+
};
|
|
213
|
+
const floorplanAddress = currentFloorplan => {
|
|
214
|
+
const address = {
|
|
215
|
+
address: "",
|
|
216
|
+
city: "Bloomington",
|
|
217
|
+
state: "IN",
|
|
218
|
+
zipcode: ""
|
|
219
|
+
};
|
|
220
|
+
if (currentFloorplan.units.length === 1) {
|
|
221
|
+
return {
|
|
222
|
+
...address,
|
|
223
|
+
address: currentFloorplan.units[0].address,
|
|
224
|
+
zipcode: currentFloorplan.units[0].zipcode
|
|
225
|
+
};
|
|
226
|
+
}
|
|
227
|
+
return {
|
|
228
|
+
...address,
|
|
229
|
+
address: currentFloorplan.property.address,
|
|
230
|
+
zipcode: currentFloorplan.property.zipcode
|
|
268
231
|
};
|
|
269
|
-
return units.sort(function (a, b) {
|
|
270
|
-
return petOrdinal(b.allowedPet) - petOrdinal(a.allowedPet);
|
|
271
|
-
}).pop();
|
|
272
232
|
};
|
|
273
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfRmxvb3JwbGFuRmlsdGVycyIsIl9tb21lbnQiLCJfVXRpbHMiLCJfVW5pdCIsIl9Sb3VuZFJvYmluIiwiX0dyYXBocWxRdWVyeSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiX3RvQ29uc3VtYWJsZUFycmF5IiwiYXJyIiwiX2FycmF5V2l0aG91dEhvbGVzIiwiX2l0ZXJhYmxlVG9BcnJheSIsIl91bnN1cHBvcnRlZEl0ZXJhYmxlVG9BcnJheSIsIl9ub25JdGVyYWJsZVNwcmVhZCIsIlR5cGVFcnJvciIsIm8iLCJtaW5MZW4iLCJfYXJyYXlMaWtlVG9BcnJheSIsIm4iLCJPYmplY3QiLCJwcm90b3R5cGUiLCJ0b1N0cmluZyIsImNhbGwiLCJzbGljZSIsImNvbnN0cnVjdG9yIiwibmFtZSIsIkFycmF5IiwiZnJvbSIsInRlc3QiLCJpdGVyIiwiU3ltYm9sIiwiaXRlcmF0b3IiLCJpc0FycmF5IiwibGVuIiwibGVuZ3RoIiwiaSIsImFycjIiLCJBVkFJTEFCTEVfTk9XIiwiZXhwb3J0cyIsImNvbnZlcnRUb0h0dHBzIiwidXJsIiwicmVwbGFjZSIsImdldEFsbFByb3BlcnR5RmlsdGVyRGF0YVF1ZXJ5IiwiZ2V0QWxsUHJvcGVydHlGaWx0ZXJEYXRhIiwiZ3JhcGhxbCIsInRoZW4iLCJyZXNwb25zZSIsInByb3BlcnRpZXMiLCJkYXRhIiwiZmlsdGVyIiwicHJvcGVydHkiLCJhY3RpdmUiLCJmb3JFYWNoIiwiZmxvb3JwbGFucyIsImZsb29ycGxhbiIsInVuaXRzIiwidW5pdCIsImdldEZsb29ycGxhbnNGaWx0ZXJEYXRhUXVlcnkiLCJwcm9wZXJ0eUlkIiwiZ2V0Rmxvb3JwbGFuc0ZpbHRlckRhdGEiLCJzb3J0QW5kRmlsdGVyIiwiY3VycmVudEZpbHRlcnMiLCJzb3J0Rmxvb3JwbGFucyIsImZpbHRlck1hdGNoZXMiLCJzb3J0QnkiLCJpc0RhdGVXaXRoaW5Ud2VsdmVNb250aHMiLCJkYXRlIiwidG9kYXkiLCJtb21lbnQiLCJkaWZmIiwiZGF0ZVRvTW9udGhZZWFyIiwiZGF0ZVN0cmluZyIsImZvcm1hdCIsImRlZmF1bHRBdmFpbGFiaWxpdHlUb01vbnRoWWVhciIsIm1vbWVudFRvTW9udGhZZWFyIiwiaXNBdmFpbGFibGUiLCJhdmFpbGFiaWxpdHlGaWx0ZXJzIiwic29tZSIsImluZGV4T2YiLCJpc0JlZm9yZVRvZGF5IiwibW92ZUluRGF0ZSIsImlzQmVmb3JlIiwiaXNCZWRyb29tc01hdGNoIiwiYmVkcm9vbUZpbHRlcnMiLCJiZWRyb29tIiwiaXNTdHlsZU1hdGNoIiwic3R5bGVGaWx0ZXJzIiwic3R5bGUiLCJpc0luUHJpY2VSYW5nZSIsIm1pblJlbnQiLCJtYXhSZW50IiwibWluTWF4IiwibWludW1NYXhpbXVtIiwibWluIiwibWF4IiwiaXNGbG9vcnBsYW5JZHNNYXRjaCIsImZsb29ycGxhbklkcyIsImlkIiwiU29ydEZpZWxkcyIsInNvcnRGaWVsZCIsIm9yZGVyIiwic29ydCIsImEiLCJiIiwibWluUmF0ZVNvcnRlZCIsIl8iLCJvcmRlckJ5IiwiZmlsdGVyc0Zyb20iLCJTZXQiLCJhZGQiLCJ2YWx1ZSIsImF2YWlsYWJpbGl0eSIsImdldEZlYXR1cmVkRmxvb3JwbGFucyIsImdldCIsIl9lbWJlZGRlZCIsImZlYXR1cmVkIiwiZ2V0QWxsQWN0aXZlRmxvb3JwbGFucyIsImdldEZsb29ycGxhbiIsImZsb29ycGxhbklkIiwiZ2V0U2ltaWxhckZsb29ycGxhbnMiLCJzaW1pbGFyRmxvb3JwbGFucyIsImdldEZsb29ycGxhblZhcmlhdGlvbnMiLCJmbG9vcnBsYW5WYXJpYXRpb25zIiwiaXNGbG9vcnBsYW5BdmFpbGFibGUiLCJpc0FmdGVyIiwiZGF0ZVRvTW9tZW50IiwiZ2V0VGVzdGltb25pYWxzIiwidGVzdGltb25pYWxzIiwicGVybWl0dGVkUGV0cyIsInVuaXRXaXRoTW9zdEFsbG93ZWRQZXQiLCJhbGxvd2VkUGV0IiwiUGV0IiwiTEFSR0VfRE9HX1NNQUxMX0RPR19DQVQiLCJTTUFMTF9ET0dfQ0FUIiwiQ0FUIiwibm90UGVybWl0dGVkUGV0cyIsIk5PX1BFVCIsInBldFBvbGljeSIsInBldE9yZGluYWwiLCJwZXQiLCJrZXlzIiwicG9wIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Zsb29ycGxhbi9zZXJ2aWNlL0Zsb29ycGxhblNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7TW9udGh9IGZyb20gXCIuLi9kYXRhL0NhbGVuZGFyXCI7XG5pbXBvcnQge0N1cnJlbnRGaWx0ZXJzLCBGbG9vcnBsYW5GaWx0ZXJzLCBTb3J0QnksIFNvcnRGaWVsZHN9IGZyb20gXCIuLi9kYXRhL0Zsb29ycGxhbkZpbHRlcnNcIjtcbmltcG9ydCBtb21lbnQsIHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7XG4gICAgRmxvb3JwbGFuLFxuICAgIEZsb29ycGxhbkNhcmREYXRhLFxuICAgIEZsb29ycGxhbkRldGFpbHMsXG4gICAgRmxvb3JwbGFuU3BvdGxpZ2h0LFxuICAgIEZsb29ycGxhblN0eWxlLFxuICAgIEZsb29ycGxhblZhcmlhdGlvbixcbiAgICBTaW1pbGFyRmxvb3JwbGFuLFxuICAgIFRlc3RpbW9uaWFsXG59IGZyb20gXCIuLi9kYXRhL0Zsb29ycGxhblwiO1xuaW1wb3J0IHtkYXRlVG9Nb21lbnQsIG1pbnVtTWF4aW11bX0gZnJvbSBcIi4uLy4uL3V0aWxzL1V0aWxzXCI7XG5pbXBvcnQge1Byb3BlcnR5RmlsdGVyRGF0YSwgUHJvcGVydHlJZH0gZnJvbSBcIi4uLy4uL3Byb3BlcnR5L2RhdGEvUHJvcGVydHlcIjtcbmltcG9ydCB7UGV0LCBVbml0fSBmcm9tIFwiLi4vZGF0YS9Vbml0XCI7XG5pbXBvcnQge2dldH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvUm91bmRSb2JpblwiO1xuaW1wb3J0IHtncmFwaHFsfSBmcm9tIFwiLi4vLi4vc2VydmljZS9HcmFwaHFsUXVlcnlcIjtcblxuZXhwb3J0IGNvbnN0IEFWQUlMQUJMRV9OT1cgPSBcIkF2YWlsYWJsZSBOb3dcIjtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUb0h0dHBzID0gKHVybDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBpZiAodXJsID09PSBudWxsKVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoL15odHRwOlxcL1xcLy9pLCAnaHR0cHM6Ly8nKTtcbn07XG5jb25zdCBnZXRBbGxQcm9wZXJ0eUZpbHRlckRhdGFRdWVyeSA9ICgpID0+IHtcbiAgICByZXR1cm4gJ3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgcHJvcGVydGllcyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgIG5hbWUgYWN0aXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgIGZsb29ycGxhbnMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgICAgICBpZCBuYW1lIGFjdGl2ZSBiZWRyb29tIGJhdGhyb29tIGNvdmVySW1hZ2UgZmVhdHVyZWQgXFxcbiAgICAgICAgICAgICAgICB2aXJ0dWFsVG91ckxpbmsgdmlkZW9Ub3VyTGluayBzdHlsZSAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgICAgICBwaG90b3NGb2xkZXJJZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgICAgICB1bml0cyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgICAgICAgICAgcmVudCBzcXVhcmVGb290IGFjdGl2ZSBtb3ZlSW5EYXRlICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICB9J1xufVxuZXhwb3J0IGNvbnN0IGdldEFsbFByb3BlcnR5RmlsdGVyRGF0YSA9ICgpOiBQcm9taXNlPFByb3BlcnR5RmlsdGVyRGF0YVtdPiA9PiB7XG4gICAgcmV0dXJuIGdyYXBocWwoZ2V0QWxsUHJvcGVydHlGaWx0ZXJEYXRhUXVlcnkoKSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0aWVzOiBQcm9wZXJ0eUZpbHRlckRhdGFbXSA9IHJlc3BvbnNlLmRhdGEuZGF0YS5wcm9wZXJ0aWVzLmZpbHRlcigocHJvcGVydHk6IFByb3BlcnR5RmlsdGVyRGF0YSkgPT4gcHJvcGVydHkuYWN0aXZlKTtcblxuICAgICAgICAgICAgcHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eS5mbG9vcnBsYW5zID0gcHJvcGVydHkuZmxvb3JwbGFucy5maWx0ZXIoZmxvb3JwbGFuID0+IGZsb29ycGxhbi5hY3RpdmUpO1xuICAgICAgICAgICAgICAgIHByb3BlcnR5LmZsb29ycGxhbnMuZm9yRWFjaChmbG9vcnBsYW4gPT4ge1xuICAgICAgICAgICAgICAgICAgICBmbG9vcnBsYW4udW5pdHMgPSBmbG9vcnBsYW4udW5pdHMuZmlsdGVyKHVuaXQgPT4gdW5pdC5hY3RpdmUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcHJvcGVydGllcztcbiAgICAgICAgfVxuICAgICk7XG59XG5jb25zdCBnZXRGbG9vcnBsYW5zRmlsdGVyRGF0YVF1ZXJ5ID0gKHByb3BlcnR5SWQ6IFN0cmluZykgPT4ge1xuICAgIHJldHVybiAneyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICBwcm9wZXJ0eShpZDogXCInICsgcHJvcGVydHlJZCArICdcIikgeyAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICBmbG9vcnBsYW5zIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICAgICAgaWQgbmFtZSBhY3RpdmUgYmVkcm9vbSBiYXRocm9vbSBjb3ZlckltYWdlIGZlYXR1cmVkIFxcXG4gICAgICAgICAgICAgICAgdmlydHVhbFRvdXJMaW5rIHZpZGVvVG91ckxpbmsgc3R5bGUgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICAgICAgcGhvdG9zRm9sZGVySWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICAgICAgdW5pdHMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICAgICAgICAgIHJlbnQgc3F1YXJlRm9vdCBhY3RpdmUgbW92ZUluRGF0ZSAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgfSdcbn1cbmV4cG9ydCBjb25zdCBnZXRGbG9vcnBsYW5zRmlsdGVyRGF0YSA9IChwcm9wZXJ0eUlkOiBQcm9wZXJ0eUlkKTogUHJvbWlzZTxGbG9vcnBsYW5DYXJkRGF0YVtdPiA9PiB7XG4gICAgcmV0dXJuIGdyYXBocWwoZ2V0Rmxvb3JwbGFuc0ZpbHRlckRhdGFRdWVyeShwcm9wZXJ0eUlkKSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0gcmVzcG9uc2UuZGF0YS5kYXRhLnByb3BlcnR5LmZsb29ycGxhbnMuZmlsdGVyKChmbG9vcnBsYW46IEZsb29ycGxhbkNhcmREYXRhKSA9PiBmbG9vcnBsYW4uYWN0aXZlKTtcbiAgICAgICAgICAgIGZsb29ycGxhbnMuZm9yRWFjaChmbG9vcnBsYW4gPT4ge1xuICAgICAgICAgICAgICAgIGZsb29ycGxhbi51bml0cyA9IGZsb29ycGxhbi51bml0cy5maWx0ZXIodW5pdCA9PiB1bml0LmFjdGl2ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBmbG9vcnBsYW5zO1xuICAgICAgICB9XG4gICAgKTtcbn07XG5leHBvcnQgY29uc3Qgc29ydEFuZEZpbHRlciA9IChmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdLCBjdXJyZW50RmlsdGVyczogQ3VycmVudEZpbHRlcnMpOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0+IHtcbiAgICByZXR1cm4gc29ydEZsb29ycGxhbnMoZmxvb3JwbGFucy5maWx0ZXIoZmxvb3JwbGFuID0+IGZpbHRlck1hdGNoZXMoZmxvb3JwbGFuLCBjdXJyZW50RmlsdGVycykpLCBjdXJyZW50RmlsdGVycy5zb3J0QnkpO1xufTtcblxuXG5leHBvcnQgY29uc3QgaXNEYXRlV2l0aGluVHdlbHZlTW9udGhzID0gKGRhdGU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHRvZGF5ID0gbW9tZW50KCk7XG4gICAgY29uc3QgZGlmZiA9IG1vbWVudChkYXRlLCBcIllZWVktTU0tRERcIikuZGlmZih0b2RheSwgJ21vbnRocycsIGZhbHNlKTtcbiAgICByZXR1cm4gZGlmZiA+PSAwICYmIGRpZmYgPD0gMTI7XG59XG5jb25zdCBkYXRlVG9Nb250aFllYXIgPSAoZGF0ZVN0cmluZzogc3RyaW5nIHwgbnVsbCk6IHN0cmluZyA9PiBtb21lbnQoZGF0ZVN0cmluZywgXCJZWVlZLU1NLUREXCIpLmZvcm1hdCgnTU1NIFlZWVknKTtcblxuZXhwb3J0IGNvbnN0IGRlZmF1bHRBdmFpbGFiaWxpdHlUb01vbnRoWWVhciA9IChkYXRlU3RyaW5nOiBzdHJpbmcpOiBzdHJpbmcgPT5cbiAgICBBVkFJTEFCTEVfTk9XID09PSBkYXRlU3RyaW5nID8gZGF0ZVN0cmluZyA6IG1vbWVudChkYXRlU3RyaW5nLCBcIk1NLVlZWVlcIikuZm9ybWF0KCdNTU0gWVlZWScpO1xuXG5leHBvcnQgY29uc3QgbW9tZW50VG9Nb250aFllYXIgPSAoZGF0ZTogTW9tZW50KSA9PiBkYXRlLmZvcm1hdCgnTU1NIFlZWVknKTtcbmNvbnN0IGlzQXZhaWxhYmxlID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGF2YWlsYWJpbGl0eUZpbHRlcnM6IE1vbnRoW10pOiBib29sZWFuID0+IHtcblxuICAgIHJldHVybiBhdmFpbGFiaWxpdHlGaWx0ZXJzLmxlbmd0aCA9PT0gMCA/IHRydWUgOlxuXG4gICAgICAgIGZsb29ycGxhbi51bml0cy5zb21lKCh1bml0KSA9PiB7XG4gICAgICAgICAgICAgICAgaWYgKGF2YWlsYWJpbGl0eUZpbHRlcnMuaW5kZXhPZihBVkFJTEFCTEVfTk9XKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0JlZm9yZVRvZGF5KHVuaXQubW92ZUluRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIGlmIChhdmFpbGFiaWxpdHlGaWx0ZXJzLmluZGV4T2YobW9tZW50VG9Nb250aFllYXIodG9kYXkpKSA+IC0xKSB7XG4gICAgICAgICAgICAgICAgICAgIGlmIChpc0JlZm9yZVRvZGF5KHVuaXQubW92ZUluRGF0ZSkpIHtcbiAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiB0cnVlO1xuICAgICAgICAgICAgICAgICAgICB9XG4gICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIHJldHVybiBhdmFpbGFiaWxpdHlGaWx0ZXJzLmluZGV4T2YoZGF0ZVRvTW9udGhZZWFyKHVuaXQubW92ZUluRGF0ZSkpID4gLTE7XG4gICAgICAgICAgICB9XG4gICAgICAgICk7XG59O1xuXG5jb25zdCBpc0JlZm9yZVRvZGF5ID0gKGRhdGU6IHN0cmluZykgPT4gbW9tZW50KGRhdGUpLmlzQmVmb3JlKHRvZGF5KTtcbmNvbnN0IGlzQmVkcm9vbXNNYXRjaCA9IChmbG9vcnBsYW46IEZsb29ycGxhbkNhcmREYXRhLCBiZWRyb29tRmlsdGVyczogbnVtYmVyW10pOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gYmVkcm9vbUZpbHRlcnMubGVuZ3RoID09PSAwID8gdHJ1ZSA6IGJlZHJvb21GaWx0ZXJzLmluZGV4T2YoZmxvb3JwbGFuLmJlZHJvb20pID4gLTE7XG59O1xuY29uc3QgaXNTdHlsZU1hdGNoID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIHN0eWxlRmlsdGVyczogRmxvb3JwbGFuU3R5bGVbXSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBzdHlsZUZpbHRlcnMubGVuZ3RoID09PSAwID8gdHJ1ZSA6IHN0eWxlRmlsdGVycy5pbmRleE9mKGZsb29ycGxhbi5zdHlsZSkgPiAtMTtcbn1cbmNvbnN0IGlzSW5QcmljZVJhbmdlID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIG1pblJlbnQ6IG51bWJlciwgbWF4UmVudDogbnVtYmVyKTogYm9vbGVhbiA9PiB7XG4gICAgY29uc3QgbWluTWF4ID0gbWludW1NYXhpbXVtKGZsb29ycGxhbi51bml0cywgXCJyZW50XCIpO1xuICAgIHJldHVybiBtaW5NYXgubWluID49IG1pblJlbnQgJiYgbWluTWF4Lm1heCA8PSBtYXhSZW50O1xufVxuY29uc3QgaXNGbG9vcnBsYW5JZHNNYXRjaCA9IChmbG9vcnBsYW46IEZsb29ycGxhbkNhcmREYXRhLCBmbG9vcnBsYW5JZHM6IHN0cmluZ1tdKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIGZsb29ycGxhbklkcy5sZW5ndGggPT09IDAgPyB0cnVlIDogZmxvb3JwbGFuSWRzLmluZGV4T2YoZmxvb3JwbGFuLmlkKSA+IC0xO1xufTtcbmNvbnN0IGZpbHRlck1hdGNoZXMgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgY3VycmVudEZpbHRlcnM6IEN1cnJlbnRGaWx0ZXJzKSA9PiB7XG4gICAgcmV0dXJuIGlzQXZhaWxhYmxlKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMuYXZhaWxhYmlsaXR5RmlsdGVycykgJiZcbiAgICAgICAgaXNJblByaWNlUmFuZ2UoZmxvb3JwbGFuLCBjdXJyZW50RmlsdGVycy5taW5SZW50LCBjdXJyZW50RmlsdGVycy5tYXhSZW50KSAmJlxuICAgICAgICBpc1N0eWxlTWF0Y2goZmxvb3JwbGFuLCBjdXJyZW50RmlsdGVycy5zdHlsZUZpbHRlcnMpICYmXG4gICAgICAgIGlzQmVkcm9vbXNNYXRjaChmbG9vcnBsYW4sIGN1cnJlbnRGaWx0ZXJzLmJlZHJvb21GaWx0ZXJzKSAmJlxuICAgICAgICBpc0Zsb29ycGxhbklkc01hdGNoKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMuZmxvb3JwbGFuSWRzKTtcbn1cbmV4cG9ydCBjb25zdCBzb3J0Rmxvb3JwbGFucyA9IChmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdLCBzb3J0Qnk6IFNvcnRCeSk6IEZsb29ycGxhbkNhcmREYXRhW10gPT4ge1xuXG4gICAgaWYgKFNvcnRGaWVsZHNbc29ydEJ5XS5zb3J0RmllbGQgPT09IFwibWluUmF0ZVwiICYmIFNvcnRGaWVsZHNbc29ydEJ5XS5vcmRlciA9PT0gXCJkZXNjXCIpIHtcbiAgICAgICAgcmV0dXJuIGZsb29ycGxhbnMuc29ydCgoYSwgYikgPT4gbWludW1NYXhpbXVtKGIudW5pdHMsIFwicmVudFwiKS5taW4gLSBtaW51bU1heGltdW0oYS51bml0cywgXCJyZW50XCIpLm1pbik7XG4gICAgfVxuXG4gICAgY29uc3QgbWluUmF0ZVNvcnRlZCA9IGZsb29ycGxhbnMuc29ydCgoYSwgYikgPT4gbWludW1NYXhpbXVtKGEudW5pdHMsIFwicmVudFwiKS5taW4gLSBtaW51bU1heGltdW0oYi51bml0cywgXCJyZW50XCIpLm1pbik7XG4gICAgaWYgKFNvcnRGaWVsZHNbc29ydEJ5XS5zb3J0RmllbGQgPT09IFwibWluUmF0ZVwiICYmIFNvcnRGaWVsZHNbc29ydEJ5XS5vcmRlciA9PT0gXCJhc2NcIikge1xuICAgICAgICByZXR1cm4gbWluUmF0ZVNvcnRlZFxuICAgIH1cbiAgICByZXR1cm4gXy5vcmRlckJ5KG1pblJhdGVTb3J0ZWQsIFNvcnRGaWVsZHNbc29ydEJ5XS5zb3J0RmllbGQsIFNvcnRGaWVsZHNbc29ydEJ5XS5vcmRlcik7XG59O1xuXG5cbmV4cG9ydCBjb25zdCBmaWx0ZXJzRnJvbSA9IChmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdKTogRmxvb3JwbGFuRmlsdGVycyA9PiB7XG5cbiAgICBjb25zdCBiZWRyb29tRmlsdGVycyA9IG5ldyBTZXQ8bnVtYmVyPigpO1xuICAgIGNvbnN0IGF2YWlsYWJpbGl0eUZpbHRlcnMgPSBuZXcgU2V0PHN0cmluZz4oKTtcbiAgICBjb25zdCBzdHlsZUZpbHRlcnMgPSBuZXcgU2V0PEZsb29ycGxhblN0eWxlPigpO1xuXG4gICAgYXZhaWxhYmlsaXR5RmlsdGVycy5hZGQoQVZBSUxBQkxFX05PVyk7XG4gICAgZmxvb3JwbGFucy5mb3JFYWNoKGZsb29ycGxhbiA9PiB7XG4gICAgICAgIGJlZHJvb21GaWx0ZXJzLmFkZChmbG9vcnBsYW4uYmVkcm9vbSk7XG4gICAgICAgIHN0eWxlRmlsdGVycy5hZGQoZmxvb3JwbGFuLnN0eWxlKTtcblxuICAgICAgICBmbG9vcnBsYW4udW5pdHMuZm9yRWFjaCgodmFsdWUpID0+IHtcbiAgICAgICAgICAgIGlmICh2YWx1ZS5tb3ZlSW5EYXRlICYmIGlzRGF0ZVdpdGhpblR3ZWx2ZU1vbnRocyh2YWx1ZS5tb3ZlSW5EYXRlKSlcbiAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlGaWx0ZXJzLmFkZChkYXRlVG9Nb250aFllYXIodmFsdWUubW92ZUluRGF0ZSkpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBiZWRyb29tOiBiZWRyb29tRmlsdGVycyxcbiAgICAgICAgYXZhaWxhYmlsaXR5OiBhdmFpbGFiaWxpdHlGaWx0ZXJzLFxuICAgICAgICBzdHlsZTogc3R5bGVGaWx0ZXJzXG4gICAgfVxufTtcblxuXG5leHBvcnQgY29uc3QgZ2V0RmVhdHVyZWRGbG9vcnBsYW5zID0gKCk6IFByb21pc2U8Rmxvb3JwbGFuU3BvdGxpZ2h0W10+ID0+IHtcblxuICAgIHJldHVybiBnZXQoXCJmbG9vcnBsYW5zP3Byb2plY3Rpb249c3BvdGxpZ2h0JnNpemU9MjAwXCIpXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+XG4gICAgICAgICAgICByZXNwb25zZS5kYXRhLl9lbWJlZGRlZC5mbG9vcnBsYW5zLmZpbHRlcigoZmxvb3JwbGFuOiBGbG9vcnBsYW5TcG90bGlnaHQpID0+IGZsb29ycGxhbi5mZWF0dXJlZCAmJiBmbG9vcnBsYW4ucHJvcGVydHkuYWN0aXZlKVxuICAgICAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbEFjdGl2ZUZsb29ycGxhbnMgPSAoKTogUHJvbWlzZTxGbG9vcnBsYW5EZXRhaWxzW10+ID0+IHtcblxuICAgIHJldHVybiBnZXQoXCJmbG9vcnBsYW5zP3Byb2plY3Rpb249ZGV0YWlscyZzaXplPTIwMFwiKVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PlxuICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQuZmxvb3JwbGFuc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGZsb29ycGxhbjogRmxvb3JwbGFuKSA9PiBmbG9vcnBsYW4uYWN0aXZlKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGZsb29ycGxhbjogRmxvb3JwbGFuKSA9PiBmbG9vcnBsYW4uc3R5bGUgIT09IFwiR0FSQUdFXCIpXG4gICAgICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rmxvb3JwbGFuID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPEZsb29ycGxhbj4gPT5cbiAgICBnZXQoXCJmbG9vcnBsYW5zL1wiICsgZmxvb3JwbGFuSWQgKyBcIj9wcm9qZWN0aW9uPXdpdGhJZFwiKS50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmRhdGEpO1xuXG5leHBvcnQgY29uc3QgZ2V0U2ltaWxhckZsb29ycGxhbnMgPSAoZmxvb3JwbGFuSWQ6IHN0cmluZyk6IFByb21pc2U8U2ltaWxhckZsb29ycGxhbltdPiA9PlxuICAgIGdldChcInNpbWlsYXJGbG9vcnBsYW5zL3NlYXJjaC9ieUZsb29ycGxhbklkP3Byb2plY3Rpb249d2l0aElkJmZsb29ycGxhbklkPVwiICsgZmxvb3JwbGFuSWQpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQuc2ltaWxhckZsb29ycGxhbnMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Rmxvb3JwbGFuVmFyaWF0aW9ucyA9IChmbG9vcnBsYW5JZDogc3RyaW5nKTogUHJvbWlzZTxGbG9vcnBsYW5WYXJpYXRpb25bXT4gPT5cbiAgICBnZXQoXCJmbG9vcnBsYW5WYXJpYXRpb25zL3NlYXJjaC9ieUZsb29ycGxhbklkP3Byb2plY3Rpb249d2l0aElkJmZsb29ycGxhbklkPVwiICsgZmxvb3JwbGFuSWQpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQuZmxvb3JwbGFuVmFyaWF0aW9ucyk7XG5jb25zdCB0b2RheSA9IG1vbWVudCgpO1xuZXhwb3J0IGNvbnN0IGlzRmxvb3JwbGFuQXZhaWxhYmxlID0gKGZsb29ycGxhbjogRmxvb3JwbGFuIHwgRmxvb3JwbGFuQ2FyZERhdGEpOiBib29sZWFuID0+IGZsb29ycGxhbi51bml0cy5zb21lKCh1bml0KSA9PiB0b2RheS5pc0FmdGVyKGRhdGVUb01vbWVudCh1bml0Lm1vdmVJbkRhdGUpKSk7XG5leHBvcnQgY29uc3QgZ2V0VGVzdGltb25pYWxzID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPFRlc3RpbW9uaWFsW10+ID0+XG4gICAgZ2V0KFwidGVzdGltb25pYWxzL3NlYXJjaC9ieUZsb29ycGxhbklkP3Byb2plY3Rpb249d2l0aElkJmZsb29ycGxhbklkPVwiICsgZmxvb3JwbGFuSWQpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQudGVzdGltb25pYWxzKTtcblxuXG5leHBvcnQgY29uc3QgcGVybWl0dGVkUGV0cyA9IChmbG9vcnBsYW46IEZsb29ycGxhbik6IHN0cmluZ1tdID0+IHtcblxuICAgIGNvbnN0IHVuaXQgPSB1bml0V2l0aE1vc3RBbGxvd2VkUGV0KFsuLi5mbG9vcnBsYW4udW5pdHNdKTtcblxuICAgIHN3aXRjaCAodW5pdD8uYWxsb3dlZFBldCkge1xuICAgICAgICBjYXNlIFBldC5MQVJHRV9ET0dfU01BTExfRE9HX0NBVDpcbiAgICAgICAgICAgIHJldHVybiBbJ0xhcmdlIERvZycsICdTbWFsbCBEb2cnLCAnQ2F0J107XG4gICAgICAgIGNhc2UgUGV0LlNNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICByZXR1cm4gWydTbWFsbCBEb2cnLCAnQ2F0J107XG4gICAgICAgIGNhc2UgUGV0LkNBVDpcbiAgICAgICAgICAgIHJldHVybiBbJ0NhdCddO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFsnTm9uZSddO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IG5vdFBlcm1pdHRlZFBldHMgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW4pOiBzdHJpbmdbXSA9PiB7XG5cbiAgICBjb25zdCB1bml0ID0gdW5pdFdpdGhNb3N0QWxsb3dlZFBldChbLi4uZmxvb3JwbGFuLnVuaXRzXSk7XG5cbiAgICBzd2l0Y2ggKHVuaXQ/LmFsbG93ZWRQZXQpIHtcbiAgICAgICAgY2FzZSBQZXQuTEFSR0VfRE9HX1NNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIGNhc2UgUGV0LlNNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICByZXR1cm4gWydMYXJnZSBEb2cnXTtcbiAgICAgICAgY2FzZSBQZXQuQ0FUOlxuICAgICAgICAgICAgcmV0dXJuIFsnTGFyZ2UgRG9nJywgJ1NtYWxsIERvZyddO1xuICAgICAgICBjYXNlIFBldC5OT19QRVQ6XG4gICAgICAgICAgICByZXR1cm4gWydMYXJnZSBEb2cnLCAnU21hbGwgRG9nJywgJ0NhdCddO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn1cbmV4cG9ydCBjb25zdCBwZXRQb2xpY3kgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW4pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHVuaXQgPSB1bml0V2l0aE1vc3RBbGxvd2VkUGV0KFsuLi5mbG9vcnBsYW4udW5pdHNdKTtcbiAgICByZXR1cm4gdW5pdD8ucGV0UG9saWN5O1xufVxuY29uc3QgdW5pdFdpdGhNb3N0QWxsb3dlZFBldCA9ICh1bml0czogVW5pdFtdKTogVW5pdCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgcGV0T3JkaW5hbCA9IChwZXQ6IFBldCkgPT4gT2JqZWN0LmtleXMoUGV0KS5pbmRleE9mKHBldCk7XG4gICAgcmV0dXJuIHVuaXRzLnNvcnQoKGEsIGIpID0+IHBldE9yZGluYWwoYi5hbGxvd2VkUGV0KSAtIHBldE9yZGlu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
|
|
233
|
+
exports.floorplanAddress = floorplanAddress;
|
|
234
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfbG9kYXNoIiwiX2ludGVyb3BSZXF1aXJlRGVmYXVsdCIsInJlcXVpcmUiLCJfRmxvb3JwbGFuRmlsdGVycyIsIl9tb21lbnQiLCJfVXRpbHMiLCJfVW5pdCIsIl9Sb3VuZFJvYmluIiwiX0dyYXBocWxRdWVyeSIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiQVZBSUxBQkxFX05PVyIsImV4cG9ydHMiLCJjb252ZXJ0VG9IdHRwcyIsInVybCIsInJlcGxhY2UiLCJnZXRBbGxQcm9wZXJ0eUZpbHRlckRhdGFRdWVyeSIsImdldEFsbFByb3BlcnR5RmlsdGVyRGF0YSIsImdyYXBocWwiLCJ0aGVuIiwicmVzcG9uc2UiLCJwcm9wZXJ0aWVzIiwiZGF0YSIsImZpbHRlciIsInByb3BlcnR5IiwiYWN0aXZlIiwiZm9yRWFjaCIsImZsb29ycGxhbnMiLCJmbG9vcnBsYW4iLCJ1bml0cyIsInVuaXQiLCJnZXRGbG9vcnBsYW5zRmlsdGVyRGF0YVF1ZXJ5IiwicHJvcGVydHlJZCIsImdldEZsb29ycGxhbnNGaWx0ZXJEYXRhIiwic29ydEFuZEZpbHRlciIsImN1cnJlbnRGaWx0ZXJzIiwic29ydEZsb29ycGxhbnMiLCJmaWx0ZXJNYXRjaGVzIiwic29ydEJ5IiwiaXNEYXRlV2l0aGluVHdlbHZlTW9udGhzIiwiZGF0ZSIsInRvZGF5IiwibW9tZW50IiwiZGlmZiIsImlzRGF0ZUFmdGVyVG9kYXkiLCJpc0FmdGVyIiwiZGF0ZVRvTW9udGhZZWFyIiwiZGF0ZVN0cmluZyIsImZvcm1hdCIsImRlZmF1bHRBdmFpbGFiaWxpdHlUb01vbnRoWWVhciIsIm1vbWVudFRvTW9udGhZZWFyIiwiaXNBdmFpbGFibGUiLCJhdmFpbGFiaWxpdHlGaWx0ZXJzIiwibGVuZ3RoIiwic29tZSIsImluZGV4T2YiLCJpc0JlZm9yZVRvZGF5IiwibW92ZUluRGF0ZSIsImlzQmVmb3JlIiwiaXNCZWRyb29tc01hdGNoIiwiYmVkcm9vbUZpbHRlcnMiLCJiZWRyb29tIiwiaXNTdHlsZU1hdGNoIiwic3R5bGVGaWx0ZXJzIiwic3R5bGUiLCJpc0luUHJpY2VSYW5nZSIsIm1pblJlbnQiLCJtYXhSZW50IiwibWluTWF4IiwibWludW1NYXhpbXVtIiwibWluIiwibWF4IiwiaXNGbG9vcnBsYW5JZHNNYXRjaCIsImZsb29ycGxhbklkcyIsImlkIiwiU29ydEZpZWxkcyIsInNvcnRGaWVsZCIsIm9yZGVyIiwic29ydCIsImEiLCJiIiwibWluUmF0ZVNvcnRlZCIsIl8iLCJvcmRlckJ5IiwiZmlsdGVyc0Zyb20iLCJTZXQiLCJhZGQiLCJ2YWx1ZSIsImF2YWlsYWJpbGl0eSIsImdldEZlYXR1cmVkRmxvb3JwbGFucyIsImdldCIsIl9lbWJlZGRlZCIsImZlYXR1cmVkIiwiZ2V0QWxsQWN0aXZlRmxvb3JwbGFucyIsImdldEZsb29ycGxhbiIsImZsb29ycGxhbklkIiwiZ2V0U2ltaWxhckZsb29ycGxhbnMiLCJzaW1pbGFyRmxvb3JwbGFucyIsImdldEZsb29ycGxhblZhcmlhdGlvbnMiLCJmbG9vcnBsYW5WYXJpYXRpb25zIiwiaXNGbG9vcnBsYW5BdmFpbGFibGUiLCJkYXRlVG9Nb21lbnQiLCJnZXRUZXN0aW1vbmlhbHMiLCJ0ZXN0aW1vbmlhbHMiLCJwZXJtaXR0ZWRQZXRzIiwidW5pdFdpdGhNb3N0QWxsb3dlZFBldCIsImFsbG93ZWRQZXQiLCJQZXQiLCJMQVJHRV9ET0dfU01BTExfRE9HX0NBVCIsIlNNQUxMX0RPR19DQVQiLCJDQVQiLCJub3RQZXJtaXR0ZWRQZXRzIiwiTk9fUEVUIiwicGV0UG9saWN5IiwicGV0T3JkaW5hbCIsInBldCIsIk9iamVjdCIsImtleXMiLCJwb3AiLCJmbG9vcnBsYW5BZGRyZXNzIiwiY3VycmVudEZsb29ycGxhbiIsImFkZHJlc3MiLCJjaXR5Iiwic3RhdGUiLCJ6aXBjb2RlIl0sInNvdXJjZXMiOlsiLi4vLi4vLi4vc3JjL2Zsb29ycGxhbi9zZXJ2aWNlL0Zsb29ycGxhblNlcnZpY2UudHMiXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IF8gZnJvbSAnbG9kYXNoJztcbmltcG9ydCB7TW9udGh9IGZyb20gXCIuLi9kYXRhL0NhbGVuZGFyXCI7XG5pbXBvcnQge0N1cnJlbnRGaWx0ZXJzLCBGbG9vcnBsYW5GaWx0ZXJzLCBTb3J0QnksIFNvcnRGaWVsZHN9IGZyb20gXCIuLi9kYXRhL0Zsb29ycGxhbkZpbHRlcnNcIjtcbmltcG9ydCBtb21lbnQsIHtNb21lbnR9IGZyb20gXCJtb21lbnRcIjtcbmltcG9ydCB7XG4gICAgRmxvb3JwbGFuLFxuICAgIEZsb29ycGxhbkNhcmREYXRhLFxuICAgIEZsb29ycGxhbkRldGFpbHMsXG4gICAgRmxvb3JwbGFuU3BvdGxpZ2h0LFxuICAgIEZsb29ycGxhblN0eWxlLFxuICAgIEZsb29ycGxhblZhcmlhdGlvbixcbiAgICBTaW1pbGFyRmxvb3JwbGFuLFxuICAgIFRlc3RpbW9uaWFsXG59IGZyb20gXCIuLi9kYXRhL0Zsb29ycGxhblwiO1xuaW1wb3J0IHtkYXRlVG9Nb21lbnQsIG1pbnVtTWF4aW11bX0gZnJvbSBcIi4uLy4uL3V0aWxzL1V0aWxzXCI7XG5pbXBvcnQge1Byb3BlcnR5RmlsdGVyRGF0YSwgUHJvcGVydHlJZH0gZnJvbSBcIi4uLy4uL3Byb3BlcnR5L2RhdGEvUHJvcGVydHlcIjtcbmltcG9ydCB7UGV0LCBVbml0fSBmcm9tIFwiLi4vZGF0YS9Vbml0XCI7XG5pbXBvcnQge2dldH0gZnJvbSBcIi4uLy4uL3NlcnZpY2UvUm91bmRSb2JpblwiO1xuaW1wb3J0IHtncmFwaHFsfSBmcm9tIFwiLi4vLi4vc2VydmljZS9HcmFwaHFsUXVlcnlcIjtcblxuZXhwb3J0IGNvbnN0IEFWQUlMQUJMRV9OT1cgPSBcIkF2YWlsYWJsZSBOb3dcIjtcblxuZXhwb3J0IGNvbnN0IGNvbnZlcnRUb0h0dHBzID0gKHVybDogc3RyaW5nKTogc3RyaW5nID0+IHtcbiAgICBpZiAodXJsID09PSBudWxsKVxuICAgICAgICByZXR1cm4gXCJcIjtcbiAgICByZXR1cm4gdXJsLnJlcGxhY2UoL15odHRwOlxcL1xcLy9pLCAnaHR0cHM6Ly8nKTtcbn07XG5jb25zdCBnZXRBbGxQcm9wZXJ0eUZpbHRlckRhdGFRdWVyeSA9ICgpID0+IHtcbiAgICByZXR1cm4gJ3sgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgcHJvcGVydGllcyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgIG5hbWUgYWN0aXZlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgIGZsb29ycGxhbnMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgICAgICBpZCBuYW1lIGFjdGl2ZSBiZWRyb29tIGJhdGhyb29tIGNvdmVySW1hZ2UgZmVhdHVyZWQgXFxcbiAgICAgICAgICAgICAgICB2aXJ0dWFsVG91ckxpbmsgdmlkZW9Ub3VyTGluayBzdHlsZSAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgICAgICBwaG90b3NGb2xkZXJJZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgICAgICB1bml0cyB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgICAgICAgICAgcmVudCBzcXVhcmVGb290IGFjdGl2ZSBtb3ZlSW5EYXRlICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXFxcbiAgICB9J1xufVxuZXhwb3J0IGNvbnN0IGdldEFsbFByb3BlcnR5RmlsdGVyRGF0YSA9ICgpOiBQcm9taXNlPFByb3BlcnR5RmlsdGVyRGF0YVtdPiA9PiB7XG4gICAgcmV0dXJuIGdyYXBocWwoZ2V0QWxsUHJvcGVydHlGaWx0ZXJEYXRhUXVlcnkoKSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBwcm9wZXJ0aWVzOiBQcm9wZXJ0eUZpbHRlckRhdGFbXSA9IHJlc3BvbnNlLmRhdGEuZGF0YS5wcm9wZXJ0aWVzLmZpbHRlcigocHJvcGVydHk6IFByb3BlcnR5RmlsdGVyRGF0YSkgPT4gcHJvcGVydHkuYWN0aXZlKTtcblxuICAgICAgICAgICAgcHJvcGVydGllcy5mb3JFYWNoKHByb3BlcnR5ID0+IHtcbiAgICAgICAgICAgICAgICBwcm9wZXJ0eS5mbG9vcnBsYW5zID0gcHJvcGVydHkuZmxvb3JwbGFucy5maWx0ZXIoZmxvb3JwbGFuID0+IGZsb29ycGxhbi5hY3RpdmUpO1xuICAgICAgICAgICAgICAgIHByb3BlcnR5LmZsb29ycGxhbnMuZm9yRWFjaChmbG9vcnBsYW4gPT4ge1xuICAgICAgICAgICAgICAgICAgICBmbG9vcnBsYW4udW5pdHMgPSBmbG9vcnBsYW4udW5pdHMuZmlsdGVyKHVuaXQgPT4gdW5pdC5hY3RpdmUpO1xuICAgICAgICAgICAgICAgIH0pO1xuICAgICAgICAgICAgfSk7XG4gICAgICAgICAgICByZXR1cm4gcHJvcGVydGllcztcbiAgICAgICAgfVxuICAgICk7XG59XG5jb25zdCBnZXRGbG9vcnBsYW5zRmlsdGVyRGF0YVF1ZXJ5ID0gKHByb3BlcnR5SWQ6IFN0cmluZykgPT4ge1xuICAgIHJldHVybiAneyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcXFxuICAgICAgICBwcm9wZXJ0eShpZDogXCInICsgcHJvcGVydHlJZCArICdcIikgeyAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICBmbG9vcnBsYW5zIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICAgICAgaWQgbmFtZSBhY3RpdmUgYmVkcm9vbSBiYXRocm9vbSBjb3ZlckltYWdlIGZlYXR1cmVkIFxcXG4gICAgICAgICAgICAgICAgdmlydHVhbFRvdXJMaW5rIHZpZGVvVG91ckxpbmsgc3R5bGUgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICAgICAgcGhvdG9zRm9sZGVySWQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICAgICAgdW5pdHMgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICAgICAgICAgIHJlbnQgc3F1YXJlRm9vdCBhY3RpdmUgbW92ZUluRGF0ZSAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgICAgICB9ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFxcXG4gICAgfSdcbn1cbmV4cG9ydCBjb25zdCBnZXRGbG9vcnBsYW5zRmlsdGVyRGF0YSA9IChwcm9wZXJ0eUlkOiBQcm9wZXJ0eUlkKTogUHJvbWlzZTxGbG9vcnBsYW5DYXJkRGF0YVtdPiA9PiB7XG4gICAgcmV0dXJuIGdyYXBocWwoZ2V0Rmxvb3JwbGFuc0ZpbHRlckRhdGFRdWVyeShwcm9wZXJ0eUlkKSkudGhlbihyZXNwb25zZSA9PiB7XG4gICAgICAgICAgICBjb25zdCBmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0gcmVzcG9uc2UuZGF0YS5kYXRhLnByb3BlcnR5LmZsb29ycGxhbnMuZmlsdGVyKChmbG9vcnBsYW46IEZsb29ycGxhbkNhcmREYXRhKSA9PiBmbG9vcnBsYW4uYWN0aXZlKTtcbiAgICAgICAgICAgIGZsb29ycGxhbnMuZm9yRWFjaChmbG9vcnBsYW4gPT4ge1xuICAgICAgICAgICAgICAgIGZsb29ycGxhbi51bml0cyA9IGZsb29ycGxhbi51bml0cy5maWx0ZXIodW5pdCA9PiB1bml0LmFjdGl2ZSk7XG4gICAgICAgICAgICB9KTtcbiAgICAgICAgICAgIHJldHVybiBmbG9vcnBsYW5zO1xuICAgICAgICB9XG4gICAgKTtcbn07XG5leHBvcnQgY29uc3Qgc29ydEFuZEZpbHRlciA9IChmbG9vcnBsYW5zOiBGbG9vcnBsYW5DYXJkRGF0YVtdLCBjdXJyZW50RmlsdGVyczogQ3VycmVudEZpbHRlcnMpOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0+IHtcbiAgICByZXR1cm4gc29ydEZsb29ycGxhbnMoZmxvb3JwbGFucy5maWx0ZXIoZmxvb3JwbGFuID0+IGZpbHRlck1hdGNoZXMoZmxvb3JwbGFuLCBjdXJyZW50RmlsdGVycykpLCBjdXJyZW50RmlsdGVycy5zb3J0QnkpO1xufTtcblxuXG5leHBvcnQgY29uc3QgaXNEYXRlV2l0aGluVHdlbHZlTW9udGhzID0gKGRhdGU6IHN0cmluZykgPT4ge1xuICAgIGNvbnN0IHRvZGF5ID0gbW9tZW50KCk7XG4gICAgY29uc3QgZGlmZiA9IG1vbWVudChkYXRlLCBcIllZWVktTU0tRERcIikuZGlmZih0b2RheSwgJ21vbnRocycsIGZhbHNlKTtcbiAgICByZXR1cm4gZGlmZiA+PSAwICYmIGRpZmYgPD0gMTI7XG59XG5leHBvcnQgY29uc3QgaXNEYXRlQWZ0ZXJUb2RheSA9IChkYXRlOiBzdHJpbmcpID0+IHtcbiAgICBjb25zdCB0b2RheSA9IG1vbWVudCgpO1xuICAgIHJldHVybiBtb21lbnQoZGF0ZSwgXCJZWVlZLU1NLUREXCIpLmlzQWZ0ZXIodG9kYXkpO1xufVxuY29uc3QgZGF0ZVRvTW9udGhZZWFyID0gKGRhdGVTdHJpbmc6IHN0cmluZyB8IG51bGwpOiBzdHJpbmcgPT4gbW9tZW50KGRhdGVTdHJpbmcsIFwiWVlZWS1NTS1ERFwiKS5mb3JtYXQoJ01NTSBZWVlZJyk7XG5cbmV4cG9ydCBjb25zdCBkZWZhdWx0QXZhaWxhYmlsaXR5VG9Nb250aFllYXIgPSAoZGF0ZVN0cmluZzogc3RyaW5nKTogc3RyaW5nID0+XG4gICAgQVZBSUxBQkxFX05PVyA9PT0gZGF0ZVN0cmluZyA/IGRhdGVTdHJpbmcgOiBtb21lbnQoZGF0ZVN0cmluZywgXCJNTS1ZWVlZXCIpLmZvcm1hdCgnTU1NIFlZWVknKTtcblxuZXhwb3J0IGNvbnN0IG1vbWVudFRvTW9udGhZZWFyID0gKGRhdGU6IE1vbWVudCkgPT4gZGF0ZS5mb3JtYXQoJ01NTSBZWVlZJyk7XG5jb25zdCBpc0F2YWlsYWJsZSA9IChmbG9vcnBsYW46IEZsb29ycGxhbkNhcmREYXRhLCBhdmFpbGFiaWxpdHlGaWx0ZXJzOiBNb250aFtdKTogYm9vbGVhbiA9PiB7XG5cbiAgICByZXR1cm4gYXZhaWxhYmlsaXR5RmlsdGVycy5sZW5ndGggPT09IDAgPyB0cnVlIDpcblxuICAgICAgICBmbG9vcnBsYW4udW5pdHMuc29tZSgodW5pdCkgPT4ge1xuICAgICAgICAgICAgICAgIGlmIChhdmFpbGFiaWxpdHlGaWx0ZXJzLmluZGV4T2YoQVZBSUxBQkxFX05PVykgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNCZWZvcmVUb2RheSh1bml0Lm1vdmVJbkRhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICBpZiAoYXZhaWxhYmlsaXR5RmlsdGVycy5pbmRleE9mKG1vbWVudFRvTW9udGhZZWFyKHRvZGF5KSkgPiAtMSkge1xuICAgICAgICAgICAgICAgICAgICBpZiAoaXNCZWZvcmVUb2RheSh1bml0Lm1vdmVJbkRhdGUpKSB7XG4gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdHJ1ZTtcbiAgICAgICAgICAgICAgICAgICAgfVxuICAgICAgICAgICAgICAgIH1cbiAgICAgICAgICAgICAgICByZXR1cm4gYXZhaWxhYmlsaXR5RmlsdGVycy5pbmRleE9mKGRhdGVUb01vbnRoWWVhcih1bml0Lm1vdmVJbkRhdGUpKSA+IC0xO1xuICAgICAgICAgICAgfVxuICAgICAgICApO1xufTtcblxuY29uc3QgaXNCZWZvcmVUb2RheSA9IChkYXRlOiBzdHJpbmcpID0+IG1vbWVudChkYXRlKS5pc0JlZm9yZSh0b2RheSk7XG5jb25zdCBpc0JlZHJvb21zTWF0Y2ggPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgYmVkcm9vbUZpbHRlcnM6IG51bWJlcltdKTogYm9vbGVhbiA9PiB7XG4gICAgcmV0dXJuIGJlZHJvb21GaWx0ZXJzLmxlbmd0aCA9PT0gMCA/IHRydWUgOiBiZWRyb29tRmlsdGVycy5pbmRleE9mKGZsb29ycGxhbi5iZWRyb29tKSA+IC0xO1xufTtcbmNvbnN0IGlzU3R5bGVNYXRjaCA9IChmbG9vcnBsYW46IEZsb29ycGxhbkNhcmREYXRhLCBzdHlsZUZpbHRlcnM6IEZsb29ycGxhblN0eWxlW10pOiBib29sZWFuID0+IHtcbiAgICByZXR1cm4gc3R5bGVGaWx0ZXJzLmxlbmd0aCA9PT0gMCA/IHRydWUgOiBzdHlsZUZpbHRlcnMuaW5kZXhPZihmbG9vcnBsYW4uc3R5bGUpID4gLTE7XG59XG5jb25zdCBpc0luUHJpY2VSYW5nZSA9IChmbG9vcnBsYW46IEZsb29ycGxhbkNhcmREYXRhLCBtaW5SZW50OiBudW1iZXIsIG1heFJlbnQ6IG51bWJlcik6IGJvb2xlYW4gPT4ge1xuICAgIGNvbnN0IG1pbk1heCA9IG1pbnVtTWF4aW11bShmbG9vcnBsYW4udW5pdHMsIFwicmVudFwiKTtcbiAgICByZXR1cm4gbWluTWF4Lm1pbiA+PSBtaW5SZW50ICYmIG1pbk1heC5tYXggPD0gbWF4UmVudDtcbn1cbmNvbnN0IGlzRmxvb3JwbGFuSWRzTWF0Y2ggPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW5DYXJkRGF0YSwgZmxvb3JwbGFuSWRzOiBzdHJpbmdbXSk6IGJvb2xlYW4gPT4ge1xuICAgIHJldHVybiBmbG9vcnBsYW5JZHMubGVuZ3RoID09PSAwID8gdHJ1ZSA6IGZsb29ycGxhbklkcy5pbmRleE9mKGZsb29ycGxhbi5pZCkgPiAtMTtcbn07XG5jb25zdCBmaWx0ZXJNYXRjaGVzID0gKGZsb29ycGxhbjogRmxvb3JwbGFuQ2FyZERhdGEsIGN1cnJlbnRGaWx0ZXJzOiBDdXJyZW50RmlsdGVycykgPT4ge1xuICAgIHJldHVybiBpc0F2YWlsYWJsZShmbG9vcnBsYW4sIGN1cnJlbnRGaWx0ZXJzLmF2YWlsYWJpbGl0eUZpbHRlcnMpICYmXG4gICAgICAgIGlzSW5QcmljZVJhbmdlKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMubWluUmVudCwgY3VycmVudEZpbHRlcnMubWF4UmVudCkgJiZcbiAgICAgICAgaXNTdHlsZU1hdGNoKGZsb29ycGxhbiwgY3VycmVudEZpbHRlcnMuc3R5bGVGaWx0ZXJzKSAmJlxuICAgICAgICBpc0JlZHJvb21zTWF0Y2goZmxvb3JwbGFuLCBjdXJyZW50RmlsdGVycy5iZWRyb29tRmlsdGVycykgJiZcbiAgICAgICAgaXNGbG9vcnBsYW5JZHNNYXRjaChmbG9vcnBsYW4sIGN1cnJlbnRGaWx0ZXJzLmZsb29ycGxhbklkcyk7XG59XG5leHBvcnQgY29uc3Qgc29ydEZsb29ycGxhbnMgPSAoZmxvb3JwbGFuczogRmxvb3JwbGFuQ2FyZERhdGFbXSwgc29ydEJ5OiBTb3J0QnkpOiBGbG9vcnBsYW5DYXJkRGF0YVtdID0+IHtcblxuICAgIGlmIChTb3J0RmllbGRzW3NvcnRCeV0uc29ydEZpZWxkID09PSBcIm1pblJhdGVcIiAmJiBTb3J0RmllbGRzW3NvcnRCeV0ub3JkZXIgPT09IFwiZGVzY1wiKSB7XG4gICAgICAgIHJldHVybiBmbG9vcnBsYW5zLnNvcnQoKGEsIGIpID0+IG1pbnVtTWF4aW11bShiLnVuaXRzLCBcInJlbnRcIikubWluIC0gbWludW1NYXhpbXVtKGEudW5pdHMsIFwicmVudFwiKS5taW4pO1xuICAgIH1cblxuICAgIGNvbnN0IG1pblJhdGVTb3J0ZWQgPSBmbG9vcnBsYW5zLnNvcnQoKGEsIGIpID0+IG1pbnVtTWF4aW11bShhLnVuaXRzLCBcInJlbnRcIikubWluIC0gbWludW1NYXhpbXVtKGIudW5pdHMsIFwicmVudFwiKS5taW4pO1xuICAgIGlmIChTb3J0RmllbGRzW3NvcnRCeV0uc29ydEZpZWxkID09PSBcIm1pblJhdGVcIiAmJiBTb3J0RmllbGRzW3NvcnRCeV0ub3JkZXIgPT09IFwiYXNjXCIpIHtcbiAgICAgICAgcmV0dXJuIG1pblJhdGVTb3J0ZWRcbiAgICB9XG4gICAgcmV0dXJuIF8ub3JkZXJCeShtaW5SYXRlU29ydGVkLCBTb3J0RmllbGRzW3NvcnRCeV0uc29ydEZpZWxkLCBTb3J0RmllbGRzW3NvcnRCeV0ub3JkZXIpO1xufTtcblxuXG5leHBvcnQgY29uc3QgZmlsdGVyc0Zyb20gPSAoZmxvb3JwbGFuczogRmxvb3JwbGFuQ2FyZERhdGFbXSk6IEZsb29ycGxhbkZpbHRlcnMgPT4ge1xuXG4gICAgY29uc3QgYmVkcm9vbUZpbHRlcnMgPSBuZXcgU2V0PG51bWJlcj4oKTtcbiAgICBjb25zdCBhdmFpbGFiaWxpdHlGaWx0ZXJzID0gbmV3IFNldDxzdHJpbmc+KCk7XG4gICAgY29uc3Qgc3R5bGVGaWx0ZXJzID0gbmV3IFNldDxGbG9vcnBsYW5TdHlsZT4oKTtcblxuICAgIGF2YWlsYWJpbGl0eUZpbHRlcnMuYWRkKEFWQUlMQUJMRV9OT1cpO1xuICAgIGZsb29ycGxhbnMuZm9yRWFjaChmbG9vcnBsYW4gPT4ge1xuICAgICAgICBiZWRyb29tRmlsdGVycy5hZGQoZmxvb3JwbGFuLmJlZHJvb20pO1xuICAgICAgICBzdHlsZUZpbHRlcnMuYWRkKGZsb29ycGxhbi5zdHlsZSk7XG5cbiAgICAgICAgZmxvb3JwbGFuLnVuaXRzLmZvckVhY2goKHZhbHVlKSA9PiB7XG4gICAgICAgICAgICBpZiAodmFsdWUubW92ZUluRGF0ZSAmJiBpc0RhdGVXaXRoaW5Ud2VsdmVNb250aHModmFsdWUubW92ZUluRGF0ZSkgJiYgaXNEYXRlQWZ0ZXJUb2RheSh2YWx1ZS5tb3ZlSW5EYXRlKSlcbiAgICAgICAgICAgICAgICBhdmFpbGFiaWxpdHlGaWx0ZXJzLmFkZChkYXRlVG9Nb250aFllYXIodmFsdWUubW92ZUluRGF0ZSkpO1xuICAgICAgICB9KTtcbiAgICB9KTtcbiAgICByZXR1cm4ge1xuICAgICAgICBiZWRyb29tOiBiZWRyb29tRmlsdGVycyxcbiAgICAgICAgYXZhaWxhYmlsaXR5OiBhdmFpbGFiaWxpdHlGaWx0ZXJzLFxuICAgICAgICBzdHlsZTogc3R5bGVGaWx0ZXJzXG4gICAgfVxufTtcblxuXG5leHBvcnQgY29uc3QgZ2V0RmVhdHVyZWRGbG9vcnBsYW5zID0gKCk6IFByb21pc2U8Rmxvb3JwbGFuU3BvdGxpZ2h0W10+ID0+IHtcblxuICAgIHJldHVybiBnZXQoXCJmbG9vcnBsYW5zP3Byb2plY3Rpb249c3BvdGxpZ2h0JnNpemU9MjAwXCIpXG4gICAgICAgIC50aGVuKHJlc3BvbnNlID0+XG4gICAgICAgICAgICByZXNwb25zZS5kYXRhLl9lbWJlZGRlZC5mbG9vcnBsYW5zLmZpbHRlcigoZmxvb3JwbGFuOiBGbG9vcnBsYW5TcG90bGlnaHQpID0+IGZsb29ycGxhbi5mZWF0dXJlZCAmJiBmbG9vcnBsYW4ucHJvcGVydHkuYWN0aXZlKVxuICAgICAgICApO1xufTtcblxuZXhwb3J0IGNvbnN0IGdldEFsbEFjdGl2ZUZsb29ycGxhbnMgPSAoKTogUHJvbWlzZTxGbG9vcnBsYW5EZXRhaWxzW10+ID0+IHtcblxuICAgIHJldHVybiBnZXQoXCJmbG9vcnBsYW5zP3Byb2plY3Rpb249ZGV0YWlscyZzaXplPTIwMFwiKVxuICAgICAgICAudGhlbihyZXNwb25zZSA9PlxuICAgICAgICAgICAgcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQuZmxvb3JwbGFuc1xuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGZsb29ycGxhbjogRmxvb3JwbGFuKSA9PiBmbG9vcnBsYW4uYWN0aXZlKVxuICAgICAgICAgICAgICAgIC5maWx0ZXIoKGZsb29ycGxhbjogRmxvb3JwbGFuKSA9PiBmbG9vcnBsYW4uc3R5bGUgIT09IFwiR0FSQUdFXCIpXG4gICAgICAgICk7XG59O1xuXG5leHBvcnQgY29uc3QgZ2V0Rmxvb3JwbGFuID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPEZsb29ycGxhbj4gPT5cbiAgICBnZXQoXCJmbG9vcnBsYW5zL1wiICsgZmxvb3JwbGFuSWQgKyBcIj9wcm9qZWN0aW9uPXdpdGhJZFwiKS50aGVuKHJlc3BvbnNlID0+IHJlc3BvbnNlLmRhdGEpO1xuXG5leHBvcnQgY29uc3QgZ2V0U2ltaWxhckZsb29ycGxhbnMgPSAoZmxvb3JwbGFuSWQ6IHN0cmluZyk6IFByb21pc2U8U2ltaWxhckZsb29ycGxhbltdPiA9PlxuICAgIGdldChcInNpbWlsYXJGbG9vcnBsYW5zL3NlYXJjaC9ieUZsb29ycGxhbklkP3Byb2plY3Rpb249d2l0aElkJmZsb29ycGxhbklkPVwiICsgZmxvb3JwbGFuSWQpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQuc2ltaWxhckZsb29ycGxhbnMpO1xuXG5leHBvcnQgY29uc3QgZ2V0Rmxvb3JwbGFuVmFyaWF0aW9ucyA9IChmbG9vcnBsYW5JZDogc3RyaW5nKTogUHJvbWlzZTxGbG9vcnBsYW5WYXJpYXRpb25bXT4gPT5cbiAgICBnZXQoXCJmbG9vcnBsYW5WYXJpYXRpb25zL3NlYXJjaC9ieUZsb29ycGxhbklkP3Byb2plY3Rpb249d2l0aElkJmZsb29ycGxhbklkPVwiICsgZmxvb3JwbGFuSWQpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQuZmxvb3JwbGFuVmFyaWF0aW9ucyk7XG5jb25zdCB0b2RheSA9IG1vbWVudCgpO1xuZXhwb3J0IGNvbnN0IGlzRmxvb3JwbGFuQXZhaWxhYmxlID0gKGZsb29ycGxhbjogRmxvb3JwbGFuIHwgRmxvb3JwbGFuQ2FyZERhdGEpOiBib29sZWFuID0+IGZsb29ycGxhbi51bml0cy5zb21lKCh1bml0KSA9PiB0b2RheS5pc0FmdGVyKGRhdGVUb01vbWVudCh1bml0Lm1vdmVJbkRhdGUpKSk7XG5leHBvcnQgY29uc3QgZ2V0VGVzdGltb25pYWxzID0gKGZsb29ycGxhbklkOiBzdHJpbmcpOiBQcm9taXNlPFRlc3RpbW9uaWFsW10+ID0+XG4gICAgZ2V0KFwidGVzdGltb25pYWxzL3NlYXJjaC9ieUZsb29ycGxhbklkP3Byb2plY3Rpb249d2l0aElkJmZsb29ycGxhbklkPVwiICsgZmxvb3JwbGFuSWQpLnRoZW4ocmVzcG9uc2UgPT4gcmVzcG9uc2UuZGF0YS5fZW1iZWRkZWQudGVzdGltb25pYWxzKTtcblxuXG5leHBvcnQgY29uc3QgcGVybWl0dGVkUGV0cyA9IChmbG9vcnBsYW46IEZsb29ycGxhbik6IHN0cmluZ1tdID0+IHtcblxuICAgIGNvbnN0IHVuaXQgPSB1bml0V2l0aE1vc3RBbGxvd2VkUGV0KFsuLi5mbG9vcnBsYW4udW5pdHNdKTtcblxuICAgIHN3aXRjaCAodW5pdD8uYWxsb3dlZFBldCkge1xuICAgICAgICBjYXNlIFBldC5MQVJHRV9ET0dfU01BTExfRE9HX0NBVDpcbiAgICAgICAgICAgIHJldHVybiBbJ0xhcmdlIERvZycsICdTbWFsbCBEb2cnLCAnQ2F0J107XG4gICAgICAgIGNhc2UgUGV0LlNNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICByZXR1cm4gWydTbWFsbCBEb2cnLCAnQ2F0J107XG4gICAgICAgIGNhc2UgUGV0LkNBVDpcbiAgICAgICAgICAgIHJldHVybiBbJ0NhdCddO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFsnTm9uZSddO1xuICAgIH1cbn1cblxuZXhwb3J0IGNvbnN0IG5vdFBlcm1pdHRlZFBldHMgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW4pOiBzdHJpbmdbXSA9PiB7XG5cbiAgICBjb25zdCB1bml0ID0gdW5pdFdpdGhNb3N0QWxsb3dlZFBldChbLi4uZmxvb3JwbGFuLnVuaXRzXSk7XG5cbiAgICBzd2l0Y2ggKHVuaXQ/LmFsbG93ZWRQZXQpIHtcbiAgICAgICAgY2FzZSBQZXQuTEFSR0VfRE9HX1NNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICByZXR1cm4gW107XG4gICAgICAgIGNhc2UgUGV0LlNNQUxMX0RPR19DQVQ6XG4gICAgICAgICAgICByZXR1cm4gWydMYXJnZSBEb2cnXTtcbiAgICAgICAgY2FzZSBQZXQuQ0FUOlxuICAgICAgICAgICAgcmV0dXJuIFsnTGFyZ2UgRG9nJywgJ1NtYWxsIERvZyddO1xuICAgICAgICBjYXNlIFBldC5OT19QRVQ6XG4gICAgICAgICAgICByZXR1cm4gWydMYXJnZSBEb2cnLCAnU21hbGwgRG9nJywgJ0NhdCddO1xuICAgICAgICBkZWZhdWx0OlxuICAgICAgICAgICAgcmV0dXJuIFtdO1xuICAgIH1cbn1cbmV4cG9ydCBjb25zdCBwZXRQb2xpY3kgPSAoZmxvb3JwbGFuOiBGbG9vcnBsYW4pOiBzdHJpbmcgfCB1bmRlZmluZWQgPT4ge1xuICAgIGNvbnN0IHVuaXQgPSB1bml0V2l0aE1vc3RBbGxvd2VkUGV0KFsuLi5mbG9vcnBsYW4udW5pdHNdKTtcbiAgICByZXR1cm4gdW5pdD8ucGV0UG9saWN5O1xufVxuY29uc3QgdW5pdFdpdGhNb3N0QWxsb3dlZFBldCA9ICh1bml0czogVW5pdFtdKTogVW5pdCB8IHVuZGVmaW5lZCA9PiB7XG4gICAgY29uc3QgcGV0T3JkaW5hbCA9IChwZXQ6IFBldCkgPT4gT2JqZWN0LmtleXMoUGV0KS5pbmRleE9mKHBldCk7XG4gICAgcmV0dXJuIHVuaXRzLnNvcnQoKGEsIGIpID0+IHBldE9yZGluYWwoYi5hbGxvd2VkUGV0KSAtIHBldE9yZGluYWwoYS5hbGxvd2VkUGV0KSkucG9wKCk7XG59XG5cbmV4cG9ydCBjb25zdCBmbG9vcnBsYW5BZGRyZXNzID0gKGN1cnJlbnRGbG9vcnBsYW46IEZsb29ycGxhbik6IEZsb29ycGxhbkFkZHJlc3MgPT4ge1xuICAgIGNvbnN0IGFkZHJlc3M6IEZsb29ycGxhbkFkZHJlc3MgPSB7YWRkcmVzczogXCJcIiwgY2l0eTogXCJCbG9vbWluZ3RvblwiLCBzdGF0ZTogXCJJTlwiLCB6aXBjb2RlOiBcIlwifTtcbiAgICBpZiAoY3VycmVudEZsb29ycGxhbi51bml0cy5sZW5ndGggPT09IDEpIHtcbiAgICAgICAgcmV0dXJuIHtcbiAgICAgICAgICAgIC4uLmFkZHJlc3MsIGFkZHJlc3M6IGN1cnJlbnRGbG9vcnBsYW4udW5pdHNbMF0uYWRkcmVzcyxcbiAgICAgICAgICAgIHppcGNvZGU6IGN1cnJlbnRGbG9vcnBsYW4udW5pdHNbMF0uemlwY29kZVxuICAgICAgICB9XG4gICAgfVxuICAgIHJldHVybiB7XG4gICAgICAgIC4uLmFkZHJlc3MsIGFkZHJlc3M6IGN1cnJlbnRGbG9vcnBsYW4ucHJvcGVydHkuYWRkcmVzcyxcbiAgICAgICAgemlwY29kZTogY3VycmVudEZsb29ycGxhbi5wcm9wZXJ0eS56aXBjb2RlXG4gICAgfVxufVxuXG5cbmV4cG9ydCBpbnRlcmZhY2UgRmxvb3JwbGFuQWRkcmVzcyB7XG4gICAgYWRkcmVzczogc3RyaW5nO1xuICAgIGNpdHk6IHN0cmluZztcbiAgICBzdGF0ZTogc3RyaW5nO1xuICAgIHppcGNvZGU6IHN0cmluZztcbn1cbiJdLCJtYXBwaW5ncyI6Ijs7Ozs7O0FBQUEsSUFBQUEsT0FBQSxHQUFBQyxzQkFBQSxDQUFBQyxPQUFBO0FBRUEsSUFBQUMsaUJBQUEsR0FBQUQsT0FBQTtBQUNBLElBQUFFLE9BQUEsR0FBQUgsc0JBQUEsQ0FBQUMsT0FBQTtBQVdBLElBQUFHLE1BQUEsR0FBQUgsT0FBQTtBQUVBLElBQUFJLEtBQUEsR0FBQUosT0FBQTtBQUNBLElBQUFLLFdBQUEsR0FBQUwsT0FBQTtBQUNBLElBQUFNLGFBQUEsR0FB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
|
package/lib/footer/Footer.js
CHANGED
|
@@ -13,9 +13,11 @@ var _chamberLogo = _interopRequireDefault(require("./assets/chamber-logo.png"));
|
|
|
13
13
|
var _rainbowLogo = _interopRequireDefault(require("./assets/rainbow-logo.png"));
|
|
14
14
|
require("./assets/Footer.scss");
|
|
15
15
|
function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
const Footer = _ref => {
|
|
17
|
+
let {
|
|
18
|
+
nav,
|
|
19
|
+
accessibilityLink
|
|
20
|
+
} = _ref;
|
|
19
21
|
return /*#__PURE__*/_react.default.createElement("footer", null, /*#__PURE__*/_react.default.createElement("div", {
|
|
20
22
|
className: "mobile"
|
|
21
23
|
}, /*#__PURE__*/_react.default.createElement("div", {
|
|
@@ -33,7 +35,8 @@ var Footer = function Footer(_ref) {
|
|
|
33
35
|
height: "90"
|
|
34
36
|
})), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("a", {
|
|
35
37
|
href: "https://www.chamberbloomington.org/",
|
|
36
|
-
target: "_blank"
|
|
38
|
+
target: "_blank",
|
|
39
|
+
rel: "noreferrer"
|
|
37
40
|
}, /*#__PURE__*/_react.default.createElement("img", {
|
|
38
41
|
src: _chamberLogo.default,
|
|
39
42
|
alt: "chamber member ",
|
|
@@ -73,7 +76,8 @@ var Footer = function Footer(_ref) {
|
|
|
73
76
|
height: "60"
|
|
74
77
|
})), /*#__PURE__*/_react.default.createElement("div", null, /*#__PURE__*/_react.default.createElement("a", {
|
|
75
78
|
href: "https://www.chamberbloomington.org/",
|
|
76
|
-
target: "_blank"
|
|
79
|
+
target: "_blank",
|
|
80
|
+
rel: "noreferrer"
|
|
77
81
|
}, /*#__PURE__*/_react.default.createElement("img", {
|
|
78
82
|
src: _chamberLogo.default,
|
|
79
83
|
alt: "chamber member ",
|
|
@@ -91,4 +95,4 @@ var Footer = function Footer(_ref) {
|
|
|
91
95
|
}))))));
|
|
92
96
|
};
|
|
93
97
|
exports.Footer = Footer;
|
|
94
|
-
//# sourceMappingURL=data:application/json;charset=utf-8;base64,
|
|
98
|
+
//# sourceMappingURL=data:application/json;charset=utf-8;base64,eyJ2ZXJzaW9uIjozLCJuYW1lcyI6WyJfcmVhY3QiLCJfaW50ZXJvcFJlcXVpcmVEZWZhdWx0IiwicmVxdWlyZSIsIl9yZW5yZW5Nb2JpbGVMb2dvIiwiX2FjY2Vzc2liaWxpdHlMb2dvIiwiX3JlbnJlbkxvZ28iLCJfZXF1YWxIb3VzaW5nTG9nbyIsIl9jaGFtYmVyTG9nbyIsIl9yYWluYm93TG9nbyIsIm9iaiIsIl9fZXNNb2R1bGUiLCJkZWZhdWx0IiwiRm9vdGVyIiwiX3JlZiIsIm5hdiIsImFjY2Vzc2liaWxpdHlMaW5rIiwiY3JlYXRlRWxlbWVudCIsImNsYXNzTmFtZSIsInNyYyIsImVxdWFsSG91c2luZ0xvZ28iLCJhbHQiLCJoZWlnaHQiLCJocmVmIiwicmVucmVuTW9iaWxlIiwidGFyZ2V0IiwicmVsIiwiY2hhbWJlckxvZ28iLCJhY2Nlc3NpYmlsaXR5TG9nbyIsInJhaW5ib3dMb2dvIiwicmVucmVuTG9nbyIsImV4cG9ydHMiXSwic291cmNlcyI6WyIuLi8uLi9zcmMvZm9vdGVyL0Zvb3Rlci50c3giXSwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IFJlYWN0IGZyb20gJ3JlYWN0JztcbmltcG9ydCByZW5yZW5Nb2JpbGUgZnJvbSAnLi9hc3NldHMvcmVucmVuLW1vYmlsZS1sb2dvLnBuZyc7XG5pbXBvcnQgYWNjZXNzaWJpbGl0eUxvZ28gZnJvbSAnLi9hc3NldHMvYWNjZXNzaWJpbGl0eS1sb2dvLnBuZyc7XG5pbXBvcnQgcmVucmVuTG9nbyBmcm9tICcuL2Fzc2V0cy9yZW5yZW4tbG9nby5wbmcnO1xuaW1wb3J0IGVxdWFsSG91c2luZ0xvZ28gZnJvbSAnLi9hc3NldHMvZXF1YWwtaG91c2luZy1sb2dvLnBuZyc7XG5pbXBvcnQgY2hhbWJlckxvZ28gZnJvbSAnLi9hc3NldHMvY2hhbWJlci1sb2dvLnBuZyc7XG5pbXBvcnQgcmFpbmJvd0xvZ28gZnJvbSAnLi9hc3NldHMvcmFpbmJvdy1sb2dvLnBuZyc7XG5pbXBvcnQgJy4vYXNzZXRzL0Zvb3Rlci5zY3NzJztcblxuZXhwb3J0IGNvbnN0IEZvb3RlcjogUmVhY3QuRkM8Rm9vdGVyUHJvcHM+ID0gKHtuYXYsIGFjY2Vzc2liaWxpdHlMaW5rfSkgPT4ge1xuICAgIHJldHVybiAoXG4gICAgICAgIDxmb290ZXI+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1vYmlsZVwiPlxuICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZGl2LWZvb3Rlci1sb2dvXCI+XG4gICAgICAgICAgICAgICAgICAgIDxkaXY+PGltZyBzcmM9e2VxdWFsSG91c2luZ0xvZ299IGFsdD1cImVxdWFsIGhvdXNpbmcgb3Bwb3J0dW5pdHkgXCIgaGVpZ2h0PVwiNjBcIi8+PC9kaXY+XG5cbiAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj1cImh0dHBzOi8vd3d3LnJlbmFpc3NhbmNlcmVudGFscy5jb21cIiBjbGFzc05hbWU9XCJocmVmLWxvZ29cIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPXtyZW5yZW5Nb2JpbGV9IGFsdD1cInJlbmFpc3NhbmNlIHJlbnRhbHMgXCIgaGVpZ2h0PVwiOTBcIi8+XG4gICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPGRpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5jaGFtYmVyYmxvb21pbmd0b24ub3JnL1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17Y2hhbWJlckxvZ299IGFsdD1cImNoYW1iZXIgbWVtYmVyICBcIiBoZWlnaHQ9XCI2MFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPGEgaHJlZj17YWNjZXNzaWJpbGl0eUxpbmsgPyBhY2Nlc3NpYmlsaXR5TGluayA6IFwiaHR0cHM6Ly93d3cucmVuYWlzc2FuY2VyZW50YWxzLmNvbS9hY2Nlc3NpYmlsaXR5XCJ9PlxuICAgICAgICAgICAgICAgICAgICA8aW1nIHNyYz17YWNjZXNzaWJpbGl0eUxvZ299IGFsdD1cImFjY2Vzc2liaWxpdHlcIiBoZWlnaHQ9XCIyM1wiLz5cbiAgICAgICAgICAgICAgICA8L2E+XG5cbiAgICAgICAgICAgICAgICA8bmF2PlxuICAgICAgICAgICAgICAgICAgICB7bmF2fVxuICAgICAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPXtyYWluYm93TG9nb30gYWx0PVwid2Ugd2VsY29tZSBhbGwgXCIgaGVpZ2h0PVwiMzBcIi8+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG5cblxuICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cIm1haW5cIj5cbiAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImNvbnRhaW5lclwiPlxuICAgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzTmFtZT1cImxlZnRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxuYXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAge25hdn1cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvbmF2PlxuICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgPGRpdiBjbGFzc05hbWU9XCJjZW50ZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5yZW5haXNzYW5jZXJlbnRhbHMuY29tXCIgY2xhc3NOYW1lPVwiaHJlZi1sb2dvXCI+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e3JlbnJlbkxvZ299IGhlaWdodD1cIjE1MFwiIGFsdD1cInJlbmFpc3NhbmNlIHJlbnRhbHMsIHdlIGJ1aWxkIGNvbW11bml0eVwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwicmlnaHRcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3NOYW1lPVwiZmlyc3RcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZGl2PjxpbWcgc3JjPXtlcXVhbEhvdXNpbmdMb2dvfSBhbHQ9XCJlcXVhbCBob3VzaW5nIG9wcG9ydHVuaXR5IFwiIGhlaWdodD1cIjYwXCIvPjwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9XCJodHRwczovL3d3dy5jaGFtYmVyYmxvb21pbmd0b24ub3JnL1wiIHRhcmdldD1cIl9ibGFua1wiIHJlbD1cIm5vcmVmZXJyZXJcIj5cbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPXtjaGFtYmVyTG9nb30gYWx0PVwiY2hhbWJlciBtZW1iZXIgIFwiIGhlaWdodD1cIjYwXCIvPlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2E+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgICAgICAgICAgICAgICAgIDxkaXY+XG4gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGltZyBzcmM9e3JhaW5ib3dMb2dvfSBhbHQ9XCJ3ZSB3ZWxjb21lIGFsbCBcIiBoZWlnaHQ9XCIzMFwiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvZGl2PlxuICAgICAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj17YWNjZXNzaWJpbGl0eUxpbmsgPyBhY2Nlc3NpYmlsaXR5TGluayA6IFwiaHR0cHM6Ly93d3cucmVuYWlzc2FuY2VyZW50YWxzLmNvbS9hY2Nlc3NpYmlsaXR5XCJ9PlxuICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpbWcgc3JjPXthY2Nlc3NpYmlsaXR5TG9nb30gYWx0PVwiYWNjZXNzaWJpbGl0eSBcIiBoZWlnaHQ9XCIyM1wiLz5cbiAgICAgICAgICAgICAgICAgICAgICAgIDwvYT5cbiAgICAgICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICAgICAgPC9kaXY+XG4gICAgICAgICAgICA8L2Rpdj5cbiAgICAgICAgPC9mb290ZXI+XG4gICAgKTtcbn1cblxuZXhwb3J0IGludGVyZmFjZSBGb290ZXJQcm9wcyB7XG4gICAgbmF2OiBSZWFjdC5SZWFjdE5vZGU7XG4gICAgYWNjZXNzaWJpbGl0eUxpbms/OiBzdHJpbmc7XG59XG4iXSwibWFwcGluZ3MiOiI7Ozs7OztBQUFBLElBQUFBLE1BQUEsR0FBQUMsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFDLGlCQUFBLEdBQUFGLHNCQUFBLENBQUFDLE9BQUE7QUFDQSxJQUFBRSxrQkFBQSxHQUFBSCxzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUcsV0FBQSxHQUFBSixzQkFBQSxDQUFBQyxPQUFBO0FBQ0EsSUFBQUksaUJBQUEsR0FBQUwsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFLLFlBQUEsR0FBQU4sc0JBQUEsQ0FBQUMsT0FBQTtBQUNBLElBQUFNLFlBQUEsR0FBQVAsc0JBQUEsQ0FBQUMsT0FBQTtBQUNBQSxPQUFBO0FBQThCLFNBQUFELHVCQUFBUSxHQUFBLFdBQUFBLEdBQUEsSUFBQUEsR0FBQSxDQUFBQyxVQUFBLEdBQUFELEdBQUEsS0FBQUUsT0FBQSxFQUFBRixHQUFBO0FBRXZCLE1BQU1HLE1BQTZCLEdBQUdDLElBQUEsSUFBOEI7RUFBQSxJQUE3QjtJQUFDQyxHQUFHO0lBQUVDO0VBQWlCLENBQUMsR0FBQUYsSUFBQTtFQUNsRSxvQkFDSWIsTUFBQSxDQUFBVyxPQUFBLENBQUFLLGFBQUEsOEJBQ0loQixNQUFBLENB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
|