@aws-sdk/signature-v4-crt 3.34.0 → 3.35.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/CHANGELOG.md +8 -0
- package/dist-cjs/CrtSignerV4.js +124 -0
- package/dist-cjs/constants.js +47 -0
- package/dist-cjs/headerUtil.js +33 -0
- package/{dist/cjs → dist-cjs}/index.js +1 -1
- package/dist-cjs/suite.fixture.js +387 -0
- package/dist-es/CrtSignerV4.js +219 -0
- package/dist-es/constants.js +44 -0
- package/dist-es/headerUtil.js +61 -0
- package/dist-es/index.js +2 -0
- package/dist-es/suite.fixture.js +384 -0
- package/{dist/types → dist-types}/CrtSignerV4.d.ts +0 -0
- package/{dist/types → dist-types}/constants.d.ts +0 -0
- package/{dist/types → dist-types}/headerUtil.d.ts +0 -0
- package/{dist/types → dist-types}/index.d.ts +0 -0
- package/{dist/types → dist-types}/suite.fixture.d.ts +0 -0
- package/{dist/types → dist-types}/ts3.4/CrtSignerV4.d.ts +0 -0
- package/{dist/types → dist-types}/ts3.4/constants.d.ts +0 -0
- package/{dist/types → dist-types}/ts3.4/headerUtil.d.ts +0 -0
- package/{dist/types → dist-types}/ts3.4/index.d.ts +0 -0
- package/{dist/types → dist-types}/ts3.4/suite.fixture.d.ts +0 -0
- package/package.json +13 -13
- package/tsconfig.cjs.json +1 -1
- package/tsconfig.cjs.tsbuildinfo +1 -0
- package/tsconfig.es.json +2 -6
- package/tsconfig.es.tsbuildinfo +1 -0
- package/tsconfig.types.json +1 -1
- package/tsconfig.types.tsbuildinfo +1 -1
- package/dist/cjs/CrtSignerV4.js +0 -124
- package/dist/cjs/constants.js +0 -47
- package/dist/cjs/headerUtil.js +0 -33
- package/dist/cjs/suite.fixture.js +0 -387
- package/dist/es/CrtSignerV4.js +0 -254
- package/dist/es/constants.js +0 -44
- package/dist/es/headerUtil.js +0 -63
- package/dist/es/index.js +0 -2
- package/dist/es/suite.fixture.js +0 -404
- package/dist/tsconfig.cjs.tsbuildinfo +0 -1
- package/dist/tsconfig.es.tsbuildinfo +0 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
All notable changes to this project will be documented in this file.
|
|
4
4
|
See [Conventional Commits](https://conventionalcommits.org) for commit guidelines.
|
|
5
5
|
|
|
6
|
+
# [3.35.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.34.0...v3.35.0) (2021-10-04)
|
|
7
|
+
|
|
8
|
+
**Note:** Version bump only for package @aws-sdk/signature-v4-crt
|
|
9
|
+
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
|
|
6
14
|
# [3.34.0](https://github.com/aws/aws-sdk-js-v3/compare/v3.33.0...v3.34.0) (2021-09-24)
|
|
7
15
|
|
|
8
16
|
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CrtSignerV4 = void 0;
|
|
4
|
+
const querystring_parser_1 = require("@aws-sdk/querystring-parser");
|
|
5
|
+
const signature_v4_1 = require("@aws-sdk/signature-v4");
|
|
6
|
+
const aws_crt_1 = require("aws-crt");
|
|
7
|
+
const constants_1 = require("./constants");
|
|
8
|
+
const headerUtil_1 = require("./headerUtil");
|
|
9
|
+
function sdkHttpRequest2crtHttpRequest(sdkRequest) {
|
|
10
|
+
headerUtil_1.deleteHeader(constants_1.SHA256_HEADER, sdkRequest.headers);
|
|
11
|
+
const headersArray = Object.entries(sdkRequest.headers);
|
|
12
|
+
const crtHttpHeaders = new aws_crt_1.http.HttpHeaders(headersArray);
|
|
13
|
+
const queryString = signature_v4_1.getCanonicalQuery(sdkRequest);
|
|
14
|
+
return new aws_crt_1.http.HttpRequest(sdkRequest.method, sdkRequest.path + "?" + queryString, crtHttpHeaders);
|
|
15
|
+
}
|
|
16
|
+
class CrtSignerV4 {
|
|
17
|
+
constructor({ credentials, region, service, sha256, applyChecksum = true, uriEscapePath = true, signingAlgorithm = aws_crt_1.auth.AwsSigningAlgorithm.SigV4, }) {
|
|
18
|
+
this.service = service;
|
|
19
|
+
this.sha256 = sha256;
|
|
20
|
+
this.uriEscapePath = uriEscapePath;
|
|
21
|
+
this.signingAlgorithm = signingAlgorithm;
|
|
22
|
+
this.applyChecksum = applyChecksum;
|
|
23
|
+
this.regionProvider = signature_v4_1.normalizeRegionProvider(region);
|
|
24
|
+
this.credentialProvider = signature_v4_1.normalizeCredentialsProvider(credentials);
|
|
25
|
+
aws_crt_1.io.enable_logging(aws_crt_1.io.LogLevel.ERROR);
|
|
26
|
+
}
|
|
27
|
+
async options2crtConfigure({ signingDate = new Date(), signableHeaders, unsignableHeaders, signingRegion, signingService, } = {}, viaHeader, payloadHash, expiresIn) {
|
|
28
|
+
const credentials = await this.credentialProvider();
|
|
29
|
+
const region = signingRegion !== null && signingRegion !== void 0 ? signingRegion : (await this.regionProvider());
|
|
30
|
+
const service = signingService !== null && signingService !== void 0 ? signingService : this.service;
|
|
31
|
+
if ((signableHeaders === null || signableHeaders === void 0 ? void 0 : signableHeaders.has("x-amzn-trace-id")) || (signableHeaders === null || signableHeaders === void 0 ? void 0 : signableHeaders.has("user-agent"))) {
|
|
32
|
+
throw new Error("internal check (x-amzn-trace-id, user-agent) is not supported to be included to sign with CRT.");
|
|
33
|
+
}
|
|
34
|
+
const headersUnsignable = getHeadersUnsignable(unsignableHeaders, signableHeaders);
|
|
35
|
+
return {
|
|
36
|
+
algorithm: this.signingAlgorithm,
|
|
37
|
+
signature_type: viaHeader
|
|
38
|
+
? aws_crt_1.auth.AwsSignatureType.HttpRequestViaHeaders
|
|
39
|
+
: aws_crt_1.auth.AwsSignatureType.HttpRequestViaQueryParams,
|
|
40
|
+
provider: sdk2crtCredentialsProvider(credentials),
|
|
41
|
+
region: region,
|
|
42
|
+
service: service,
|
|
43
|
+
date: new Date(signingDate),
|
|
44
|
+
header_blacklist: headersUnsignable,
|
|
45
|
+
use_double_uri_encode: this.uriEscapePath,
|
|
46
|
+
signed_body_value: payloadHash,
|
|
47
|
+
signed_body_header: this.applyChecksum && viaHeader
|
|
48
|
+
? aws_crt_1.auth.AwsSignedBodyHeaderType.XAmzContentSha256
|
|
49
|
+
: aws_crt_1.auth.AwsSignedBodyHeaderType.None,
|
|
50
|
+
expiration_in_seconds: expiresIn,
|
|
51
|
+
};
|
|
52
|
+
}
|
|
53
|
+
async presign(originalRequest, options = {}) {
|
|
54
|
+
if (options.expiresIn && options.expiresIn > constants_1.MAX_PRESIGNED_TTL) {
|
|
55
|
+
return Promise.reject("Signature version 4 presigned URLs" + " must have an expiration date less than one week in" + " the future");
|
|
56
|
+
}
|
|
57
|
+
const request = signature_v4_1.moveHeadersToQuery(signature_v4_1.prepareRequest(originalRequest));
|
|
58
|
+
const crtSignedRequest = await this.signRequest(request, await this.options2crtConfigure(options, false, await signature_v4_1.getPayloadHash(originalRequest, this.sha256), options.expiresIn ? options.expiresIn : 3600));
|
|
59
|
+
request.query = this.getQueryParam(crtSignedRequest.path);
|
|
60
|
+
return request;
|
|
61
|
+
}
|
|
62
|
+
async sign(toSign, options) {
|
|
63
|
+
const request = signature_v4_1.prepareRequest(toSign);
|
|
64
|
+
const crtSignedRequest = await this.signRequest(request, await this.options2crtConfigure(options, true, await signature_v4_1.getPayloadHash(toSign, this.sha256)));
|
|
65
|
+
request.headers = crtSignedRequest.headers._flatten().reduce((acc, [key, value]) => ({ ...acc, [key]: value }), {});
|
|
66
|
+
return request;
|
|
67
|
+
}
|
|
68
|
+
getQueryParam(crtPath) {
|
|
69
|
+
const start = crtPath.search(/\?/);
|
|
70
|
+
const startHash = crtPath.search(/\#/);
|
|
71
|
+
const end = startHash == -1 ? undefined : startHash;
|
|
72
|
+
const queryParam = {};
|
|
73
|
+
if (start == -1) {
|
|
74
|
+
return queryParam;
|
|
75
|
+
}
|
|
76
|
+
const queryString = crtPath.slice(start + 1, end);
|
|
77
|
+
return querystring_parser_1.parseQueryString(queryString);
|
|
78
|
+
}
|
|
79
|
+
async signRequest(requestToSign, crtConfig) {
|
|
80
|
+
const request = sdkHttpRequest2crtHttpRequest(requestToSign);
|
|
81
|
+
try {
|
|
82
|
+
return await aws_crt_1.auth.aws_sign_request(request, crtConfig);
|
|
83
|
+
}
|
|
84
|
+
catch (error) {
|
|
85
|
+
throw new Error(error);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
async verifySigv4aSigning(request, signature, expectedCanonicalRequest, eccPubKeyX, eccPubKeyY, options = {}) {
|
|
89
|
+
const sdkRequest = signature_v4_1.prepareRequest(request);
|
|
90
|
+
const crtRequest = sdkHttpRequest2crtHttpRequest(sdkRequest);
|
|
91
|
+
const payloadHash = await signature_v4_1.getPayloadHash(request, this.sha256);
|
|
92
|
+
const crtConfig = await this.options2crtConfigure(options, true, payloadHash);
|
|
93
|
+
return aws_crt_1.auth.aws_verify_sigv4a_signing(crtRequest, crtConfig, expectedCanonicalRequest, signature, eccPubKeyX, eccPubKeyY);
|
|
94
|
+
}
|
|
95
|
+
async verifySigv4aPreSigning(request, signature, expectedCanonicalRequest, eccPubKeyX, eccPubKeyY, options = {}) {
|
|
96
|
+
if (typeof signature != "string") {
|
|
97
|
+
return false;
|
|
98
|
+
}
|
|
99
|
+
const sdkRequest = signature_v4_1.prepareRequest(request);
|
|
100
|
+
const crtRequest = sdkHttpRequest2crtHttpRequest(sdkRequest);
|
|
101
|
+
const crtConfig = await this.options2crtConfigure(options, false, await signature_v4_1.getPayloadHash(request, this.sha256), options.expiresIn ? options.expiresIn : 3600);
|
|
102
|
+
return aws_crt_1.auth.aws_verify_sigv4a_signing(crtRequest, crtConfig, expectedCanonicalRequest, signature, eccPubKeyX, eccPubKeyY);
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
exports.CrtSignerV4 = CrtSignerV4;
|
|
106
|
+
function sdk2crtCredentialsProvider(credentials) {
|
|
107
|
+
return aws_crt_1.auth.AwsCredentialsProvider.newStatic(credentials.accessKeyId, credentials.secretAccessKey, credentials.sessionToken);
|
|
108
|
+
}
|
|
109
|
+
function getHeadersUnsignable(unsignableHeaders, signableHeaders) {
|
|
110
|
+
if (!unsignableHeaders) {
|
|
111
|
+
return [];
|
|
112
|
+
}
|
|
113
|
+
if (!signableHeaders) {
|
|
114
|
+
return [...unsignableHeaders];
|
|
115
|
+
}
|
|
116
|
+
const result = new Set([...unsignableHeaders]);
|
|
117
|
+
for (let it = signableHeaders.values(), val = null; (val = it.next().value);) {
|
|
118
|
+
if (result.has(val)) {
|
|
119
|
+
result.delete(val);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
return [...result];
|
|
123
|
+
}
|
|
124
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ3J0U2lnbmVyVjQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvQ3J0U2lnbmVyVjQudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsb0VBQStEO0FBQy9ELHdEQVMrQjtBQVcvQixxQ0FBd0U7QUFFeEUsMkNBQStEO0FBQy9ELDZDQUE0QztBQUs1QyxTQUFTLDZCQUE2QixDQUFDLFVBQXVCO0lBRTVELHlCQUFZLENBQUMseUJBQWEsRUFBRSxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDaEQsTUFBTSxZQUFZLEdBQUcsTUFBTSxDQUFDLE9BQU8sQ0FBQyxVQUFVLENBQUMsT0FBTyxDQUFDLENBQUM7SUFDeEQsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFPLENBQUMsV0FBVyxDQUFDLFlBQVksQ0FBQyxDQUFDO0lBQzdELE1BQU0sV0FBVyxHQUFHLGdDQUFpQixDQUFDLFVBQVUsQ0FBQyxDQUFDO0lBTWxELE9BQU8sSUFBSSxjQUFPLENBQUMsV0FBVyxDQUFDLFVBQVUsQ0FBQyxNQUFNLEVBQUUsVUFBVSxDQUFDLElBQUksR0FBRyxHQUFHLEdBQUcsV0FBVyxFQUFFLGNBQWMsQ0FBQyxDQUFDO0FBQ3pHLENBQUM7QUFvQkQsTUFBYSxXQUFXO0lBU3RCLFlBQVksRUFDVixXQUFXLEVBQ1gsTUFBTSxFQUNOLE9BQU8sRUFDUCxNQUFNLEVBQ04sYUFBYSxHQUFHLElBQUksRUFDcEIsYUFBYSxHQUFHLElBQUksRUFDcEIsZ0JBQWdCLEdBQUcsY0FBTyxDQUFDLG1CQUFtQixDQUFDLEtBQUssR0FDWjtRQUN4QyxJQUFJLENBQUMsT0FBTyxHQUFHLE9BQU8sQ0FBQztRQUN2QixJQUFJLENBQUMsTUFBTSxHQUFHLE1BQU0sQ0FBQztRQUNyQixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztRQUNuQyxJQUFJLENBQUMsZ0JBQWdCLEdBQUcsZ0JBQWdCLENBQUM7UUFDekMsSUFBSSxDQUFDLGFBQWEsR0FBRyxhQUFhLENBQUM7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RyxpQkFBaUIsQ0FBQyxDQUFDLENBQUM7SUFDL0MsS0FBSyxJQUFJLEVBQUUsR0FBRyxlQUFlLENBQUMsTUFBTSxFQUFFLEVBQUUsR0FBRyxHQUFHLElBQUksRUFBRSxDQUFDLEdBQUcsR0FBRyxFQUFFLENBQUMsSUFBSSxFQUFFLENBQUMsS0FBSyxDQUFDLEdBQUk7UUFDN0UsSUFBSSxNQUFNLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxFQUFFO1lBQ25CLE1BQU0sQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUM7U0FDcEI7S0FDRjtJQUNELE9BQU8sQ0FBQyxHQUFHLE1BQU0sQ0FBQyxDQUFDO0FBQ3JCLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBwYXJzZVF1ZXJ5U3RyaW5nIH0gZnJvbSBcIkBhd3Mtc2RrL3F1ZXJ5c3RyaW5nLXBhcnNlclwiO1xuaW1wb3J0IHtcbiAgZ2V0Q2Fub25pY2FsUXVlcnksXG4gIGdldFBheWxvYWRIYXNoLFxuICBtb3ZlSGVhZGVyc1RvUXVlcnksXG4gIG5vcm1hbGl6ZUNyZWRlbnRpYWxzUHJvdmlkZXIsXG4gIG5vcm1hbGl6ZVJlZ2lvblByb3ZpZGVyLFxuICBwcmVwYXJlUmVxdWVzdCxcbiAgU2lnbmF0dXJlVjRDcnlwdG9Jbml0LFxuICBTaWduYXR1cmVWNEluaXQsXG59IGZyb20gXCJAYXdzLXNkay9zaWduYXR1cmUtdjRcIjtcbmltcG9ydCB7XG4gIENyZWRlbnRpYWxzLFxuICBIdHRwUmVxdWVzdCxcbiAgUHJvdmlkZXIsXG4gIFF1ZXJ5UGFyYW1ldGVyQmFnLFxuICBSZXF1ZXN0UHJlc2lnbmVyLFxuICBSZXF1ZXN0UHJlc2lnbmluZ0FyZ3VtZW50cyxcbiAgUmVxdWVzdFNpZ25lcixcbiAgUmVxdWVzdFNpZ25pbmdBcmd1bWVudHMsXG59IGZyb20gXCJAYXdzLXNkay90eXBlc1wiO1xuaW1wb3J0IHsgYXV0aCBhcyBjcnRBdXRoLCBodHRwIGFzIGNydEh0dHAsIGlvIGFzIGNydElPIH0gZnJvbSBcImF3cy1jcnRcIjtcblxuaW1wb3J0IHsgTUFYX1BSRVNJR05FRF9UVEwsIFNIQTI1Nl9IRUFERVIgfSBmcm9tIFwiLi9jb25zdGFudHNcIjtcbmltcG9ydCB7IGRlbGV0ZUhlYWRlciB9IGZyb20gXCIuL2hlYWRlclV0aWxcIjtcblxuZXhwb3J0IHR5cGUgQXdzU2lnbmluZ0FsZ29yaXRobSA9IGNydEF1dGguQXdzU2lnbmluZ0FsZ29yaXRobTtcblxuLyogcHJpdmF0ZSBmdW5jdGlvbiB0byBjb252ZXJ0IHNkayBIdHRwIHJlcXVlc3QgdG8gY3J0IEh0dHAgcmVxdWVzdCAqL1xuZnVuY3Rpb24gc2RrSHR0cFJlcXVlc3QyY3J0SHR0cFJlcXVlc3Qoc2RrUmVxdWVzdDogSHR0cFJlcXVlc3QpOiBjcnRIdHRwLkh0dHBSZXF1ZXN0IHtcbiAgLyogUmVtb3ZlIHRoZSB4LWFtei1jb250ZW50LXNoYTI1NiBoZWFkZXIsIGlmIGV4aXN0cyAqL1xuICBkZWxldGVIZWFkZXIoU0hBMjU2X0hFQURFUiwgc2RrUmVxdWVzdC5oZWFkZXJzKTtcbiAgY29uc3QgaGVhZGVyc0FycmF5ID0gT2JqZWN0LmVudHJpZXMoc2RrUmVxdWVzdC5oZWFkZXJzKTtcbiAgY29uc3QgY3J0SHR0cEhlYWRlcnMgPSBuZXcgY3J0SHR0cC5IdHRwSGVhZGVycyhoZWFkZXJzQXJyYXkpO1xuICBjb25zdCBxdWVyeVN0cmluZyA9IGdldENhbm9uaWNhbFF1ZXJ5KHNka1JlcXVlc3QpO1xuXG4gIC8qKlxuICAgKiBOb3QgY29udmVydGluZyB0aGUgYm9keSB0byB0aGUgY3J0UmVxdWVzdC4gRm9yIG5vdywgaXQncyBiZXR0ZXIgdG8gZ2V0IHRoZSBwYXlsb2FkIEhhc2ggZnJvbSBTREsuXG4gICAqIFRoZSBib2R5IHZhbHVlIHdpbGwgYmUgc2V0IGZyb20gY29uZmlnLlxuICAgKi9cbiAgcmV0dXJuIG5ldyBjcnRIdHRwLkh0dHBSZXF1ZXN0KHNka1JlcXVlc3QubWV0aG9kLCBzZGtSZXF1ZXN0LnBhdGggKyBcIj9cIiArIHF1ZXJ5U3RyaW5nLCBjcnRIdHRwSGVhZGVycyk7XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgQ3J0U2lnbmVyVjRJbml0IGV4dGVuZHMgU2lnbmF0dXJlVjRJbml0IHtcbiAgLyoqXG4gICAqIFRoZSBBbGdvcml0aG0gdXNlZCBmb3IgdGhlIHNpZ25lci4gSW5jbHVkZXM6IFNpZ1Y0LCBTaWdWNEFzeW1tZXRyaWMuXG4gICAqXG4gICAqIEBkZWZhdWx0IFtTaWdWNF1cbiAgICovXG4gIHNpZ25pbmdBbGdvcml0aG0/OiBBd3NTaWduaW5nQWxnb3JpdGhtO1xufVxuXG4vKipcbiAqIEJhc2VkIGF3cy1jcnQsIHdpdGggdGhlIHNhbWUgQVBJIGFzIHNpZ25pbmcgdGhlIHJlcXVlc3QgZnJvbSBTaWduYXR1cmVWNCwgY29tcGF0aWJsZSB3aXRoIHJlcXVlc3QgU2lnbmVyIGZyb20gU0RLLlxuICogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB0aGVtIGlzIENydFNpZ25lclY0IG9ubHkgc3VwcG9ydHMgc2lnbmluZy9wcmVzaWduaW5nIHRoZSByZXF1ZXN0LiBUaGUgYmVoYXZpb3Igb2YgdHdvIHNpZ25lcnNcbiAqIGFyZSBzbGlnaHRseSBkaWZmZXJlbnQsIGluY2x1ZGVzIHRoZSBjYXNlIG9mIGhlYWRlcnMgbmFtZSBhZnRlciBzaWduaW5nIGFuZCB0aGUgQ3J0U2lnbmVyVjQgZG9lcyBOT1Qgc3VwcG9ydCBvdmVyd3JpdGVcbiAqIHRoZSBpbnRlcm5hbCBjaGVjayBhZ2FpbnN0ICh4LWFtem4tdHJhY2UtaWQsIHVzZXItYWdlbnQpLCB3aGljaCB3aWxsIGFsd2F5cyBiZSBza2lwcGVkLlxuICogTW9zdCBpbXBvcnRhbnRseSwgQ3J0U2lnbmVyVjQgc3VwcG9ydHMgU2lnbmF0dXJlIFY0IEFzeW1tZXRyaWMuXG4gKlxuICogTm90ZTogYXdzLWNydCB0aGF0IHN1cHBvcnRzIFNpZ1Y0QSBpcyBzdGlsbCBhIHByaXZhdGUgcmVwbyBodHRwczovL2dpdGh1Yi5jb20vYXdzbGFicy9hd3MtY3J0LW5vZGVqcy1zdGFnaW5nL3RyZWUvc2lndjRhLWJpbmRpbmdcbiAqL1xuZXhwb3J0IGNsYXNzIENydFNpZ25lclY0IGltcGxlbWVudHMgUmVxdWVzdFByZXNpZ25lciwgUmVxdWVzdFNpZ25lciB7XG4gIHByaXZhdGUgcmVhZG9ubHkgc2VydmljZTogc3RyaW5nO1xuICBwcml2YXRlIHJlYWRvbmx5IHJlZ2lvblByb3ZpZGVyOiBQcm92aWRlcjxzdHJpbmc+O1xuICBwcml2YXRlIHJlYWRvbmx5IGNyZWRlbnRpYWxQcm92aWRlcjogUHJvdmlkZXI8Q3JlZGVudGlhbHM+O1xuICBwcml2YXRlIHJlYWRvbmx5IHNoYTI1NjogYW55O1xuICBwcml2YXRlIHJlYWRvbmx5IHVyaUVzY2FwZVBhdGg6IGJvb2xlYW47XG4gIHByaXZhdGUgcmVhZG9ubHkgYXBwbHlDaGVja3N1bTogYm9vbGVhbjtcbiAgcHJpdmF0ZSByZWFkb25seSBzaWduaW5nQWxnb3JpdGhtOiBBd3NTaWduaW5nQWxnb3JpdGhtO1xuXG4gIGNvbnN0cnVjdG9yKHtcbiAgICBjcmVkZW50aWFscyxcbiAgICByZWdpb24sXG4gICAgc2VydmljZSxcbiAgICBzaGEyNTYsXG4gICAgYXBwbHlDaGVja3N1bSA9IHRydWUsXG4gICAgdXJpRXNjYXBlUGF0aCA9IHRydWUsXG4gICAgc2lnbmluZ0FsZ29yaXRobSA9IGNydEF1dGguQXdzU2lnbmluZ0FsZ29yaXRobS5TaWdWNCxcbiAgfTogQ3J0U2lnbmVyVjRJbml0ICYgU2lnbmF0dXJlVjRDcnlwdG9Jbml0KSB7XG4gICAgdGhpcy5zZXJ2aWNlID0gc2VydmljZTtcbiAgICB0aGlzLnNoYTI1NiA9IHNoYTI1NjtcbiAgICB0aGlzLnVyaUVzY2FwZVBhdGggPSB1cmlFc2NhcGVQYXRoO1xuICAgIHRoaXMuc2lnbmluZ0FsZ29yaXRobSA9IHNpZ25pbmdBbGdvcml0aG07XG4gICAgdGhpcy5hcHBseUNoZWNrc3VtID0gYXBwbHlDaGVja3N1bTtcbiAgICB0aGlzLnJlZ2lvblByb3ZpZGVyID0gbm9ybWFsaXplUmVnaW9uUHJvdmlkZXIocmVnaW9uKTtcbiAgICB0aGlzLmNyZWRlbnRpYWxQcm92aWRlciA9IG5vcm1hbGl6ZUNyZWRlbnRpYWxzUHJvdmlkZXIoY3JlZGVudGlhbHMpO1xuICAgIGNydElPLmVuYWJsZV9sb2dnaW5nKGNydElPLkxvZ0xldmVsLkVSUk9SKTtcbiAgfVxuXG4gIHByaXZhdGUgYXN5bmMgb3B0aW9uczJjcnRDb25maWd1cmUoXG4gICAge1xuICAgICAgc2lnbmluZ0RhdGUgPSBuZXcgRGF0ZSgpLFxuICAgICAgc2lnbmFibGVIZWFkZXJzLFxuICAgICAgdW5zaWduYWJsZUhlYWRlcnMsXG4gICAgICBzaWduaW5nUmVnaW9uLFxuICAgICAgc2lnbmluZ1NlcnZpY2UsXG4gICAgfTogUmVxdWVzdFNpZ25pbmdBcmd1bWVudHMgfCBSZXF1ZXN0UHJlc2lnbmluZ0FyZ3VtZW50cyB8IHVuZGVmaW5lZCA9IHt9LFxuICAgIHZpYUhlYWRlcjogQm9vbGVhbixcbiAgICBwYXlsb2FkSGFzaDogc3RyaW5nLFxuICAgIGV4cGlyZXNJbj86IG51bWJlclxuICApOiBQcm9taXNlPGNydEF1dGguQXdzU2lnbmluZ0NvbmZpZz4ge1xuICAgIGNvbnN0IGNyZWRlbnRpYWxzID0gYXdhaXQgdGhpcy5jcmVkZW50aWFsUHJvdmlkZXIoKTtcbiAgICBjb25zdCByZWdpb24gPSBzaWduaW5nUmVnaW9uID8/IChhd2FpdCB0aGlzLnJlZ2lvblByb3ZpZGVyKCkpO1xuICAgIGNvbnN0IHNlcnZpY2UgPSBzaWduaW5nU2VydmljZSA/PyB0aGlzLnNlcnZpY2U7XG4gICAgaWYgKHNpZ25hYmxlSGVhZGVycz8uaGFzKFwieC1hbXpuLXRyYWNlLWlkXCIpIHx8IHNpZ25hYmxlSGVhZGVycz8uaGFzKFwidXNlci1hZ2VudFwiKSkge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKFwiaW50ZXJuYWwgY2hlY2sgKHgtYW16bi10cmFjZS1pZCwgdXNlci1hZ2VudCkgaXMgbm90IHN1cHBvcnRlZCB0byBiZSBpbmNsdWRlZCB0byBzaWduIHdpdGggQ1JULlwiKTtcbiAgICB9XG4gICAgY29uc3QgaGVhZGVyc1Vuc2lnbmFibGUgPSBnZXRIZWFkZXJzVW5zaWduYWJsZSh1bnNpZ25hYmxlSGVhZGVycywgc2lnbmFibGVIZWFkZXJzKTtcbiAgICByZXR1cm4ge1xuICAgICAgYWxnb3JpdGhtOiB0aGlzLnNpZ25pbmdBbGdvcml0aG0sXG4gICAgICBzaWduYXR1cmVfdHlwZTogdmlhSGVhZGVyXG4gICAgICAgID8gY3J0QXV0aC5Bd3NTaWduYXR1cmVUeXBlLkh0dHBSZXF1ZXN0VmlhSGVhZGVyc1xuICAgICAgICA6IGNydEF1dGguQXdzU2lnbmF0dXJlVHlwZS5IdHRwUmVxdWVzdFZpYVF1ZXJ5UGFyYW1zLFxuICAgICAgcHJvdmlkZXI6IHNkazJjcnRDcmVkZW50aWFsc1Byb3ZpZGVyKGNyZWRlbnRpYWxzKSxcbiAgICAgIHJlZ2lvbjogcmVnaW9uLFxuICAgICAgc2VydmljZTogc2VydmljZSxcbiAgICAgIGRhdGU6IG5ldyBEYXRlKHNpZ25pbmdEYXRlKSxcbiAgICAgIGhlYWRlcl9ibGFja2xpc3Q6IGhlYWRlcnNVbnNpZ25hYmxlLFxuICAgICAgdXNlX2RvdWJsZV91cmlfZW5jb2RlOiB0aGlzLnVyaUVzY2FwZVBhdGgsXG4gICAgICAvKiBBbHdheXMgc2V0IHRoZSBib2R5IHZhbHVlIGJ5IHRoZSByZXN1bHQgZnJvbSBTREsgKi9cbiAgICAgIHNpZ25lZF9ib2R5X3ZhbHVlOiBwYXlsb2FkSGFzaCxcbiAgICAgIHNpZ25lZF9ib2R5X2hlYWRlcjpcbiAgICAgICAgdGhpcy5hcHBseUNoZWNrc3VtICYmIHZpYUhlYWRlclxuICAgICAgICAgID8gY3J0QXV0aC5Bd3NTaWduZWRCb2R5SGVhZGVyVHlwZS5YQW16Q29udGVudFNoYTI1NlxuICAgICAgICAgIDogY3J0QXV0aC5Bd3NTaWduZWRCb2R5SGVhZGVyVHlwZS5Ob25lLFxuICAgICAgZXhwaXJhdGlvbl9pbl9zZWNvbmRzOiBleHBpcmVzSW4sXG4gICAgfTtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBwcmVzaWduKG9yaWdpbmFsUmVxdWVzdDogSHR0cFJlcXVlc3QsIG9wdGlvbnM6IFJlcXVlc3RQcmVzaWduaW5nQXJndW1lbnRzID0ge30pOiBQcm9taXNlPEh0dHBSZXF1ZXN0PiB7XG4gICAgaWYgKG9wdGlvbnMuZXhwaXJlc0luICYmIG9wdGlvbnMuZXhwaXJlc0luID4gTUFYX1BSRVNJR05FRF9UVEwpIHtcbiAgICAgIHJldHVybiBQcm9taXNlLnJlamVjdChcbiAgICAgICAgXCJTaWduYXR1cmUgdmVyc2lvbiA0IHByZXNpZ25lZCBVUkxzXCIgKyBcIiBtdXN0IGhhdmUgYW4gZXhwaXJhdGlvbiBkYXRlIGxlc3MgdGhhbiBvbmUgd2VlayBpblwiICsgXCIgdGhlIGZ1dHVyZVwiXG4gICAgICApO1xuICAgIH1cbiAgICBjb25zdCByZXF1ZXN0ID0gbW92ZUhlYWRlcnNUb1F1ZXJ5KHByZXBhcmVSZXF1ZXN0KG9yaWdpbmFsUmVxdWVzdCkpO1xuXG4gICAgY29uc3QgY3J0U2lnbmVkUmVxdWVzdCA9IGF3YWl0IHRoaXMuc2lnblJlcXVlc3QoXG4gICAgICByZXF1ZXN0LFxuICAgICAgYXdhaXQgdGhpcy5vcHRpb25zMmNydENvbmZpZ3VyZShcbiAgICAgICAgb3B0aW9ucyxcbiAgICAgICAgZmFsc2UgLyogdmlhSGVhZGVyICovLFxuICAgICAgICBhd2FpdCBnZXRQYXlsb2FkSGFzaChvcmlnaW5hbFJlcXVlc3QsIHRoaXMuc2hhMjU2KSxcbiAgICAgICAgb3B0aW9ucy5leHBpcmVzSW4gPyBvcHRpb25zLmV4cGlyZXNJbiA6IDM2MDBcbiAgICAgIClcbiAgICApO1xuICAgIHJlcXVlc3QucXVlcnkgPSB0aGlzLmdldFF1ZXJ5UGFyYW0oY3J0U2lnbmVkUmVxdWVzdC5wYXRoKTtcbiAgICByZXR1cm4gcmVxdWVzdDtcbiAgfVxuXG4gIHB1YmxpYyBhc3luYyBzaWduKHRvU2lnbjogSHR0cFJlcXVlc3QsIG9wdGlvbnM/OiBSZXF1ZXN0U2lnbmluZ0FyZ3VtZW50cyk6IFByb21pc2U8SHR0cFJlcXVlc3Q+IHtcbiAgICBjb25zdCByZXF1ZXN0ID0gcHJlcGFyZVJlcXVlc3QodG9TaWduKTtcbiAgICBjb25zdCBjcnRTaWduZWRSZXF1ZXN0ID0gYXdhaXQgdGhpcy5zaWduUmVxdWVzdChcbiAgICAgIHJlcXVlc3QsXG4gICAgICBhd2FpdCB0aGlzLm9wdGlvbnMyY3J0Q29uZmlndXJlKG9wdGlvbnMsIHRydWUgLyogdmlhSGVhZGVyICovLCBhd2FpdCBnZXRQYXlsb2FkSGFzaCh0b1NpZ24sIHRoaXMuc2hhMjU2KSlcbiAgICApO1xuICAgIHJlcXVlc3QuaGVhZGVycyA9IGNydFNpZ25lZFJlcXVlc3QuaGVhZGVycy5fZmxhdHRlbigpLnJlZHVjZSgoYWNjLCBba2V5LCB2YWx1ZV0pID0+ICh7IC4uLmFjYywgW2tleV06IHZhbHVlIH0pLCB7fSk7XG4gICAgcmV0dXJuIHJlcXVlc3Q7XG4gIH1cblxuICAvKiBHZXQgdGhlIHF1ZXJ5IHBhcmFtZXRlcnMgZnJvbSBjcnRQYXRoICovXG4gIHByaXZhdGUgZ2V0UXVlcnlQYXJhbShjcnRQYXRoOiBzdHJpbmcpOiBRdWVyeVBhcmFtZXRlckJhZyB7XG4gICAgY29uc3Qgc3RhcnQgPSBjcnRQYXRoLnNlYXJjaCgvXFw/Lyk7XG4gICAgY29uc3Qgc3RhcnRIYXNoID0gY3J0UGF0aC5zZWFyY2goL1xcIy8pO1xuICAgIGNvbnN0IGVuZCA9IHN0YXJ0SGFzaCA9PSAtMSA/IHVuZGVmaW5lZCA6IHN0YXJ0SGFzaDtcbiAgICBjb25zdCBxdWVyeVBhcmFtID0ge30gYXMgUXVlcnlQYXJhbWV0ZXJCYWc7XG4gICAgaWYgKHN0YXJ0ID09IC0xKSB7XG4gICAgICByZXR1cm4gcXVlcnlQYXJhbTtcbiAgICB9XG4gICAgY29uc3QgcXVlcnlTdHJpbmcgPSBjcnRQYXRoLnNsaWNlKHN0YXJ0ICsgMSwgZW5kKTtcbiAgICByZXR1cm4gcGFyc2VRdWVyeVN0cmluZyhxdWVyeVN0cmluZyk7XG4gIH1cblxuICBwcml2YXRlIGFzeW5jIHNpZ25SZXF1ZXN0KFxuICAgIHJlcXVlc3RUb1NpZ246IEh0dHBSZXF1ZXN0LFxuICAgIGNydENvbmZpZzogY3J0QXV0aC5Bd3NTaWduaW5nQ29uZmlnXG4gICk6IFByb21pc2U8Y3J0SHR0cC5IdHRwUmVxdWVzdD4ge1xuICAgIGNvbnN0IHJlcXVlc3QgPSBzZGtIdHRwUmVxdWVzdDJjcnRIdHRwUmVxdWVzdChyZXF1ZXN0VG9TaWduKTtcbiAgICAvLyBpZiAocmVxdWVzdFRvU2lnbi5oZWFkZXJzW1RPS0VOX0hFQURFUl0pXG4gICAgdHJ5IHtcbiAgICAgIHJldHVybiBhd2FpdCBjcnRBdXRoLmF3c19zaWduX3JlcXVlc3QocmVxdWVzdCwgY3J0Q29uZmlnKTtcbiAgICB9IGNhdGNoIChlcnJvcikge1xuICAgICAgdGhyb3cgbmV3IEVycm9yKGVycm9yKTtcbiAgICB9XG4gIH1cblxuICAvKipcbiAgICogVGVzdC1vbmx5IEFQSSB1c2VkIGZvciBjcm9zcy1saWJyYXJ5IHNpZ25pbmcgdmVyaWZpY2F0aW9uIHRlc3RzLiBWZXJpZnkgc2lnbi5cbiAgICpcbiAgICogVmVyaWZpZXM6XG4gICAqICAoMSkgVGhlIGNhbm9uaWNhbCByZXF1ZXN0IGdlbmVyYXRlZCBkdXJpbmcgc2lndjRhIHNpZ25pbmcgb2YgdGhlIHJlcXVlc3QgbWF0Y2hlcyB3aGF0IGlzIHBhc3NlZCBpblxuICAgKiAgKDIpIFRoZSBzaWduYXR1cmUgcGFzc2VkIGluIGlzIGEgdmFsaWQgRUNEU0Egc2lnbmF0dXJlIG9mIHRoZSBoYXNoZWQgc3RyaW5nLXRvLXNpZ24gZGVyaXZlZCBmcm9tIHRoZVxuICAgKiAgY2Fub25pY2FsIHJlcXVlc3RcbiAgICpcbiAgICogQHBhcmFtIHJlcXVlc3QgVGhlIG9yaWdpbmFsIHJlcXVlc3QgdXNlZCBmb3Igc2lnbmluZ1xuICAgKiBAcGFyYW0gc2lnbmF0dXJlIHRoZSBhY3R1YWwgc2lnbmF0dXJlIGNvbXB1dGVkIGZyb20gYSBwcmV2aW91cyBzaWduaW5nIG9mIHRoZSBzaWduYWJsZVxuICAgKiBAcGFyYW0gZXhwZWN0ZWRDYW5vbmljYWxSZXF1ZXN0IGV4cGVjdGVkIHJlc3VsdCB3aGVuIGJ1aWxkaW5nIHRoZSBjYW5vbmljYWwgcmVxdWVzdFxuICAgKiBAcGFyYW0gZWNjUHViS2V5WCB0aGUgeCBjb29yZGluYXRlIG9mIHRoZSBwdWJsaWMgcGFydCBvZiB0aGUgZWNjIGtleSB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICAgKiBAcGFyYW0gZWNjUHViS2V5WSB0aGUgeSBjb29yZGluYXRlIG9mIHRoZSBwdWJsaWMgcGFydCBvZiB0aGUgZWNjIGtleSB0byB2ZXJpZnkgdGhlIHNpZ25hdHVyZVxuICAgKiBAcGFyYW0gb3B0aW9ucyB0aGUgUmVxdWVzdFNpZ25pbmdBcmd1bWVudHMgdXNlZCBmb3Igc2lnbmluZ1xuICAgKlxuICAgKiBAcmV0dXJuIFRydWUsIGlmIHRoZSB2ZXJpZmljYXRpb24gc3VjY2VlZC4gT3RoZXJ3aXNlLCBmYWxzZS5cbiAgICovXG4gIHB1YmxpYyBhc3luYyB2ZXJpZnlTaWd2NGFTaWduaW5nKFxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0LFxuICAgIHNpZ25hdHVyZTogc3RyaW5nLFxuICAgIGV4cGVjdGVkQ2Fub25pY2FsUmVxdWVzdDogc3RyaW5nLFxuICAgIGVjY1B1YktleVg6IHN0cmluZyxcbiAgICBlY2NQdWJLZXlZOiBzdHJpbmcsXG4gICAgb3B0aW9uczogUmVxdWVzdFNpZ25pbmdBcmd1bWVudHMgPSB7fVxuICApOiBQcm9taXNlPGJvb2xlYW4+IHtcbiAgICBjb25zdCBzZGtSZXF1ZXN0ID0gcHJlcGFyZVJlcXVlc3QocmVxdWVzdCk7XG4gICAgY29uc3QgY3J0UmVxdWVzdCA9IHNka0h0dHBSZXF1ZXN0MmNydEh0dHBSZXF1ZXN0KHNka1JlcXVlc3QpO1xuICAgIGNvbnN0IHBheWxvYWRIYXNoID0gYXdhaXQgZ2V0UGF5bG9hZEhhc2gocmVxdWVzdCwgdGhpcy5zaGEyNTYpO1xuICAgIGNvbnN0IGNydENvbmZpZyA9IGF3YWl0IHRoaXMub3B0aW9uczJjcnRDb25maWd1cmUob3B0aW9ucywgdHJ1ZSAvKiB2aWFIZWFkZXIgKi8sIHBheWxvYWRIYXNoKTtcbiAgICByZXR1cm4gY3J0QXV0aC5hd3NfdmVyaWZ5X3NpZ3Y0YV9zaWduaW5nKFxuICAgICAgY3J0UmVxdWVzdCxcbiAgICAgIGNydENvbmZpZyxcbiAgICAgIGV4cGVjdGVkQ2Fub25pY2FsUmVxdWVzdCxcbiAgICAgIHNpZ25hdHVyZSxcbiAgICAgIGVjY1B1YktleVgsXG4gICAgICBlY2NQdWJLZXlZXG4gICAgKTtcbiAgfVxuXG4gIC8qIFZlcmlmeSBwcmVzaWduICovXG4gIHB1YmxpYyBhc3luYyB2ZXJpZnlTaWd2NGFQcmVTaWduaW5nKFxuICAgIHJlcXVlc3Q6IEh0dHBSZXF1ZXN0LFxuICAgIHNpZ25hdHVyZTogc3RyaW5nIHwgQXJyYXk8c3RyaW5nPiB8IG51bGwsXG4gICAgZXhwZWN0ZWRDYW5vbmljYWxSZXF1ZXN0OiBzdHJpbmcsXG4gICAgZWNjUHViS2V5WDogc3RyaW5nLFxuICAgIGVjY1B1YktleVk6IHN0cmluZyxcbiAgICBvcHRpb25zOiBSZXF1ZXN0UHJlc2lnbmluZ0FyZ3VtZW50cyA9IHt9XG4gICk6IFByb21pc2U8Ym9vbGVhbj4ge1xuICAgIGlmICh0eXBlb2Ygc2lnbmF0dXJlICE9IFwic3RyaW5nXCIpIHtcbiAgICAgIHJldHVybiBmYWxzZTtcbiAgICB9XG4gICAgY29uc3Qgc2RrUmVxdWVzdCA9IHByZXBhcmVSZXF1ZXN0KHJlcXVlc3QpO1xuICAgIGNvbnN0IGNydFJlcXVlc3QgPSBzZGtIdHRwUmVxdWVzdDJjcnRIdHRwUmVxdWVzdChzZGtSZXF1ZXN0KTtcbiAgICBjb25zdCBjcnRDb25maWcgPSBhd2FpdCB0aGlzLm9wdGlvbnMyY3J0Q29uZmlndXJlKFxuICAgICAgb3B0aW9ucyxcbiAgICAgIGZhbHNlIC8qIHZpYUhlYWRlciAqLyxcbiAgICAgIGF3YWl0IGdldFBheWxvYWRIYXNoKHJlcXVlc3QsIHRoaXMuc2hhMjU2KSxcbiAgICAgIG9wdGlvbnMuZXhwaXJlc0luID8gb3B0aW9ucy5leHBpcmVzSW4gOiAzNjAwXG4gICAgKTtcbiAgICByZXR1cm4gY3J0QXV0aC5hd3NfdmVyaWZ5X3NpZ3Y0YV9zaWduaW5nKFxuICAgICAgY3J0UmVxdWVzdCxcbiAgICAgIGNydENvbmZpZyxcbiAgICAgIGV4cGVjdGVkQ2Fub25pY2FsUmVxdWVzdCxcbiAgICAgIHNpZ25hdHVyZSxcbiAgICAgIGVjY1B1YktleVgsXG4gICAgICBlY2NQdWJLZXlZXG4gICAgKTtcbiAgfVxufVxuXG5mdW5jdGlvbiBzZGsyY3J0Q3JlZGVudGlhbHNQcm92aWRlcihjcmVkZW50aWFsczogQ3JlZGVudGlhbHMpOiBjcnRBdXRoLkF3c0NyZWRlbnRpYWxzUHJvdmlkZXIge1xuICByZXR1cm4gY3J0QXV0aC5Bd3NDcmVkZW50aWFsc1Byb3ZpZGVyLm5ld1N0YXRpYyhcbiAgICBjcmVkZW50aWFscy5hY2Nlc3NLZXlJZCxcbiAgICBjcmVkZW50aWFscy5zZWNyZXRBY2Nlc3NLZXksXG4gICAgY3JlZGVudGlhbHMuc2Vzc2lvblRva2VuXG4gICk7XG59XG5cbmZ1bmN0aW9uIGdldEhlYWRlcnNVbnNpZ25hYmxlKHVuc2lnbmFibGVIZWFkZXJzPzogU2V0PHN0cmluZz4sIHNpZ25hYmxlSGVhZGVycz86IFNldDxzdHJpbmc+KTogc3RyaW5nW10ge1xuICBpZiAoIXVuc2lnbmFibGVIZWFkZXJzKSB7XG4gICAgcmV0dXJuIFtdO1xuICB9XG4gIGlmICghc2lnbmFibGVIZWFkZXJzKSB7XG4gICAgcmV0dXJuIFsuLi51bnNpZ25hYmxlSGVhZGVyc107XG4gIH1cbiAgY29uc3QgcmVzdWx0ID0gbmV3IFNldChbLi4udW5zaWduYWJsZUhlYWRlcnNdKTtcbiAgZm9yIChsZXQgaXQgPSBzaWduYWJsZUhlYWRlcnMudmFsdWVzKCksIHZhbCA9IG51bGw7ICh2YWwgPSBpdC5uZXh0KCkudmFsdWUpOyApIHtcbiAgICBpZiAocmVzdWx0Lmhhcyh2YWwpKSB7XG4gICAgICByZXN1bHQuZGVsZXRlKHZhbCk7XG4gICAgfVxuICB9XG4gIHJldHVybiBbLi4ucmVzdWx0XTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAX_PRESIGNED_TTL = exports.KEY_TYPE_IDENTIFIER = exports.MAX_CACHE_SIZE = exports.UNSIGNED_PAYLOAD = exports.EVENT_ALGORITHM_IDENTIFIER = exports.ALGORITHM_IDENTIFIER_V4A = exports.ALGORITHM_IDENTIFIER = exports.UNSIGNABLE_PATTERNS = exports.SEC_HEADER_PATTERN = exports.PROXY_HEADER_PATTERN = exports.ALWAYS_UNSIGNABLE_HEADERS = exports.HOST_HEADER = exports.TOKEN_HEADER = exports.SHA256_HEADER = exports.SIGNATURE_HEADER = exports.GENERATED_HEADERS = exports.DATE_HEADER = exports.AMZ_DATE_HEADER = exports.AUTH_HEADER = exports.REGION_SET_PARAM = exports.TOKEN_QUERY_PARAM = exports.SIGNATURE_QUERY_PARAM = exports.EXPIRES_QUERY_PARAM = exports.SIGNED_HEADERS_QUERY_PARAM = exports.AMZ_DATE_QUERY_PARAM = exports.CREDENTIAL_QUERY_PARAM = exports.ALGORITHM_QUERY_PARAM = void 0;
|
|
4
|
+
exports.ALGORITHM_QUERY_PARAM = "X-Amz-Algorithm";
|
|
5
|
+
exports.CREDENTIAL_QUERY_PARAM = "X-Amz-Credential";
|
|
6
|
+
exports.AMZ_DATE_QUERY_PARAM = "X-Amz-Date";
|
|
7
|
+
exports.SIGNED_HEADERS_QUERY_PARAM = "X-Amz-SignedHeaders";
|
|
8
|
+
exports.EXPIRES_QUERY_PARAM = "X-Amz-Expires";
|
|
9
|
+
exports.SIGNATURE_QUERY_PARAM = "X-Amz-Signature";
|
|
10
|
+
exports.TOKEN_QUERY_PARAM = "X-Amz-Security-Token";
|
|
11
|
+
exports.REGION_SET_PARAM = "X-Amz-Region-Set";
|
|
12
|
+
exports.AUTH_HEADER = "authorization";
|
|
13
|
+
exports.AMZ_DATE_HEADER = exports.AMZ_DATE_QUERY_PARAM.toLowerCase();
|
|
14
|
+
exports.DATE_HEADER = "date";
|
|
15
|
+
exports.GENERATED_HEADERS = [exports.AUTH_HEADER, exports.AMZ_DATE_HEADER, exports.DATE_HEADER];
|
|
16
|
+
exports.SIGNATURE_HEADER = exports.SIGNATURE_QUERY_PARAM.toLowerCase();
|
|
17
|
+
exports.SHA256_HEADER = "x-amz-content-sha256";
|
|
18
|
+
exports.TOKEN_HEADER = exports.TOKEN_QUERY_PARAM.toLowerCase();
|
|
19
|
+
exports.HOST_HEADER = "host";
|
|
20
|
+
exports.ALWAYS_UNSIGNABLE_HEADERS = {
|
|
21
|
+
authorization: true,
|
|
22
|
+
"cache-control": true,
|
|
23
|
+
connection: true,
|
|
24
|
+
expect: true,
|
|
25
|
+
from: true,
|
|
26
|
+
"keep-alive": true,
|
|
27
|
+
"max-forwards": true,
|
|
28
|
+
pragma: true,
|
|
29
|
+
referer: true,
|
|
30
|
+
te: true,
|
|
31
|
+
trailer: true,
|
|
32
|
+
"transfer-encoding": true,
|
|
33
|
+
upgrade: true,
|
|
34
|
+
"user-agent": true,
|
|
35
|
+
"x-amzn-trace-id": true,
|
|
36
|
+
};
|
|
37
|
+
exports.PROXY_HEADER_PATTERN = /^proxy-/;
|
|
38
|
+
exports.SEC_HEADER_PATTERN = /^sec-/;
|
|
39
|
+
exports.UNSIGNABLE_PATTERNS = [/^proxy-/i, /^sec-/i];
|
|
40
|
+
exports.ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256";
|
|
41
|
+
exports.ALGORITHM_IDENTIFIER_V4A = "AWS4-ECDSA-P256-SHA256";
|
|
42
|
+
exports.EVENT_ALGORITHM_IDENTIFIER = "AWS4-HMAC-SHA256-PAYLOAD";
|
|
43
|
+
exports.UNSIGNED_PAYLOAD = "UNSIGNED-PAYLOAD";
|
|
44
|
+
exports.MAX_CACHE_SIZE = 50;
|
|
45
|
+
exports.KEY_TYPE_IDENTIFIER = "aws4_request";
|
|
46
|
+
exports.MAX_PRESIGNED_TTL = 60 * 60 * 24 * 7;
|
|
47
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uc3RhbnRzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vc3JjL2NvbnN0YW50cy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7QUFBYSxRQUFBLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDO0FBQzFDLFFBQUEsc0JBQXNCLEdBQUcsa0JBQWtCLENBQUM7QUFDNUMsUUFBQSxvQkFBb0IsR0FBRyxZQUFZLENBQUM7QUFDcEMsUUFBQSwwQkFBMEIsR0FBRyxxQkFBcUIsQ0FBQztBQUNuRCxRQUFBLG1CQUFtQixHQUFHLGVBQWUsQ0FBQztBQUN0QyxRQUFBLHFCQUFxQixHQUFHLGlCQUFpQixDQUFDO0FBQzFDLFFBQUEsaUJBQWlCLEdBQUcsc0JBQXNCLENBQUM7QUFDM0MsUUFBQSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztBQUV0QyxRQUFBLFdBQVcsR0FBRyxlQUFlLENBQUM7QUFDOUIsUUFBQSxlQUFlLEdBQUcsNEJBQW9CLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDckQsUUFBQSxXQUFXLEdBQUcsTUFBTSxDQUFDO0FBQ3JCLFFBQUEsaUJBQWlCLEdBQUcsQ0FBQyxtQkFBVyxFQUFFLHVCQUFlLEVBQUUsbUJBQVcsQ0FBQyxDQUFDO0FBQ2hFLFFBQUEsZ0JBQWdCLEdBQUcsNkJBQXFCLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDdkQsUUFBQSxhQUFhLEdBQUcsc0JBQXNCLENBQUM7QUFDdkMsUUFBQSxZQUFZLEdBQUcseUJBQWlCLENBQUMsV0FBVyxFQUFFLENBQUM7QUFDL0MsUUFBQSxXQUFXLEdBQUcsTUFBTSxDQUFDO0FBRXJCLFFBQUEseUJBQXlCLEdBQUc7SUFDdkMsYUFBYSxFQUFFLElBQUk7SUFDbkIsZUFBZSxFQUFFLElBQUk7SUFDckIsVUFBVSxFQUFFLElBQUk7SUFDaEIsTUFBTSxFQUFFLElBQUk7SUFDWixJQUFJLEVBQUUsSUFBSTtJQUNWLFlBQVksRUFBRSxJQUFJO0lBQ2xCLGNBQWMsRUFBRSxJQUFJO0lBQ3BCLE1BQU0sRUFBRSxJQUFJO0lBQ1osT0FBTyxFQUFFLElBQUk7SUFDYixFQUFFLEVBQUUsSUFBSTtJQUNSLE9BQU8sRUFBRSxJQUFJO0lBQ2IsbUJBQW1CLEVBQUUsSUFBSTtJQUN6QixPQUFPLEVBQUUsSUFBSTtJQUNiLFlBQVksRUFBRSxJQUFJO0lBQ2xCLGlCQUFpQixFQUFFLElBQUk7Q0FDeEIsQ0FBQztBQUVXLFFBQUEsb0JBQW9CLEdBQUcsU0FBUyxDQUFDO0FBRWpDLFFBQUEsa0JBQWtCLEdBQUcsT0FBTyxDQUFDO0FBRTdCLFFBQUEsbUJBQW1CLEdBQUcsQ0FBQyxVQUFVLEVBQUUsUUFBUSxDQUFDLENBQUM7QUFFN0MsUUFBQSxvQkFBb0IsR0FBRyxrQkFBa0IsQ0FBQztBQUMxQyxRQUFBLHdCQUF3QixHQUFHLHdCQUF3QixDQUFDO0FBRXBELFFBQUEsMEJBQTBCLEdBQUcsMEJBQTBCLENBQUM7QUFFeEQsUUFBQSxnQkFBZ0IsR0FBRyxrQkFBa0IsQ0FBQztBQUV0QyxRQUFBLGNBQWMsR0FBRyxFQUFFLENBQUM7QUFDcEIsUUFBQSxtQkFBbUIsR0FBRyxjQUFjLENBQUM7QUFFckMsUUFBQSxpQkFBaUIsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxDQUFDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJleHBvcnQgY29uc3QgQUxHT1JJVEhNX1FVRVJZX1BBUkFNID0gXCJYLUFtei1BbGdvcml0aG1cIjtcbmV4cG9ydCBjb25zdCBDUkVERU5USUFMX1FVRVJZX1BBUkFNID0gXCJYLUFtei1DcmVkZW50aWFsXCI7XG5leHBvcnQgY29uc3QgQU1aX0RBVEVfUVVFUllfUEFSQU0gPSBcIlgtQW16LURhdGVcIjtcbmV4cG9ydCBjb25zdCBTSUdORURfSEVBREVSU19RVUVSWV9QQVJBTSA9IFwiWC1BbXotU2lnbmVkSGVhZGVyc1wiO1xuZXhwb3J0IGNvbnN0IEVYUElSRVNfUVVFUllfUEFSQU0gPSBcIlgtQW16LUV4cGlyZXNcIjtcbmV4cG9ydCBjb25zdCBTSUdOQVRVUkVfUVVFUllfUEFSQU0gPSBcIlgtQW16LVNpZ25hdHVyZVwiO1xuZXhwb3J0IGNvbnN0IFRPS0VOX1FVRVJZX1BBUkFNID0gXCJYLUFtei1TZWN1cml0eS1Ub2tlblwiO1xuZXhwb3J0IGNvbnN0IFJFR0lPTl9TRVRfUEFSQU0gPSBcIlgtQW16LVJlZ2lvbi1TZXRcIjtcblxuZXhwb3J0IGNvbnN0IEFVVEhfSEVBREVSID0gXCJhdXRob3JpemF0aW9uXCI7XG5leHBvcnQgY29uc3QgQU1aX0RBVEVfSEVBREVSID0gQU1aX0RBVEVfUVVFUllfUEFSQU0udG9Mb3dlckNhc2UoKTtcbmV4cG9ydCBjb25zdCBEQVRFX0hFQURFUiA9IFwiZGF0ZVwiO1xuZXhwb3J0IGNvbnN0IEdFTkVSQVRFRF9IRUFERVJTID0gW0FVVEhfSEVBREVSLCBBTVpfREFURV9IRUFERVIsIERBVEVfSEVBREVSXTtcbmV4cG9ydCBjb25zdCBTSUdOQVRVUkVfSEVBREVSID0gU0lHTkFUVVJFX1FVRVJZX1BBUkFNLnRvTG93ZXJDYXNlKCk7XG5leHBvcnQgY29uc3QgU0hBMjU2X0hFQURFUiA9IFwieC1hbXotY29udGVudC1zaGEyNTZcIjtcbmV4cG9ydCBjb25zdCBUT0tFTl9IRUFERVIgPSBUT0tFTl9RVUVSWV9QQVJBTS50b0xvd2VyQ2FzZSgpO1xuZXhwb3J0IGNvbnN0IEhPU1RfSEVBREVSID0gXCJob3N0XCI7XG5cbmV4cG9ydCBjb25zdCBBTFdBWVNfVU5TSUdOQUJMRV9IRUFERVJTID0ge1xuICBhdXRob3JpemF0aW9uOiB0cnVlLFxuICBcImNhY2hlLWNvbnRyb2xcIjogdHJ1ZSxcbiAgY29ubmVjdGlvbjogdHJ1ZSxcbiAgZXhwZWN0OiB0cnVlLFxuICBmcm9tOiB0cnVlLFxuICBcImtlZXAtYWxpdmVcIjogdHJ1ZSxcbiAgXCJtYXgtZm9yd2FyZHNcIjogdHJ1ZSxcbiAgcHJhZ21hOiB0cnVlLFxuICByZWZlcmVyOiB0cnVlLFxuICB0ZTogdHJ1ZSxcbiAgdHJhaWxlcjogdHJ1ZSxcbiAgXCJ0cmFuc2Zlci1lbmNvZGluZ1wiOiB0cnVlLFxuICB1cGdyYWRlOiB0cnVlLFxuICBcInVzZXItYWdlbnRcIjogdHJ1ZSxcbiAgXCJ4LWFtem4tdHJhY2UtaWRcIjogdHJ1ZSxcbn07XG5cbmV4cG9ydCBjb25zdCBQUk9YWV9IRUFERVJfUEFUVEVSTiA9IC9ecHJveHktLztcblxuZXhwb3J0IGNvbnN0IFNFQ19IRUFERVJfUEFUVEVSTiA9IC9ec2VjLS87XG5cbmV4cG9ydCBjb25zdCBVTlNJR05BQkxFX1BBVFRFUk5TID0gWy9ecHJveHktL2ksIC9ec2VjLS9pXTtcblxuZXhwb3J0IGNvbnN0IEFMR09SSVRITV9JREVOVElGSUVSID0gXCJBV1M0LUhNQUMtU0hBMjU2XCI7XG5leHBvcnQgY29uc3QgQUxHT1JJVEhNX0lERU5USUZJRVJfVjRBID0gXCJBV1M0LUVDRFNBLVAyNTYtU0hBMjU2XCI7XG5cbmV4cG9ydCBjb25zdCBFVkVOVF9BTEdPUklUSE1fSURFTlRJRklFUiA9IFwiQVdTNC1ITUFDLVNIQTI1Ni1QQVlMT0FEXCI7XG5cbmV4cG9ydCBjb25zdCBVTlNJR05FRF9QQVlMT0FEID0gXCJVTlNJR05FRC1QQVlMT0FEXCI7XG5cbmV4cG9ydCBjb25zdCBNQVhfQ0FDSEVfU0laRSA9IDUwO1xuZXhwb3J0IGNvbnN0IEtFWV9UWVBFX0lERU5USUZJRVIgPSBcImF3czRfcmVxdWVzdFwiO1xuXG5leHBvcnQgY29uc3QgTUFYX1BSRVNJR05FRF9UVEwgPSA2MCAqIDYwICogMjQgKiA3O1xuIl19
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.deleteHeader = exports.getHeaderValue = exports.hasHeader = void 0;
|
|
4
|
+
function hasHeader(soughtHeader, headers) {
|
|
5
|
+
soughtHeader = soughtHeader.toLowerCase();
|
|
6
|
+
for (const headerName of Object.keys(headers)) {
|
|
7
|
+
if (soughtHeader === headerName.toLowerCase()) {
|
|
8
|
+
return true;
|
|
9
|
+
}
|
|
10
|
+
}
|
|
11
|
+
return false;
|
|
12
|
+
}
|
|
13
|
+
exports.hasHeader = hasHeader;
|
|
14
|
+
function getHeaderValue(soughtHeader, headers) {
|
|
15
|
+
soughtHeader = soughtHeader.toLowerCase();
|
|
16
|
+
for (const headerName of Object.keys(headers)) {
|
|
17
|
+
if (soughtHeader === headerName.toLowerCase()) {
|
|
18
|
+
return headers[headerName];
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
return undefined;
|
|
22
|
+
}
|
|
23
|
+
exports.getHeaderValue = getHeaderValue;
|
|
24
|
+
function deleteHeader(soughtHeader, headers) {
|
|
25
|
+
soughtHeader = soughtHeader.toLowerCase();
|
|
26
|
+
for (const headerName of Object.keys(headers)) {
|
|
27
|
+
if (soughtHeader === headerName.toLowerCase()) {
|
|
28
|
+
delete headers[headerName];
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
exports.deleteHeader = deleteHeader;
|
|
33
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaGVhZGVyVXRpbC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9oZWFkZXJVdGlsLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7OztBQUVBLFNBQWdCLFNBQVMsQ0FBQyxZQUFvQixFQUFFLE9BQWtCO0lBQ2hFLFlBQVksR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUMsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzdDLElBQUksWUFBWSxLQUFLLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUM3QyxPQUFPLElBQUksQ0FBQztTQUNiO0tBQ0Y7SUFFRCxPQUFPLEtBQUssQ0FBQztBQUNmLENBQUM7QUFURCw4QkFTQztBQUdELFNBQWdCLGNBQWMsQ0FBQyxZQUFvQixFQUFFLE9BQWtCO0lBQ3JFLFlBQVksR0FBRyxZQUFZLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDMUMsS0FBSyxNQUFNLFVBQVUsSUFBSSxNQUFNLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBQyxFQUFFO1FBQzdDLElBQUksWUFBWSxLQUFLLFVBQVUsQ0FBQyxXQUFXLEVBQUUsRUFBRTtZQUM3QyxPQUFPLE9BQU8sQ0FBQyxVQUFVLENBQUMsQ0FBQztTQUM1QjtLQUNGO0lBRUQsT0FBTyxTQUFTLENBQUM7QUFDbkIsQ0FBQztBQVRELHdDQVNDO0FBR0QsU0FBZ0IsWUFBWSxDQUFDLFlBQW9CLEVBQUUsT0FBa0I7SUFDbkUsWUFBWSxHQUFHLFlBQVksQ0FBQyxXQUFXLEVBQUUsQ0FBQztJQUMxQyxLQUFLLE1BQU0sVUFBVSxJQUFJLE1BQU0sQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUU7UUFDN0MsSUFBSSxZQUFZLEtBQUssVUFBVSxDQUFDLFdBQVcsRUFBRSxFQUFFO1lBQzdDLE9BQU8sT0FBTyxDQUFDLFVBQVUsQ0FBQyxDQUFDO1NBQzVCO0tBQ0Y7QUFDSCxDQUFDO0FBUEQsb0NBT0MiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIZWFkZXJCYWcgfSBmcm9tIFwiQGF3cy1zZGsvdHlwZXNcIjtcblxuZXhwb3J0IGZ1bmN0aW9uIGhhc0hlYWRlcihzb3VnaHRIZWFkZXI6IHN0cmluZywgaGVhZGVyczogSGVhZGVyQmFnKTogYm9vbGVhbiB7XG4gIHNvdWdodEhlYWRlciA9IHNvdWdodEhlYWRlci50b0xvd2VyQ2FzZSgpO1xuICBmb3IgKGNvbnN0IGhlYWRlck5hbWUgb2YgT2JqZWN0LmtleXMoaGVhZGVycykpIHtcbiAgICBpZiAoc291Z2h0SGVhZGVyID09PSBoZWFkZXJOYW1lLnRvTG93ZXJDYXNlKCkpIHtcbiAgICAgIHJldHVybiB0cnVlO1xuICAgIH1cbiAgfVxuXG4gIHJldHVybiBmYWxzZTtcbn1cblxuLyogR2V0IHRoZSB2YWx1ZSBvZiBvbmUgcmVxdWVzdCBoZWFkZXIsIGlnbm9yZSB0aGUgY2FzZS4gUmV0dXJuIHN0cmluZyBpZiBoZWFkZXIgaXMgaW4gdGhlIGhlYWRlcnMsIGVsc2UgcmV0dXJuIHVuZGVmaW5lZCAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldEhlYWRlclZhbHVlKHNvdWdodEhlYWRlcjogc3RyaW5nLCBoZWFkZXJzOiBIZWFkZXJCYWcpOiBzdHJpbmcgfCB1bmRlZmluZWQge1xuICBzb3VnaHRIZWFkZXIgPSBzb3VnaHRIZWFkZXIudG9Mb3dlckNhc2UoKTtcbiAgZm9yIChjb25zdCBoZWFkZXJOYW1lIG9mIE9iamVjdC5rZXlzKGhlYWRlcnMpKSB7XG4gICAgaWYgKHNvdWdodEhlYWRlciA9PT0gaGVhZGVyTmFtZS50b0xvd2VyQ2FzZSgpKSB7XG4gICAgICByZXR1cm4gaGVhZGVyc1toZWFkZXJOYW1lXTtcbiAgICB9XG4gIH1cblxuICByZXR1cm4gdW5kZWZpbmVkO1xufVxuXG4vKiBEZWxldGUgdGhlIG9uZSByZXF1ZXN0IGhlYWRlciwgaWdub3JlIHRoZSBjYXNlLiBEbyBub3RoaW5nIGlmIGl0J3Mgbm90IHRoZXJlICovXG5leHBvcnQgZnVuY3Rpb24gZGVsZXRlSGVhZGVyKHNvdWdodEhlYWRlcjogc3RyaW5nLCBoZWFkZXJzOiBIZWFkZXJCYWcpIHtcbiAgc291Z2h0SGVhZGVyID0gc291Z2h0SGVhZGVyLnRvTG93ZXJDYXNlKCk7XG4gIGZvciAoY29uc3QgaGVhZGVyTmFtZSBvZiBPYmplY3Qua2V5cyhoZWFkZXJzKSkge1xuICAgIGlmIChzb3VnaHRIZWFkZXIgPT09IGhlYWRlck5hbWUudG9Mb3dlckNhc2UoKSkge1xuICAgICAgZGVsZXRlIGhlYWRlcnNbaGVhZGVyTmFtZV07XG4gICAgfVxuICB9XG59XG4iXX0=
|
|
@@ -2,4 +2,4 @@
|
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const tslib_1 = require("tslib");
|
|
4
4
|
tslib_1.__exportStar(require("./CrtSignerV4"), exports);
|
|
5
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
5
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi9zcmMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7O0FBQUEsd0RBQThCIiwic291cmNlc0NvbnRlbnQiOlsiZXhwb3J0ICogZnJvbSBcIi4vQ3J0U2lnbmVyVjRcIjtcbiJdfQ==
|