@finbourne/lusid-sdk-angular8
Version:
An angular (8+) SDK for secure access to the LUSID® by FINBOURNE web API
237 lines • 95.1 kB
JavaScript
/**
* LUSID API
* # Introduction This page documents the [LUSID APIs](../../../api/swagger), which allows authorised clients to query and update their data within the LUSID platform. SDKs to interact with the LUSID APIs are available in the following languages and frameworks: * [C#](https://github.com/finbourne/lusid-sdk-csharp) * [Java](https://github.com/finbourne/lusid-sdk-java) * [JavaScript](https://github.com/finbourne/lusid-sdk-js) * [Python](https://github.com/finbourne/lusid-sdk-python) * [Angular](https://github.com/finbourne/lusid-sdk-angular) The LUSID platform is made up of a number of sub-applications. You can find the API / swagger documentation by following the links in the table below. | Application | Description | API / Swagger Documentation | |---------------|-----------------------------------------------------------------------------------|------------------------------------------------------| | LUSID | Open, API-first, developer-friendly investment data platform. | [Swagger](../../../api/swagger/index.html) | | Web app | User-facing front end for LUSID. | [Swagger](../../../app/swagger/index.html) | | Scheduler | Automated job scheduler. | [Swagger](../../../scheduler2/swagger/index.html) | | Insights | Monitoring and troubleshooting service. | [Swagger](../../../insights/swagger/index.html) | | Identity | Identity management for LUSID (in conjunction with Access) | [Swagger](../../../identity/swagger/index.html) | | Access | Access control for LUSID (in conjunction with Identity) | [Swagger](../../../access/swagger/index.html) | | Drive | Secure file repository and manager for collaboration. | [Swagger](../../../drive/swagger/index.html) | | Luminesce | Data virtualisation service (query data from multiple providers, including LUSID) | [Swagger](../../../honeycomb/swagger/index.html) | | Notification | Notification service. | [Swagger](../../../notifications/swagger/index.html) | | Configuration | File store for secrets and other sensitive information. | [Swagger](../../../configuration/swagger/index.html) | # Error Codes | Code|Name|Description | | ---|---|--- | | <a name=\"-10\">-10</a>|Server Configuration Error| | | <a name=\"-1\">-1</a>|Unknown error|An unexpected error was encountered on our side. | | <a name=\"102\">102</a>|Version Not Found| | | <a name=\"103\">103</a>|Api Rate Limit Violation| | | <a name=\"104\">104</a>|Instrument Not Found| | | <a name=\"105\">105</a>|Property Not Found| | | <a name=\"106\">106</a>|Portfolio Recursion Depth| | | <a name=\"108\">108</a>|Group Not Found| | | <a name=\"109\">109</a>|Portfolio Not Found| | | <a name=\"110\">110</a>|Property Schema Not Found| | | <a name=\"111\">111</a>|Portfolio Ancestry Not Found| | | <a name=\"112\">112</a>|Portfolio With Id Already Exists| | | <a name=\"113\">113</a>|Orphaned Portfolio| | | <a name=\"119\">119</a>|Missing Base Claims| | | <a name=\"121\">121</a>|Property Not Defined| | | <a name=\"122\">122</a>|Cannot Delete System Property| | | <a name=\"123\">123</a>|Cannot Modify Immutable Property Field| | | <a name=\"124\">124</a>|Property Already Exists| | | <a name=\"125\">125</a>|Invalid Property Life Time| | | <a name=\"126\">126</a>|Property Constraint Style Excludes Properties| | | <a name=\"127\">127</a>|Cannot Modify Default Data Type| | | <a name=\"128\">128</a>|Group Already Exists| | | <a name=\"129\">129</a>|No Such Data Type| | | <a name=\"130\">130</a>|Undefined Value For Data Type| | | <a name=\"131\">131</a>|Unsupported Value Type Defined On Data Type| | | <a name=\"132\">132</a>|Validation Error| | | <a name=\"133\">133</a>|Loop Detected In Group Hierarchy| | | <a name=\"134\">134</a>|Undefined Acceptable Values| | | <a name=\"135\">135</a>|Sub Group Already Exists| | | <a name=\"138\">138</a>|Price Source Not Found| | | <a name=\"139\">139</a>|Analytic Store Not Found| | | <a name=\"141\">141</a>|Analytic Store Already Exists| | | <a name=\"143\">143</a>|Client Instrument Already Exists| | | <a name=\"144\">144</a>|Duplicate In Parameter Set| | | <a name=\"147\">147</a>|Results Not Found| | | <a name=\"148\">148</a>|Order Field Not In Result Set| | | <a name=\"149\">149</a>|Operation Failed| | | <a name=\"150\">150</a>|Elastic Search Error| | | <a name=\"151\">151</a>|Invalid Parameter Value| | | <a name=\"153\">153</a>|Command Processing Failure| | | <a name=\"154\">154</a>|Entity State Construction Failure| | | <a name=\"155\">155</a>|Entity Timeline Does Not Exist| | | <a name=\"156\">156</a>|Concurrency Conflict Failure| | | <a name=\"157\">157</a>|Invalid Request| | | <a name=\"158\">158</a>|Event Publish Unknown| | | <a name=\"159\">159</a>|Event Query Failure| | | <a name=\"160\">160</a>|Blob Did Not Exist| | | <a name=\"162\">162</a>|Sub System Request Failure| | | <a name=\"163\">163</a>|Sub System Configuration Failure| | | <a name=\"165\">165</a>|Failed To Delete| | | <a name=\"166\">166</a>|Upsert Client Instrument Failure| | | <a name=\"167\">167</a>|Illegal As At Interval| | | <a name=\"168\">168</a>|Illegal Bitemporal Query| | | <a name=\"169\">169</a>|Invalid Alternate Id| | | <a name=\"170\">170</a>|Cannot Add Source Portfolio Property Explicitly| | | <a name=\"171\">171</a>|Entity Already Exists In Group| | | <a name=\"173\">173</a>|Entity With Id Already Exists| | | <a name=\"174\">174</a>|Derived Portfolio Details Do Not Exist| | | <a name=\"175\">175</a>|Entity Not In Group| | | <a name=\"176\">176</a>|Portfolio With Name Already Exists| | | <a name=\"177\">177</a>|Invalid Transactions| | | <a name=\"178\">178</a>|Reference Portfolio Not Found| | | <a name=\"179\">179</a>|Duplicate Id| | | <a name=\"180\">180</a>|Command Retrieval Failure| | | <a name=\"181\">181</a>|Data Filter Application Failure| | | <a name=\"182\">182</a>|Search Failed| | | <a name=\"183\">183</a>|Movements Engine Configuration Key Failure| | | <a name=\"184\">184</a>|Fx Rate Source Not Found| | | <a name=\"185\">185</a>|Accrual Source Not Found| | | <a name=\"186\">186</a>|Access Denied| | | <a name=\"187\">187</a>|Invalid Identity Token| | | <a name=\"188\">188</a>|Invalid Request Headers| | | <a name=\"189\">189</a>|Price Not Found| | | <a name=\"190\">190</a>|Invalid Sub Holding Keys Provided| | | <a name=\"191\">191</a>|Duplicate Sub Holding Keys Provided| | | <a name=\"192\">192</a>|Cut Definition Not Found| | | <a name=\"193\">193</a>|Cut Definition Invalid| | | <a name=\"194\">194</a>|Time Variant Property Deletion Date Unspecified| | | <a name=\"195\">195</a>|Perpetual Property Deletion Date Specified| | | <a name=\"196\">196</a>|Time Variant Property Upsert Date Unspecified| | | <a name=\"197\">197</a>|Perpetual Property Upsert Date Specified| | | <a name=\"200\">200</a>|Invalid Unit For Data Type| | | <a name=\"201\">201</a>|Invalid Type For Data Type| | | <a name=\"202\">202</a>|Invalid Value For Data Type| | | <a name=\"203\">203</a>|Unit Not Defined For Data Type| | | <a name=\"204\">204</a>|Units Not Supported On Data Type| | | <a name=\"205\">205</a>|Cannot Specify Units On Data Type| | | <a name=\"206\">206</a>|Unit Schema Inconsistent With Data Type| | | <a name=\"207\">207</a>|Unit Definition Not Specified| | | <a name=\"208\">208</a>|Duplicate Unit Definitions Specified| | | <a name=\"209\">209</a>|Invalid Units Definition| | | <a name=\"210\">210</a>|Invalid Instrument Identifier Unit| | | <a name=\"211\">211</a>|Holdings Adjustment Does Not Exist| | | <a name=\"212\">212</a>|Could Not Build Excel Url| | | <a name=\"213\">213</a>|Could Not Get Excel Version| | | <a name=\"214\">214</a>|Instrument By Code Not Found| | | <a name=\"215\">215</a>|Entity Schema Does Not Exist| | | <a name=\"216\">216</a>|Feature Not Supported On Portfolio Type| | | <a name=\"217\">217</a>|Quote Not Found| | | <a name=\"218\">218</a>|Invalid Quote Identifier| | | <a name=\"219\">219</a>|Invalid Metric For Data Type| | | <a name=\"220\">220</a>|Invalid Instrument Definition| | | <a name=\"221\">221</a>|Instrument Upsert Failure| | | <a name=\"222\">222</a>|Reference Portfolio Request Not Supported| | | <a name=\"223\">223</a>|Transaction Portfolio Request Not Supported| | | <a name=\"224\">224</a>|Invalid Property Value Assignment| | | <a name=\"230\">230</a>|Transaction Type Not Found| | | <a name=\"231\">231</a>|Transaction Type Duplication| | | <a name=\"232\">232</a>|Portfolio Does Not Exist At Given Date| | | <a name=\"233\">233</a>|Query Parser Failure| | | <a name=\"234\">234</a>|Duplicate Constituent| | | <a name=\"235\">235</a>|Unresolved Instrument Constituent| | | <a name=\"236\">236</a>|Unresolved Instrument In Transition| | | <a name=\"237\">237</a>|Missing Side Definitions| | | <a name=\"299\">299</a>|Invalid Recipe| | | <a name=\"300\">300</a>|Missing Recipe| | | <a name=\"301\">301</a>|Dependencies| | | <a name=\"304\">304</a>|Portfolio Preprocess Failure| | | <a name=\"310\">310</a>|Valuation Engine Failure| | | <a name=\"311\">311</a>|Task Factory Failure| | | <a name=\"312\">312</a>|Task Evaluation Failure| | | <a name=\"313\">313</a>|Task Generation Failure| | | <a name=\"314\">314</a>|Engine Configuration Failure| | | <a name=\"315\">315</a>|Model Specification Failure| | | <a name=\"320\">320</a>|Market Data Key Failure| | | <a name=\"321\">321</a>|Market Resolver Failure| | | <a name=\"322\">322</a>|Market Data Failure| | | <a name=\"330\">330</a>|Curve Failure| | | <a name=\"331\">331</a>|Volatility Surface Failure| | | <a name=\"332\">332</a>|Volatility Cube Failure| | | <a name=\"350\">350</a>|Instrument Failure| | | <a name=\"351\">351</a>|Cash Flows Failure| | | <a name=\"352\">352</a>|Reference Data Failure| | | <a name=\"360\">360</a>|Aggregation Failure| | | <a name=\"361\">361</a>|Aggregation Measure Failure| | | <a name=\"370\">370</a>|Result Retrieval Failure| | | <a name=\"371\">371</a>|Result Processing Failure| | | <a name=\"372\">372</a>|Vendor Result Processing Failure| | | <a name=\"373\">373</a>|Vendor Result Mapping Failure| | | <a name=\"374\">374</a>|Vendor Library Unauthorised| | | <a name=\"375\">375</a>|Vendor Connectivity Error| | | <a name=\"376\">376</a>|Vendor Interface Error| | | <a name=\"377\">377</a>|Vendor Pricing Failure| | | <a name=\"378\">378</a>|Vendor Translation Failure| | | <a name=\"379\">379</a>|Vendor Key Mapping Failure| | | <a name=\"380\">380</a>|Vendor Reflection Failure| | | <a name=\"381\">381</a>|Vendor Process Failure| | | <a name=\"382\">382</a>|Vendor System Failure| | | <a name=\"390\">390</a>|Attempt To Upsert Duplicate Quotes| | | <a name=\"391\">391</a>|Corporate Action Source Does Not Exist| | | <a name=\"392\">392</a>|Corporate Action Source Already Exists| | | <a name=\"393\">393</a>|Instrument Identifier Already In Use| | | <a name=\"394\">394</a>|Properties Not Found| | | <a name=\"395\">395</a>|Batch Operation Aborted| | | <a name=\"400\">400</a>|Invalid Iso4217 Currency Code| | | <a name=\"401\">401</a>|Cannot Assign Instrument Identifier To Currency| | | <a name=\"402\">402</a>|Cannot Assign Currency Identifier To Non Currency| | | <a name=\"403\">403</a>|Currency Instrument Cannot Be Deleted| | | <a name=\"404\">404</a>|Currency Instrument Cannot Have Economic Definition| | | <a name=\"405\">405</a>|Currency Instrument Cannot Have Lookthrough Portfolio| | | <a name=\"406\">406</a>|Cannot Create Currency Instrument With Multiple Identifiers| | | <a name=\"407\">407</a>|Specified Currency Is Undefined| | | <a name=\"410\">410</a>|Index Does Not Exist| | | <a name=\"411\">411</a>|Sort Field Does Not Exist| | | <a name=\"413\">413</a>|Negative Pagination Parameters| | | <a name=\"414\">414</a>|Invalid Search Syntax| | | <a name=\"415\">415</a>|Filter Execution Timeout| | | <a name=\"420\">420</a>|Side Definition Inconsistent| | | <a name=\"450\">450</a>|Invalid Quote Access Metadata Rule| | | <a name=\"451\">451</a>|Access Metadata Not Found| | | <a name=\"452\">452</a>|Invalid Access Metadata Identifier| | | <a name=\"460\">460</a>|Standard Resource Not Found| | | <a name=\"461\">461</a>|Standard Resource Conflict| | | <a name=\"462\">462</a>|Calendar Not Found| | | <a name=\"463\">463</a>|Date In A Calendar Not Found| | | <a name=\"464\">464</a>|Invalid Date Source Data| | | <a name=\"465\">465</a>|Invalid Timezone| | | <a name=\"601\">601</a>|Person Identifier Already In Use| | | <a name=\"602\">602</a>|Person Not Found| | | <a name=\"603\">603</a>|Cannot Set Identifier| | | <a name=\"617\">617</a>|Invalid Recipe Specification In Request| | | <a name=\"618\">618</a>|Inline Recipe Deserialisation Failure| | | <a name=\"619\">619</a>|Identifier Types Not Set For Entity| | | <a name=\"620\">620</a>|Cannot Delete All Client Defined Identifiers| | | <a name=\"650\">650</a>|The Order requested was not found.| | | <a name=\"654\">654</a>|The Allocation requested was not found.| | | <a name=\"655\">655</a>|Cannot build the fx forward target with the given holdings.| | | <a name=\"656\">656</a>|Group does not contain expected entities.| | | <a name=\"665\">665</a>|Destination directory not found| | | <a name=\"667\">667</a>|Relation definition already exists| | | <a name=\"672\">672</a>|Could not retrieve file contents| | | <a name=\"673\">673</a>|Missing entitlements for entities in Group| | | <a name=\"674\">674</a>|Next Best Action not found| | | <a name=\"676\">676</a>|Relation definition not defined| | | <a name=\"677\">677</a>|Invalid entity identifier for relation| | | <a name=\"681\">681</a>|Sorting by specified field not supported|One or more of the provided fields to order by were either invalid or not supported. | | <a name=\"682\">682</a>|Too many fields to sort by|The number of fields to sort the data by exceeds the number allowed by the endpoint | | <a name=\"684\">684</a>|Sequence Not Found| | | <a name=\"685\">685</a>|Sequence Already Exists| | | <a name=\"686\">686</a>|Non-cycling sequence has been exhausted| | | <a name=\"687\">687</a>|Legal Entity Identifier Already In Use| | | <a name=\"688\">688</a>|Legal Entity Not Found| | | <a name=\"689\">689</a>|The supplied pagination token is invalid| | | <a name=\"690\">690</a>|Property Type Is Not Supported| | | <a name=\"691\">691</a>|Multiple Tax-lots For Currency Type Is Not Supported| | | <a name=\"692\">692</a>|This endpoint does not support impersonation| | | <a name=\"693\">693</a>|Entity type is not supported for Relationship| | | <a name=\"694\">694</a>|Relationship Validation Failure| | | <a name=\"695\">695</a>|Relationship Not Found| | | <a name=\"697\">697</a>|Derived Property Formula No Longer Valid| | | <a name=\"698\">698</a>|Story is not available| | | <a name=\"703\">703</a>|Corporate Action Does Not Exist| | | <a name=\"720\">720</a>|The provided sort and filter combination is not valid| | | <a name=\"721\">721</a>|A2B generation failed| | | <a name=\"722\">722</a>|Aggregated Return Calculation Failure| | | <a name=\"723\">723</a>|Custom Entity Definition Identifier Already In Use| | | <a name=\"724\">724</a>|Custom Entity Definition Not Found| | | <a name=\"725\">725</a>|The Placement requested was not found.| | | <a name=\"726\">726</a>|The Execution requested was not found.| | | <a name=\"727\">727</a>|The Block requested was not found.| | | <a name=\"728\">728</a>|The Participation requested was not found.| | | <a name=\"729\">729</a>|The Package requested was not found.| | | <a name=\"730\">730</a>|The OrderInstruction requested was not found.| | | <a name=\"732\">732</a>|Custom Entity not found.| | | <a name=\"733\">733</a>|Custom Entity Identifier already in use.| | | <a name=\"735\">735</a>|Calculation Failed.| | | <a name=\"736\">736</a>|An expected key on HttpResponse is missing.| | | <a name=\"737\">737</a>|A required fee detail is missing.| | | <a name=\"738\">738</a>|Zero rows were returned from Luminesce| | | <a name=\"739\">739</a>|Provided Weekend Mask was invalid| | | <a name=\"742\">742</a>|Custom Entity fields do not match the definition| | | <a name=\"746\">746</a>|The provided sequence is not valid.| | | <a name=\"751\">751</a>|The type of the Custom Entity is different than the type provided in the definition.| | | <a name=\"752\">752</a>|Luminesce process returned an error.| | | <a name=\"753\">753</a>|File name or content incompatible with operation.| | | <a name=\"755\">755</a>|Schema of response from Drive is not as expected.| | | <a name=\"757\">757</a>|Schema of response from Luminesce is not as expected.| | | <a name=\"758\">758</a>|Luminesce timed out.| | | <a name=\"763\">763</a>|Invalid Lusid Entity Identifier Unit| | | <a name=\"768\">768</a>|Fee rule not found.| | | <a name=\"769\">769</a>|Cannot update the base currency of a portfolio with transactions loaded| | | <a name=\"771\">771</a>|Transaction configuration source not found| | | <a name=\"774\">774</a>|Compliance rule not found.| | | <a name=\"775\">775</a>|Fund accounting document cannot be processed.| | | <a name=\"778\">778</a>|Unable to look up FX rate from trade ccy to portfolio ccy for some of the trades.| | | <a name=\"782\">782</a>|The Property definition dataType is not matching the derivation formula dataType| | | <a name=\"783\">783</a>|The Property definition domain is not supported for derived properties| | | <a name=\"788\">788</a>|Compliance run not found failure.| | | <a name=\"790\">790</a>|Custom Entity has missing or invalid identifiers| | | <a name=\"791\">791</a>|Custom Entity definition already exists| | | <a name=\"792\">792</a>|Compliance PropertyKey is missing.| | | <a name=\"793\">793</a>|Compliance Criteria Value for matching is missing.| | | <a name=\"795\">795</a>|Cannot delete identifier definition| | | <a name=\"796\">796</a>|Tax rule set not found.| | | <a name=\"797\">797</a>|A tax rule set with this id already exists.| | | <a name=\"798\">798</a>|Multiple rule sets for the same property key are applicable.| | | <a name=\"800\">800</a>|Can not upsert an instrument event of this type.| | | <a name=\"801\">801</a>|The instrument event does not exist.| | | <a name=\"802\">802</a>|The Instrument event is missing salient information.| | | <a name=\"803\">803</a>|The Instrument event could not be processed.| | | <a name=\"804\">804</a>|Some data requested does not follow the order graph assumptions.| | | <a name=\"811\">811</a>|A price could not be found for an order.| | | <a name=\"812\">812</a>|A price could not be found for an allocation.| | | <a name=\"813\">813</a>|Chart of Accounts not found.| | | <a name=\"814\">814</a>|Account not found.| | | <a name=\"815\">815</a>|Abor not found.| | | <a name=\"816\">816</a>|Abor Configuration not found.| | | <a name=\"817\">817</a>|Reconciliation mapping not found| | | <a name=\"818\">818</a>|Attribute type could not be deleted because it doesn\'t exist.| | | <a name=\"819\">819</a>|Reconciliation not found.| | | <a name=\"820\">820</a>|Custodian Account not found.| | | <a name=\"821\">821</a>|Allocation Failure| |
*
* The version of the OpenAPI document: 0.11.5326
* Contact: info@finbourne.com
*
* NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
* https://openapi-generator.tech
* Do not edit the class manually.
*/
/* tslint:disable:no-unused-variable member-ordering */
import { Inject, Injectable, Optional } from '@angular/core';
import { HttpClient, HttpHeaders, HttpParams } from '@angular/common/http';
import { CustomHttpUrlEncodingCodec } from '../encoder';
import { BASE_PATH } from '../variables';
import { Configuration } from '../configuration';
import * as i0 from "@angular/core";
import * as i1 from "@angular/common/http";
import * as i2 from "../configuration";
export class ComplexMarketDataService {
constructor(httpClient, basePath, configuration) {
this.httpClient = httpClient;
this.basePath = 'https://www.lusid.com/api';
this.defaultHeaders = new HttpHeaders();
this.configuration = new Configuration();
if (configuration) {
this.configuration = configuration;
this.configuration.basePath = configuration.basePath || basePath || this.basePath;
}
else {
this.configuration.basePath = basePath || this.basePath;
}
}
/**
* @param consumes string[] mime-types
* @return true: consumes contains 'multipart/form-data', false: otherwise
*/
canConsumeForm(consumes) {
const form = 'multipart/form-data';
for (const consume of consumes) {
if (form === consume) {
return true;
}
}
return false;
}
deleteComplexMarketData(scope, requestBody, observe = 'body', reportProgress = false) {
if (scope === null || scope === undefined) {
throw new Error('Required parameter scope was null or undefined when calling deleteComplexMarketData.');
}
if (requestBody === null || requestBody === undefined) {
throw new Error('Required parameter requestBody was null or undefined when calling deleteComplexMarketData.');
}
let headers = this.defaultHeaders;
// authentication (oauth2) required
if (this.configuration.accessToken) {
const accessToken = typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken()
: this.configuration.accessToken;
headers = headers.set('Authorization', 'Bearer ' + accessToken);
}
// to determine the Accept header
const httpHeaderAccepts = [
'text/plain',
'application/json',
'text/json'
];
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
if (httpHeaderAcceptSelected !== undefined) {
headers = headers.set('Accept', httpHeaderAcceptSelected);
}
// to determine the Content-Type header
const consumes = [
'application/json-patch+json',
'application/json',
'text/json',
'application/_*+json'
];
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
if (httpContentTypeSelected !== undefined) {
headers = headers.set('Content-Type', httpContentTypeSelected);
}
return this.httpClient.post(`${this.configuration.basePath}/api/complexmarketdata/${encodeURIComponent(String(scope))}/$delete`, requestBody, {
withCredentials: this.configuration.withCredentials,
headers: headers,
observe: observe,
reportProgress: reportProgress
});
}
getComplexMarketData(scope, requestBody, effectiveAt, asAt, maxAge, observe = 'body', reportProgress = false) {
if (scope === null || scope === undefined) {
throw new Error('Required parameter scope was null or undefined when calling getComplexMarketData.');
}
if (requestBody === null || requestBody === undefined) {
throw new Error('Required parameter requestBody was null or undefined when calling getComplexMarketData.');
}
let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });
if (effectiveAt !== undefined && effectiveAt !== null) {
queryParameters = queryParameters.set('effectiveAt', effectiveAt);
}
if (asAt !== undefined && asAt !== null) {
queryParameters = queryParameters.set('asAt', asAt.toISOString());
}
if (maxAge !== undefined && maxAge !== null) {
queryParameters = queryParameters.set('maxAge', maxAge);
}
let headers = this.defaultHeaders;
// authentication (oauth2) required
if (this.configuration.accessToken) {
const accessToken = typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken()
: this.configuration.accessToken;
headers = headers.set('Authorization', 'Bearer ' + accessToken);
}
// to determine the Accept header
const httpHeaderAccepts = [
'text/plain',
'application/json',
'text/json'
];
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
if (httpHeaderAcceptSelected !== undefined) {
headers = headers.set('Accept', httpHeaderAcceptSelected);
}
// to determine the Content-Type header
const consumes = [
'application/json-patch+json',
'application/json',
'text/json',
'application/_*+json'
];
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
if (httpContentTypeSelected !== undefined) {
headers = headers.set('Content-Type', httpContentTypeSelected);
}
return this.httpClient.post(`${this.configuration.basePath}/api/complexmarketdata/${encodeURIComponent(String(scope))}/$get`, requestBody, {
params: queryParameters,
withCredentials: this.configuration.withCredentials,
headers: headers,
observe: observe,
reportProgress: reportProgress
});
}
listComplexMarketData(asAt, observe = 'body', reportProgress = false) {
let queryParameters = new HttpParams({ encoder: new CustomHttpUrlEncodingCodec() });
if (asAt !== undefined && asAt !== null) {
queryParameters = queryParameters.set('asAt', asAt.toISOString());
}
let headers = this.defaultHeaders;
// authentication (oauth2) required
if (this.configuration.accessToken) {
const accessToken = typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken()
: this.configuration.accessToken;
headers = headers.set('Authorization', 'Bearer ' + accessToken);
}
// to determine the Accept header
const httpHeaderAccepts = [
'text/plain',
'application/json',
'text/json'
];
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
if (httpHeaderAcceptSelected !== undefined) {
headers = headers.set('Accept', httpHeaderAcceptSelected);
}
// to determine the Content-Type header
const consumes = [];
return this.httpClient.get(`${this.configuration.basePath}/api/complexmarketdata`, {
params: queryParameters,
withCredentials: this.configuration.withCredentials,
headers: headers,
observe: observe,
reportProgress: reportProgress
});
}
upsertComplexMarketData(scope, requestBody, observe = 'body', reportProgress = false) {
if (scope === null || scope === undefined) {
throw new Error('Required parameter scope was null or undefined when calling upsertComplexMarketData.');
}
if (requestBody === null || requestBody === undefined) {
throw new Error('Required parameter requestBody was null or undefined when calling upsertComplexMarketData.');
}
let headers = this.defaultHeaders;
// authentication (oauth2) required
if (this.configuration.accessToken) {
const accessToken = typeof this.configuration.accessToken === 'function'
? this.configuration.accessToken()
: this.configuration.accessToken;
headers = headers.set('Authorization', 'Bearer ' + accessToken);
}
// to determine the Accept header
const httpHeaderAccepts = [
'text/plain',
'application/json',
'text/json'
];
const httpHeaderAcceptSelected = this.configuration.selectHeaderAccept(httpHeaderAccepts);
if (httpHeaderAcceptSelected !== undefined) {
headers = headers.set('Accept', httpHeaderAcceptSelected);
}
// to determine the Content-Type header
const consumes = [
'application/json-patch+json',
'application/json',
'text/json',
'application/_*+json'
];
const httpContentTypeSelected = this.configuration.selectHeaderContentType(consumes);
if (httpContentTypeSelected !== undefined) {
headers = headers.set('Content-Type', httpContentTypeSelected);
}
return this.httpClient.post(`${this.configuration.basePath}/api/complexmarketdata/${encodeURIComponent(String(scope))}`, requestBody, {
withCredentials: this.configuration.withCredentials,
headers: headers,
observe: observe,
reportProgress: reportProgress
});
}
}
/** @nocollapse */ ComplexMarketDataService.ɵfac = function ComplexMarketDataService_Factory(t) { return new (t || ComplexMarketDataService)(i0.ɵɵinject(i1.HttpClient), i0.ɵɵinject(BASE_PATH, 8), i0.ɵɵinject(i2.Configuration, 8)); };
/** @nocollapse */ ComplexMarketDataService.ɵprov = i0.ɵɵdefineInjectable({ token: ComplexMarketDataService, factory: ComplexMarketDataService.ɵfac, providedIn: 'root' });
/*@__PURE__*/ (function () { i0.ɵsetClassMetadata(ComplexMarketDataService, [{
type: Injectable,
args: [{
providedIn: 'root'
}]
}], function () { return [{ type: i1.HttpClient }, { type: undefined, decorators: [{
type: Optional
}, {
type: Inject,
args: [BASE_PATH]
}] }, { type: i2.Configuration, decorators: [{
type: Optional
}] }]; }, null); })();
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29tcGxleE1hcmtldERhdGEuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIvdXNyL3NyYy9wcm9qZWN0cy9sdXNpZC1zZGstYW5ndWxhcjgvc3JjLyIsInNvdXJjZXMiOlsibGliL2dlbmVyYXRlZC9hcGkvY29tcGxleE1hcmtldERhdGEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQTs7Ozs7Ozs7OztHQVVHO0FBQ0gsdURBQXVEO0FBRXZELE9BQU8sRUFBRSxNQUFNLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUEyQixlQUFlLENBQUM7QUFDbEYsT0FBTyxFQUFFLFVBQVUsRUFBRSxXQUFXLEVBQUUsVUFBVSxFQUNWLE1BQWdDLHNCQUFzQixDQUFDO0FBQ3pGLE9BQU8sRUFBRSwwQkFBMEIsRUFBRSxNQUE2QixZQUFZLENBQUM7QUFhL0UsT0FBTyxFQUFFLFNBQVMsRUFBc0IsTUFBMEIsY0FBYyxDQUFDO0FBQ2pGLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBMEMsa0JBQWtCLENBQUM7Ozs7QUFNckYsTUFBTSxPQUFPLHdCQUF3QjtJQU1qQyxZQUFzQixVQUFzQixFQUFnQyxRQUFnQixFQUFjLGFBQTRCO1FBQWhILGVBQVUsR0FBVixVQUFVLENBQVk7UUFKbEMsYUFBUSxHQUFHLDJCQUEyQixDQUFDO1FBQzFDLG1CQUFjLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUNuQyxrQkFBYSxHQUFHLElBQUksYUFBYSxFQUFFLENBQUM7UUFJdkMsSUFBSSxhQUFhLEVBQUU7WUFDZixJQUFJLENBQUMsYUFBYSxHQUFHLGFBQWEsQ0FBQztZQUNuQyxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxhQUFhLENBQUMsUUFBUSxJQUFJLFFBQVEsSUFBSSxJQUFJLENBQUMsUUFBUSxDQUFDO1NBRXJGO2FBQU07WUFDSCxJQUFJLENBQUMsYUFBYSxDQUFDLFFBQVEsR0FBRyxRQUFRLElBQUksSUFBSSxDQUFDLFFBQVEsQ0FBQztTQUMzRDtJ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d0JBQXdCLENBQUMsQ0FBQztTQUM3RDtRQUVELHVDQUF1QztRQUN2QyxNQUFNLFFBQVEsR0FBYTtZQUN2Qiw2QkFBNkI7WUFDN0Isa0JBQWtCO1lBQ2xCLFdBQVc7WUFDWCxxQkFBcUI7U0FDeEIsQ0FBQztRQUNGLE1BQU0sdUJBQXVCLEdBQXVCLElBQUksQ0FBQyxhQUFhLENBQUMsdUJBQXVCLENBQUMsUUFBUSxDQUFDLENBQUM7UUFDekcsSUFBSSx1QkFBdUIsS0FBSyxTQUFTLEVBQUU7WUFDdkMsT0FBTyxHQUFHLE9BQU8sQ0FBQyxHQUFHLENBQUMsY0FBYyxFQUFFLHVCQUF1QixDQUFDLENBQUM7U0FDbEU7UUFFRCxPQUFPLElBQUksQ0FBQyxVQUFVLENBQUMsSUFBSSxDQUErQixHQUFHLElBQUksQ0FBQyxhQUFhLENBQUMsUUFBUSwwQkFBMEIsa0JBQWtCLENBQUMsTUFBTSxDQUFDLEtBQUssQ0FBQyxDQUFDLEVBQUUsRUFDakosV0FBVyxFQUNYO1lBQ0ksZUFBZSxFQUFFLElBQUksQ0FBQyxhQUFhLENBQUMsZUFBZTtZQUNuRCxPQUFPLEVBQUUsT0FBTztZQUNoQixPQUFPLEVBQUUsT0FBTztZQUNoQixjQUFjLEVBQUUsY0FBYztTQUNqQyxDQUNKLENBQUM7SUFDTixDQUFDOzttSEEvUlEsd0JBQXdCLDBDQU1nQyxTQUFTO21GQU5qRSx3QkFBd0IsV0FBeEIsd0JBQXdCLG1CQUZ2QixNQUFNO2tEQUVQLHdCQUF3QjtjQUhwQyxVQUFVO2VBQUM7Z0JBQ1YsVUFBVSxFQUFFLE1BQU07YUFDbkI7O3NCQU9rRCxRQUFROztzQkFBRyxNQUFNO3VCQUFDLFNBQVM7O3NCQUFxQixRQUFRIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBMVVNJRCBBUElcbiAqICMgSW50cm9kdWN0aW9uICBUaGlzIHBhZ2UgZG9jdW1lbnRzIHRoZSBbTFVTSUQgQVBJc10oLi4vLi4vLi4vYXBpL3N3YWdnZXIpLCB3aGljaCBhbGxvd3MgYXV0aG9yaXNlZCBjbGllbnRzIHRvIHF1ZXJ5IGFuZCB1cGRhdGUgdGhlaXIgZGF0YSB3aXRoaW4gdGhlIExVU0lEIHBsYXRmb3JtLiAgU0RLcyB0byBpbnRlcmFjdCB3aXRoIHRoZSBMVVNJRCBBUElzIGFyZSBhdmFpbGFibGUgaW4gdGhlIGZvbGxvd2luZyBsYW5ndWFnZXMgYW5kIGZyYW1ld29ya3M6ICAqIFtDI10oaHR0cHM6Ly9naXRodWIuY29tL2ZpbmJvdXJuZS9sdXNpZC1zZGstY3NoYXJwKSAqIFtKYXZhXShodHRwczovL2dpdGh1Yi5jb20vZmluYm91cm5lL2x1c2lkLXNkay1qYXZhKSAqIFtKYXZhU2NyaXB0XShodHRwczovL2dpdGh1Yi5jb20vZmluYm91cm5lL2x1c2lkLXNkay1qcykgKiBbUHl0aG9uXShodHRwczovL2dpdGh1Yi5jb20vZmluYm91cm5lL2x1c2lkLXNkay1weXRob24pICogW0FuZ3VsYXJdKGh0dHBzOi8vZ2l0aHViLmNvbS9maW5ib3VybmUvbHVzaWQtc2RrLWFuZ3VsYXIpICBUaGUgTFVTSUQgcGxhdGZvcm0gaXMgbWFkZSB1cCBvZiBhIG51bWJlciBvZiBzdWItYXBwbGljYXRpb25zLiBZb3UgY2FuIGZpbmQgdGhlIEFQSSAvIHN3YWdnZXIgZG9jdW1lbnRhdGlvbiBieSBmb2xsb3dpbmcgdGhlIGxpbmtzIGluIHRoZSB0YWJsZSBiZWxvdy4gICB8IEFwcGxpY2F0aW9uICAgfCBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBBUEkgLyBTd2FnZ2VyIERvY3VtZW50YXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgIHwgfC0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLXwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS18IHwgTFVTSUQgICAgICAgICB8IE9wZW4sIEFQSS1maXJzdCwgZGV2ZWxvcGVyLWZyaWVuZGx5IGludmVzdG1lbnQgZGF0YSBwbGF0Zm9ybS4gICAgICAgICAgICAgICAgICAgICB8IFtTd2FnZ2VyXSguLi8uLi8uLi9hcGkvc3dhZ2dlci9pbmRleC5odG1sKSAgICAgICAgICAgfCB8IFdlYiBhcHAgICAgICAgfCBVc2VyLWZhY2luZyBmcm9udCBlbmQgZm9yIExVU0lELiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBbU3dhZ2dlcl0oLi4vLi4vLi4vYXBwL3N3YWdnZXIvaW5kZXguaHRtbCkgICAgICAgICAgIHwgfCBTY2hlZHVsZXIgICAgIHwgQXV0b21hdGVkIGpvYiBzY2hlZHVsZXIuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW1N3YWdnZXJdKC4uLy4uLy4uL3NjaGVkdWxlcjIvc3dhZ2dlci9pbmRleC5odG1sKSAgICB8IHwgSW5zaWdodHMgICAgICB8IE1vbml0b3JpbmcgYW5kIHRyb3VibGVzaG9vdGluZyBzZXJ2aWNlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtTd2FnZ2VyXSguLi8uLi8uLi9pbnNpZ2h0cy9zd2FnZ2VyL2luZGV4Lmh0bWwpICAgICAgfCB8IElkZW50aXR5ICAgICAgfCBJZGVudGl0eSBtYW5hZ2VtZW50IGZvciBMVVNJRCAoaW4gY29uanVuY3Rpb24gd2l0aCBBY2Nlc3MpICAgICAgICAgICAgICAgICAgICAgICAgfCBbU3dhZ2dlcl0oLi4vLi4vLi4vaWRlbnRpdHkvc3dhZ2dlci9pbmRleC5odG1sKSAgICAgIHwgfCBBY2Nlc3MgICAgICAgIHwgQWNjZXNzIGNvbnRyb2wgZm9yIExVU0lEIChpbiBjb25qdW5jdGlvbiB3aXRoIElkZW50aXR5KSAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW1N3YWdnZXJdKC4uLy4uLy4uL2FjY2Vzcy9zd2FnZ2VyL2luZGV4Lmh0bWwpICAgICAgICB8IHwgRHJpdmUgICAgICAgICB8IFNlY3VyZSBmaWxlIHJlcG9zaXRvcnkgYW5kIG1hbmFnZXIgZm9yIGNvbGxhYm9yYXRpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtTd2FnZ2VyXSguLi8uLi8uLi9kcml2ZS9zd2FnZ2VyL2luZGV4Lmh0bWwpICAgICAgICAgfCB8IEx1bWluZXNjZSAgICAgfCBEYXRhIHZpcnR1YWxpc2F0aW9uIHNlcnZpY2UgKHF1ZXJ5IGRhdGEgZnJvbSBtdWx0aXBsZSBwcm92aWRlcnMsIGluY2x1ZGluZyBMVVNJRCkgfCBbU3dhZ2dlcl0oLi4vLi4vLi4vaG9uZXljb21iL3N3YWdnZXIvaW5kZXguaHRtbCkgICAgIHwgfCBOb3RpZmljYXRpb24gIHwgTm90aWZpY2F0aW9uIHNlcnZpY2UuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgW1N3YWdnZXJdKC4uLy4uLy4uL25vdGlmaWNhdGlvbnMvc3dhZ2dlci9pbmRleC5odG1sKSB8IHwgQ29uZmlndXJhdGlvbiB8IEZpbGUgc3RvcmUgZm9yIHNlY3JldHMgYW5kIG90aGVyIHNlbnNpdGl2ZSBpbmZvcm1hdGlvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICB8IFtTd2FnZ2VyXSguLi8uLi8uLi9jb25maWd1cmF0aW9uL3N3YWdnZXIvaW5kZXguaHRtbCkgfCAgICMgRXJyb3IgQ29kZXMgIHwgQ29kZXxOYW1lfERlc2NyaXB0aW9uIHwgfCAtLS18LS0tfC0tLSB8IHwgPGEgbmFtZT1cXFwiLTEwXFxcIj4tMTA8L2E+fFNlcnZlciBDb25maWd1cmF0aW9uIEVycm9yfCAgfCB8IDxhIG5hbWU9XFxcIi0xXFxcIj4tMTwvYT58VW5rbm93biBlcnJvcnxBbiB1bmV4cGVjdGVkIGVycm9yIHdhcyBlbmNvdW50ZXJlZCBvbiBvdXIgc2lkZS4gfCB8IDxhIG5hbWU9XFxcIjEwMlxcXCI+MTAyPC9hPnxWZXJzaW9uIE5vdCBGb3VuZHwgIHwgfCA8YSBuYW1lPVxcXCIxMDNcXFwiPjEwMzwvYT58QXBpIFJhdGUgTGltaXQgVmlvbGF0aW9ufCAgfCB8IDxhIG5hbWU9XFxcIjEwNFxcXCI+MTA0PC9hPnxJbnN0cnVtZW50IE5vdCBGb3VuZHwgIHwgfCA8YSBuYW1lPVxcXCIxMDVcXFwiPjEwNTwvYT58UHJvcGVydHkgTm90IEZvdW5kfCAgfCB8IDxhIG5hbWU9XFxcIjEwNlxcXCI+MTA2PC9hPnxQb3J0Zm9saW8gUmVjdXJzaW9uIERlcHRofCAgfCB8IDxhIG5hbWU9XFxcIjEwOFxcXCI+MTA4PC9hPnxHcm91cCBOb3QgRm91bmR8ICB8IHwgPGEgbmFtZT1cXFwiMTA5XFxcIj4xMDk8L2E+fFBvcnRmb2xpbyBOb3QgRm91bmR8ICB8IHwgPGEgbmFtZT1cXFwiMTEwXFxcIj4xMTA8L2E+fFByb3BlcnR5IFNjaGVtYSBOb3QgRm91bmR8ICB8IHwgPGEgbmFtZT1cXFwiMTExXFxcIj4xMTE8L2E+fFBvcnRmb2xpbyBBbmNlc3RyeSBOb3QgRm91bmR8ICB8IHwgPGEgbmFtZT1cXFwiMTEyXFxcIj4xMTI8L2E+fFBvcnRmb2xpbyBXaXRoIElkIEFscmVhZHkgRXhpc3RzfCAgfCB8IDxhIG5hbWU9XFxcIjExM1xcXCI+MTEzPC9hPnxPcnBoYW5lZCBQb3J0Zm9saW98ICB8IHwgPGEgbmFtZT1cXFwiMTE5XFxcIj4xMTk8L2E+fE1pc3NpbmcgQmFzZSBDbGFpbXN8ICB8IHwgPGEgbmFtZT1cXFwiMTIxXFxcIj4xMjE8L2E+fFByb3BlcnR5IE5vdCBEZWZpbmVkfCAgfCB8IDxhIG5hbWU9XFxcIjEyMlxcXCI+MTIyPC9hPnxDYW5ub3QgRGVsZXRlIFN5c3RlbSBQcm9wZXJ0eXwgIHwgfCA8YSBuYW1lPVxcXCIxMjNcXFwiPjEyMzwvYT58Q2Fubm90IE1vZGlmeSBJbW11dGFibGUgUHJvcGVydHkgRmllbGR8ICB8IHwgPGEgbmFtZT1cXFwiMTI0XFxcIj4xMjQ8L2E+fFByb3BlcnR5IEFscmVhZHkgRXhpc3RzfCAgfCB8IDxhIG5hbWU9XFxcIjEyNVxcXCI+MTI1PC9hPnxJbnZhbGlkIFByb3BlcnR5IExpZmUgVGltZXwgIHwgfCA8YSBuYW1lPVxcXCIxMjZcXFwiPjEyNjwvYT58UHJvcGVydHkgQ29uc3RyYWludCBTdHlsZSBFeGNsdWRlcyBQcm9wZXJ0aWVzfCAgfCB8IDxhIG5hbWU9XFxcIjEyN1xcXCI+MTI3PC9hPnxDYW5ub3QgTW9kaWZ5IERlZmF1bHQgRGF0YSBUeXBlfCAgfCB8IDxhIG5hbWU9XFxcIjEyOFxcXCI+MTI4PC9hPnxHcm91cCBBbHJlYWR5IEV4aXN0c3wgIHwgfCA8YSBuYW1lPVxcXCIxMjlcXFwiPjEyOTwvYT58Tm8gU3VjaCBEYXRhIFR5cGV8ICB8IHwgPGEgbmFtZT1cXFwiMTMwXFxcIj4xMzA8L2E+fFVuZGVmaW5lZCBWYWx1ZSBGb3IgRGF0YSBUeXBlfCAgfCB8IDxhIG5hbWU9XFxcIjEzMVxcXCI+MTMxPC9hPnxVbnN1cHBvcnRlZCBWYWx1ZSBUeXBlIERlZmluZWQgT24gRGF0YSBUeXBlfCAgfCB8IDxhIG5hbWU9XFxcIjEzMlxcXCI+MTMyPC9hPnxWYWxpZGF0aW9uIEVycm9yfCAgfCB8IDxhIG5hbWU9XFxcIjEzM1xcXCI+MTMzPC9hPnxMb29wIERldGVjdGVkIEluIEdyb3VwIEhpZXJhcmNoeXwgIHwgfCA8YSBuYW1lPVxcXCIxMzRcXFwiPjEzNDwvYT58VW5kZWZpbmVkIEFjY2VwdGFibGUgVmFsdWVzfCAgfCB8IDxhIG5hbWU9XFxcIjEzNVxcXCI+MTM1PC9hPnxTdWIgR3JvdXAgQWxyZWFkeSBFeGlzdHN8ICB8IHwgPGEgbmFtZT1cXFwiMTM4XFxcIj4xMzg8L2E+fFByaWNlIFNvdXJjZSBOb3QgRm91bmR8ICB8IHwgPGEgbmFtZT1cXFwiMTM5XFxcIj4xMzk8L2E+fEFuYWx5dGljIFN0b3JlIE5vdCBGb3VuZHwgIHwgfCA8YSBuYW1lPVxcXCIxNDFcXFwiPjE0MTwvYT58QW5hbHl0aWMgU3RvcmUgQWxyZWFkeSBFeGlzdHN8ICB8IHwgPGEgbmFtZT1cXFwiMTQzXFxcIj4xNDM8L2E+fENsaWVudCBJbnN0cnVtZW50IEFscmVhZHkgRXhpc3RzfCAgfCB8IDxhIG5hbWU9XFxcIjE0NFxcXCI+MTQ0PC9hPnxEdXBsaWNhdGUgSW4gUGFyYW1ldGVyIFNldHwgIHwgfCA8YSBuYW1lPVxcXCIxNDdcXFwiPjE0NzwvYT58UmVzdWx0cyBOb3QgRm91bmR8ICB8IHwgPGEgbmFtZT1cXFwiMTQ4XFxcIj4xNDg8L2E+fE9yZGVyIEZpZWxkIE5vdCBJbiBSZXN1bHQgU2V0fCAgfCB8IDxhIG5hbWU9XFxcIjE0OVxcXCI+MTQ5PC9hPnxPcGVyYXRpb24gRmFpbGVkfCAgfCB8IDxhIG5hbWU9XFxcIjE1MFxcXCI+MTUwPC9hPnxFbGFzdGljIFNlYXJjaCBFcnJvcnwgIHwgfCA8YSBuYW1lPVxcXCIxNTFcXFwiPjE1MTwvYT58SW52YWxpZCBQYXJhbWV0ZXIgVmFsdWV8ICB8IHwgPGEgbmFtZT1cXFwiMTUzXFxcIj4xNTM8L2E+fENvbW1hbmQgUHJvY2Vzc2luZyBGYWlsdXJlfCAgfCB8IDxhIG5hbWU9XFxcIjE1NFxcXCI+MTU0PC9hPnxFbnRpdHkgU3RhdGUgQ29uc3RydWN0aW9uIEZhaWx1cmV8ICB8IHwgPGEgbmFtZT1cXFwiMTU1XFxcIj4xNTU8L2E+fEVudGl0eSBUaW1lbGluZSBEb2VzIE5vdCBFeGlzdHwgIHwgfCA8YSBuYW1lPVxcXCIxNTZcXFwiPjE1NjwvYT58Q29uY3VycmVuY3kgQ29uZmxpY3QgRmFpbHVyZXwgIHwgfCA8YSBuYW1lPVxcXCIxNTdcXFwiPjE1NzwvYT58SW52YWxpZCBSZXF1ZXN0fCAgfCB8IDxhIG5hbWU9XFxcIjE1OFxcXCI+MTU4PC9hPnxFdmVudCBQdWJsaXNoIFVua25vd258ICB8IHwgPGEgbmFtZT1cXFwiMTU5XFxcIj4xNTk8L2E+fEV2ZW50IFF1ZXJ5IEZhaWx1cmV8ICB8IHwgPGEgbmFtZT1cXFwiMTYwXFxcIj4xNjA8L2E+fEJsb2IgRGlkIE5vdCBFeGlzdHwgIHwgfCA8YSBuYW1lPVxcXCIxNjJcXFwiPjE2MjwvYT58U3ViIFN5c3RlbSBSZXF1ZXN0IEZhaWx1cmV8ICB8IHwgPGEgbmFtZT1cXFwiMTYzXFxcIj4xNjM8L2E+fFN1YiBTeXN0ZW0gQ29uZmlndXJhdGlvbiBGYWlsdXJlfCAgfCB8IDxhIG5hbWU9XFxcIjE2NVxcXCI+MTY1PC9hPnxGYWlsZWQgVG8gRGVsZXRlfCAgfCB8IDxhIG5hbWU9XFxcIjE2NlxcXCI+MTY2PC9hPnxVcHNlcnQgQ2xpZW50IEluc3RydW1lbnQgRmFpbHVyZXwgIHwgfCA8YSBuYW1lPVxcXCIxNjdcXFwiPjE2NzwvYT58SWxsZWdhbCBBcyBBdCBJbnRlcnZhbHwgIHwgfCA8YSBuYW1lPVxcXCIxNjhcXFwiPjE2ODwvYT58SWxsZWdhbCBCaXRlbXBvcmFsIFF1ZXJ5fCAgfCB8IDxhIG5hbWU9XFxcIjE2OVxcXCI+MTY5PC9hPnxJbnZhbGlkIEFsdGVybmF0ZSBJZHwgIHwgfCA8YSBuYW1lPVxcXCIxNzBcXFwiPjE3MDwvYT58Q2Fubm90IEFkZCBTb3VyY2UgUG9ydGZvbGlvIFByb3BlcnR5IEV4cGxpY2l0bHl8ICB8IHwgPGEgbmFtZT1cXFwiMTcxXFxcIj4xNzE8L2E+fEVudGl0eSBBbHJlYWR5IEV4aXN0cyBJbiBHcm91cHwgIHwgfCA8YSBuYW1lPVxcXCIxNzNcXFwiPjE3MzwvYT58RW50aXR5IFdpdGggSWQgQWxyZWFkeSBFeGlzdHN8ICB8IHwgPGEgbmFtZT1cXFwiMTc0XFxcIj4xNzQ8L2E+fERlcml2ZWQgUG9ydGZvbGlvIERldGFpbHMgRG8gTm90IEV4aXN0fCAgfCB8IDxhIG5hbWU9XFxcIjE3NVxcXCI+MTc1PC9hPnxFbnRpdHkgTm90IEluIEdyb3VwfCAgfCB8IDxhIG5hbWU9XFxcIjE3NlxcXCI+MTc2PC9hPnxQb3J0Zm9saW8gV2l0aCBOYW1lIEFscmVhZHkgRXhpc3RzfCAgfCB8IDxhIG5hbWU9XFxcIjE3N1xcXCI+MTc3PC9hPnxJbnZhbGlkIFRyYW5zYWN0aW9uc3wgIHwgfCA8YSBuYW1lPVxcXCIxNzhcXFwiPjE3ODwvYT58UmVmZXJlbmNlIFBvcnRmb2xpbyBOb3QgRm91bmR8ICB8IHwgPGEgbmFtZT1cXFwiMTc5XFxcIj4xNzk8L2E+fER1cGxpY2F0ZSBJZHwgIHwgfCA8YSBuYW1lPVxcXCIxODBcXFwiPjE4MDwvYT58Q29tbWFuZCBSZXRyaWV2YWwgRmFpbHVyZXwgIHwgfCA8YSBuYW1lPVxcXCIxODFcXFwiPjE4MTwvYT58RGF0YSBGaWx0ZXIgQXBwbGljYXRpb24gRmFpbHVyZXwgIHwgfCA8YSBuYW1lPVxcXCIxODJcXFwiPjE4MjwvYT58U2VhcmNoIEZhaWxlZHwgIHwgfCA8YSBuYW1lPVxcXCIxODNcXFwiPjE4MzwvYT58TW92ZW1lbnRzIEVuZ2luZSBDb25maWd1cmF0aW9uIEtleSBGYWlsdXJlfCAgfCB8IDxhIG5hbWU9XFxcIjE4NFxcXCI+MTg0PC9hPnxGeCBSYXRlIFNvdXJjZSBOb3QgRm91bmR8ICB8IHwgPGEgbmFtZT1cXFwiMTg1XFxcIj4xODU8L2E+fEFjY3J1YWwgU291cmNlIE5vdCBGb3VuZHwgIHwgfCA8YSBuYW1lPVxcXCIxODZcXFwiPjE4NjwvYT58QWNjZXNzIERlbmllZHwgIHwgfCA8YSBuYW1lPVxcXCIxODdcXFwiPjE4NzwvYT58SW52YWxpZCBJZGVudGl0eSBUb2tlbnwgIHwgfCA8YSBuYW1lPVxcXCIxODhcXFwiPjE4ODwvYT58SW52YWxpZCBSZXF1ZXN0IEhlYWRlcnN8ICB8IHwgPGEgbmFtZT1cXFwiMTg5XFxcIj4xODk8L2E+fFByaWNlIE5vdCBGb3VuZHwgIHwgfCA8YSBuYW1lPVxcXCIxOTBcXFwiPjE5MDwvYT58SW52YWxpZCBTdWIgSG9sZGluZyBLZXlzIFByb3ZpZGVkfCAgfCB8IDxhIG5hbWU9XFxcIjE5MVxcXCI+MTkxPC9hPnxEdXBsaWNhdGUgU3ViIEhvbGRpbmcgS2V5cyBQcm92aWRlZHwgIHwgfCA8YSBuYW1lPVxcXCIxOTJcXFwiPjE5MjwvYT58Q3V0IERlZmluaXRpb24gTm90IEZvdW5kfCAgfCB8IDxhIG5hbWU9XFxcIjE5M1xcXCI+MTkzPC9hPnxDdXQgRGVmaW5pdGlvbiBJbnZhbGlkfCAgfCB8IDxhIG5hbWU9XFxcIjE5NFxcXCI+MTk0PC9hPnxUaW1lIFZhcmlhbnQgUHJvcGVydHkgRGVsZXRpb24gRGF0ZSBVbnNwZWNpZmllZHwgIHwgfCA8YSBuYW1lPVxcXCIxOTVcXFwiPjE5NTwvYT58UGVycGV0dWFsIFByb3BlcnR5IERlbGV0aW9uIERhdGUgU3BlY2lmaWVkfCAg