angular-odata 0.122.0 → 0.124.0
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/esm2022/lib/api.mjs +373 -0
- package/esm2022/lib/cache/cache.mjs +175 -0
- package/{esm2020 → esm2022}/lib/cache/storage.mjs +1 -1
- package/esm2022/lib/client.mjs +252 -0
- package/{esm2020 → esm2022}/lib/helper.mjs +1 -1
- package/{esm2020 → esm2022}/lib/loaders.mjs +1 -1
- package/esm2022/lib/models/collection.mjs +865 -0
- package/esm2022/lib/models/model.mjs +535 -0
- package/esm2022/lib/models/options.mjs +1117 -0
- package/{esm2020 → esm2022}/lib/module.mjs +5 -5
- package/esm2022/lib/resources/path/segments.mjs +124 -0
- package/esm2022/lib/resources/query/builder.mjs +624 -0
- package/esm2022/lib/resources/query/expressions/base.mjs +20 -0
- package/esm2022/lib/resources/query/expressions/compute.mjs +39 -0
- package/esm2022/lib/resources/query/expressions/count.mjs +99 -0
- package/esm2022/lib/resources/query/expressions/expand.mjs +125 -0
- package/esm2022/lib/resources/query/expressions/filter.mjs +161 -0
- package/esm2022/lib/resources/query/expressions/orderby.mjs +56 -0
- package/esm2022/lib/resources/query/expressions/search.mjs +122 -0
- package/esm2022/lib/resources/query/expressions/select.mjs +31 -0
- package/esm2022/lib/resources/query/expressions/syntax.mjs +444 -0
- package/{esm2020 → esm2022}/lib/resources/query/handlers.mjs +1 -1
- package/esm2022/lib/resources/query/options.mjs +115 -0
- package/{esm2020 → esm2022}/lib/resources/request.mjs +1 -1
- package/esm2022/lib/resources/resource.mjs +257 -0
- package/{esm2020 → esm2022}/lib/resources/responses/annotations.mjs +1 -1
- package/esm2022/lib/resources/responses/csdl/csdl-annotation.mjs +33 -0
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-entity-container.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-entity-set.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-enum-type.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-function-action.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-navigation-property-binding.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-reference.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-schema.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-singleton.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-structural-property.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-structured-type.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/responses/csdl/csdl-type-definition.mjs +1 -1
- package/esm2022/lib/resources/responses/metadata.mjs +547 -0
- package/{esm2020 → esm2022}/lib/resources/responses/response.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/action.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/batch.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/count.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/entity-set.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/entity.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/function.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/media.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/navigation-property.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/property.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/reference.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/singleton.mjs +1 -1
- package/{esm2020 → esm2022}/lib/resources/types/value.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/annotation.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/callable.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/element.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/entity-container.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/enum-type.mjs +1 -1
- package/{esm2020 → esm2022}/lib/schema/parsers/callable.mjs +1 -1
- package/esm2022/lib/schema/parsers/edm.mjs +99 -0
- package/{esm2020 → esm2022}/lib/schema/parsers/enum-type.mjs +2 -2
- package/esm2022/lib/schema/parsers/structured-type.mjs +502 -0
- package/{esm2020 → esm2022}/lib/schema/schema.mjs +1 -1
- package/esm2022/lib/schema/structured-type.mjs +207 -0
- package/esm2022/lib/services/base.mjs +29 -0
- package/{esm2020 → esm2022}/lib/services/entity-set.mjs +1 -1
- package/{esm2020 → esm2022}/lib/services/factory.mjs +4 -4
- package/{esm2020 → esm2022}/lib/services/singleton.mjs +1 -1
- package/{esm2020 → esm2022}/lib/settings.mjs +1 -1
- package/{esm2020 → esm2022}/lib/types.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/arrays.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/durations.mjs +1 -1
- package/esm2022/lib/utils/enums.mjs +61 -0
- package/{esm2020 → esm2022}/lib/utils/http.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/objects.mjs +1 -1
- package/{esm2020 → esm2022}/lib/utils/odata.mjs +1 -1
- package/esm2022/lib/utils/types.mjs +136 -0
- package/{fesm2020 → fesm2022}/angular-odata.mjs +544 -373
- package/fesm2022/angular-odata.mjs.map +1 -0
- package/lib/helper.d.ts +1 -1
- package/lib/models/model.d.ts +4 -2
- package/lib/models/options.d.ts +7 -8
- package/lib/resources/path/segments.d.ts +15 -6
- package/lib/resources/query/builder.d.ts +21 -20
- package/lib/resources/query/expressions/base.d.ts +6 -4
- package/lib/resources/query/expressions/compute.d.ts +10 -8
- package/lib/resources/query/expressions/count.d.ts +14 -11
- package/lib/resources/query/expressions/expand.d.ts +23 -19
- package/lib/resources/query/expressions/filter.d.ts +22 -20
- package/lib/resources/query/expressions/orderby.d.ts +12 -9
- package/lib/resources/query/expressions/search.d.ts +12 -9
- package/lib/resources/query/expressions/select.d.ts +9 -7
- package/lib/resources/query/expressions/syntax.d.ts +75 -71
- package/lib/resources/query/handlers.d.ts +2 -2
- package/lib/resources/query/options.d.ts +15 -6
- package/lib/resources/resource.d.ts +2 -2
- package/lib/resources/responses/types.d.ts +3 -3
- package/lib/resources/types/options.d.ts +7 -7
- package/lib/schema/parsers/structured-type.d.ts +8 -5
- package/lib/schema/structured-type.d.ts +2 -1
- package/lib/types.d.ts +15 -15
- package/lib/utils/durations.d.ts +1 -1
- package/lib/utils/enums.d.ts +3 -0
- package/lib/utils/types.d.ts +1 -0
- package/package.json +9 -15
- package/esm2020/lib/api.mjs +0 -373
- package/esm2020/lib/cache/cache.mjs +0 -173
- package/esm2020/lib/client.mjs +0 -252
- package/esm2020/lib/models/collection.mjs +0 -861
- package/esm2020/lib/models/model.mjs +0 -507
- package/esm2020/lib/models/options.mjs +0 -1110
- package/esm2020/lib/resources/path/segments.mjs +0 -124
- package/esm2020/lib/resources/query/builder.mjs +0 -588
- package/esm2020/lib/resources/query/expressions/base.mjs +0 -20
- package/esm2020/lib/resources/query/expressions/compute.mjs +0 -39
- package/esm2020/lib/resources/query/expressions/count.mjs +0 -89
- package/esm2020/lib/resources/query/expressions/expand.mjs +0 -115
- package/esm2020/lib/resources/query/expressions/filter.mjs +0 -161
- package/esm2020/lib/resources/query/expressions/orderby.mjs +0 -56
- package/esm2020/lib/resources/query/expressions/search.mjs +0 -122
- package/esm2020/lib/resources/query/expressions/select.mjs +0 -31
- package/esm2020/lib/resources/query/expressions/syntax.mjs +0 -409
- package/esm2020/lib/resources/query/options.mjs +0 -115
- package/esm2020/lib/resources/resource.mjs +0 -251
- package/esm2020/lib/resources/responses/csdl/csdl-annotation.mjs +0 -33
- package/esm2020/lib/resources/responses/metadata.mjs +0 -547
- package/esm2020/lib/schema/parsers/edm.mjs +0 -104
- package/esm2020/lib/schema/parsers/structured-type.mjs +0 -490
- package/esm2020/lib/schema/structured-type.mjs +0 -202
- package/esm2020/lib/services/base.mjs +0 -29
- package/esm2020/lib/utils/enums.mjs +0 -45
- package/esm2020/lib/utils/types.mjs +0 -133
- package/fesm2015/angular-odata.mjs +0 -11811
- package/fesm2015/angular-odata.mjs.map +0 -1
- package/fesm2020/angular-odata.mjs.map +0 -1
- /package/{esm2020 → esm2022}/angular-odata.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/cache/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/cache/memory.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/constants.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/models/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/path/handlers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/path/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/query/expressions/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/query/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/responses/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/responses/options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/responses/types.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/types/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/types/metadata.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/resources/types/options.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/schema/entity-set.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/schema/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/schema/parsers/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/entity.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/services/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/arraybuffers.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/dates.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/index.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/strings.mjs +0 -0
- /package/{esm2020 → esm2022}/lib/utils/urls.mjs +0 -0
- /package/{esm2020 → esm2022}/public-api.mjs +0 -0
|
@@ -1,104 +0,0 @@
|
|
|
1
|
-
import { raw } from '../../resources/query';
|
|
2
|
-
import { EdmType } from '../../types';
|
|
3
|
-
import { ArrayBuffers } from '../../utils/arraybuffers';
|
|
4
|
-
import { Durations } from '../../utils/durations';
|
|
5
|
-
// Core EdmTypeParserBuilder
|
|
6
|
-
const EdmParser = (_d, _s, _e) => ({
|
|
7
|
-
deserialize(value, options) {
|
|
8
|
-
return Array.isArray(value)
|
|
9
|
-
? value.map((v) => _d(v, options))
|
|
10
|
-
: _d(value, options);
|
|
11
|
-
},
|
|
12
|
-
serialize(value, options) {
|
|
13
|
-
return Array.isArray(value)
|
|
14
|
-
? value.map((v) => _s(v, options))
|
|
15
|
-
: _s(value, options);
|
|
16
|
-
},
|
|
17
|
-
encode(value, options) {
|
|
18
|
-
return Array.isArray(value)
|
|
19
|
-
? value.map((v) => _e(v, options))
|
|
20
|
-
: _e(value, options);
|
|
21
|
-
},
|
|
22
|
-
});
|
|
23
|
-
const Identity = (v) => v;
|
|
24
|
-
const toNumber = (v) => Number(v);
|
|
25
|
-
const toString = (v) => v.toString();
|
|
26
|
-
const toBoolean = (v) => Boolean(v);
|
|
27
|
-
const toDate = (v) => new Date(v);
|
|
28
|
-
export const EDM_PARSERS = {
|
|
29
|
-
//Edm.Guid 16-byte (128-bit) unique identifier
|
|
30
|
-
[EdmType.Guid]: EdmParser(Identity, Identity, (v) => raw(v)),
|
|
31
|
-
//Edm.Int16 Signed 16-bit integer
|
|
32
|
-
[EdmType.Int16]: EdmParser(toNumber, toNumber, toNumber),
|
|
33
|
-
//Edm.String Sequence of UTF-8 characters
|
|
34
|
-
[EdmType.String]: EdmParser(toString, toString, toString),
|
|
35
|
-
//Edm.Boolean Binary-valued logic
|
|
36
|
-
[EdmType.Boolean]: EdmParser(toBoolean, toBoolean, toBoolean),
|
|
37
|
-
//Edm.Byte Unsigned 8-bit integer
|
|
38
|
-
[EdmType.Byte]: EdmParser(toNumber, toNumber, toNumber),
|
|
39
|
-
//Edm.SByte Signed 8-bit integer
|
|
40
|
-
[EdmType.SByte]: EdmParser(toNumber, toNumber, toNumber),
|
|
41
|
-
//Edm.Int32 Signed 16-bit integer
|
|
42
|
-
[EdmType.Int32]: EdmParser(toNumber, toNumber, toNumber),
|
|
43
|
-
//Edm.Int64 Signed 16-bit integer
|
|
44
|
-
[EdmType.Int64]: EdmParser(toNumber, toNumber, toNumber),
|
|
45
|
-
//Edm.Date Date without a time-zone offset
|
|
46
|
-
[EdmType.Date]: EdmParser((v) => new Date(`${v}T00:00:00.000Z`), (v) => toDate(v).toISOString().substring(0, 10), (v) => raw(toDate(v).toISOString().substring(0, 10))),
|
|
47
|
-
//Edm.TimeOfDay Clock time 00:00-23:59:59.999999999999
|
|
48
|
-
[EdmType.TimeOfDay]: EdmParser((v) => new Date(`1970-01-01T${v}Z`), (v) => toDate(v).toISOString().substring(11, 23), (v) => raw(toDate(v).toISOString().substring(11, 23))),
|
|
49
|
-
//Edm.DateTimeOffset Date and time with a time-zone offset, no leap seconds
|
|
50
|
-
[EdmType.DateTimeOffset]: EdmParser(toDate, (v) => toDate(v).toISOString(), (v) => raw(toDate(v).toISOString())),
|
|
51
|
-
//Edm.Duration Signed duration in days, hours, minutes, and (sub)seconds
|
|
52
|
-
[EdmType.Duration]: EdmParser((v) => Durations.toDuration(v), (v) => Durations.toString(v), (v) => raw(Durations.toString(v))),
|
|
53
|
-
//Edm.Decimal Numeric values with fixed precision and scale
|
|
54
|
-
[EdmType.Decimal]: EdmParser((v, o) => {
|
|
55
|
-
if (typeof v === 'string' && o.ieee754Compatible) {
|
|
56
|
-
return parseFloat(v);
|
|
57
|
-
}
|
|
58
|
-
return v;
|
|
59
|
-
}, (v, o) => {
|
|
60
|
-
if (o.ieee754Compatible) {
|
|
61
|
-
let vstr = v.toPrecision(o.field.precision);
|
|
62
|
-
if (typeof o.field.scale === 'number') {
|
|
63
|
-
vstr = parseFloat(vstr).toFixed(o.field.scale);
|
|
64
|
-
}
|
|
65
|
-
return vstr;
|
|
66
|
-
}
|
|
67
|
-
return v;
|
|
68
|
-
}, (v, o) => {
|
|
69
|
-
if (o.ieee754Compatible) {
|
|
70
|
-
let vstr = v.toPrecision(o.field.precision);
|
|
71
|
-
if (typeof o.field.scale === 'number') {
|
|
72
|
-
vstr = parseFloat(vstr).toFixed(o.field.scale);
|
|
73
|
-
}
|
|
74
|
-
return raw(vstr);
|
|
75
|
-
}
|
|
76
|
-
return v;
|
|
77
|
-
}),
|
|
78
|
-
//Edm.Double IEEE 754 binary64 floating-point number (15-17 decimal digits)
|
|
79
|
-
[EdmType.Double]: EdmParser((v) => (v === 'INF' ? Infinity : v), (v) => (v === Infinity ? 'INF' : v), (v) => raw(v === Infinity ? 'INF' : v.toString())),
|
|
80
|
-
//Edm.Single IEEE 754 binary32 floating-point number (6-9 decimal digits)
|
|
81
|
-
[EdmType.Single]: EdmParser((v) => (v === 'INF' ? Infinity : v), (v) => (v === Infinity ? 'INF' : v), (v) => raw(v === Infinity ? 'INF' : v.toString())),
|
|
82
|
-
//Edm.Binary Binary data
|
|
83
|
-
[EdmType.Binary]: EdmParser((v) => ArrayBuffers.toArrayBuffer(v), (v) => ArrayBuffers.toString(v), (v) => raw(ArrayBuffers.toString(v))),
|
|
84
|
-
};
|
|
85
|
-
/*
|
|
86
|
-
Edm.Stream Binary data stream
|
|
87
|
-
Edm.Geography Abstract base type for all Geography types
|
|
88
|
-
Edm.GeographyPoint A point in a round-earth coordinate system
|
|
89
|
-
Edm.GeographyLineString Line string in a round-earth coordinate system
|
|
90
|
-
Edm.GeographyPolygon Polygon in a round-earth coordinate system
|
|
91
|
-
Edm.GeographyMultiPoint Collection of points in a round-earth coordinate system
|
|
92
|
-
Edm.GeographyMultiLineString Collection of line strings in a round-earth coordinate system
|
|
93
|
-
Edm.GeographyMultiPolygon Collection of polygons in a round-earth coordinate system
|
|
94
|
-
Edm.GeographyCollection Collection of arbitrary Geography values
|
|
95
|
-
Edm.Geometry Abstract base type for all Geometry types
|
|
96
|
-
Edm.GeometryPoint Point in a flat-earth coordinate system
|
|
97
|
-
Edm.GeometryLineString Line string in a flat-earth coordinate system
|
|
98
|
-
Edm.GeometryPolygon Polygon in a flat-earth coordinate system
|
|
99
|
-
Edm.GeometryMultiPoint Collection of points in a flat-earth coordinate system
|
|
100
|
-
Edm.GeometryMultiLineString Collection of line strings in a flat-earth coordinate system
|
|
101
|
-
Edm.GeometryMultiPolygon Collection of polygons in a flat-earth coordinate system
|
|
102
|
-
Edm.GeometryCollection Collection of arbitrary Geometry values
|
|
103
|
-
*/
|
|
104
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZWRtLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vLi4vLi4vLi4vLi4vcHJvamVjdHMvYW5ndWxhci1vZGF0YS9zcmMvbGliL3NjaGVtYS9wYXJzZXJzL2VkbS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sdUJBQXVCLENBQUM7QUFDNUMsT0FBTyxFQUFFLE9BQU8sRUFBMkMsTUFBTSxhQUFhLENBQUM7QUFDL0UsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQ3hELE9BQU8sRUFBWSxTQUFTLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUU1RCw0QkFBNEI7QUFDNUIsTUFBTSxTQUFTLEdBQUcsQ0FDaEIsRUFBZ0QsRUFDaEQsRUFBa0QsRUFDbEQsRUFBa0QsRUFDNUIsRUFBRSxDQUFDLENBQUM7SUFDMUIsV0FBVyxDQUFDLEtBQVUsRUFBRSxPQUFtQztRQUN6RCxPQUFPLEtBQUssQ0FBQyxPQUFPLENBQUMsS0FBSyxDQUFDO1lBQ3pCLENBQUMsQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxFQUFFLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO1lBQ2xDLENBQUMsQ0FBQyxFQUFFLENBQUMsS0FBSyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3pCLENBQUM7SUFDRCxTQUFTLENBQUMsS0FBVSxFQUFFLE9BQW1DO1FBQ3ZELE9BQU8sS0FBSyxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUM7WUFDekIsQ0FBQyxDQUFDLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsT0FBTyxDQUFDLENBQUM7WUFDbEMsQ0FBQyxDQUFDLEVBQUUsQ0FBQyxLQUFLLEVBQUUsT0FBTyxDQUFDLENBQUM7SUFDekIsQ0FBQztJQUNELE1BQU0sQ0FBQyxLQUFVLEVBQUUs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cnQgeyByYXcgfSBmcm9tICcuLi8uLi9yZXNvdXJjZXMvcXVlcnknO1xuaW1wb3J0IHsgRWRtVHlwZSwgRmllbGRQYXJzZXIsIFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zIH0gZnJvbSAnLi4vLi4vdHlwZXMnO1xuaW1wb3J0IHsgQXJyYXlCdWZmZXJzIH0gZnJvbSAnLi4vLi4vdXRpbHMvYXJyYXlidWZmZXJzJztcbmltcG9ydCB7IER1cmF0aW9uLCBEdXJhdGlvbnMgfSBmcm9tICcuLi8uLi91dGlscy9kdXJhdGlvbnMnO1xuXG4vLyBDb3JlIEVkbVR5cGVQYXJzZXJCdWlsZGVyXG5jb25zdCBFZG1QYXJzZXIgPSA8VD4oXG4gIF9kOiAodjogYW55LCBvOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucykgPT4gVCxcbiAgX3M6ICh2OiBhbnksIG86IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zKSA9PiBhbnksXG4gIF9lOiAodjogYW55LCBvOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucykgPT4gYW55XG4pOiBGaWVsZFBhcnNlcjxUIHwgVFtdPiA9PiAoe1xuICBkZXNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyk6IFQgfCBUW10ge1xuICAgIHJldHVybiBBcnJheS5pc0FycmF5KHZhbHVlKVxuICAgICAgPyB2YWx1ZS5tYXAoKHYpID0+IF9kKHYsIG9wdGlvbnMpKVxuICAgICAgOiBfZCh2YWx1ZSwgb3B0aW9ucyk7XG4gIH0sXG4gIHNlcmlhbGl6ZSh2YWx1ZTogYW55LCBvcHRpb25zOiBTdHJ1Y3R1cmVkVHlwZUZpZWxkT3B0aW9ucyk6IGFueSB7XG4gICAgcmV0dXJuIEFycmF5LmlzQXJyYXkodmFsdWUpXG4gICAgICA/IHZhbHVlLm1hcCgodikgPT4gX3Modiwgb3B0aW9ucykpXG4gICAgICA6IF9zKHZhbHVlLCBvcHRpb25zKTtcbiAgfSxcbiAgZW5jb2RlKHZhbHVlOiBhbnksIG9wdGlvbnM6IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zKTogYW55IHtcbiAgICByZXR1cm4gQXJyYXkuaXNBcnJheSh2YWx1ZSlcbiAgICAgID8gdmFsdWUubWFwKCh2KSA9PiBfZSh2LCBvcHRpb25zKSlcbiAgICAgIDogX2UodmFsdWUsIG9wdGlvbnMpO1xuICB9LFxufSk7XG5cbmNvbnN0IElkZW50aXR5ID0gKHY6IGFueSkgPT4gdjtcbmNvbnN0IHRvTnVtYmVyID0gKHY6IGFueSkgPT4gTnVtYmVyKHYpO1xuY29uc3QgdG9TdHJpbmcgPSAodjogYW55KSA9PiB2LnRvU3RyaW5nKCk7XG5jb25zdCB0b0Jvb2xlYW4gPSAodjogYW55KSA9PiBCb29sZWFuKHYpO1xuY29uc3QgdG9EYXRlID0gKHY6IGFueSkgPT4gbmV3IERhdGUodik7XG5cbmV4cG9ydCBjb25zdCBFRE1fUEFSU0VSUzogeyBbdHlwZTogc3RyaW5nXTogRmllbGRQYXJzZXI8YW55PiB9ID0ge1xuICAvL0VkbS5HdWlkIDE2LWJ5dGUgKDEyOC1iaXQpIHVuaXF1ZSBpZGVudGlmaWVyXG4gIFtFZG1UeXBlLkd1aWRdOiBFZG1QYXJzZXI8c3RyaW5nPihJZGVudGl0eSwgSWRlbnRpdHksICh2OiBzdHJpbmcpID0+IHJhdyh2KSksXG4gIC8vRWRtLkludDE2IFNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICBbRWRtVHlwZS5JbnQxNl06IEVkbVBhcnNlcjxudW1iZXI+KHRvTnVtYmVyLCB0b051bWJlciwgdG9OdW1iZXIpLFxuICAvL0VkbS5TdHJpbmcgU2VxdWVuY2Ugb2YgVVRGLTggY2hhcmFjdGVyc1xuICBbRWRtVHlwZS5TdHJpbmddOiBFZG1QYXJzZXI8c3RyaW5nPih0b1N0cmluZywgdG9TdHJpbmcsIHRvU3RyaW5nKSxcbiAgLy9FZG0uQm9vbGVhbiBCaW5hcnktdmFsdWVkIGxvZ2ljXG4gIFtFZG1UeXBlLkJvb2xlYW5dOiBFZG1QYXJzZXI8Ym9vbGVhbj4odG9Cb29sZWFuLCB0b0Jvb2xlYW4sIHRvQm9vbGVhbiksXG4gIC8vRWRtLkJ5dGUgVW5zaWduZWQgOC1iaXQgaW50ZWdlclxuICBbRWRtVHlwZS5CeXRlXTogRWRtUGFyc2VyPG51bWJlcj4odG9OdW1iZXIsIHRvTnVtYmVyLCB0b051bWJlciksXG4gIC8vRWRtLlNCeXRlIFNpZ25lZCA4LWJpdCBpbnRlZ2VyXG4gIFtFZG1UeXBlLlNCeXRlXTogRWRtUGFyc2VyPG51bWJlcj4odG9OdW1iZXIsIHRvTnVtYmVyLCB0b051bWJlciksXG4gIC8vRWRtLkludDMyIFNpZ25lZCAxNi1iaXQgaW50ZWdlclxuICBbRWRtVHlwZS5JbnQzMl06IEVkbVBhcnNlcjxudW1iZXI+KHRvTnVtYmVyLCB0b051bWJlciwgdG9OdW1iZXIpLFxuICAvL0VkbS5JbnQ2NCBTaWduZWQgMTYtYml0IGludGVnZXJcbiAgW0VkbVR5cGUuSW50NjRdOiBFZG1QYXJzZXI8bnVtYmVyPih0b051bWJlciwgdG9OdW1iZXIsIHRvTnVtYmVyKSxcbiAgLy9FZG0uRGF0ZSBEYXRlIHdpdGhvdXQgYSB0aW1lLXpvbmUgb2Zmc2V0XG4gIFtFZG1UeXBlLkRhdGVdOiBFZG1QYXJzZXI8RGF0ZT4oXG4gICAgKHY6IGFueSkgPT4gbmV3IERhdGUoYCR7dn1UMDA6MDA6MDAuMDAwWmApLFxuICAgICh2OiBhbnkpID0+IHRvRGF0ZSh2KS50b0lTT1N0cmluZygpLnN1YnN0cmluZygwLCAxMCksXG4gICAgKHY6IGFueSkgPT4gcmF3KHRvRGF0ZSh2KS50b0lTT1N0cmluZygpLnN1YnN0cmluZygwLCAxMCkpXG4gICksXG4gIC8vRWRtLlRpbWVPZkRheSBDbG9jayB0aW1lIDAwOjAwLTIzOjU5OjU5Ljk5OTk5OTk5OTk5OVxuICBbRWRtVHlwZS5UaW1lT2ZEYXldOiBFZG1QYXJzZXI8RGF0ZT4oXG4gICAgKHY6IGFueSkgPT4gbmV3IERhdGUoYDE5NzAtMDEtMDFUJHt2fVpgKSxcbiAgICAodjogYW55KSA9PiB0b0RhdGUodikudG9JU09TdHJpbmcoKS5zdWJzdHJpbmcoMTEsIDIzKSxcbiAgICAodjogYW55KSA9PiByYXcodG9EYXRlKHYpLnRvSVNPU3RyaW5nKCkuc3Vic3RyaW5nKDExLCAyMykpXG4gICksXG4gIC8vRWRtLkRhdGVUaW1lT2Zmc2V0IERhdGUgYW5kIHRpbWUgd2l0aCBhIHRpbWUtem9uZSBvZmZzZXQsIG5vIGxlYXAgc2Vjb25kc1xuICBbRWRtVHlwZS5EYXRlVGltZU9mZnNldF06IEVkbVBhcnNlcjxEYXRlPihcbiAgICB0b0RhdGUsXG4gICAgKHY6IGFueSkgPT4gdG9EYXRlKHYpLnRvSVNPU3RyaW5nKCksXG4gICAgKHY6IGFueSkgPT4gcmF3KHRvRGF0ZSh2KS50b0lTT1N0cmluZygpKVxuICApLFxuICAvL0VkbS5EdXJhdGlvbiBTaWduZWQgZHVyYXRpb24gaW4gZGF5cywgaG91cnMsIG1pbnV0ZXMsIGFuZCAoc3ViKXNlY29uZHNcbiAgW0VkbVR5cGUuRHVyYXRpb25dOiBFZG1QYXJzZXI8RHVyYXRpb24+KFxuICAgICh2OiBhbnkpID0+IER1cmF0aW9ucy50b0R1cmF0aW9uKHYpLFxuICAgICh2OiBEdXJhdGlvbikgPT4gRHVyYXRpb25zLnRvU3RyaW5nKHYpLFxuICAgICh2OiBEdXJhdGlvbikgPT4gcmF3KER1cmF0aW9ucy50b1N0cmluZyh2KSlcbiAgKSxcbiAgLy9FZG0uRGVjaW1hbCBOdW1lcmljIHZhbHVlcyB3aXRoIGZpeGVkIHByZWNpc2lvbiBhbmQgc2NhbGVcbiAgW0VkbVR5cGUuRGVjaW1hbF06IEVkbVBhcnNlcjxudW1iZXI+KFxuICAgICh2OiBhbnksIG86IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zKSA9PiB7XG4gICAgICBpZiAodHlwZW9mIHYgPT09ICdzdHJpbmcnICYmIG8uaWVlZTc1NENvbXBhdGlibGUpIHtcbiAgICAgICAgcmV0dXJuIHBhcnNlRmxvYXQodik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdjtcbiAgICB9LFxuICAgICh2OiBudW1iZXIsIG86IFN0cnVjdHVyZWRUeXBlRmllbGRPcHRpb25zKSA9PiB7XG4gICAgICBpZiAoby5pZWVlNzU0Q29tcGF0aWJsZSkge1xuICAgICAgICBsZXQgdnN0ciA9IHYudG9QcmVjaXNpb24oby5maWVsZC5wcmVjaXNpb24pO1xuICAgICAgICBpZiAodHlwZW9mIG8uZmllbGQuc2NhbGUgPT09ICdudW1iZXInKSB7XG4gICAgICAgICAgdnN0ciA9IHBhcnNlRmxvYXQodnN0cikudG9GaXhlZChvLmZpZWxkLnNjYWxlKTtcbiAgICAgICAgfVxuICAgICAgICByZXR1cm4gdnN0cjtcbiAgICAgIH1cbiAgICAgIHJldHVybiB2O1xuICAgIH0sXG4gICAgKHY6IG51bWJlciwgbzogU3RydWN0dXJlZFR5cGVGaWVsZE9wdGlvbnMpID0+IHtcbiAgICAgIGlmIChvLmllZWU3NTRDb21wYXRpYmxlKSB7XG4gICAgICAgIGxldCB2c3RyID0gdi50b1ByZWNpc2lvbihvLmZpZWxkLnByZWNpc2lvbik7XG4gICAgICAgIGlmICh0eXBlb2Ygby5maWVsZC5zY2FsZSA9PT0gJ251bWJlcicpIHtcbiAgICAgICAgICB2c3RyID0gcGFyc2VGbG9hdCh2c3RyKS50b0ZpeGVkKG8uZmllbGQuc2NhbGUpO1xuICAgICAgICB9XG4gICAgICAgIHJldHVybiByYXcodnN0cik7XG4gICAgICB9XG4gICAgICByZXR1cm4gdjtcbiAgICB9XG4gICksXG4gIC8vRWRtLkRvdWJsZSBJRUVFIDc1NCBiaW5hcnk2NCBmbG9hdGluZy1wb2ludCBudW1iZXIgKDE1LTE3IGRlY2ltYWwgZGlnaXRzKVxuICBbRWRtVHlwZS5Eb3VibGVdOiBFZG1QYXJzZXI8bnVtYmVyPihcbiAgICAodjogYW55KSA9PiAodiA9PT0gJ0lORicgPyBJbmZpbml0eSA6ICh2IGFzIG51bWJlcikpLFxuICAgICh2OiBudW1iZXIpID0+ICh2ID09PSBJbmZpbml0eSA/ICdJTkYnIDogdiksXG4gICAgKHY6IG51bWJlcikgPT4gcmF3KHYgPT09IEluZmluaXR5ID8gJ0lORicgOiB2LnRvU3RyaW5nKCkpXG4gICksXG4gIC8vRWRtLlNpbmdsZSBJRUVFIDc1NCBiaW5hcnkzMiBmbG9hdGluZy1wb2ludCBudW1iZXIgKDYtOSBkZWNpbWFsIGRpZ2l0cylcbiAgW0VkbVR5cGUuU2luZ2xlXTogRWRtUGFyc2VyPG51bWJlcj4oXG4gICAgKHY6IGFueSkgPT4gKHYgPT09ICdJTkYnID8gSW5maW5pdHkgOiAodiBhcyBudW1iZXIpKSxcbiAgICAodjogbnVtYmVyKSA9PiAodiA9PT0gSW5maW5pdHkgPyAnSU5GJyA6IHYpLFxuICAgICh2OiBudW1iZXIpID0+IHJhdyh2ID09PSBJbmZpbml0eSA/ICdJTkYnIDogdi50b1N0cmluZygpKVxuICApLFxuICAvL0VkbS5CaW5hcnkgQmluYXJ5IGRhdGFcbiAgW0VkbVR5cGUuQmluYXJ5XTogRWRtUGFyc2VyPEFycmF5QnVmZmVyPihcbiAgICAodjogc3RyaW5nKSA9PiBBcnJheUJ1ZmZlcnMudG9BcnJheUJ1ZmZlcih2KSxcbiAgICAodjogQXJyYXlCdWZmZXIpID0+IEFycmF5QnVmZmVycy50b1N0cmluZyh2KSxcbiAgICAodjogQXJyYXlCdWZmZXIpID0+IHJhdyhBcnJheUJ1ZmZlcnMudG9TdHJpbmcodikpXG4gICksXG59O1xuXG4vKlxuRWRtLlN0cmVhbSBCaW5hcnkgZGF0YSBzdHJlYW1cbkVkbS5HZW9ncmFwaHkgQWJzdHJhY3QgYmFzZSB0eXBlIGZvciBhbGwgR2VvZ3JhcGh5IHR5cGVzXG5FZG0uR2VvZ3JhcGh5UG9pbnQgQSBwb2ludCBpbiBhIHJvdW5kLWVhcnRoIGNvb3JkaW5hdGUgc3lzdGVtXG5FZG0uR2VvZ3JhcGh5TGluZVN0cmluZyBMaW5lIHN0cmluZyBpbiBhIHJvdW5kLWVhcnRoIGNvb3JkaW5hdGUgc3lzdGVtXG5FZG0uR2VvZ3JhcGh5UG9seWdvbiBQb2x5Z29uIGluIGEgcm91bmQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9ncmFwaHlNdWx0aVBvaW50IENvbGxlY3Rpb24gb2YgcG9pbnRzIGluIGEgcm91bmQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9ncmFwaHlNdWx0aUxpbmVTdHJpbmcgQ29sbGVjdGlvbiBvZiBsaW5lIHN0cmluZ3MgaW4gYSByb3VuZC1lYXJ0aCBjb29yZGluYXRlIHN5c3RlbVxuRWRtLkdlb2dyYXBoeU11bHRpUG9seWdvbiBDb2xsZWN0aW9uIG9mIHBvbHlnb25zIGluIGEgcm91bmQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9ncmFwaHlDb2xsZWN0aW9uIENvbGxlY3Rpb24gb2YgYXJiaXRyYXJ5IEdlb2dyYXBoeSB2YWx1ZXNcbkVkbS5HZW9tZXRyeSBBYnN0cmFjdCBiYXNlIHR5cGUgZm9yIGFsbCBHZW9tZXRyeSB0eXBlc1xuRWRtLkdlb21ldHJ5UG9pbnQgUG9pbnQgaW4gYSBmbGF0LWVhcnRoIGNvb3JkaW5hdGUgc3lzdGVtXG5FZG0uR2VvbWV0cnlMaW5lU3RyaW5nIExpbmUgc3RyaW5nIGluIGEgZmxhdC1lYXJ0aCBjb29yZGluYXRlIHN5c3RlbVxuRWRtLkdlb21ldHJ5UG9seWdvbiBQb2x5Z29uIGluIGEgZmxhdC1lYXJ0aCBjb29yZGluYXRlIHN5c3RlbVxuRWRtLkdlb21ldHJ5TXVsdGlQb2ludCBDb2xsZWN0aW9uIG9mIHBvaW50cyBpbiBhIGZsYXQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9tZXRyeU11bHRpTGluZVN0cmluZyBDb2xsZWN0aW9uIG9mIGxpbmUgc3RyaW5ncyBpbiBhIGZsYXQtZWFydGggY29vcmRpbmF0ZSBzeXN0ZW1cbkVkbS5HZW9tZXRyeU11bHRpUG9seWdvbiBDb2xsZWN0aW9uIG9mIHBvbHlnb25zIGluIGEgZmxhdC1lYXJ0aCBjb29yZGluYXRlIHN5c3RlbVxuRWRtLkdlb21ldHJ5Q29sbGVjdGlvbiBDb2xsZWN0aW9uIG9mIGFyYml0cmFyeSBHZW9tZXRyeSB2YWx1ZXNcbiovXG4iXX0=
|