@vuu-ui/vuu-data-test 0.8.21 → 0.8.22-debug
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/cjs/index.js +2474 -1
- package/cjs/index.js.map +2 -2
- package/esm/index.js +2466 -1
- package/esm/index.js.map +2 -2
- package/package.json +3 -3
- package/LICENSE +0 -201
package/esm/index.js.map
CHANGED
|
@@ -2,6 +2,6 @@
|
|
|
2
2
|
"version": 3,
|
|
3
3
|
"sources": ["../../../node_modules/@thomaschaplin/isin-generator/country-codes.json", "../../../node_modules/@thomaschaplin/cusip-generator/src/convert-string-to-base-ten-number.ts", "../../../node_modules/@thomaschaplin/cusip-generator/src/is-odd.ts", "../../../node_modules/@thomaschaplin/cusip-generator/src/generate-cusip-check-code.ts", "../../../node_modules/@thomaschaplin/cusip-generator/src/fixtures/alphabet.ts", "../../../node_modules/@thomaschaplin/cusip-generator/src/fixtures/base-ten-numbers.ts", "../../../node_modules/@thomaschaplin/cusip-generator/src/fixtures/alphanumeric-values.ts", "../../../node_modules/@thomaschaplin/cusip-generator/src/generate-random-alphanumeric.ts", "../../../node_modules/@thomaschaplin/cusip-generator/src/generate-random-string-of-alphanumeric-chars.ts", "../../../node_modules/@thomaschaplin/cusip-generator/src/generate-random-base-ten-number.ts", "../../../node_modules/@thomaschaplin/cusip-generator/src/generate-random-string-of-base-ten-chars.ts", "../../../node_modules/@thomaschaplin/cusip-generator/src/generate-cusip-without-check-code.ts", "../../../node_modules/@thomaschaplin/cusip-generator/src/generate-cusip.ts", "../../../node_modules/@thomaschaplin/cusip-generator/src/index.ts", "../../../node_modules/@thomaschaplin/isin-generator/index.js", "../../../packages/vuu-data-test/src/ArrayProxy.ts", "../../../packages/vuu-data-test/src/basket/basket-schemas.ts", "../../../packages/vuu-data-test/src/simul/simul-schemas.ts", "../../../packages/vuu-data-test/src/schemas.ts", "../../../packages/vuu-data-test/src/TickingArrayDataSource.ts", "../../../packages/vuu-utils/src/column-utils.ts", "../../../packages/vuu-utils/src/event-emitter.ts", "../../../packages/vuu-data-test/src/makeSuggestions.ts", "../../../packages/vuu-data-test/src/vuu-row-generator.ts", "../../../packages/vuu-data-test/src/Table.ts", "../../../packages/vuu-data-test/src/data-utils.ts", "../../../packages/vuu-data-test/src/UpdateGenerator.ts", "../../../packages/vuu-data-test/src/basket/reference-data/ftse100.ts", "../../../packages/vuu-data-test/src/basket/reference-data/nasdaq100.ts", "../../../packages/vuu-data-test/src/basket/reference-data/sp500.ts", "../../../packages/vuu-data-test/src/basket/reference-data/hsi.ts", "../../../packages/vuu-data-test/src/basket/reference-data/constituents.ts", "../../../packages/vuu-data-test/src/basket/reference-data/prices.ts", "../../../packages/vuu-data-test/src/basket/basket-module.ts", "../../../packages/vuu-data-test/src/simul/reference-data/instruments.ts", "../../../packages/vuu-data-test/src/simul/reference-data/currencies.ts", "../../../packages/vuu-data-test/src/simul/reference-data/locations.ts", "../../../packages/vuu-data-test/src/simul/reference-data/lotsizes.ts", "../../../packages/vuu-data-test/src/simul/reference-data/instruments-extended.ts", "../../../packages/vuu-data-test/src/simul/reference-data/prices.ts", "../../../packages/vuu-data-test/src/simul/simul-module.ts", "../../../packages/vuu-data-test/src/vuu-modules.ts"],
|
|
4
4
|
"sourcesContent": ["[\r\n \"AD\",\r\n \"AE\",\r\n \"AF\",\r\n \"AG\",\r\n \"AI\",\r\n \"AL\",\r\n \"AM\",\r\n \"AO\",\r\n \"AQ\",\r\n \"AR\",\r\n \"AS\",\r\n \"AT\",\r\n \"AU\",\r\n \"AW\",\r\n \"AX\",\r\n \"AZ\",\r\n \"BA\",\r\n \"BB\",\r\n \"BD\",\r\n \"BE\",\r\n \"BF\",\r\n \"BG\",\r\n \"BH\",\r\n \"BI\",\r\n \"BJ\",\r\n \"BL\",\r\n \"BM\",\r\n \"BN\",\r\n \"BO\",\r\n \"BQ\",\r\n \"BR\",\r\n \"BS\",\r\n \"BT\",\r\n \"BV\",\r\n \"BW\",\r\n \"BY\",\r\n \"BZ\",\r\n \"CA\",\r\n \"CC\",\r\n \"CD\",\r\n \"CF\",\r\n \"CG\",\r\n \"CH\",\r\n \"CI\",\r\n \"CK\",\r\n \"CL\",\r\n \"CM\",\r\n \"CN\",\r\n \"CO\",\r\n \"CR\",\r\n \"CU\",\r\n \"CV\",\r\n \"CW\",\r\n \"CX\",\r\n \"CY\",\r\n \"CZ\",\r\n \"DE\",\r\n \"DJ\",\r\n \"DK\",\r\n \"DM\",\r\n \"DO\",\r\n \"DZ\",\r\n \"EC\",\r\n \"EE\",\r\n \"EG\",\r\n \"EH\",\r\n \"ER\",\r\n \"ES\",\r\n \"ET\",\r\n \"FI\",\r\n \"FJ\",\r\n \"FK\",\r\n \"FM\",\r\n \"FO\",\r\n \"FR\",\r\n \"GA\",\r\n \"GB\",\r\n \"GD\",\r\n \"GE\",\r\n \"GF\",\r\n \"GG\",\r\n \"GH\",\r\n \"GI\",\r\n \"GL\",\r\n \"GM\",\r\n \"GN\",\r\n \"GP\",\r\n \"GQ\",\r\n \"GR\",\r\n \"GS\",\r\n \"GT\",\r\n \"GU\",\r\n \"GW\",\r\n \"GY\",\r\n \"HK\",\r\n \"HM\",\r\n \"HN\",\r\n \"HR\",\r\n \"HT\",\r\n \"HU\",\r\n \"ID\",\r\n \"IE\",\r\n \"IL\",\r\n \"IM\",\r\n \"IN\",\r\n \"IO\",\r\n \"IQ\",\r\n \"IR\",\r\n \"IS\",\r\n \"IT\",\r\n \"JE\",\r\n \"JM\",\r\n \"JO\",\r\n \"JP\",\r\n \"KE\",\r\n \"KG\",\r\n \"KH\",\r\n \"KI\",\r\n \"KM\",\r\n \"KN\",\r\n \"KP\",\r\n \"KR\",\r\n \"KW\",\r\n \"KY\",\r\n \"KZ\",\r\n \"LA\",\r\n \"LB\",\r\n \"LC\",\r\n \"LI\",\r\n \"LK\",\r\n \"LR\",\r\n \"LS\",\r\n \"LT\",\r\n \"LU\",\r\n \"LV\",\r\n \"LY\",\r\n \"MA\",\r\n \"MC\",\r\n \"MD\",\r\n \"ME\",\r\n \"MF\",\r\n \"MG\",\r\n \"MH\",\r\n \"MK\",\r\n \"ML\",\r\n \"MM\",\r\n \"MN\",\r\n \"MO\",\r\n \"MP\",\r\n \"MQ\",\r\n \"MR\",\r\n \"MS\",\r\n \"MT\",\r\n \"MU\",\r\n \"MV\",\r\n \"MW\",\r\n \"MX\",\r\n \"MY\",\r\n \"MZ\",\r\n \"NA\",\r\n \"NC\",\r\n \"NE\",\r\n \"NF\",\r\n \"NG\",\r\n \"NI\",\r\n \"NL\",\r\n \"NO\",\r\n \"NP\",\r\n \"NR\",\r\n \"NU\",\r\n \"NZ\",\r\n \"OM\",\r\n \"PA\",\r\n \"PE\",\r\n \"PF\",\r\n \"PG\",\r\n \"PH\",\r\n \"PK\",\r\n \"PL\",\r\n \"PM\",\r\n \"PN\",\r\n \"PR\",\r\n \"PS\",\r\n \"PT\",\r\n \"PW\",\r\n \"PY\",\r\n \"QA\",\r\n \"RE\",\r\n \"RO\",\r\n \"RS\",\r\n \"RU\",\r\n \"RW\",\r\n \"SA\",\r\n \"SB\",\r\n \"SC\",\r\n \"SD\",\r\n \"SE\",\r\n \"SG\",\r\n \"SH\",\r\n \"SI\",\r\n \"SJ\",\r\n \"SK\",\r\n \"SL\",\r\n \"SM\",\r\n \"SN\",\r\n \"SO\",\r\n \"SR\",\r\n \"SS\",\r\n \"ST\",\r\n \"SV\",\r\n \"SX\",\r\n \"SY\",\r\n \"SZ\",\r\n \"TC\",\r\n \"TD\",\r\n \"TF\",\r\n \"TG\",\r\n \"TH\",\r\n \"TJ\",\r\n \"TK\",\r\n \"TL\",\r\n \"TM\",\r\n \"TN\",\r\n \"TO\",\r\n \"TR\",\r\n \"TT\",\r\n \"TV\",\r\n \"TW\",\r\n \"TZ\",\r\n \"UA\",\r\n \"UG\",\r\n \"UM\",\r\n \"US\",\r\n \"UY\",\r\n \"UZ\",\r\n \"VA\",\r\n \"VC\",\r\n \"VE\",\r\n \"VG\",\r\n \"VI\",\r\n \"VN\",\r\n \"VU\",\r\n \"WF\",\r\n \"WS\",\r\n \"YE\",\r\n \"YT\",\r\n \"ZA\",\r\n \"ZM\",\r\n \"ZW\"\r\n]", null, null, null, null, null, null, null, null, null, null, null, null, null, "'use-strict'\r\n\r\nconst countryCodes = require('./country-codes.json')\r\nconst cusip = require('@thomaschaplin/cusip-generator').generateCusip()\r\n\r\n\r\nconst generateIsin = cusip => {\r\n let code = countryCodes[Math.floor(Math.random() * countryCodes.length)]\r\n let isin = code + cusip + generateIsinCheckDigit(code + cusip + '0')\r\n return isin\r\n}\r\n\r\nconst generateIsinCheckDigit = isin => {\r\n if (isin.length != 12) return false;\r\n var v = [];\r\n for (var i = isin.length - 2; i >= 0; i--) {\r\n let c = isin.charAt(i);\r\n if (isNaN(c)) {\r\n var letterCode = isin.charCodeAt(i) - 55;\r\n v.push(letterCode % 10);\r\n if (letterCode > 9) {\r\n v.push(Math.floor(letterCode / 10));\r\n }\r\n } else {\r\n v.push(Number(c));\r\n }\r\n }\r\n var sum = 0;\r\n var l = v.length;\r\n for (var i = 0; i < l; i++) {\r\n if (i % 2 == 0) {\r\n var d = v[i] * 2;\r\n sum += Math.floor(d / 10)\r\n sum += d % 10;\r\n } else {\r\n sum += v[i];\r\n }\r\n }\r\n return (10 - (sum % 10)) % 10\r\n}\r\n\r\n\r\nexports.isinGenerator = function isinGenerator() {\r\n return generateIsin(cusip)\r\n}", "export type RowAtIndexFunc<T = unknown> = (index: number) => T | undefined;\n\nexport class ArrayProxy<T = string> {\n #getItem: RowAtIndexFunc;\n public length = 0;\n\n constructor(size: number, getRow: RowAtIndexFunc) {\n this.#getItem = getRow;\n this.length = size;\n\n const handler = {\n get: (target: ArrayProxy<T>, prop: string | symbol): any => {\n if (prop === \"length\") {\n return target.length;\n } else if (prop === \"slice\") {\n return target.slice;\n } else if (prop === \"map\") {\n return target.map;\n } else if (prop === \"toString\") {\n return \"[ArrayProxy]\";\n }\n if (typeof prop === \"string\") {\n const index = parseInt(prop, 10);\n if (!isNaN(index)) {\n if (index < this.length) {\n return target.#getItem(index);\n } else {\n return undefined;\n }\n }\n }\n throw Error(`unsupported property ${String(prop)} on ArrayProxy`);\n },\n set: (target: ArrayProxy<T>, prop: string, newVal: unknown) => {\n if (prop === \"length\") {\n target.length = newVal as number;\n return true;\n }\n throw Error(`ArrayProxy is immutable except for length`);\n },\n };\n return new Proxy(this, handler);\n }\n\n map = (func: (item: T, i: number) => unknown) => {\n return new ArrayProxy(this.length, (i: number) => {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n return func(this.#getItem(i), i);\n });\n };\n slice = (from: number, to: number) => {\n const out = [];\n const end = Math.min(this.length, to);\n for (let i = from; i < end; i++) {\n out.push(this.#getItem(i));\n }\n return out;\n };\n}\n", "import { TableSchema } from \"@vuu-ui/vuu-data-types\";\n\nexport type BasketsTableName =\n | \"algoType\"\n | \"basket\"\n | \"basketConstituent\"\n | \"basketTrading\"\n | \"basketTradingConstituent\"\n | \"basketTradingConstituentJoin\"\n | \"priceStrategyType\";\n\nexport const schemas: Readonly<\n Record<BasketsTableName, Readonly<TableSchema>>\n> = {\n algoType: {\n columns: [\n { name: \"algoType\", serverDataType: \"string\" },\n { name: \"id\", serverDataType: \"int\" },\n ],\n key: \"id\",\n table: { module: \"BASKET\", table: \"algoType\" },\n },\n basket: {\n columns: [\n { name: \"id\", serverDataType: \"string\" },\n { name: \"name\", serverDataType: \"string\" },\n { name: \"notionalValue\", serverDataType: \"double\" },\n { name: \"notionalValueUsd\", serverDataType: \"double\" },\n ],\n key: \"id\",\n table: { module: \"BASKET\", table: \"basket\" },\n },\n basketConstituent: {\n columns: [\n { name: \"basketId\", serverDataType: \"string\" },\n { name: \"change\", serverDataType: \"string\" },\n { name: \"description\", serverDataType: \"string\" },\n { name: \"lastTrade\", serverDataType: \"string\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"ricBasketId\", serverDataType: \"string\" },\n { name: \"side\", serverDataType: \"string\" },\n { name: \"volume\", serverDataType: \"string\" },\n { name: \"weighting\", serverDataType: \"double\" },\n ],\n key: \"ricBasketId\",\n table: { module: \"BASKET\", table: \"basketConstituent\" },\n },\n basketTrading: {\n columns: [\n { name: \"basketId\", serverDataType: \"string\" },\n { name: \"basketName\", serverDataType: \"string\" },\n { name: \"filledPct\", serverDataType: \"double\" },\n { name: \"fxRateToUsd\", serverDataType: \"double\" },\n { name: \"instanceId\", serverDataType: \"string\" },\n { name: \"side\", serverDataType: \"string\" },\n { name: \"status\", serverDataType: \"string\" },\n { name: \"totalNotional\", serverDataType: \"double\" },\n { name: \"totalNotionalUsd\", serverDataType: \"double\" },\n { name: \"units\", serverDataType: \"int\" },\n ],\n key: \"instanceId\",\n table: { module: \"BASKET\", table: \"basketTrading\" },\n },\n basketTradingConstituent: {\n columns: [\n { name: \"algo\", serverDataType: \"string\" },\n { name: \"algoParams\", serverDataType: \"string\" },\n { name: \"basketId\", serverDataType: \"string\" },\n { name: \"description\", serverDataType: \"string\" },\n { name: \"instanceId\", serverDataType: \"string\" },\n { name: \"instanceIdRic\", serverDataType: \"string\" },\n { name: \"limitPrice\", serverDataType: \"double\" },\n { name: \"notionalLocal\", serverDataType: \"double\" },\n { name: \"notionalUsd\", serverDataType: \"double\" },\n { name: \"pctFilled\", serverDataType: \"double\" },\n { name: \"priceSpread\", serverDataType: \"int\" },\n { name: \"priceStrategyId\", serverDataType: \"int\" },\n { name: \"quantity\", serverDataType: \"long\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"side\", serverDataType: \"string\" },\n { name: \"status\", serverDataType: \"string\" },\n { name: \"venue\", serverDataType: \"string\" },\n { name: \"weighting\", serverDataType: \"double\" },\n ],\n key: \"instanceIdRic\",\n table: { module: \"BASKET\", table: \"basketTradingConstituent\" },\n },\n\n basketTradingConstituentJoin: {\n columns: [\n { name: \"algo\", serverDataType: \"string\" },\n { name: \"algoParams\", serverDataType: \"string\" },\n { name: \"ask\", serverDataType: \"double\" },\n { name: \"askSize\", serverDataType: \"double\" },\n { name: \"basketId\", serverDataType: \"string\" },\n { name: \"bid\", serverDataType: \"double\" },\n { name: \"bidSize\", serverDataType: \"double\" },\n { name: \"close\", serverDataType: \"double\" },\n { name: \"description\", serverDataType: \"string\" },\n { name: \"instanceId\", serverDataType: \"string\" },\n { name: \"instanceIdRic\", serverDataType: \"string\" },\n { name: \"last\", serverDataType: \"double\" },\n { name: \"limitPrice\", serverDataType: \"double\" },\n { name: \"notionalLocal\", serverDataType: \"double\" },\n { name: \"notionalUsd\", serverDataType: \"double\" },\n { name: \"open\", serverDataType: \"double\" },\n { name: \"pctFilled\", serverDataType: \"double\" },\n { name: \"phase\", serverDataType: \"string\" },\n { name: \"priceSpread\", serverDataType: \"int\" },\n { name: \"priceStrategyId\", serverDataType: \"int\" },\n { name: \"quantity\", serverDataType: \"long\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"scenario\", serverDataType: \"string\" },\n { name: \"side\", serverDataType: \"string\" },\n { name: \"status\", serverDataType: \"string\" },\n { name: \"venue\", serverDataType: \"string\" },\n { name: \"weighting\", serverDataType: \"double\" },\n ],\n key: \"instanceIdRic\",\n table: { module: \"BASKET\", table: \"basketTradingConstituentJoin\" },\n },\n priceStrategyType: {\n columns: [\n { name: \"priceStrategy\", serverDataType: \"string\" },\n { name: \"id\", serverDataType: \"int\" },\n ],\n key: \"\",\n table: { module: \"BASKET\", table: \"priceStrategyType\" },\n },\n};\n", "import type { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { TableSchema } from \"@vuu-ui/vuu-data-types\";\n\nexport type SimulTableName =\n | \"instruments\"\n | \"instrumentsExtended\"\n | \"instrumentPrices\"\n | \"orders\"\n | \"childOrders\"\n | \"parentOrders\"\n | \"prices\";\n\n// These Schemas take the form of the schemas that we create\n// with TABLE_META returned by Vuu.\nexport const schemas: Readonly<Record<SimulTableName, Readonly<TableSchema>>> =\n {\n instruments: {\n columns: [\n { name: \"bbg\", serverDataType: \"string\" },\n { name: \"currency\", serverDataType: \"string\" },\n { name: \"description\", serverDataType: \"string\" },\n { name: \"exchange\", serverDataType: \"string\" },\n { name: \"isin\", serverDataType: \"string\" },\n { name: \"lotSize\", serverDataType: \"int\" },\n { name: \"ric\", serverDataType: \"string\" },\n ],\n key: \"ric\",\n table: { module: \"SIMUL\", table: \"instruments\" },\n },\n instrumentsExtended: {\n columns: [\n { name: \"bbg\", serverDataType: \"string\" },\n { name: \"currency\", serverDataType: \"string\" },\n { name: \"description\", serverDataType: \"string\" },\n { name: \"exchange\", serverDataType: \"string\" },\n { name: \"isin\", serverDataType: \"string\" },\n { name: \"lotSize\", serverDataType: \"int\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"supported\", serverDataType: \"boolean\" },\n { name: \"wishlist\", serverDataType: \"boolean\" },\n { name: \"lastUpdated\", serverDataType: \"long\" },\n ],\n key: \"ric\",\n table: { module: \"SIMUL\", table: \"instruments\" },\n },\n instrumentPrices: {\n columns: [\n { name: \"ask\", serverDataType: \"double\" },\n { name: \"askSize\", serverDataType: \"double\" }, // type: \"int\"\n { name: \"bbg\", serverDataType: \"string\" },\n { name: \"bid\", serverDataType: \"double\" },\n { name: \"bidSize\", serverDataType: \"double\" },\n { name: \"close\", serverDataType: \"double\" },\n { name: \"currency\", serverDataType: \"string\" },\n { name: \"description\", serverDataType: \"string\" },\n { name: \"exchange\", serverDataType: \"string\" },\n { name: \"isin\", serverDataType: \"string\" },\n { name: \"last\", serverDataType: \"double\" },\n { name: \"lotSize\", serverDataType: \"int\" },\n { name: \"open\", serverDataType: \"double\" },\n { name: \"phase\", serverDataType: \"string\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"scenario\", serverDataType: \"string\" },\n ],\n key: \"ric\",\n table: { module: \"SIMUL\", table: \"instrumentPrices\" },\n },\n orders: {\n columns: [\n { name: \"ccy\", serverDataType: \"string\" },\n { name: \"created\", serverDataType: \"long\" },\n { name: \"filledQuantity\", serverDataType: \"double\" },\n { name: \"lastUpdate\", serverDataType: \"long\" },\n { name: \"orderId\", serverDataType: \"string\" },\n { name: \"quantity\", serverDataType: \"double\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"side\", serverDataType: \"string\" },\n { name: \"trader\", serverDataType: \"string\" },\n ],\n key: \"orderId\",\n table: { module: \"SIMUL\", table: \"orders\" },\n },\n childOrders: {\n columns: [\n { name: \"account\", serverDataType: \"string\" },\n { name: \"averagePrice\", serverDataType: \"double\" },\n { name: \"ccy\", serverDataType: \"string\" },\n { name: \"exchange\", serverDataType: \"string\" },\n { name: \"filledQty\", serverDataType: \"double\" },\n { name: \"id\", serverDataType: \"string\" },\n { name: \"idAsInt\", serverDataType: \"int\" },\n { name: \"lastUpdate\", serverDataType: \"long\" },\n { name: \"openQty\", serverDataType: \"double\" },\n { name: \"parentOrderId\", serverDataType: \"string\" },\n { name: \"price\", serverDataType: \"double\" },\n { name: \"quantity\", serverDataType: \"double\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"side\", serverDataType: \"string\" },\n { name: \"status\", serverDataType: \"string\" },\n { name: \"strategy\", serverDataType: \"string\" },\n { name: \"volLimit\", serverDataType: \"int\" },\n ],\n key: \"id\",\n table: { module: \"SIMUL\", table: \"childOrders\" },\n },\n parentOrders: {\n columns: [\n { name: \"account\", serverDataType: \"string\" },\n { name: \"algo\", serverDataType: \"string\" },\n { name: \"averagePrice\", serverDataType: \"double\" },\n { name: \"ccy\", serverDataType: \"string\" },\n { name: \"childCount\", serverDataType: \"int\" },\n { name: \"exchange\", serverDataType: \"string\" },\n { name: \"filledQty\", serverDataType: \"double\" },\n { name: \"id\", serverDataType: \"string\" },\n { name: \"idAsInt\", serverDataType: \"int\" },\n { name: \"lastUpdate\", serverDataType: \"long\" },\n { name: \"openQty\", serverDataType: \"double\" },\n { name: \"price\", serverDataType: \"double\" },\n { name: \"quantity\", serverDataType: \"double\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"side\", serverDataType: \"string\" },\n { name: \"status\", serverDataType: \"string\" },\n { name: \"volLimit\", serverDataType: \"int\" },\n ],\n key: \"id\",\n table: { module: \"SIMUL\", table: \"parentOrders\" },\n },\n prices: {\n columns: [\n { name: \"ask\", serverDataType: \"double\" },\n { name: \"askSize\", serverDataType: \"double\" }, // type: \"int\"\n { name: \"bid\", serverDataType: \"double\" },\n { name: \"bidSize\", serverDataType: \"double\" },\n { name: \"close\", serverDataType: \"double\" },\n { name: \"last\", serverDataType: \"double\" },\n { name: \"open\", serverDataType: \"double\" },\n { name: \"phase\", serverDataType: \"string\" },\n { name: \"ric\", serverDataType: \"string\" },\n { name: \"scenario\", serverDataType: \"string\" },\n ],\n key: \"ric\",\n table: { module: \"SIMUL\", table: \"prices\" },\n },\n };\n\nexport type ColumnState = { [key: string]: TableSchema };\n\nexport interface ColumnActionUpdate {\n type: \"updateColumn\";\n column: ColumnDescriptor;\n}\n\nexport type ColumnAction = ColumnActionUpdate;\n", "import { TableSchema } from \"@vuu-ui/vuu-data-types\";\nimport {\n type BasketsTableName,\n schemas as basketSchemas,\n} from \"./basket/basket-schemas\";\nimport {\n type SimulTableName,\n schemas as simulSchemas,\n} from \"./simul/simul-schemas\";\n\nexport type VuuTableName = BasketsTableName | SimulTableName;\nexport const schemas: Record<VuuTableName, TableSchema> = {\n ...basketSchemas,\n ...simulSchemas,\n};\n\nconst allSchemas: Readonly<Record<VuuTableName, Readonly<TableSchema>>> = {\n ...basketSchemas,\n ...simulSchemas,\n};\n\nexport const getAllSchemas = () => schemas;\n\nexport const getSchema = (tableName: VuuTableName) => {\n if (allSchemas[tableName]) {\n return allSchemas[tableName];\n }\n throw Error(`getSchema no schema for table ${tableName}`);\n};\n", "import {\n ArrayDataSource,\n ArrayDataSourceConstructorProps,\n} from \"@vuu-ui/vuu-data-local\";\nimport {\n DataSourceRow,\n MenuRpcResponse,\n RpcResponse,\n SelectionItem,\n SubscribeCallback,\n SubscribeProps,\n VuuUIMessageInRPCEditReject,\n VuuUIMessageInRPCEditResponse,\n} from \"@vuu-ui/vuu-data-types\";\nimport {\n ClientToServerEditRpc,\n ClientToServerMenuRPC,\n ClientToServerViewportRpcCall,\n VuuMenu,\n VuuRange,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { metadataKeys } from \"@vuu-ui/vuu-utils\";\nimport { makeSuggestions } from \"./makeSuggestions\";\nimport { Table } from \"./Table\";\n\nexport type RpcService = {\n rpcName: string;\n service: (rpcRequest: any) => Promise<any>;\n};\n\nexport interface TickingArrayDataSourceConstructorProps\n extends Omit<ArrayDataSourceConstructorProps, \"data\"> {\n data?: Array<VuuRowDataItemType[]>;\n menu?: VuuMenu;\n menuRpcServices?: RpcService[];\n rpcServices?: RpcService[];\n table?: Table;\n}\n\nexport class TickingArrayDataSource extends ArrayDataSource {\n #menuRpcServices: RpcService[] | undefined;\n #rpcServices: RpcService[] | undefined;\n #table?: Table;\n\n constructor({\n data,\n menuRpcServices,\n rpcServices,\n table,\n menu,\n ...arrayDataSourceProps\n }: TickingArrayDataSourceConstructorProps) {\n if (data === undefined && table === undefined) {\n throw Error(\"TickingArrayDataSource must be constructed with data\");\n }\n super({\n ...arrayDataSourceProps,\n data: data ?? table?.data ?? [],\n });\n this._menu = menu;\n this.#menuRpcServices = menuRpcServices;\n this.#rpcServices = rpcServices;\n this.#table = table;\n\n if (table) {\n table.on(\"insert\", this.insert);\n table.on(\"update\", this.updateRow);\n }\n }\n\n async subscribe(subscribeProps: SubscribeProps, callback: SubscribeCallback) {\n const subscription = super.subscribe(subscribeProps, callback);\n // if (subscribeProps.range) {\n // this.#updateGenerator?.setRange(subscribeProps.range);\n // }\n return subscription;\n }\n\n set range(range: VuuRange) {\n super.range = range;\n // this.#updateGenerator?.setRange(range);\n }\n get range() {\n return super.range;\n }\n\n private getSelectedRows() {\n return this.selectedRows.reduce<DataSourceRow[]>(\n (rows: DataSourceRow[], selected: SelectionItem) => {\n if (Array.isArray(selected)) {\n selected.forEach((sel) => {\n const row = this.data[sel];\n if (row) {\n rows.push(row);\n }\n });\n } else {\n const row = this.data[selected];\n if (row) {\n rows.push(row);\n }\n }\n return rows;\n },\n []\n );\n }\n\n applyEdit(\n row: DataSourceRow,\n columnName: string,\n value: VuuRowDataItemType\n ): Promise<true> {\n const key = row[metadataKeys.KEY];\n this.#table?.update(key, columnName, value);\n return Promise.resolve(true);\n }\n\n async rpcCall<T extends RpcResponse = RpcResponse>(\n rpcRequest: Omit<ClientToServerViewportRpcCall, \"vpId\">\n ): Promise<T | undefined> {\n const rpcService = this.#rpcServices?.find(\n (service) =>\n service.rpcName ===\n (rpcRequest as ClientToServerViewportRpcCall).rpcName\n );\n if (rpcService) {\n return rpcService.service({\n ...rpcRequest,\n });\n } else {\n console.log(`no implementation for PRC service ${rpcRequest.rpcName}`);\n }\n }\n\n async menuRpcCall(\n rpcRequest: Omit<ClientToServerMenuRPC, \"vpId\"> | ClientToServerEditRpc\n ): Promise<\n | MenuRpcResponse\n | VuuUIMessageInRPCEditReject\n | VuuUIMessageInRPCEditResponse\n | undefined\n > {\n const rpcService = this.#rpcServices?.find(\n (service) =>\n service.rpcName === (rpcRequest as ClientToServerMenuRPC).rpcName\n );\n\n if (rpcService) {\n switch (rpcRequest.type) {\n case \"VIEW_PORT_MENUS_SELECT_RPC\": {\n const selectedRows = this.getSelectedRows();\n return rpcService.service({\n ...rpcRequest,\n selectedRows,\n });\n }\n\n default:\n }\n }\n return super.menuRpcCall(rpcRequest);\n }\n\n getTypeaheadSuggestions(column: string, pattern?: string): Promise<string[]> {\n if (this.#table) {\n return makeSuggestions(this.#table, column, pattern);\n } else {\n throw Error(\n \"cannot call getTypeaheadSuggestions on TickingDataSOurce if table has not been provided\"\n );\n }\n }\n}\n", "import type {\n DataSourceFilter,\n DataSourceRow,\n SchemaColumn,\n TableSchema,\n} from \"@vuu-ui/vuu-data-types\";\nimport type { Filter, MultiClauseFilter } from \"@vuu-ui/vuu-filter-types\";\nimport type {\n VuuAggregation,\n VuuAggType,\n VuuColumnDataType,\n VuuDataRow,\n VuuGroupBy,\n VuuRowRecord,\n VuuSort,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport type {\n ColumnAlignment,\n ColumnDescriptor,\n ColumnType,\n ColumnTypeDescriptor,\n ColumnTypeFormatting,\n ColumnTypeRendering,\n ColumnTypeSimple,\n ColumnTypeWithValidationRules,\n DefaultColumnConfiguration,\n GroupColumnDescriptor,\n LookupRenderer,\n MappedValueTypeRenderer,\n PinLocation,\n RuntimeColumnDescriptor,\n TableHeading,\n TableHeadings,\n ValueListRenderer,\n DateTimeColumnDescriptor,\n} from \"@vuu-ui/vuu-table-types\";\nimport type { CSSProperties } from \"react\";\nimport { moveItem } from \"./array-utils\";\nimport { isFilterClause, isMultiClauseFilter } from \"./filter-utils\";\n\n/**\n * ColumnMap provides a lookup of the index position of a data item within a row\n * by column name.\n */\nexport interface ColumnMap {\n [columnName: string]: number;\n}\n\nconst SORT_ASC = \"asc\";\nconst NO_HEADINGS: TableHeadings = [];\n\nexport type SortCriteriaItem = string | [string, \"asc\"]; // TODO where is 'desc'?\n\nexport const AggregationType: { [key: string]: VuuAggType } = {\n Average: 2,\n Count: 3,\n Distinct: 6,\n Sum: 1,\n High: 4,\n Low: 5,\n};\n\nexport function mapSortCriteria(\n sortCriteria: SortCriteriaItem[],\n columnMap: ColumnMap,\n metadataOffset = 0\n): [number, \"asc\"][] {\n return sortCriteria.map((s) => {\n if (typeof s === \"string\") {\n return [columnMap[s] + metadataOffset, \"asc\"];\n } else if (Array.isArray(s)) {\n const [columnName, sortDir] = s;\n return [columnMap[columnName] + metadataOffset, sortDir || SORT_ASC];\n } else {\n throw Error(\"columnUtils.mapSortCriteria invalid input\");\n }\n });\n}\n\nconst numericTypes = [\"int\", \"long\", \"double\"];\nexport const getDefaultAlignment = (\n serverDataType?: VuuColumnDataType\n): ColumnAlignment =>\n serverDataType === undefined\n ? \"left\"\n : numericTypes.includes(serverDataType)\n ? \"right\"\n : \"left\";\n\nexport const isValidColumnAlignment = (v: string): v is ColumnAlignment =>\n v === \"left\" || v === \"right\";\n\nexport const isValidPinLocation = (v: string): v is PinLocation =>\n isValidColumnAlignment(v) || v === \"floating\" || v === \"\";\n\nexport const isKeyedColumn = (\n column: ColumnDescriptor\n): column is RuntimeColumnDescriptor => {\n return typeof (column as RuntimeColumnDescriptor).key === \"number\";\n};\n\nexport const fromServerDataType = (\n serverDataType: VuuColumnDataType\n): ColumnTypeSimple => {\n switch (serverDataType) {\n case \"double\":\n case \"int\":\n case \"long\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n default:\n return \"string\";\n }\n};\n\nexport const isNumericColumn = ({ serverDataType, type }: ColumnDescriptor) => {\n if (\n serverDataType === \"int\" ||\n serverDataType === \"long\" ||\n serverDataType === \"double\"\n ) {\n return true;\n }\n if (typeof type === \"string\") {\n return type === \"number\";\n }\n if (typeof type?.name === \"string\") {\n return type?.name === \"number\";\n }\n\n return false;\n};\n\nexport const isDateTimeColumn = (\n column: ColumnDescriptor\n): column is DateTimeColumnDescriptor =>\n (isTypeDescriptor(column.type) ? column.type.name : column.type) ===\n \"date/time\";\n\nexport const isPinned = (column: ColumnDescriptor) =>\n typeof column.pin === \"string\";\n\nexport const hasHeadings = (column: ColumnDescriptor) =>\n Array.isArray(column.heading) && column.heading.length > 0;\n\nexport const isResizing = (column: RuntimeColumnDescriptor) => column.resizing;\n\nexport const isTextColumn = ({ serverDataType }: ColumnDescriptor) =>\n serverDataType === undefined\n ? false\n : serverDataType === \"char\" || serverDataType === \"string\";\n\nexport const toColumnDescriptor = (name: string): ColumnDescriptor => ({\n name,\n});\n\n/**\n *\n */\nexport const isTypeDescriptor = (\n type?: ColumnType\n): type is ColumnTypeDescriptor =>\n typeof type !== \"undefined\" && typeof type !== \"string\";\n\nconst EMPTY_COLUMN_MAP = {} as const;\n\nexport const isColumnTypeRenderer = (\n renderer?: unknown\n): renderer is ColumnTypeRendering =>\n typeof (renderer as ColumnTypeRendering)?.name !== \"undefined\";\n\nexport const isLookupRenderer = (\n renderer?: unknown\n): renderer is LookupRenderer =>\n typeof (renderer as LookupRenderer)?.name !== \"undefined\" &&\n \"lookup\" in (renderer as LookupRenderer);\n\nexport const isValueListRenderer = (\n renderer?: unknown\n): renderer is ValueListRenderer =>\n typeof (renderer as ValueListRenderer)?.name !== \"undefined\" &&\n Array.isArray((renderer as ValueListRenderer).values);\n\nexport const hasValidationRules = (\n type?: ColumnType\n): type is ColumnTypeWithValidationRules =>\n isTypeDescriptor(type) &&\n isColumnTypeRenderer(type.renderer) &&\n Array.isArray(type.renderer.rules) &&\n type.renderer.rules.length > 0;\n\nexport const isMappedValueTypeRenderer = (\n renderer?: unknown\n): renderer is MappedValueTypeRenderer =>\n renderer !== undefined &&\n typeof (renderer as MappedValueTypeRenderer)?.map !== \"undefined\";\n\nexport function buildColumnMap(\n columns?: (RuntimeColumnDescriptor | SchemaColumn | string)[]\n): ColumnMap {\n const start = metadataKeys.count;\n if (columns) {\n return columns.reduce((map, column, i) => {\n if (typeof column === \"string\") {\n map[column] = start + i;\n } else if (isKeyedColumn(column)) {\n map[column.name] = column.key;\n } else {\n map[column.name] = start + i;\n }\n return map;\n }, {} as ColumnMap);\n } else {\n return EMPTY_COLUMN_MAP;\n }\n}\n\nexport function projectUpdates(updates: number[]): number[] {\n const results: number[] = [];\n const metadataOffset = metadataKeys.count - 2;\n for (let i = 0; i < updates.length; i += 3) {\n results[i] = updates[i] + metadataOffset;\n results[i + 1] = updates[i + 1];\n results[i + 2] = updates[i + 2];\n }\n return results;\n}\n\nexport const metadataKeys = {\n IDX: 0,\n RENDER_IDX: 1,\n IS_LEAF: 2,\n IS_EXPANDED: 3,\n DEPTH: 4,\n COUNT: 5,\n KEY: 6,\n SELECTED: 7,\n count: 8,\n // TODO following only used in datamodel\n PARENT_IDX: \"parent_idx\",\n IDX_POINTER: \"idx_pointer\",\n FILTER_COUNT: \"filter_count\",\n NEXT_FILTER_IDX: \"next_filter_idx\",\n} as const;\n\n// This method mutates the passed columns array\nconst insertColumn = (\n columns: RuntimeColumnDescriptor[],\n column: RuntimeColumnDescriptor\n) => {\n const { originalIdx } = column;\n if (typeof originalIdx === \"number\") {\n for (let i = 0; i < columns.length; i++) {\n const { originalIdx: colIdx = -1 } = columns[i];\n if (colIdx > originalIdx) {\n columns.splice(i, 0, column);\n return columns;\n }\n }\n }\n columns.push(column);\n return columns;\n};\n\nexport const flattenColumnGroup = (\n columns: RuntimeColumnDescriptor[]\n): RuntimeColumnDescriptor[] => {\n if (columns[0]?.isGroup) {\n const [groupColumn, ...nonGroupedColumns] = columns as [\n GroupColumnDescriptor,\n ...RuntimeColumnDescriptor[]\n ];\n groupColumn.columns.forEach((groupColumn) => {\n insertColumn(nonGroupedColumns, groupColumn);\n });\n return nonGroupedColumns;\n } else {\n return columns;\n }\n};\n\nexport function extractGroupColumn(\n columns: RuntimeColumnDescriptor[],\n groupBy?: VuuGroupBy,\n confirmed = true\n): [GroupColumnDescriptor | null, RuntimeColumnDescriptor[]] {\n if (groupBy && groupBy.length > 0) {\n const flattenedColumns = flattenColumnGroup(columns);\n // Note: groupedColumns will be in column order, not groupBy order\n const [groupedColumns, rest] = flattenedColumns.reduce(\n (result, column, i) => {\n const [g, r] = result;\n if (groupBy.includes(column.name)) {\n g.push({\n ...column,\n originalIdx: i,\n });\n } else {\n r.push(column);\n }\n\n return result;\n },\n [[], []] as [RuntimeColumnDescriptor[], RuntimeColumnDescriptor[]]\n );\n if (groupedColumns.length !== groupBy.length) {\n throw Error(\n `extractGroupColumn: no column definition found for all groupBy cols ${JSON.stringify(\n groupBy\n )} `\n );\n }\n const groupCount = groupBy.length;\n const groupCols: RuntimeColumnDescriptor[] = groupBy.map((name, idx) => {\n // Keep the cols in same order defined on groupBy\n const column = groupedColumns.find(\n (col) => col.name === name\n ) as RuntimeColumnDescriptor;\n return {\n ...column,\n groupLevel: groupCount - idx,\n };\n });\n\n const groupCol = {\n key: -1,\n name: \"group-col\",\n heading: [\"group-col\"],\n isGroup: true,\n columns: groupCols,\n groupConfirmed: confirmed,\n width: groupCols.map((c) => c.width).reduce((a, b) => a + b) + 100,\n } as GroupColumnDescriptor;\n\n return [groupCol, rest];\n }\n return [null, flattenColumnGroup(columns)];\n}\n\nexport const isGroupColumn = (\n column: RuntimeColumnDescriptor\n): column is GroupColumnDescriptor => column.isGroup === true;\n\nexport const isJsonAttribute = (value: unknown) =>\n typeof value === \"string\" && value.endsWith(\"+\");\n\nexport const isJsonGroup = (column: RuntimeColumnDescriptor, row: VuuDataRow) =>\n (column.type as ColumnTypeDescriptor)?.name === \"json\" &&\n isJsonAttribute(row[column.key]);\n\nexport const isJsonColumn = (column: RuntimeColumnDescriptor) =>\n (column.type as ColumnTypeDescriptor)?.name === \"json\";\n\nexport const sortPinnedColumns = (\n columns: RuntimeColumnDescriptor[]\n): RuntimeColumnDescriptor[] => {\n const leftPinnedColumns: RuntimeColumnDescriptor[] = [];\n const rightPinnedColumns: RuntimeColumnDescriptor[] = [];\n const restColumns: RuntimeColumnDescriptor[] = [];\n // let pinnedWidthLeft = 0;\n let pinnedWidthLeft = 4;\n for (const column of columns) {\n // prettier-ignore\n switch(column.pin){\n case \"left\": {\n leftPinnedColumns.push({\n ...column,\n endPin: undefined,\n pinnedOffset: pinnedWidthLeft\n });\n pinnedWidthLeft += column.width;\n }\n break;\n // store right pinned columns initially in reverse order\n case \"right\": rightPinnedColumns.unshift(column); break;\n default: restColumns.push(column)\n }\n }\n\n if (leftPinnedColumns.length) {\n leftPinnedColumns.push({\n ...(leftPinnedColumns.pop() as RuntimeColumnDescriptor),\n endPin: true,\n });\n }\n\n const allColumns = leftPinnedColumns.length\n ? leftPinnedColumns.concat(restColumns)\n : restColumns;\n\n if (rightPinnedColumns.length) {\n const measuredRightPinnedColumns: RuntimeColumnDescriptor[] = [];\n let pinnedWidthRight = 0;\n for (const column of rightPinnedColumns) {\n measuredRightPinnedColumns.unshift({\n ...column,\n pinnedOffset: pinnedWidthRight,\n });\n pinnedWidthRight += column.width;\n }\n measuredRightPinnedColumns[0].endPin = true;\n return allColumns.concat(measuredRightPinnedColumns);\n } else {\n return allColumns;\n }\n};\n\nexport const getTableHeadings = (\n columns: RuntimeColumnDescriptor[]\n): TableHeadings => {\n if (columns.some(hasHeadings)) {\n const maxHeadingDepth = columns.reduce<number>(\n (max, { heading }) => Math.max(max, heading?.length ?? 0),\n 0\n );\n\n let heading: TableHeading | undefined = undefined;\n const tableHeadings: TableHeadings = [];\n let tableHeadingsRow: TableHeading[];\n for (let level = 0; level < maxHeadingDepth; level++) {\n tableHeadingsRow = [];\n columns.forEach(({ heading: columnHeading = NO_HEADINGS, width }) => {\n const label = columnHeading[level] ?? \"\";\n if (heading && heading.label === label) {\n heading.width += width;\n } else {\n heading = { label, width } as TableHeading;\n tableHeadingsRow.push(heading);\n }\n });\n tableHeadings.push(tableHeadingsRow);\n }\n\n return tableHeadings;\n }\n return NO_HEADINGS;\n};\n\nexport const getColumnStyle = ({\n pin,\n pinnedOffset = pin === \"left\" ? 0 : 4,\n width,\n}: RuntimeColumnDescriptor) =>\n pin === \"left\"\n ? ({\n left: pinnedOffset,\n width,\n \"--pin-width\": `${pinnedOffset + width - 3}px`,\n } as CSSProperties)\n : pin === \"right\"\n ? ({\n right: pinnedOffset,\n width,\n \"--pin-width\": `${pinnedOffset + width}px`,\n } as CSSProperties)\n : { width };\n\nexport const setAggregations = (\n aggregations: VuuAggregation[],\n column: RuntimeColumnDescriptor,\n aggType: VuuAggType\n) => {\n return aggregations\n .filter((agg) => agg.column !== column.name)\n .concat({ column: column.name, aggType });\n};\n\nexport const extractFilterForColumn = (\n filter: Filter | undefined,\n columnName: string\n) => {\n if (isMultiClauseFilter(filter)) {\n return collectFiltersForColumn(filter, columnName);\n }\n if (isFilterClause(filter)) {\n return filter.column === columnName ? filter : undefined;\n }\n return undefined;\n};\n\nconst collectFiltersForColumn = (\n filter: MultiClauseFilter,\n columnName: string\n) => {\n const { filters, op } = filter;\n const results: Filter[] = [];\n filters.forEach((filter) => {\n const ffc = extractFilterForColumn(filter, columnName);\n if (ffc) {\n results.push(ffc);\n }\n });\n if (results.length === 0) {\n return undefined;\n } else if (results.length === 1) {\n return results[0];\n }\n return {\n op,\n filters: results,\n };\n};\n\nexport const applyGroupByToColumns = (\n columns: RuntimeColumnDescriptor[],\n groupBy: VuuGroupBy,\n confirmed = true\n) => {\n if (groupBy.length) {\n const [groupColumn, nonGroupedColumns] = extractGroupColumn(\n columns,\n groupBy,\n confirmed\n );\n if (groupColumn) {\n return [groupColumn as RuntimeColumnDescriptor].concat(nonGroupedColumns);\n }\n } else if (columns[0]?.isGroup) {\n return flattenColumnGroup(columns);\n }\n return columns;\n};\n\nexport const applySortToColumns = (\n colunms: RuntimeColumnDescriptor[],\n sort: VuuSort\n) =>\n colunms.map((column) => {\n const sorted = getSortType(column, sort);\n if (sorted !== undefined) {\n return {\n ...column,\n sorted,\n };\n } else if (column.sorted) {\n return {\n ...column,\n sorted: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const applyFilterToColumns = (\n columns: RuntimeColumnDescriptor[],\n { filterStruct }: DataSourceFilter\n) =>\n columns.map((column) => {\n // TODO this gives us a dependency on vuu-filters\n const filter = extractFilterForColumn(filterStruct, column.name);\n if (filter !== undefined) {\n return {\n ...column,\n filter,\n };\n } else if (column.filter) {\n return {\n ...column,\n filter: undefined,\n };\n } else {\n return column;\n }\n });\n\nexport const isFilteredColumn = (column: RuntimeColumnDescriptor) =>\n column.filter !== undefined;\n\nexport const stripFilterFromColumns = (columns: RuntimeColumnDescriptor[]) =>\n columns.map((col) => {\n const { filter, ...rest } = col;\n return filter ? rest : col;\n });\n\nconst getSortType = (column: ColumnDescriptor, { sortDefs }: VuuSort) => {\n const sortDef = sortDefs.find((sortCol) => sortCol.column === column.name);\n if (sortDef) {\n return sortDefs.length > 1\n ? (sortDefs.indexOf(sortDef) + 1) * (sortDef.sortType === \"A\" ? 1 : -1)\n : sortDef.sortType;\n }\n};\n\n// Calculated columns have the formal 'name:datatype:expression'\nexport const getColumnName = (name: string) => {\n const pos = name.indexOf(\":\");\n if (pos === -1) {\n return name;\n } else {\n return name.slice(0, pos);\n }\n};\n\nexport const getColumnLabel = (column: ColumnDescriptor) => {\n if (column.label) {\n return column.label;\n } else if (isCalculatedColumn(column.name)) {\n return getCalculatedColumnName(column);\n } else {\n return column.name;\n }\n};\n\nexport const findColumn = (\n columns: RuntimeColumnDescriptor[],\n columnName: string\n): RuntimeColumnDescriptor | undefined => {\n const column = columns.find((col) => col.name === columnName);\n if (column) {\n return column;\n } else {\n const groupColumn = columns.find(\n (col) => col.isGroup\n ) as GroupColumnDescriptor;\n if (groupColumn) {\n return findColumn(groupColumn.columns, columnName);\n }\n }\n};\n\nexport function updateColumn<T extends ColumnDescriptor>(\n columns: T[],\n column: T\n): T[];\nexport function updateColumn(\n columns: RuntimeColumnDescriptor[],\n column: string,\n options: Partial<ColumnDescriptor>\n): RuntimeColumnDescriptor[];\nexport function updateColumn(\n columns: RuntimeColumnDescriptor[],\n column: string | RuntimeColumnDescriptor,\n options?: Partial<ColumnDescriptor>\n) {\n const targetColumn =\n typeof column === \"string\"\n ? columns.find((col) => col.name === column)\n : column;\n if (targetColumn) {\n const replacementColumn = options\n ? { ...targetColumn, ...options }\n : targetColumn;\n return columns.map((col) =>\n col.name === replacementColumn.name ? replacementColumn : col\n );\n } else {\n throw Error(\"column-utils.replaceColun, column not found\");\n }\n}\n\nexport const toDataSourceColumns = (column: ColumnDescriptor) => column.name;\n\nexport const getRowRecord = (\n row: DataSourceRow,\n columnMap: ColumnMap\n): VuuRowRecord => {\n return Object.entries(columnMap).reduce<VuuRowRecord>(\n (map, [colName, key]) => {\n map[colName] = row[key];\n return map;\n },\n {}\n );\n};\n\nexport const isDataLoading = (columns: RuntimeColumnDescriptor[]) => {\n return isGroupColumn(columns[0]) && columns[0].groupConfirmed === false;\n};\n\nexport const getColumnsInViewport = (\n columns: RuntimeColumnDescriptor[],\n vpStart: number,\n vpEnd: number\n): [RuntimeColumnDescriptor[], number] => {\n const visibleColumns: RuntimeColumnDescriptor[] = [];\n let preSpan = 0;\n\n for (let offset = 0, i = 0; i < columns.length; i++) {\n const column = columns[i];\n // TODO we need to measure the pinned columns first\n if (column.hidden) {\n continue;\n } else if (offset + column.width < vpStart) {\n if (column.pin === \"left\") {\n visibleColumns.push(column);\n } else if (offset + column.width + columns[i + 1]?.width > vpStart) {\n visibleColumns.push(column);\n } else {\n preSpan += column.width;\n }\n } else if (offset > vpEnd) {\n visibleColumns.push(column);\n break;\n } else {\n visibleColumns.push(column);\n }\n offset += column.width;\n }\n\n return [visibleColumns, preSpan];\n};\n\nexport const isNotHidden = (column: RuntimeColumnDescriptor) =>\n column.hidden !== true;\n\nexport const visibleColumnAtIndex = (\n columns: RuntimeColumnDescriptor[],\n index: number\n) => {\n if (columns.every(isNotHidden)) {\n return columns[index];\n } else {\n return columns.filter(isNotHidden).at(index);\n }\n};\n\nconst { DEPTH, IS_LEAF } = metadataKeys;\n// Get the value for a specific columns within a grouped column\nexport const getGroupValueAndOffset = (\n columns: RuntimeColumnDescriptor[],\n row: DataSourceRow\n): [unknown, number] => {\n const { [DEPTH]: depth, [IS_LEAF]: isLeaf } = row;\n // Depth can be greater tha group columns when we have just removed a column from groupby\n // but new data has not yet been received.\n if (isLeaf || depth > columns.length) {\n return [null, depth === null ? 0 : Math.max(0, depth - 1)];\n } else if (depth === 0) {\n return [\"$root\", 0];\n } else {\n // offset 1 for now to allow for $root\n const { key, valueFormatter } = columns[depth - 1];\n const value = valueFormatter(row[key]);\n return [value, depth - 1];\n }\n};\n\nexport const getDefaultColumnType = (\n serverDataType?: VuuColumnDataType\n): ColumnTypeSimple => {\n switch (serverDataType) {\n case \"int\":\n case \"long\":\n case \"double\":\n return \"number\";\n case \"boolean\":\n return \"boolean\";\n default:\n return \"string\";\n }\n};\n\nexport const updateColumnFormatting = <\n T extends ColumnDescriptor = ColumnDescriptor\n>(\n column: T,\n formatting: ColumnTypeFormatting\n): T => {\n const { serverDataType, type = getDefaultColumnType(serverDataType) } =\n column;\n\n if (isTypeDescriptor(type)) {\n return { ...column, type: { ...type, formatting } };\n } else {\n return { ...column, type: { name: type, formatting } };\n }\n};\n\nexport function updateColumnType<T extends ColumnDescriptor = ColumnDescriptor>(\n column: T,\n type: ColumnTypeSimple\n): T {\n return isTypeDescriptor(column.type)\n ? { ...column, type: { ...column.type, name: type } }\n : { ...column, type };\n}\n\nexport const updateColumnRenderProps = <\n T extends ColumnDescriptor = ColumnDescriptor\n>(\n column: T,\n renderer: ColumnTypeRendering\n): T => {\n const { serverDataType, type = getDefaultColumnType(serverDataType) } =\n column;\n\n if (isTypeDescriptor(type)) {\n return {\n ...column,\n type: {\n ...type,\n // TODO do we need to preserve any existing attributes from renderer ?\n renderer,\n },\n };\n } else {\n return { ...column, type: { name: type, renderer } };\n }\n};\n\nconst NO_TYPE_SETTINGS = {};\nexport const getTypeFormattingFromColumn = (\n column: ColumnDescriptor\n): ColumnTypeFormatting => {\n if (isTypeDescriptor(column.type)) {\n return column.type.formatting ?? NO_TYPE_SETTINGS;\n } else {\n return NO_TYPE_SETTINGS;\n }\n};\n\n/**\n *\n * return a filter predicate that will reject columns, names of which\n * are not in provided list.\n */\nexport const subscribedOnly =\n (columnNames?: string[]) => (column: ColumnDescriptor) =>\n columnNames?.includes(column.name);\n\nexport const addColumnToSubscribedColumns = (\n subscribedColumns: ColumnDescriptor[],\n availableColumns: SchemaColumn[],\n columnName: string\n) => {\n const byColName =\n (n = columnName) =>\n (column: { name: string }) =>\n column.name === n;\n if (subscribedColumns.findIndex(byColName()) !== -1) {\n throw Error(\n `column-utils, addColumnToSubscribedColumns column ${columnName} is already subscribed`\n );\n }\n const indexOfAvailableColumn = availableColumns.findIndex(byColName());\n if (indexOfAvailableColumn === -1) {\n throw Error(\n `column-utils, addColumnToSubscribedColumns column ${columnName} is not available`\n );\n }\n\n const newColumn = {\n ...availableColumns[indexOfAvailableColumn],\n } as ColumnDescriptor;\n\n // find the nearest preceding available column which is subscribed\n let index = -1;\n for (let i = indexOfAvailableColumn - 1; i >= 0; i--) {\n const { name } = availableColumns[i];\n index = subscribedColumns.findIndex(byColName(name));\n if (index !== -1) {\n break;\n }\n }\n\n if (index === -1) {\n return [newColumn].concat(subscribedColumns);\n } else {\n const results: ColumnDescriptor[] = [];\n for (let i = 0; i < subscribedColumns.length; i++) {\n results.push(subscribedColumns[i]);\n if (i === index) {\n results.push(newColumn);\n index = Number.MAX_SAFE_INTEGER;\n }\n }\n return results;\n }\n};\n\nconst CalculatedColumnPattern = /.*:.*:.*/;\n\nexport const isCalculatedColumn = (columnName?: string) =>\n columnName !== undefined && CalculatedColumnPattern.test(columnName);\n\nexport const getCalculatedColumnDetails = (column: ColumnDescriptor) => {\n if (isCalculatedColumn(column.name)) {\n return column.name.split(/:=?/);\n } else {\n throw Error(\n `column-utils, getCalculatedColumnDetails column name ${column.name} is not valid calculated column`\n );\n }\n};\n\nexport const getCalculatedColumnName = (column: ColumnDescriptor) =>\n getCalculatedColumnDetails(column)[0];\nexport const getCalculatedColumnType = (column: ColumnDescriptor) =>\n getCalculatedColumnDetails(column)[1] as VuuColumnDataType;\nexport const getCalculatedColumnExpression = (column: ColumnDescriptor) =>\n getCalculatedColumnDetails(column)[2];\n\nexport const setCalculatedColumnName = (\n column: ColumnDescriptor,\n name: string\n): ColumnDescriptor => {\n const [, type, expression] = column.name.split(\":\");\n return {\n ...column,\n name: `${name}:${type}:${expression}`,\n };\n};\n\nexport const setCalculatedColumnType = (\n column: ColumnDescriptor,\n type: string\n): ColumnDescriptor => {\n const [name, , expression] = column.name.split(\":\");\n return {\n ...column,\n name: `${name}:${type}:${expression}`,\n };\n};\n\n// TODO should we validate the expression here ?\nexport const setCalculatedColumnExpression = (\n column: ColumnDescriptor,\n expression: string\n): ColumnDescriptor => {\n const [name, type] = column.name.split(\":\");\n return {\n ...column,\n name: `${name}:${type}:=${expression}`,\n };\n};\n\nexport const moveColumnTo = (\n columns: ColumnDescriptor[],\n column: ColumnDescriptor,\n newIndex: number\n) => {\n const index = columns.findIndex((col) => col.name === column.name);\n return moveItem(columns, index, newIndex);\n};\n\nexport function replaceColumn<\n C extends ColumnDescriptor = RuntimeColumnDescriptor\n>(columns: C[], column: C) {\n return columns.map((col) => (col.name === column.name ? column : col));\n}\n\nexport const applyDefaultColumnConfig = (\n { columns, table }: TableSchema,\n getDefaultColumnConfig?: DefaultColumnConfiguration\n) => {\n if (typeof getDefaultColumnConfig === \"function\") {\n return columns.map((column) => {\n const config = getDefaultColumnConfig(table.table, column.name);\n if (config) {\n return {\n ...column,\n ...config,\n };\n } else {\n return column;\n }\n });\n } else {\n return columns;\n }\n};\n\nexport const getColumnByName = (\n schema: TableSchema,\n name?: string\n): SchemaColumn | undefined => {\n if (name === undefined) {\n return undefined;\n } else {\n const column = schema.columns.find((col) => col.name === name);\n if (column) {\n return column;\n } else {\n throw Error(\n `getColumnByName no column '${name}' in schema for ${schema.table.table}`\n );\n }\n }\n};\n", "type Listener = (...args: any[]) => void;\nexport type EmittedEvents = Record<string, Listener>;\n\nfunction isArrayOfListeners(\n listeners: EventListener | EventListener[]\n): listeners is EventListener[] {\n return Array.isArray(listeners);\n}\n\nfunction isOnlyListener(\n listeners: EventListener | EventListener[]\n): listeners is EventListener {\n return !Array.isArray(listeners);\n}\n\nexport interface IEventEmitter<Events extends EmittedEvents> {\n addListener<E extends keyof Events>(event: E, listener: Events[E]): void;\n emit<E extends keyof Events>(event: E, ...args: Parameters<Events[E]>): void;\n on<E extends keyof Events>(event: E, listener: Events[E]): void;\n removeListener<E extends keyof Events>(event: E, listener: Events[E]): void;\n removeAllListeners<E extends keyof Events>(event?: E): void;\n}\n\nexport class EventEmitter<Events extends EmittedEvents>\n implements IEventEmitter<Events>\n{\n #events: Map<keyof Events, Listener | Listener[]> = new Map();\n\n addListener<E extends keyof Events>(event: E, listener: Events[E]) {\n const listeners = this.#events.get(event);\n\n if (!listeners) {\n this.#events.set(event, listener);\n } else if (isArrayOfListeners(listeners)) {\n listeners.push(listener);\n } else if (isOnlyListener(listeners)) {\n this.#events.set(event, [listeners, listener]);\n }\n }\n\n removeListener<E extends keyof Events>(event: E, listener: Events[E]) {\n if (!this.#events.has(event)) {\n return;\n }\n\n const listenerOrListeners = this.#events.get(event);\n let position = -1;\n\n if (listenerOrListeners === listener) {\n this.#events.delete(event);\n } else if (Array.isArray(listenerOrListeners)) {\n for (let i = length; i-- > 0; ) {\n if (listenerOrListeners[i] === listener) {\n position = i;\n break;\n }\n }\n\n if (position < 0) {\n return;\n }\n\n if (listenerOrListeners.length === 1) {\n listenerOrListeners.length = 0;\n this.#events.delete(event);\n } else {\n listenerOrListeners.splice(position, 1);\n }\n }\n }\n\n removeAllListeners<E extends keyof Events>(event?: E) {\n if (event && this.#events.has(event)) {\n this.#events.delete(event);\n } else if (event === undefined) {\n this.#events.clear();\n }\n }\n\n emit<E extends keyof Events>(event: E, ...args: Parameters<Events[E]>) {\n if (this.#events) {\n const handler = this.#events.get(event);\n if (handler) {\n this.invokeHandler(handler, args);\n }\n }\n }\n\n once<E extends keyof Events>(event: E, listener: Events[E]) {\n const handler = ((...args) => {\n this.removeListener(event, handler);\n listener(...args);\n }) as Events[E];\n\n this.on(event, handler);\n }\n\n on<E extends keyof Events>(event: E, listener: Events[E]) {\n this.addListener(event, listener);\n }\n\n hasListener<E extends keyof Events>(event: E, listener: Events[E]) {\n const listeners = this.#events.get(event);\n if (Array.isArray(listeners)) {\n return listeners.includes(listener);\n } else {\n return listeners === listener;\n }\n }\n\n private invokeHandler(handler: Listener | Array<Listener>, args: unknown[]) {\n if (isArrayOfListeners(handler)) {\n handler.slice().forEach((listener) => this.invokeHandler(listener, args));\n } else {\n switch (args.length) {\n case 0:\n handler();\n break;\n case 1:\n handler(args[0]);\n break;\n case 2:\n handler(args[0], args[1]);\n break;\n // slower\n default:\n handler.call(null, ...args);\n }\n }\n }\n}\n", "import { DataItem } from \"@vuu-ui/vuu-utils\";\nimport { Table } from \"./Table\";\n\nconst cachedValues = new Map<Table, Map<string, DataItem[]>>();\n\nconst getUniqueValues = (table: Table, column: string, pattern = \"\") => {\n let uniqueValues;\n const cachedEntry = cachedValues.get(table);\n if (cachedEntry && cachedEntry.has(column)) {\n uniqueValues = cachedEntry.get(column) as DataItem[];\n } else {\n const { data, map } = table;\n const key = map[column];\n uniqueValues = [];\n const set = new Set();\n for (const row of data) {\n const value = row[key];\n if (!set.has(value)) {\n set.add(value);\n uniqueValues.push(value);\n }\n }\n uniqueValues.sort();\n if (cachedEntry) {\n cachedEntry.set(column, uniqueValues);\n } else {\n cachedValues.set(table, new Map([[column, uniqueValues]]));\n }\n }\n return pattern\n ? uniqueValues.filter((value) => value.toString().startsWith(pattern))\n : uniqueValues;\n};\n\n// export const makeSuggestions = (\n// table: Table,\n// column: string,\n// pattern?: string\n// ) => {\n// const uniqueValues = getUniqueValues(table, column, pattern);\n// if (uniqueValues.length > 20) {\n// return uniqueValues?.slice(0, 20).map((v) => v.toString());\n// } else {\n// return uniqueValues.map((v) => v.toString());\n// }\n// };\nexport const makeSuggestions = (\n table: Table,\n column: string,\n pattern?: string\n): Promise<string[]> =>\n new Promise((resolve) => {\n const uniqueValues = getUniqueValues(table, column, pattern);\n const result =\n uniqueValues.length > 20\n ? uniqueValues?.slice(0, 20).map((v) => v.toString())\n : uniqueValues.map((v) => v.toString());\n setTimeout(() => resolve(result), 100);\n });\n", "import { ColumnDescriptor } from \"@vuu-ui/vuu-table-types\";\nimport { VuuRowDataItemType, VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport { UpdateGenerator } from \"./rowUpdates\";\n\ntype RowAtIndexFunc<T = unknown> = (index: number) => T | undefined;\n\nexport const VuuColumnGenerator = (columnCount: number): string[] =>\n [\"Row No\"].concat(\n Array(columnCount)\n .fill(\"\")\n .map((_, i) => `Column ${i + 1}`)\n );\n\nexport type RowGeneratorFactory<T = VuuRowDataItemType> = (\n columns: string[]\n) => RowAtIndexFunc<T[]>;\n\nexport type ColumnGeneratorFn = (\n columns?: number | string[],\n columnConfig?: { [key: string]: Partial<ColumnDescriptor> }\n) => ColumnDescriptor[];\n\nexport const DefaultRowGenerator: RowGeneratorFactory<string> =\n (columns: string[]) => (index) => {\n return [`row ${index + 1}`].concat(\n Array(columns.length)\n .fill(true)\n .map((v, j) => `value ${j + 1} @ ${index + 1}`)\n );\n };\n\nexport const DefaultColumnGenerator: ColumnGeneratorFn = (\n columns,\n columnConfig = {}\n) => {\n if (typeof columns === \"number\") {\n return [{ name: \"row number\", width: 150 }].concat(\n Array(columns)\n .fill(true)\n .map((_, i) => {\n const name = `column ${i + 1}`;\n return { name, width: 100, ...columnConfig[name] };\n })\n );\n } else {\n throw Error(\"DefaultColumnGenerator must be passed columns (number)\");\n }\n};\n\nconst defaultGenerators = {\n ColumnGenerator: DefaultColumnGenerator,\n RowGenerator: DefaultRowGenerator,\n};\n\nexport const getColumnAndRowGenerator = (\n table?: VuuTable\n):\n | [ColumnGeneratorFn, RowGeneratorFactory]\n | [ColumnGeneratorFn, RowGeneratorFactory, () => UpdateGenerator] => {\n const tableName = table?.table ?? \"\";\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n switch (table?.module) {\n case \"SIMUL\": {\n const { ColumnGenerator, RowGenerator, createUpdateGenerator } =\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n simulDataGenerators[tableName] ?? defaultGenerators;\n return [ColumnGenerator, RowGenerator, createUpdateGenerator];\n }\n\n case \"BASKET\": {\n const { ColumnGenerator, RowGenerator, createUpdateGenerator } =\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n basketDataGenerators[tableName] ?? defaultGenerators;\n return [ColumnGenerator, RowGenerator, createUpdateGenerator];\n }\n case undefined: {\n const { ColumnGenerator, RowGenerator } = defaultGenerators;\n return [ColumnGenerator, RowGenerator];\n }\n default:\n throw Error(\n `vuu-row-gererator table ${table?.table} was requested but no generator is registered`\n );\n }\n};\n\nexport const populateArray = (\n count: number,\n colGen: ColumnGeneratorFn,\n rowGen: RowGeneratorFactory,\n columns?: number | string[]\n) => {\n const columnDescriptors = colGen(columns);\n const generateRow = rowGen(columnDescriptors.map((col) => col.name));\n const data: Array<VuuRowDataItemType[]> = [];\n for (let i = 0; i < count; i++) {\n const row = generateRow(i);\n if (row) {\n data[i] = row;\n } else {\n break;\n }\n }\n return data;\n};\n", "import { SchemaColumn, TableSchema } from \"@vuu-ui/vuu-data-types\";\nimport { VuuRowDataItemType, VuuTable } from \"@vuu-ui/vuu-protocol-types\";\nimport { ColumnMap, EventEmitter } from \"@vuu-ui/vuu-utils\";\nimport { UpdateGenerator } from \"./rowUpdates\";\n\nexport type TableEvents = {\n delete: (row: VuuRowDataItemType[]) => void;\n insert: (row: VuuRowDataItemType[]) => void;\n update: (row: VuuRowDataItemType[], columnName?: string) => void;\n};\n\nexport class Table extends EventEmitter<TableEvents> {\n #data: VuuRowDataItemType[][];\n #dataMap: ColumnMap;\n #indexOfKey: number;\n #index = new Map<string, number>();\n #schema: TableSchema;\n\n constructor(\n schema: TableSchema,\n data: VuuRowDataItemType[][],\n dataMap: ColumnMap,\n updateGenerator?: UpdateGenerator\n ) {\n super();\n this.#data = data;\n this.#dataMap = dataMap;\n this.#schema = schema;\n this.#indexOfKey = dataMap[schema.key];\n this.buildIndex();\n updateGenerator?.setTable(this);\n updateGenerator?.setRange({ from: 0, to: 100 });\n }\n\n private buildIndex() {\n for (let i = 0; i < this.#data.length; i++) {\n const key = this.#data[i][this.#indexOfKey] as string;\n this.#index.set(key, i);\n }\n }\n\n get data() {\n return this.#data;\n }\n\n get map() {\n return this.#dataMap;\n }\n\n get schema() {\n return this.#schema;\n }\n\n insert(row: VuuRowDataItemType[]) {\n const index = this.#data.length;\n this.#data.push(row);\n const key = row[this.#indexOfKey] as string;\n this.#index.set(key, index);\n this.emit(\"insert\", row);\n }\n\n findByKey(key: string) {\n const index = this.#index.get(key) ?? -1;\n return this.#data[index];\n }\n\n update(key: string, columnName: string, value: VuuRowDataItemType) {\n const rowIndex = this.#data.findIndex(\n (row) => row[this.#indexOfKey] === key\n );\n const colIndex = this.#dataMap[columnName];\n if (rowIndex !== -1) {\n const row = this.#data[rowIndex];\n const newRow = row.slice();\n newRow[colIndex] = value;\n this.#data[rowIndex] = newRow;\n this.emit(\"update\", newRow, columnName);\n }\n }\n updateRow(row: VuuRowDataItemType[]) {\n const key = row[this.#indexOfKey];\n const rowIndex = this.#data.findIndex(\n (row) => row[this.#indexOfKey] === key\n );\n if (rowIndex !== -1) {\n this.#data[rowIndex] = row;\n this.emit(\"update\", row);\n }\n }\n}\n\nexport const buildDataColumnMap = (schema: TableSchema) =>\n Object.values(schema.columns).reduce<ColumnMap>((map, col, index) => {\n map[col.name] = index;\n return map;\n }, {});\n\nconst getServerDataType = (\n columnName: string,\n { columns: cols1, table: t1 }: TableSchema,\n { columns: cols2, table: t2 }: TableSchema\n) => {\n const col1 = cols1.find((col) => col.name === columnName);\n const col2 = cols2.find((col) => col.name === columnName);\n if (col1 && col2) {\n if (col1.serverDataType === col2.serverDataType) {\n return col1.serverDataType;\n } else {\n throw Error(\n `both tables ${t1.table} and ${t2.table} implement column ${columnName}, but with types differ`\n );\n }\n } else if (col1) {\n return col1.serverDataType;\n } else if (col2) {\n return col2.serverDataType;\n } else {\n throw Error(`WTF how is this possible`);\n }\n};\n\n// Just copies source tables, then registers update listeners.\n// Not terribly efficient, but good enough for showcase\nexport const joinTables = (\n joinTable: VuuTable,\n table1: Table,\n table2: Table,\n joinColumn: string\n) => {\n const { map: m1, schema: schema1 } = table1;\n const { map: m2, schema: schema2 } = table2;\n const k1 = m1[joinColumn];\n const k2 = m2[joinColumn];\n\n const combinedColumns = new Set(\n [...schema1.columns, ...schema2.columns].map((col) => col.name).sort()\n );\n\n const combinedSchema: TableSchema = {\n key: joinColumn,\n table: joinTable,\n columns: Array.from(combinedColumns).map<SchemaColumn>((columnName) => ({\n name: columnName,\n serverDataType: getServerDataType(columnName, schema1, schema2),\n })),\n };\n\n const data: VuuRowDataItemType[][] = [];\n const combinedColumnMap = buildDataColumnMap(combinedSchema);\n // const start = performance.now();\n for (const row of table1.data) {\n const row2 = table2.findByKey(String(row[k1]));\n if (row2) {\n const out = [];\n for (const column of table1.schema.columns) {\n const value = row[m1[column.name]];\n out[combinedColumnMap[column.name]] = value;\n }\n for (const column of table2.schema.columns) {\n const value = row2[m2[column.name]];\n out[combinedColumnMap[column.name]] = value;\n }\n\n data.push(out);\n }\n }\n // const end = performance.now();\n // console.log(`took ${end - start} ms to create join table ${joinTable.table}`);\n\n const newTable = new Table(combinedSchema, data, combinedColumnMap);\n\n table1.on(\"insert\", (row) => {\n const row2 = table2.findByKey(String(row[k1]));\n if (row2) {\n const out = [];\n for (const column of table1.schema.columns) {\n const value = row[m1[column.name]];\n out[combinedColumnMap[column.name]] = value;\n }\n for (const column of table2.schema.columns) {\n const value = row2[m2[column.name]];\n out[combinedColumnMap[column.name]] = value;\n }\n newTable.insert(out);\n }\n });\n\n table2.on(\"update\", (row) => {\n const keyValue = row[k2] as string;\n const targetRow = newTable.findByKey(keyValue);\n if (targetRow) {\n const updatedRow = targetRow.slice();\n for (const { name } of table2.schema.columns) {\n if (row[m2[name]] !== updatedRow[combinedColumnMap[name]]) {\n updatedRow[combinedColumnMap[name]] = row[m2[name]];\n }\n }\n newTable.updateRow(updatedRow);\n }\n });\n\n return newTable;\n};\n", "export function random(min: number, max: number) {\n min = Math.ceil(min);\n max = Math.floor(max);\n return Math.floor(Math.random() * (max - min + 1)) + min;\n}\n\nexport function randomPercentage(value: number) {\n const dec = random(2, 99);\n const percentage = dec / 100;\n return value * percentage;\n}\nexport type PriceGenerator = (min: number, max: number) => number;\n\nexport const nextRandomDouble: PriceGenerator = (min, max) =>\n min + (max - min) * Math.random();\n\nexport const initBidAsk = (\n priceMaxDelta: number,\n nextRandomDouble: PriceGenerator\n) => {\n const mid = nextRandomDouble(0, 1000);\n const tempBid = nextRandomDouble(mid - priceMaxDelta, mid - 1);\n const ask = nextRandomDouble(mid + 1, mid + priceMaxDelta);\n const bid = tempBid < 0 ? mid : tempBid;\n const newBid = Math.round(bid * 100) / 100.0;\n const newAsk = Math.round(ask * 100) / 100.0;\n return [newBid, newAsk];\n};\n\nconst maxAsk = (\n bid: number,\n ask: number,\n spreadMultipler: number,\n priceMaxDelta: number\n) => {\n const spread = ask - bid;\n return Math.min(\n ask + spreadMultipler * spread,\n spread / 2 + bid + priceMaxDelta\n );\n};\n\nconst minAsk = (\n bid: number,\n ask: number,\n spreadMultipler: number,\n priceMaxDelta: number\n) => {\n return Math.max(bid + 1, (ask - bid) / 2 + bid);\n};\n\nconst maxBid = (\n bid: number,\n ask: number,\n spreadMultipler: number,\n priceMaxDelta: number\n) => {\n const result = Math.min(ask - 1, (ask - bid) / 2 + bid);\n return result < 1 ? bid + 1 : result;\n};\n\nconst minBid = (\n bid: number,\n ask: number,\n spreadMultipler: number,\n priceMaxDelta: number\n) => {\n const spread = ask - bid;\n const mid = spread / 2 + bid;\n const result = Math.max(\n bid - Math.min(spreadMultipler * spread, 10),\n mid - priceMaxDelta\n );\n return result < 0 ? bid : result;\n};\n\nexport const generateNextBidAsk = (\n bid: number,\n ask: number,\n spreadMultipler: number,\n priceMaxDelta: number,\n nextRandomDouble: PriceGenerator\n) => {\n let tempAsk = ask;\n if (Math.abs(bid - ask) <= 1) tempAsk = ask + 1;\n const minBidValue = minBid(bid, tempAsk, spreadMultipler, priceMaxDelta);\n const maxBidValue = maxBid(bid, tempAsk, spreadMultipler, priceMaxDelta);\n const minAskValue = minAsk(bid, tempAsk, spreadMultipler, priceMaxDelta);\n const maxAskValue = maxAsk(bid, tempAsk, spreadMultipler, priceMaxDelta);\n const newBid =\n Math.round(nextRandomDouble(minBidValue, maxBidValue) * 100) / 100.0;\n const newAsk =\n Math.round(nextRandomDouble(minAskValue, maxAskValue) * 100) / 100.0;\n return [newBid, newAsk];\n};\n", "import { VuuRange } from \"@vuu-ui/vuu-protocol-types\";\nimport { generateNextBidAsk, nextRandomDouble, random } from \"./data-utils\";\nimport type { UpdateGenerator } from \"./rowUpdates\";\nimport { Table } from \"./Table\";\n\nconst getNewValue = (value: number) => {\n const multiplier = random(0, 100) / 1000;\n const direction = random(0, 10) >= 5 ? 1 : -1;\n return value + value * multiplier * direction;\n};\n\nexport class BaseUpdateGenerator implements UpdateGenerator {\n private table: Table | undefined;\n private range: VuuRange | undefined;\n private updating = false;\n private timer: number | undefined;\n private tickingColumns: { [key: string]: number };\n\n constructor(tickingColumns: { [key: string]: number }) {\n this.tickingColumns = tickingColumns;\n }\n\n setRange(range: VuuRange) {\n this.range = range;\n if (!this.updating && this.table) {\n this.startUpdating();\n }\n }\n\n setTable(table: Table) {\n this.table = table;\n }\n\n private startUpdating() {\n this.updating = true;\n this.update();\n }\n\n private stopUpdating() {\n this.updating = false;\n if (this.timer) {\n window.clearTimeout(this.timer);\n this.timer = undefined;\n }\n }\n\n update = () => {\n if (this.range && this.table) {\n const data = this.table?.data;\n const { bid, ask, last, ...rest } = this.tickingColumns;\n if (data && data?.length > 0) {\n const maxRange = Math.min(this.range.to, data.length);\n for (let rowIndex = this.range.from; rowIndex < maxRange; rowIndex++) {\n let updateCount = 0;\n const shallUpdateRow = random(0, 10) < 2;\n if (shallUpdateRow) {\n // eslint-disable-next-line @typescript-eslint/ban-ts-comment\n // @ts-ignore\n const rowUpdates = this.table.data[rowIndex];\n const row = data[rowIndex];\n\n if (bid !== undefined && ask !== undefined) {\n const { [bid]: currentBid, [ask]: currentAsk } = row as number[];\n const [newBid, newAsk] = generateNextBidAsk(\n currentBid,\n currentAsk,\n 10,\n 5,\n nextRandomDouble\n );\n rowUpdates[ask] = newAsk;\n rowUpdates[bid] = newBid;\n if (last !== undefined) {\n const newLast =\n Math.round((currentAsk + (newAsk - currentAsk) / 2) * 100) /\n 100.0;\n rowUpdates[last] = newLast;\n }\n }\n\n for (const colIdx of Object.values(rest)) {\n const shallUpdateColumn = random(0, 10) < 5;\n if (shallUpdateColumn) {\n updateCount += 1;\n const newValue = getNewValue(row[colIdx] as number);\n if (this.table) {\n rowUpdates[colIdx] = newValue;\n }\n }\n }\n if (this.table && updateCount > 0) {\n this.table.updateRow(rowUpdates);\n }\n }\n }\n }\n }\n\n if (this.updating) {\n this.timer = window.setTimeout(this.update, 500);\n }\n };\n}\n", "// Symbol,Name,Last Trade,Change,Volume\n// prettier-ignore\nexport default [\n [\"AAL.L\",\"Anglo American PLC\",\"436.35 13:13\",\"5.35 (1.24%)\",\"5,799,089\"],\n [\"ABF.L\",\"Associated British Foods PLC\",\"3,435.60 13:12\",\"7.40 (0.21%)\",\"86,808\"],\n [\"ADM.L\",\"Admiral Group PLC\",\"1,627.00 13:13\",\"\"],\n [\"ADN.L\",\"Aberdeen Asset Management PLC\",\"334.00 13:13\",\"2.50 (0.75%)\",\"806,880\"],\n [\"AHT.L\",\"Ashtead Group PLC\",\"1,027.00 13:13\",\"6.00 (0.59%)\",\"331,255\"],\n [\"ANTO.L\",\"Antofagasta PLC\",\"484.10 13:13\",\"11.70 (2.48%)\",\"1,753,976\"],\n [\"ARM.L\",\"ARM Holdings PLC\",\"1,058.00 13:13\",\"3.00 (0.28%)\",\"475,927\"],\n [\"AV.L\",\"Aviva PLC\",\"493.97 13:13\",\"2.23 (0.45%)\",\"2,226,835\"],\n [\"AZN.L\",\"AstraZeneca PLC\",\"4,399.50 13:13\",\"2.50 (0.06%)\",\"815,133\"],\n [\"BA.L\",\"BAE Systems PLC\",\"478.10 13:13\",\"4.30 (0.91%)\",\"2,039,934\"],\n [\"BAB.L\",\"Babcock International Group PLC\",\"988.00 13:13\",\"9.50 (0.97%)\",\"209,614\"],\n [\"BARC.L\",\"Barclays PLC\",\"226.30 13:13\", \"1.15 (0.51%)\",\"6,575,664\"],\n [\"BATS.L\",\"British American Tobacco PLC\",\"3,803.50 13:13\", \"8.50 (0.22%)\",\"465,110\"],\n [\"BDEV.L\",\"Barratt Developments PLC\",\"576.00 13:13\", \"0.50 (0.09%)\",\"1,044,365\"],\n [\"BG.L\",\"BG Group PLC\",\"1,013.50 13:13\", \"5.50 (0.55%)\",\"1,507,332\"],\n [\"BKG.L\",\"Berkeley Group Holdings (The) PLC\",\"3,126.00 13:13\", \"15.00 (0.48%)\",\"95,071\"],\n [\"BLND.L\",\"British Land Co PLC\",\"828.06 13:12\", \"10.44 (1.25%)\",\"1,802,548\"],\n [\"BLT.L\",\"BHP Billiton PLC\",\"881.40 13:13\", \"4.30 (0.49%)\",\"4,947,287\"],\n [\"BNZL.L\",\"Bunzl PLC\",\"1,875.40 13:05\", \"4.60 (0.24%)\",\"104,541\"],\n [\"BP.L\",\"BP PLC\",\"381.50 13:13\", \"2.95 (0.78%)\",\"10,493,561\"],\n [\"BRBY.L\",\"Burberry Group PLC\",\"1,269.00 13:13\", \"7.00 (0.55%)\",\"295,647\"],\n [\"BT-A\",\"L,BT Group PLC\",\"489.20 13:13\", \"3.70 (0.75%)\",\"3,914,982\"],\n [\"CCL.L\",\"Carnival PLC\",\"3,426.00 13:12\", \"22.00 (0.64%)\",\"86,257\"],\n [\"CNA.L\",\"Centrica PLC\",\"212.80 13:13\", \"0.60 (0.28%)\",\"2,144,540\"],\n [\"CPG.L\",\"Compass Group PLC\",\"1,054.00 13:08\", \"5.00 (0.48%)\",\"1,001,167\"],\n [\"CPI.L\",\"Capita PLC\",\"1,235.00 13:11\", \"1.00 (0.08%)\",\"244,591\"],\n [\"CRH.L\",\"CRH PLC\",\"1,783.20 13:12\", \"17.80 (0.99%)\",\"897,325\"],\n [\"DC.L\",\"DIXONS CARPHONE\",\"462.10 13:11\",\"\"],\n [\"DGE.L\",\"Diageo PLC\",\"1,881.50 13:13\", \"6.50 (0.34%)\",\"756,906\"],\n [\"DLG.L\",\"Direct Line Insurance Group PLC\",\"403.80 13:13\", \"0.40 (0.10%)\",\"1,095,340\"],\n [\"EXPN.L\",\"Experian PLC\",\"1,191.00 13:12\", \"2.00 (0.17%)\",\"467,283\"],\n [\"EZJ.L\",\"easyJet PLC\",\"1,682.00 13:12\", \"28.00 (1.64%)\",\"1,191,230\"],\n [\"FRES.L\",\"Fresnillo PLC\",\"678.50 13:12\", \"6.50 (0.97%)\",\"381,871\"],\n [\"GFS.L\",\"G4S PLC\",\"232.30 13:03\", \"2.00 (0.85%)\",\"1,096,551\"],\n [\"GKN.L\",\"GKN PLC\",\"294.80 13:12\", \"2.50 (0.86%)\",\"792,247\"],\n [\"GLEN.L\",\"Glencore PLC\",\"90.48 13:13\", \"1.65 (1.86%)\",\"41,631,528\"],\n [\"GSK.L\",\"GlaxoSmithKline PLC\",\"1,345.00 13:13\", \"0.50 (0.04%)\",\"1,767,356\"],\n [\"HIK.L\",\"Hikma Pharmaceuticals PLC\",\"2,010.00 13:04\", \"57.00 (2.92%)\",\"261,511\"],\n [\"HL.L\",\"Hargreaves Lansdown PLC\",\"1,488.03 13:12\", \"9.97 (0.67%)\",\"372,261\"],\n [\"HMSO.L\",\"Hammerson PLC\",\"597.50 13:11\", \"3.50 (0.58%)\",\"478,301\"],\n [\"HSBA.L\",\"HSBC Holdings PLC\",\"519.70 13:13\", \"0.50 (0.10%)\",\"7,415,629\"],\n [\"IAG.L\",\"International Consolidated Airlines Group SA\",\"575.40 13:12\", \"16.10 (2.72%)\",\"4,311,514\"],\n [\"IHG.L\",\"InterContinental Hotels Group PLC\",\"2,481.00 13:12\", \"19.00 (0.76%)\",\"219,918\"],\n [\"III.L\",\"3i Group PLC\",\"487.30 13:11\", \"4.50 (0.92%)\",\"189,987\"],\n [\"IMT.L\",\"Imperial Tobacco Group PLC\",\"3,571.00 13:13\", \"29.00 (0.81%)\",\"926,816\"],\n [\"INTU.L\",\"intu properties PLC\",\"319.90 13:09\", \"4.60 (1.42%)\",\"514,821\"],\n [\"ISAT.L\",\"Inmarsat PLC\",\"1,054.44 13:13\", \"3.44 (0.33%)\",\"988,089\"],\n [\"ITRK.L\",\"Intertek Group PLC\",\"2,643.00 13:14\", \"3.00 (0.11%)\",\"45,868\"],\n [\"ITV.L\",\"ITV PLC\",\"267.30 13:14\", \"2.60 (0.96%)\",\"3,453,208\"],\n [\"JMAT.L\",\"Johnson Matthey PLC\",\"2,445.00 13:14\", \"29.00 (1.20%)\",\"276,397\"],\n [\"KGF.L\",\"Kingfisher PLC\",\"346.20 13:14\", \"4.30 (1.23%)\",\"1,021,408\"],\n [\"LAND.L\",\"Land Securities Group PLC\",\"1,239.00 13:13\", \"7.00 (0.56%)\",\"384,973\"],\n [\"LGEN.L\",\"Legal & General Group PLC\",\"266.00 13:14\", \"1.60 (0.60%)\",\"1,998,399\"],\n [\"LLOY.L\",\"Lloyds Banking Group PLC\",\"73.86 13:14\", \"0.02 (0.03%)\",\"18,907,878\"],\n [\"LSE.L\",\"London Stock Exchange Group PLC\",\"2,544.00 13:11\", \"6.00 (0.24%)\",\"129,657\"],\n [\"MGGT.L\",\"Meggitt PLC\",\"386.00 13:15\", \"3.20 (0.84%)\",\"611,044\"],\n [\"MKS.L\",\"Marks & Spencer Group PLC\",\"514.75 13:12\", \"3.25 (0.63%)\",\"920,128\"],\n [\"MNDI.L\",\"Mondi PLC\",\"1,463.00 13:14\", \"7.00 (0.48%)\",\"383,546\"],\n [\"MRW.L\",\"Morrison (Wm) Supermarkets PLC\",\"155.20 13:14\",\"\"],\n [\"NG.L\",\"National Grid PLC\",\"926.40 13:14\", \"1.10 (0.12%)\",\"1,659,592\"],\n [\"NXT.L\",\"Next PLC\",\"7,765.00 13:11\", \"95.00 (1.21%)\",\"114,062\"],\n [\"OML.L\",\"Old Mutual PLC\",\"198.50 13:14\", \"0.40 (0.20%)\",\"2,040,849\"],\n [\"PRU.L\",\"Prudential PLC\",\"1,499.50 13:15\", \"14.00 (0.93%)\",\"580,870\"],\n [\"PSON.L\",\"Pearson PLC\",\"794.00 13:09\", \"5.00 (0.63%)\",\"1,177,953\"],\n [\"RB.L\",\"Reckitt Benckiser Group PLC\",\"6,293.00 13:14\", \"34.00 (0.54%)\",\"281,172\"],\n [\"RBS.L\",\"Royal Bank of Scotland Group PLC\",\"313.40 13:14\", \"2.40 (0.77%)\",\"2,100,058\"],\n [\"RDSA.L\",\"Royal Dutch Shell PLC\",\"1,636.00 13:14\", \"18.00 (1.11%)\",\"2,467,461\"],\n [\"RDSB.L\",\"Royal Dutch Shell PLC\",\"1,652.00 13:15\", \"14.50 (0.89%)\",\"1,457,434\"],\n [\"REL.L\",\"Reed Elsevier PLC\",\"1,170.00 13:14\",\"0.00 (0.00%)\",\"908,802\"],\n [\"RIO.L\",\"Rio Tinto PLC\",\"2,235.00 13:15\", \"21.00 (0.95%)\",\"2,190,722\"],\n [\"RMG.L\",\"Royal Mail PLC\",\"453.50 13:14\", \"1.20 (0.26%)\",\"995,316\"],\n [\"RR.L\",\"Rolls-Royce Group PLC\",\"546.63 13:14\", \"8.38 (1.51%)\",\"2,792,915\"],\n [\"RRS.L\",\"Randgold Resources Ltd\",\"3,929.00 13:14\",\"0.00 (0.00%)\",\"135,524\"],\n [\"RSA.L\",\"RSA Insurance Group PLC\",\"437.10 13:14\", \"0.10 (0.02%)\",\"395,477\"],\n [\"SAB.L\",\"SABMiller PLC\",\"4,011.00 13:15\", \"1.00 (0.02%)\",\"892,451\"],\n [\"SBRY.L\",\"Sainsbury (J) PLC\",\"255.80 13:14\", \"7.40 (2.98%)\",\"2,395,670\"],\n [\"SDR.L\",\"Schroders PLC\",\"2,930.00 13:09\", \"12.00 (0.41%)\",\"44,674\"],\n [\"SGE.L\",\"Sage Group (The) PLC\",\"545.50 13:13\", \"0.50 (0.09%)\",\"539,717\"],\n [\"SHP.L\",\"Shire PLC\",\"4,685.00 13:14\", \"22.00 (0.47%)\",\"221,318\"],\n [\"SKY.L\",\"SKY\",\"1,095.00 13:12\", \"4.00 (0.37%)\",\"925,016\"],\n [\"SL.L\",\"Standard Life PLC\",\"399.90 13:14\", \"3.20 (0.79%)\",\"861,636\"],\n [\"SMIN.L\",\"Smiths Group PLC\",\"992.50 13:14\", \"27.50 (2.70%)\",\"640,309\"],\n [\"SN.L\",\"Smith & Nephew PLC\",\"1,110.00 13:14\", \"9.00 (0.82%)\",\"480,018\"],\n [\"SPD.L\",\"Sports Direct International PLC\",\"694.50 13:11\", \"1.50 (0.22%)\",\"157,981\"],\n [\"SSE.L\",\"SSE PLC\",\"1,463.00 13:13\", \"2.00 (0.14%)\",\"562,454\"],\n [\"STAN.L\",\"Standard Chartered PLC\",\"583.00 13:14\", \"0.60 (0.10%)\",\"2,018,697\"],\n [\"STJ.L\",\"St James's Place PLC\",\"964.00 13:14\", \"11.00 (1.13%)\",\"418,480\"],\n [\"SVT.L\",\"Severn Trent PLC\",\"2,199.00 13:12\", \"1.00 (0.05%)\",\"95,342\"],\n [\"TPK.L\",\"Travis Perkins PLC\",\"1,945.00 13:13\", \"4.00 (0.21%)\",\"92,916\"],\n [\"TSCO.L\",\"Tesco PLC\",\"171.54 13:14\", \"2.54 (1.50%)\",\"9,831,136\"],\n [\"TUI.L\",\"TUI AG\",\"1,115.00 13:10\", \"5.00 (0.45%)\",\"458,970\"],\n [\"TW.L\",\"Taylor Wimpey PLC\",\"183.90 13:15\", \"1.10 (0.59%)\",\"3,180,729\"],\n [\"ULVR.L\",\"Unilever PLC\",\"2,791.00 13:14\", \"29.00 (1.03%)\",\"824,827\"],\n [\"UU.L\",\"United Utilities Group PLC\",\"959.00 13:10\", \"2.50 (0.26%)\",\"436,911\"],\n [\"VOD.L\",\"Vodafone Group PLC\",\"224.25 13:15\", \"1.30 (0.58%)\",\"17,572,036\"],\n [\"WOS.L\",\"Wolseley PLC\",\"3,657.00 13:14\", \"4.00 (0.11%)\",\"179,536\"],\n [\"WPP.L\",\"WPP PLC\",\"1,502.00 13:15\", \"12.00 (0.79%)\",\"857,887\"],\n [\"WTB.L\",\"Whitbread PLC\",\"4,484.00 13:16\", \"60.00 (1.32%)\",\"141,036\"]\n]\n", "//Name,Symbol,Weight,Last Trade,Chg,% Chg\n// prettier-ignore\nexport default [\n [\"Apple Inc\", \"AAPL\", 11.007,174.94,0.15, \"(0.09%)\"],\n [\"Microsoft Corp\", \"MSFT\", 9.61,316.98,-0.03, \"(-0.01%)\"],\n [\"Amazon.com Inc\", \"AMZN\", 5.401,129.31,0.19, \"(0.14%)\"],\n [\"NVIDIA Corp\", \"NVDA\", 4.101,415.74,-0.36, \"(-0.09%)\"],\n [\"Meta Platforms Inc\", \"META\", 3.729,299.42,0.34, \"(0.11%)\"],\n [\"Tesla Inc\", \"TSLA\", 3.285,244.13,-0.75, \"(-0.31%)\"],\n [\"Alphabet Inc\", \"GOOGL\", 3.133,130.49,0.24, \"(0.18%)\"],\n [\"Alphabet Inc\", \"GOOG\", 3.085,131.49,0.24, \"(0.18%)\"],\n [\"Broadcom Inc\", \"AVGO\", 2.896,833.04,3.96, \"(0.48%)\"],\n [\"Costco Wholesale Corp\", \"COST\", 2.137,557.85,-0.74, \"(-0.13%)\"],\n [\"PepsiCo Inc\", \"PEP\", 2.096,174.84,-0.43, \"(-0.25%)\"],\n [\"Adobe Inc\", \"ADBE\", 2.033,511.42,-1.48, \"(-0.29%)\"],\n [\"Cisco Systems Inc\", \"CSCO\", 1.887,53.68,0.11, \"(0.20%)\"],\n [\"Comcast Corp\", \"CMCSA\", 1.633,45.30,-0.01, \"(-0.01%)\"],\n [\"Netflix Inc\", \"NFLX\", 1.478,379.89,0.08, \"(0.02%)\"],\n [\"T-Mobile US Inc\", \"TMUS\", 1.43,140.18,0.83, \"(0.60%)\"],\n [\"Advanced Micro Devices Inc\", \"AMD\", 1.348,96.09,-0.11, \"(-0.12%)\"],\n [\"Texas Instruments Inc\", \"TXN\", 1.264,161.00,0.69, \"(0.43%)\"],\n [\"Intel Corp\", \"INTC\", 1.26,34.19,0.01, \"(0.01%)\"],\n [\"Amgen Inc\", \"AMGN\", 1.251,271.18,3.48, \"(1.30%)\"],\n [\"Intuit Inc\", \"INTU\", 1.226,509.00,0.43, \"(0.08%)\"],\n [\"Honeywell International Inc\", \"HON\", 1.103,188.67,-1.12, \"(-0.59%)\"],\n [\"QUALCOMM Inc\", \"QCOM\", 1.046,107.53,-0.16, \"(-0.14%)\"],\n [\"Applied Materials Inc\", \"AMAT\", 0.982,136.32,0.15, \"(0.11%)\"],\n [\"Booking Holdings Inc\", \"BKNG\", 0.941,3, 19.20,-43.30, \"(-1.42%)\"],\n [\"Starbucks Corp\", \"SBUX\", 0.926,93.80,0.12, \"(0.12%)\"],\n [\"Intuitive Surgical Inc\", \"ISRG\", 0.867,288.50,0.30, \"(0.10%)\"],\n [\"Automatic Data Processing Inc\", \"ADP\", 0.854,239.45,0.10, \"(0.04%)\"],\n [\"Mondelez International Inc\", \"MDLZ\", 0.835,71.25,0.82, \"(1.16%)\"],\n [\"Gilead Sciences Inc\", \"GILD\", 0.814,75.47,0.46, \"(0.61%)\"],\n [\"Vertex Pharmaceuticals Inc\", \"VRTX\", 0.794,353.67,4.14, \"(1.18%)\"],\n [\"Regeneron Pharmaceuticals Inc\", \"REGN\", 0.763,828.09,3.25, \"(0.39%)\"],\n [\"Analog Devices Inc\", \"ADI\", 0.752,176.82,1.34, \"(0.76%)\"],\n [\"Lam Research Corp\", \"LRCX\", 0.702,620.00,0.89, \"(0.14%)\"],\n [\"Micron Technology Inc\", \"MU\", 0.646,68.90,0.02, \"(0.03%)\"],\n [\"Palo Alto Networks Inc\", \"PANW\", 0.604,228.70,0.19, \"(0.08%)\"],\n [\"Synopsys Inc\", \"SNPS\", 0.587,447.12,0.27, \"(0.06%)\"],\n [\"Charter Communications Inc\", \"CHTR\", 0.581,441.88,-3.33, \"(-0.75%)\"],\n [\"MercadoLibre Inc\", \"MELI\", 0.562,1,275.50,-1.47, \"(-0.11%)\"],\n [\"PayPal Holdings Inc\", \"PYPL\", 0.559,57.90,0.02, \"(0.03%)\"],\n [\"CSX Corp\", \"CSX\", 0.54,31.23,0.03, \"(0.09%)\"],\n [\"Cadence Design Systems Inc\", \"CDNS\", 0.539,230.83,0.17, \"(0.07%)\"],\n [\"KLA Corp\", \"KLAC\", 0.53,456.11,4.29, \"(0.95%)\"],\n [\"PDD Holdings Inc ADR\", \"PDD\", 0.521,95.93,-0.01, \"(-0.01%)\"],\n [\"Marriott International Inc/MD\", \"MAR\", 0.505,193.90,-0.46, \"(-0.23%)\"],\n [\"Monster Beverage Corp\", \"MNST\", 0.498,54.48,-0.04, \"(-0.08%)\"],\n [\"Airbnb Inc\", \"ABNB\", 0.491,132.09,-0.11, \"(-0.08%)\"],\n [\"O'Reilly Automotive Inc\", \"ORLY\", 0.485,936.67,0.65, \"(0.07%)\"],\n [\"Cintas Corp\", \"CTAS\", 0.446,505.27,0.52, \"(0.10%)\"],\n [\"ASML Holding NV\", \"ASML\", 0.438,585.00,-2.10, \"(-0.36%)\"],\n [\"NXP Semiconductors NV\", \"NXPI\", 0.434,196.76,-0.04, \"(-0.02%)\"],\n [\"Workday Inc\", \"WDAY\", 0.414,235.55,4.73, \"(2.05%)\"],\n [\"Lululemon Athletica Inc\", \"LULU\", 0.405,386.36,-1.69, \"(-0.44%)\"],\n [\"Keurig Dr Pepper Inc,KDP\", 0.404,33.25,0.13, \"(0.39%)\"],\n [\"Fortinet Inc\", \"FTNT\", 0.401,58.29,0.05, \"(0.09%)\"],\n [\"Marvell Technology Inc\", \"MRVL\", 0.388,52.38,0.08, \"(0.14%)\"],\n [\"PACCAR Inc\", \"PCAR\", 0.38,84.97,0.04, \"(0.04%)\"],\n [\"Old Dominion Freight Line Inc\", \"ODFL\", 0.38,401.01,0.35, \"(0.09%)\"],\n [\"Autodesk Inc\", \"ADSK\", 0.379,204.07,0.03, \"(0.01%)\"],\n [\"Kraft Heinz Co/The\", \"KHC\", 0.368,34.27,0.11, \"(0.31%)\"],\n [\"Microchip Technology Inc\", \"MCHP\", 0.36,77.00,-0.08, \"(-0.10%)\"],\n [\"Copart Inc\", \"CPRT\", 0.358,43.26,0.10, \"(0.22%)\"],\n [\"American Electric Power Co Inc\", \"AEP\", 0.357,79.23,0.06, \"(0.08%)\"],\n [\"Paychex Inc\", \"PAYX\", 0.355,113.01,0.06, \"(0.06%)\"],\n [\"Exelon Corp\", \"EXC\", 0.35,40.28,0.07, \"(0.16%)\"],\n [\"ON Semiconductor Corp\", \"ON\", 0.341,93.87,0.06, \"(0.06%)\"],\n [\"AstraZeneca PLC ADR\", \"AZN\", 0.339,67.35,-0.49, \"(-0.72%)\"],\n [\"Seagen Inc\", \"SGEN\", 0.336,212.18,-1.52, \"(-0.71%)\"],\n [\"Ross Stores Inc\", \"ROST\", 0.335,111.71,0.05, \"(0.04%)\"],\n [\"Moderna Inc\", \"MRNA\", 0.331,100.32,0.33, \"(0.33%)\"],\n [\"Biogen Inc\", \"BIIB\", 0.326,257.93,0.25, \"(0.10%)\"],\n [\"Crowdstrike Holdings Inc\", \"CRWD\", 0.319,162.85,0.28, \"(0.17%)\"],\n [\"IDEXX Laboratories Inc\", \"IDXX\", 0.316,439.41,3.72, \"(0.85%)\"],\n [\"Baker Hughes Co\", \"BKR\", 0.307,35.44,0.04, \"(0.10%)\"],\n [\"Constellation Energy Corp\", \"CEG\",0.307,110.41,0.05, \"(0.04%)\"],\n [\"Cognizant Technology Solutions Corp\",\"CTSH\",0.303,70.19,0.58,\"(0.83%)\"],\n [\"Verisk Analytics Inc\", \"VRSK\", 0.303,242.05,0.10, \"(0.04%)\"],\n [\"Dexcom Inc\", \"DXCM\", 0.3,88.30,0.80, \"(0.92%)\"],\n [\"Trade Desk Inc/The\", \"TTD\", 0.293,76.38,0.03, \"(0.03%)\"],\n [\"Xcel Energy Inc\", \"XEL\", 0.284,59.76,0.03, \"(0.04%)\"],\n [\"Electronic Arts Inc\", \"EA\", 0.279,118.38,-0.63, \"(-0.53%)\"],\n [\"CoStar Group Inc\", \"CSGP\", 0.277,78.18,0.12, \"(0.15%)\"],\n [\"GLOBALFOUNDRIES Inc\", \"GFS\", 0.273,57.21,0.38, \"(0.67%)\"],\n [\"Fastenal Co\", \"FAST\", 0.268,54.32,0.11, \"(0.20%)\"],\n [\"Atlassian Corp\", \"TEAM\", 0.253,196.01,0.55, \"(0.28%)\"],\n [\"GE HealthCare Technologies Inc\", \"GEHC\", 0.252,63.78,-0.56, \"(-0.86%)\"],\n [\"Warner Bros Discovery Inc\", \"WBD\", 0.244,11.09,-0.02, \"(-0.14%)\"],\n [\"Diamondback Energy Inc\", \"FANG\", 0.235,150.70,0.13, \"(0.09%)\"],\n [\"Datadog Inc\", \"DDOG\", 0.23,88.81,0.05, \"(0.06%)\"],\n [\"ANSYS Inc\", \"ANSS\", 0.227,300.60,-2.31, \"(-0.76%)\"],\n [\"eBay Inc\", \"EBAY\", 0.203,43.22,0.09, \"(0.20%)\"],\n [\"Dollar Tree Inc\", \"DLTR\", 0.201,104.77,0.27, \"(0.25%)\"],\n [\"Align Technology Inc\", \"ALGN\", 0.2,297.25,-1.31, \"(-0.44%)\"],\n [\"Zscaler Inc\", \"ZS\", 0.188,151.80,0.09, \"(0.06%)\"],\n [\"Illumina Inc\", \"ILMN\", 0.183,132.31,-0.13, \"(-0.10%)\"],\n [\"Walgreens Boots Alliance Inc\", \"WBA\", 0.161,21.18,0.06, \"(0.28%)\"],\n [\"Zoom Video Communications Inc\", \"ZM\", 0.151,68.57,-0.29, \"(-0.41%)\"],\n [\"Enphase Energy Inc\", \"ENPH\", 0.148,120.41,0.49, \"(0.41%)\"],\n [\"Sirius XM Holdings Inc\", \"SIRI\", 0.137,4.05,0.02, \"(0.50%)\"],\n [\"JD.com Inc ADR\", \"JD\", 0.117,30.43,0.02, \"(0.05%)\"],\n [\"Lucid Group Inc\", \"LCID\", 0.102,5.14,0.03, \"(0.49%)\"],\n];\n", "//Name,Symbol,Weight,Price,Change,Change %\nexport default [\n [\"Apple Inc\", \"AAPL\", 6.992488, 171.9, 1.47, \"(0.86%)\"],\n [\"Microsoft Corp\", \"MSFT\", 6.487978, 314.55, 1.76, \"(0.56%)\"],\n [\"Amazon.com Inc\", \"AMZN\", 3.193379, 126.25, 0.27, \"(0.22%)\"],\n [\"Nvidia Corp\", \"NVDA\", 2.928461, 433.11, 8.43, \"(1.99%)\"],\n [\"Alphabet Inc Cl A\", \"GOOGL\", 2.162218, 132.93, 2.39, \"(1.83%)\"],\n [\"Tesla Inc\", \"TSLA\", 1.854311, 246.56, 6.06, \"(2.52%)\"],\n [\"Alphabet Inc Cl C\", \"GOOG\", 1.85251, 133.81, 2.35, \"(1.78%)\"],\n [\"Meta Platforms Inc Class A\", \"META\", 1.847731, 305.93, 8.19, \"(2.75%)\"],\n [\"Berkshire Hathaway Inc Cl B\", \"BRK.B\", 1.82184, 358.67, 0.89, \"(0.25%)\"],\n [\"Exxon Mobil Corp\", \"XOM\", 1.343563, 118.97, -1.23, \"(-1.03%)\"],\n [\"Unitedhealth Group Inc\", \"UNH\", 1.302884, 510.04, 6.31, \"(1.25%)\"],\n [\"Eli Lilly & Co\", \"LLY\", 1.224046, 546.65, -3.11, \"(-0.57%)\"],\n [\"Jpmorgan Chase & Co\", \"JPM\", 1.182918, 148.23, 2.45, \"(1.68%)\"],\n [\"Johnson & Johnson W/d\", \"JNJ\", 1.056344, 156.83, -0.28, \"(-0.18%)\"],\n [\"Visa Inc Class a Shares\", \"V\", 1.029636, 231.97, 2.47, \"(1.08%)\"],\n [\"Procter & Gamble Co\", \"PG\", 0.969793, 145.75, -1.59, \"(-1.08%)\"],\n [\"Broadcom Inc\", \"AVGO\", 0.941177, 835.33, 18.52, \"(2.27%)\"],\n [\"Mastercard Inc A\", \"MA\", 0.918779, 400.65, 5.17, \"(1.31%)\"],\n [\"Chevron Corp\", \"CVX\", 0.847353, 170.55, -0.49, \"(-0.28%)\"],\n [\"Home Depot Inc\", \"HD\", 0.847289, 304.35, 2.53, \"(0.84%)\"],\n [\"Abbvie Inc\", \"BBV\", 0.754672, 152.14, -0.99, \"(-0.65%)\"],\n [\"Merck & Co. Inc.\", \"MRK\", 0.736434, 104.2, 0.26, \"(0.25%)\"],\n [\"Costco Wholesale Corp\", \"COST\", 0.697258, 569.05, 5.52, \"(0.98%)\"],\n [\"Pepsico Inc\", \"PEP\", 0.651768, 168.92, -0.65, \"(-0.38%)\"],\n [\"Walmart Inc\", \"WMT\", 0.644449, 161.87, 0.15, \"(0.09%)\"],\n [\"Adobe Inc\", \"ADBE\", 0.639652, 507.17, 4.57, \"(0.91%)\"],\n [\"Coca Cola Co\", \"KO\", 0.60801, 55.82, -0.13, \"(-0.23%)\"],\n [\"Cisco Systems Inc\", \"CSCO\", 0.605326, 53.97, 0.77, \"(1.44%)\"],\n [\"Accenture Plc Cl A\", \"ACN\", 0.55372, 298.5, -15.9, \"(-5.05%)\"],\n [\"Salesforce Inc\", \"CRM\", 0.551342, 204.46, 1.73, \"(0.85%)\"],\n [\"Thermo Fisher Scientific Inc\", \"TMO\", 0.536951, 503.47, 5.18, \"(1.04%)\"],\n [\"Mcdonald S Corp\", \"MCD\", 0.536457, 265.83, 2.19, \"(0.83%)\"],\n [\"Bank of America Corp\", \"BAC\", 0.526405, 27.51, 0.24, \"(0.86%)\"],\n [\"Comcast Corp Class A\", \"CMCSA\", 0.512537, 45.17, 0.57, \"(1.27%)\"],\n [\"Linde Plc\", \"LIN\", 0.506835, 375.48, 3.47, \"(0.93%)\"],\n [\"Pfizer Inc\", \"PFE\", 0.506043, 32.09, -0.02, \"(-0.05%)\"],\n [\"Netflix Inc\", \"NFLX\", 0.467192, 377.77, 0.18, \"(0.05%)\"],\n [\"Abbott Laboratories\", \"ABT\", 0.462893, 97.52, 1.99, \"(2.08%)\"],\n [\"Oracle Corp\", \"ORCL\", 0.459877, 106.29, 1.67, \"(1.60%)\"],\n];\n\n/*\n41,Danaher Corp,DHR,0.454026,248.24,0.80,(0.32%)\n42,Advanced Micro Devices,AMD,0.442473,103.74,5.67,(5.78%)\n43,Wells Fargo & Co,WFC,0.417428,41.04,0.18,(0.43%)\n44,Conocophillips,COP,0.411569,123.32,0.23,(0.18%)\n45,Walt Disney Co,DIS,0.408438,80.35,0.45,(0.56%)\n46,Intel Corp,INTC,0.404462,35.50,0.89,(2.56%)\n47,Amgen Inc,AMGN,0.401904,270.91,1.93,(0.72%)\n48,Texas Instruments Inc,TXN,0.400931,160.98,2.84,(1.80%)\n49,Intuit Inc,INTU,0.397406,515.11,6.87,(1.35%)\n50,Philip Morris International,PM,0.39143,92.66,2.34,(2.59%)\n51,Caterpillar Inc,CAT,0.388444,276.34,3.63,(1.33%)\n52,Verizon Communications Inc,VZ,0.380327,32.56,0.16,(0.48%)\n53,Intl Business Machines Corp,IBM,0.364246,140.89,-2.28,(-1.59%)\n54,Honeywell International Inc,HON,0.348317,188.68,0.80,(0.43%)\n55,Union Pacific Corp,UNP,0.344419,203.88,1.48,(0.73%)\n56,Qualcomm Inc,QCOM,0.340195,111.55,2.36,(2.16%)\n57,Nextera Energy Inc,NEE,0.338809,57.64,-2.32,(-3.88%)\n58,Lowe S Cos Inc,LOW,0.338613,209.52,2.56,(1.24%)\n59,Bristol Myers Squibb Co,BMY,0.337683,58.30,0.41,(0.70%)\n60,General Electric Co,GE,0.336989,112.43,1.54,(1.39%)\n61,S&p Global Inc,SPGI,0.32985,369.21,6.15,(1.69%)\n62,Applied Materials Inc,AMAT,0.316678,139.15,4.09,(3.03%)\n63,Servicenow Inc,NOW,0.3112,552.84,6.46,(1.18%)\n64,Boeing Co,BA,0.309673,193.12,-2.34,(-1.20%)\n65,United Parcel Service Cl B,UPS,0.307795,154.29,1.88,(1.23%)\n66,Booking Holdings Inc,BKNG,0.307126,3,086.26,3.60,(0.12%)\n67,Nike Inc Cl B,NKE,0.305871,89.63,0.21,(0.24%)\n68,At&t Inc,T,0.296603,14.94,0.07,(0.44%)\n69,Goldman Sachs Group Inc,GS,0.296356,325.72,3.77,(1.17%)\n70,Rtx Corp,RTX,0.296189,72.54,-0.34,(-0.46%)\n71,Elevance Health Inc,ELV,0.292632,448.99,4.23,(0.95%)\n72,Deere & Co,DE,0.291602,388.36,4.00,(1.04%)\n73,Starbucks Corp,SBUX,0.291579,91.21,0.04,(0.04%)\n74,Morgan Stanley,MS,0.29087,82.34,0.69,(0.84%)\n75,Medtronic Plc,MDT,0.290688,78.77,0.55,(0.71%)\n76,Prologis Inc,PLD,0.286912,112.30,1.05,(0.94%)\n77,Intuitive Surgical Inc,ISRG,0.285764,296.31,4.88,(1.67%)\n78,Tjx Companies Inc,TJX,0.282733,89.27,1.16,(1.32%)\n79,Automatic Data Processing,ADP,0.279113,243.79,1.16,(0.48%)\n80,Marsh & Mclennan Cos,MMC,0.266169,193.53,0.55,(0.29%)\n81,Mondelez International Inc A,MDLZ,0.26425,69.44,-0.56,(-0.79%)\n82,Gilead Sciences Inc,GILD,0.26285,75.96,0.41,(0.54%)\n83,Lockheed Martin Corp,LMT,0.255775,410.40,1.68,(0.41%)\n84,Blackrock Inc,BLK,0.252096,645.37,1.98,(0.31%)\n85,Vertex Pharmaceuticals Inc,VRTX,0.251521,353.91,4.26,(1.22%)\n86,Stryker Corp,SYK,0.250789,273.07,6.53,(2.45%)\n87,Cvs Health Corp,CVS,0.250255,70.11,0.33,(0.47%)\n88,Regeneron Pharmaceuticals,REGN,0.2481,835.67,3.11,(0.37%)\n89,American Express Co,AXP,0.243515,150.42,0.52,(0.34%)\n90,Chubb Ltd,CB,0.242706,212.92,1.29,(0.61%)\n91,Analog Devices Inc,ADI,0.241943,177.01,4.20,(2.43%)\n92,Schlumberger Ltd,SLB,0.241232,61.02,0.22,(0.36%)\n93,Eaton Corp Plc,ETN,0.238556,216.42,2.06,(0.96%)\n94,The Cigna Group,CI,0.238517,291.43,2.82,(0.98%)\n95,Progressive Corp,PGR,0.229854,140.76,0.14,(0.10%)\n96,Lam Research Corp,LRCX,0.228483,627.46,13.54,(2.20%)\n97,Schwab (Charles) Corp,SCHW,0.225784,54.57,0.19,(0.35%)\n98,Zoetis Inc,ZTS,0.224522,174.68,-0.00,(-0.00%)\n99,Citigroup Inc,C,0.217552,41.24,0.78,(1.92%)\n100,Boston Scientific Corp,BSX,0.213003,53.30,1.20,(2.31%)\n101,Blackstone Inc,BX,0.211158,108.88,2.33,(2.19%)\n102,Eog Resources Inc,EOG,0.21104,130.56,0.75,(0.57%)\n103,Becton Dickinson and Co,BDX,0.209627,262.60,3.80,(1.47%)\n104,Micron Technology Inc,MU,0.208276,66.25,-1.96,(-2.87%)\n105,American Tower Corp,AMT,0.207727,160.73,1.04,(0.65%)\n106,Altria Group Inc,MO,0.207666,42.11,0.20,(0.47%)\n107,T Mobile Us Inc,TMUS,0.20192,140.30,0.60,(0.43%)\n108,Cme Group Inc,CME,0.201368,200.22,-0.14,(-0.07%)\n109,Southern Co,SO,0.20116,65.04,-1.10,(-1.67%)\n110,Palo Alto Networks Inc,PANW,0.198047,236.42,4.52,(1.95%)\n111,Duke Energy Corp,DUK,0.193827,88.87,-1.23,(-1.36%)\n112,Fiserv Inc,FI,0.192662,113.67,0.48,(0.42%)\n113,Synopsys Inc,SNPS,0.189768,458.88,12.17,(2.72%)\n114,Activision Blizzard Inc,ATVI,0.18717,93.71,-0.22,(-0.23%)\n115,Aon Plc Class A,AON,0.186896,330.04,0.12,(0.04%)\n116,Equinix Inc,EQIX,0.184757,715.84,8.74,(1.24%)\n117,Illinois Tool Works,ITW,0.177501,233.17,0.77,(0.33%)\n118,Air Products & Chemicals Inc,APD,0.17678,289.15,3.89,(1.36%)\n119,Paypal Holdings Inc,PYPL,0.175802,58.30,0.96,(1.67%)\n120,Cadence Design Sys Inc,CDNS,0.175052,235.09,4.44,(1.93%)\n121,Northrop Grumman Corp,NOC,0.173654,441.30,4.06,(0.93%)\n122,Intercontinental Exchange In,ICE,0.172998,109.93,1.66,(1.53%)\n123,Humana Inc,HUM,0.170476,495.73,2.16,(0.44%)\n124,Marathon Petroleum Corp,MPC,0.170186,155.28,2.85,(1.87%)\n125,Kla Corp,KLAC,0.170079,459.61,14.05,(3.15%)\n126,Fedex Corp,FDX,0.169747,266.99,4.28,(1.63%)\n127,Csx Corp,CSX,0.169632,30.62,0.34,(1.14%)\n128,Mckesson Corp,MCK,0.167376,445.58,1.20,(0.27%)\n129,Sherwin Williams Co,SHW,0.165389,254.95,4.33,(1.73%)\n130,Colgate Palmolive Co,CL,0.164,71.11,0.06,(0.08%)\n131,Airbnb Inc Class A,ABNB,0.159553,137.66,3.63,(2.70%)\n132,Waste Management Inc,WM,0.15893,154.17,-0.25,(-0.16%)\n133,Emerson Electric Co,EMR,0.154857,97.31,0.45,(0.47%)\n134,O Reilly Automotive Inc,ORLY,0.154194,918.15,3.98,(0.44%)\n135,Pioneer Natural Resources Co,PXD,0.1524,234.43,0.34,(0.14%)\n136,Phillips 66,PSX,0.150197,122.81,2.01,(1.66%)\n137,Freeport Mcmoran Inc,FCX,0.146185,37.34,0.79,(2.17%)\n138,3m Co W/d,MMM,0.144312,93.48,0.02,(0.02%)\n139,Roper Technologies Inc,ROP,0.144165,486.61,-0.02,(-0.00%)\n140,Valero Energy Corp,VLO,0.141937,147.59,3.64,(2.53%)\n141,Nxp Semiconductors Nv,NXPI,0.141583,202.19,5.49,(2.79%)\n142,Target Corp,TGT,0.141106,109.31,-0.44,(-0.40%)\n143,Parker Hannifin Corp,PH,0.140358,396.29,5.18,(1.32%)\n144,Us Bancorp,USB,0.139291,32.59,0.07,(0.20%)\n145,General Dynamics Corp,GD,0.139193,223.44,2.44,(1.10%)\n146,Chipotle Mexican Grill Inc,CMG,0.139055,1,828.59,22.51,(1.25%)\n147,Hca Healthcare Inc,HCA,0.138966,251.59,4.33,(1.75%)\n148,Arthur J Gallagher & Co,AJG,0.138231,231.77,1.44,(0.62%)\n149,Moody S Corp,MCO,0.138162,319.07,4.56,(1.45%)\n150,Amphenol Corp Cl A,APH,0.136941,84.40,2.04,(2.47%)\n151,Ford Motor Co,F,0.1362,12.58,0.19,(1.49%)\n152,Marriott International Cl A,MAR,0.135619,199.53,5.65,(2.92%)\n153,Pnc Financial Services Group,PNC,0.135457,123.09,1.28,(1.05%)\n154,Transdigm Group Inc,TDG,0.131273,860.46,8.64,(1.01%)\n155,Carrier Global Corp,CARR,0.129065,56.83,1.75,(3.17%)\n156,Autozone Inc,AZO,0.128857,2,556.17,15.27,(0.60%)\n157,Trane Technologies Plc,TT,0.12759,207.07,7.01,(3.50%)\n158,Motorola Solutions Inc,MSI,0.127284,275.18,2.20,(0.81%)\n159,Arista Networks Inc,ANET,0.12715,184.23,2.63,(1.45%)\n160,Norfolk Southern Corp,NSC,0.124378,197.30,1.08,(0.55%)\n161,General Motors Co,GM,0.124282,33.25,0.90,(2.77%)\n162,Paccar Inc,PCAR,0.123613,86.12,1.31,(1.54%)\n163,Charter Communications Inc A,CHTR,0.123199,442.28,8.86,(2.04%)\n164,Hess Corp,HES,0.121942,157.30,-0.74,(-0.47%)\n165,Sempra,SRE,0.121909,68.15,-1.26,(-1.81%)\n166,Occidental Petroleum Corp,OXY,0.121531,66.03,0.43,(0.66%)\n167,American International Group,AIG,0.121272,61.73,0.72,(1.18%)\n168,Autodesk Inc,ADSK,0.120711,208.03,5.75,(2.84%)\n169,Edwards Lifesciences Corp,EW,0.119074,69.68,-0.43,(-0.62%)\n170,Ecolab Inc,ECL,0.118911,169.50,1.63,(0.97%)\n171,Public Storage,PSA,0.117206,266.58,1.60,(0.60%)\n172,Microchip Technology Inc,MCHP,0.116275,78.91,2.41,(3.15%)\n173,Aflac Inc,AFL,0.11627,77.65,0.62,(0.81%)\n174,Cintas Corp,CTAS,0.116227,486.83,5.75,(1.19%)\n175,Welltower Inc,WELL,0.116157,81.07,0.87,(1.08%)\n176,Williams Cos Inc,WMB,0.115685,34.65,0.55,(1.61%)\n177,Kimberly Clark Corp,KMB,0.114902,121.11,-0.55,(-0.45%)\n178,Archer Daniels Midland Co,ADM,0.114307,76.74,0.38,(0.50%)\n179,Msci Inc,MSCI,0.113047,518.97,7.03,(1.37%)\n180,Constellation Brands Inc A,STZ,0.112869,251.62,1.03,(0.41%)\n181,On Semiconductor,ON,0.111009,95.12,3.07,(3.33%)\n182,Metlife Inc,MET,0.110772,63.06,0.26,(0.41%)\n183,Monster Beverage Corp,MNST,0.110311,53.31,0.19,(0.35%)\n184,Hilton Worldwide Holdings In,HLT,0.109054,153.24,3.88,(2.60%)\n185,American Electric Power,AEP,0.108899,74.71,-1.15,(-1.51%)\n186,Crown Castle Inc,CCI,0.108512,91.35,1.65,(1.83%)\n187,Exelon Corp,EXC,0.107894,38.11,-0.69,(-1.78%)\n188,Nucor Corp,NUE,0.107787,158.31,2.60,(1.67%)\n189,Travelers Cos Inc,TRV,0.107342,167.42,-0.51,(-0.30%)\n190,Dominion Energy Inc,D,0.106001,44.61,-0.86,(-1.88%)\n191,Te Connectivity Ltd,TEL,0.105581,123.84,3.40,(2.82%)\n192,Halliburton Co,HAL,0.105449,42.18,0.15,(0.37%)\n193,Centene Corp,CNC,0.105443,69.87,0.13,(0.18%)\n194,Fortinet Inc,FTNT,0.105315,59.07,0.93,(1.59%)\n195,Oneok Inc,OKE,0.104854,64.86,0.35,(0.53%)\n196,General Mills Inc,GIS,0.104655,63.79,-0.26,(-0.40%)\n197,Copart Inc,CPRT,0.104453,43.66,0.61,(1.41%)\n198,Paychex Inc,PAYX,0.104412,117.40,0.89,(0.76%)\n199,Biogen Inc,BIIB,0.103916,258.95,1.43,(0.55%)\n200,Truist Financial Corp,TFC,0.103679,28.15,0.18,(0.63%)\n201,Ross Stores Inc,ROST,0.10361,111.18,2.26,(2.07%)\n202,Johnson Controls Internation,JCI,0.103601,53.69,-0.85,(-1.55%)\n203,Iqvia Holdings Inc,IQV,0.103397,200.11,-2.10,(-1.04%)\n204,Capital One Financial Corp,COF,0.101688,96.63,1.14,(1.20%)\n205,Baker Hughes Co,BKR,0.101425,36.62,0.37,(1.02%)\n206,Idexx Laboratories Inc,IDXX,0.101263,439.37,2.51,(0.57%)\n207,Corteva Inc,CTVA,0.100577,50.77,0.02,(0.05%)\n208,Dow Inc,DOW,0.100258,50.87,-0.13,(-0.26%)\n209,Old Dominion Freight Line,ODFL,0.100037,406.82,6.93,(1.73%)\n210,Constellation Energy,CEG,0.099445,109.94,-0.81,(-0.73%)\n211,Dexcom Inc,DXCM,0.099384,95.68,3.59,(3.90%)\n212,Simon Property Group Inc,SPG,0.098977,108.45,0.26,(0.24%)\n213,Digital Realty Trust Inc,DLR,0.098757,117.60,0.76,(0.65%)\n214,Realty Income Corp,O,0.098278,49.83,0.17,(0.33%)\n215,Kenvue Inc W/i,KVUE,0.097359,20.20,-0.02,(-0.12%)\n216,Verisk Analytics Inc,VRSK,0.097203,241.97,2.34,(0.98%)\n217,Cognizant Tech Solutions A,CTSH,0.096172,68.15,-0.05,(-0.07%)\n218,P G & E Corp,PCG,0.095995,16.36,-0.09,(-0.52%)\n219,Prudential Financial Inc,PRU,0.095804,94.93,0.41,(0.43%)\n220,Ametek Inc,AME,0.09567,150.03,1.17,(0.79%)\n221,Yum Brands Inc,YUM,0.095443,123.55,1.57,(1.29%)\n222,Dupont De Nemours Inc,DD,0.094185,74.58,1.11,(1.51%)\n223,Ameriprise Financial Inc,AMP,0.093691,332.11,5.16,(1.58%)\n224,L3harris Technologies Inc,LHX,0.092512,173.16,-2.04,(-1.16%)\n225,Fidelity National Info Serv,FIS,0.09207,56.06,0.52,(0.94%)\n226,Sysco Corp,SYY,0.091968,65.99,0.78,(1.20%)\n227,Moderna Inc,MRNA,0.091789,100.61,1.17,(1.18%)\n228,Bank of New York Mellon Corp,BK,0.091699,42.76,0.59,(1.39%)\n229,Agilent Technologies Inc,A,0.091382,111.91,1.41,(1.28%)\n230,Otis Worldwide Corp,OTIS,0.091228,80.55,1.20,(1.51%)\n231,Rockwell Automation Inc,ROK,0.091103,288.26,3.46,(1.21%)\n232,Dr Horton Inc,DHI,0.090974,108.96,1.95,(1.82%)\n233,Cummins Inc,CMI,0.090916,232.98,3.03,(1.32%)\n234,Estee Lauder Companies Cl A,EL,0.090788,139.94,-0.10,(-0.07%)\n235,Kinder Morgan Inc,KMI,0.090175,16.71,0.05,(0.27%)\n236,Keurig Dr Pepper Inc,KDP,0.088358,31.51,-0.16,(-0.51%)\n237,Fastenal Co,FAST,0.087952,55.72,0.66,(1.21%)\n238,Xcel Energy Inc,XEL,0.087474,56.50,-0.71,(-1.25%)\n239,Devon Energy Corp,DVN,0.087359,48.84,0.00,(0.01%)\n240,Ww Grainger Inc,GWW,0.086956,704.07,3.96,(0.57%)\n241,Costar Group Inc,CSGP,0.086756,77.10,0.75,(0.99%)\n242,Cencora Inc,COR,0.086188,183.99,-1.17,(-0.63%)\n243,United Rentals Inc,URI,0.085093,454.44,8.22,(1.84%)\n244,Hershey Co,HSY,0.084755,201.01,-1.55,(-0.76%)\n245,Arch Capital Group Ltd,ACGL,0.083799,81.62,0.54,(0.67%)\n246,Ppg Industries Inc,PPG,0.083787,130.49,2.46,(1.92%)\n247,Global Payments Inc,GPN,0.083671,116.72,1.47,(1.28%)\n248,Consolidated Edison Inc,ED,0.083432,85.06,-1.57,(-1.81%)\n249,Newmont Corp,NEM,0.082799,36.78,-0.50,(-1.34%)\n250,Republic Services Inc,RSG,0.082765,145.01,0.28,(0.19%)\n251,Allstate Corp,ALL,0.08254,112.77,-0.25,(-0.22%)\n252,Electronic Arts Inc,EA,0.081213,119.76,1.79,(1.51%)\n253,Vici Properties Inc,VICI,0.081127,29.28,0.40,(1.37%)\n254,Kroger Co,KR,0.080998,44.96,0.48,(1.07%)\n255,Public Service Enterprise Gp,PEG,0.080723,56.88,-1.02,(-1.75%)\n256,Lennar Corp A,LEN,0.078759,113.41,1.71,(1.53%)\n257,Diamondback Energy Inc,FANG,0.078498,158.01,0.78,(0.50%)\n258,West Pharmaceutical Services,WST,0.077362,377.15,1.97,(0.52%)\n259,Quanta Services Inc,PWR,0.077074,190.82,0.70,(0.37%)\n260,Gartner Inc,IT,0.076911,347.78,-1.41,(-0.40%)\n261,Aptiv Plc,APTV,0.0757,99.21,3.35,(3.50%)\n262,Vulcan Materials Co,VMC,0.075604,207.60,4.00,(1.97%)\n263,Kraft Heinz Co,KHC,0.075468,33.72,-0.31,(-0.90%)\n264,Ge Healthcare Technology,GEHC,0.074734,69.81,1.53,(2.24%)\n265,Cdw Corp/de,CDW,0.074375,202.53,3.84,(1.93%)\n266,Fortive Corp,FTV,0.072323,74.75,1.16,(1.58%)\n267,Ingersoll Rand Inc,IR,0.071683,64.52,1.25,(1.97%)\n268,Ansys Inc,ANSS,0.071343,299.19,4.85,(1.65%)\n269,Extra Space Storage Inc,EXR,0.071269,120.75,0.24,(0.20%)\n270,Wec Energy Group Inc,WEC,0.071007,79.67,-0.91,(-1.12%)\n271,Martin Marietta Materials,MLM,0.070759,418.00,8.05,(1.96%)\n272,Edison International,EIX,0.068887,63.92,-1.38,(-2.11%)\n273,American Water Works Co Inc,AWK,0.068233,123.27,-3.07,(-2.43%)\n274,Warner Bros Discovery Inc,WBD,0.068207,10.89,-0.15,(-1.31%)\n275,Lyondellbasell Indu Cl A,LYB,0.067294,94.86,-0.11,(-0.11%)\n276,Mettler Toledo International,MTD,0.067028,1,112.26,14.48,(1.32%)\n277,Avalonbay Communities Inc,AVB,0.066762,171.85,-0.60,(-0.35%)\n278,Delta Air Lines Inc,DAL,0.065781,37.32,0.66,(1.79%)\n279,T Rowe Price Group Inc,TROW,0.064996,104.73,1.19,(1.15%)\n280,Keysight Technologies In,KEYS,0.064934,133.51,3.11,(2.38%)\n281,Zimmer Biomet Holdings Inc,ZBH,0.064476,112.14,1.38,(1.24%)\n282,Dollar General Corp,DG,0.064042,105.04,0.70,(0.67%)\n283,Corning Inc,GLW,0.064037,30.35,0.29,(0.98%)\n284,Ebay Inc,EBAY,0.063728,43.45,0.56,(1.31%)\n285,Cbre Group Inc A,CBRE,0.063578,73.84,0.35,(0.48%)\n286,Weyerhaeuser Co,WY,0.063312,30.40,-0.64,(-2.05%)\n287,Church & Dwight Co Inc,CHD,0.062765,91.68,-0.29,(-0.31%)\n288,Cardinal Health Inc,CAH,0.062583,88.18,0.14,(0.16%)\n289,Hp Inc,HPQ,0.062013,25.73,0.09,(0.36%)\n290,Equifax Inc,EFX,0.061821,185.40,4.68,(2.59%)\n291,Tractor Supply Company,TSCO,0.061683,205.07,2.06,(1.02%)\n292,Willis Towers Watson Plc,WTW,0.06168,211.96,0.35,(0.17%)\n293,Hewlett Packard Enterprise,HPE,0.061499,17.70,0.63,(3.66%)\n294,Fair Isaac Corp,FICO,0.061481,890.19,4.58,(0.52%)\n295,Dollar Tree Inc,DLTR,0.061287,106.46,1.11,(1.05%)\n296,Hartford Financial Svcs Grp,HIG,0.061236,72.24,0.53,(0.73%)\n297,Resmed Inc,RMD,0.060853,149.81,1.16,(0.78%)\n298,Take Two Interactive Softwre,TTWO,0.060753,139.63,1.85,(1.34%)\n299,Royal Caribbean Cruises Ltd,RCL,0.060515,94.38,2.42,(2.64%)\n300,Xylem Inc,XYL,0.060192,91.40,1.09,(1.20%)\n301,Align Technology Inc,ALGN,0.060095,309.06,7.38,(2.45%)\n302,Steris Plc,STE,0.060013,221.57,3.67,(1.69%)\n303,Broadridge Financial Solutio,BR,0.059572,181.18,-0.04,(-0.02%)\n304,Discover Financial Services,DFS,0.059507,86.35,1.09,(1.28%)\n305,State Street Corp,STT,0.059411,67.81,1.03,(1.54%)\n306,Sba Communications Corp,SBAC,0.059216,198.11,2.05,(1.05%)\n307,Monolithic Power Systems Inc,MPWR,0.058699,457.69,16.51,(3.74%)\n308,Illumina Inc,ILMN,0.058584,133.02,-0.28,(-0.21%)\n309,Dte Energy Company,DTE,0.058057,98.82,-1.72,(-1.71%)\n310,M & T Bank Corp,MTB,0.057846,126.63,2.09,(1.68%)\n311,Coterra Energy Inc,CTRA,0.057589,27.48,0.34,(1.23%)\n312,Eversource Energy,ES,0.057281,57.54,-1.23,(-2.09%)\n313,Genuine Parts Co,GPC,0.055796,142.94,0.63,(0.45%)\n314,Equity Residential,EQR,0.055712,58.67,0.23,(0.40%)\n315,Entergy Corp,ETR,0.055241,92.23,-1.02,(-1.10%)\n316,Dover Corp,DOV,0.055103,141.68,1.09,(0.77%)\n317,Ameren Corporation,AEE,0.054981,74.60,-1.51,(-1.98%)\n318,Ulta Beauty Inc,ULTA,0.054585,398.17,5.73,(1.46%)\n319,Teledyne Technologies Inc,TDY,0.054228,414.36,0.92,(0.22%)\n320,Nvr Inc,NVR,0.054188,6,027.42,86.42,(1.45%)\n321,Targa Resources Corp,TRGP,0.05408,87.52,0.93,(1.08%)\n322,Molina Healthcare Inc,MOH,0.053618,333.09,2.03,(0.61%)\n323,Wabtec Corp,WAB,0.053425,108.18,1.35,(1.26%)\n324,Fleetcor Technologies Inc,FLT,0.053345,260.14,1.28,(0.49%)\n325,Albemarle Corp,ALB,0.053229,172.99,10.36,(6.37%)\n326,Baxter International Inc,BAX,0.05272,37.54,0.21,(0.57%)\n327,Raymond James Financial Inc,RJF,0.052247,101.39,1.84,(1.85%)\n328,Mccormick & Co Non Vtg Shrs,MKC,0.051871,74.55,0.46,(0.63%)\n329,Invitation Homes Inc,INVH,0.051153,31.73,0.03,(0.11%)\n330,Firstenergy Corp,FE,0.050777,34.56,-0.69,(-1.94%)\n331,Laboratory Crp of Amer Hldgs,LH,0.05072,204.23,-0.62,(-0.30%)\n332,Howmet Aerospace Inc,HWM,0.050386,46.99,0.91,(1.97%)\n333,Verisign Inc,VRSN,0.050215,202.93,2.46,(1.23%)\n334,Ppl Corp,PPL,0.04902,23.56,-0.39,(-1.61%)\n335,Iron Mountain Inc,IRM,0.047985,59.55,0.56,(0.94%)\n336,Jacobs Solutions Inc,J,0.047882,136.45,0.27,(0.20%)\n337,Intl Flavors & Fragrances,IFF,0.047868,67.84,0.64,(0.95%)\n338,Centerpoint Energy Inc,CNP,0.047827,26.68,-0.48,(-1.75%)\n339,Darden Restaurants Inc,DRI,0.047736,143.44,2.01,(1.42%)\n340,Hologic Inc,HOLX,0.047358,69.99,0.75,(1.08%)\n341,First Solar Inc,FSLR,0.047324,161.90,3.29,(2.07%)\n342,Expeditors Intl Wash Inc,EXPD,0.046936,114.74,1.08,(0.95%)\n343,Brown & Brown Inc,BRO,0.046675,71.15,0.19,(0.26%)\n344,Factset Research Systems Inc,FDS,0.046601,443.66,8.47,(1.95%)\n345,Fifth Third Bancorp,FITB,0.046598,25.05,0.19,(0.74%)\n346,Ventas Inc,VTR,0.046351,42.18,0.77,(1.85%)\n347,Marathon Oil Corp,MRO,0.046321,27.51,0.12,(0.45%)\n348,Steel Dynamics Inc,STLD,0.046096,106.96,0.52,(0.48%)\n349,Bunge Ltd,BG,0.046038,110.67,1.10,(1.00%)\n350,Ptc Inc,PTC,0.045951,140.25,1.78,(1.28%)\n351,Everest Group Ltd,EG,0.04587,381.30,-0.42,(-0.11%)\n352,Cincinnati Financial Corp,CINF,0.045852,104.40,-0.30,(-0.29%)\n353,Enphase Energy Inc,ENPH,0.045679,121.39,1.28,(1.07%)\n354,Nasdaq Inc,NDAQ,0.04562,49.07,0.74,(1.52%)\n355,Akamai Technologies Inc,AKAM,0.045578,107.75,0.79,(0.74%)\n356,Cboe Global Markets Inc,CBOE,0.045525,155.28,0.51,(0.33%)\n357,Cf Industries Holdings Inc,CF,0.04496,84.93,1.48,(1.78%)\n358,Waters Corp,WAT,0.044936,274.46,2.12,(0.78%)\n359,Pultegroup Inc,PHM,0.044848,74.85,1.65,(2.25%)\n360,Tyler Technologies Inc,TYL,0.044831,387.74,2.43,(0.63%)\n361,Principal Financial Group,PFG,0.044705,72.74,0.74,(1.02%)\n362,Clorox Company,CLX,0.04465,128.98,-0.17,(-0.13%)\n363,Southwest Airlines Co,LUV,0.044478,27.30,0.49,(1.81%)\n364,Regions Financial Corp,RF,0.044397,17.16,0.22,(1.27%)\n365,Garmin Ltd,GRMN,0.044336,104.65,1.42,(1.38%)\n366,Atmos Energy Corp,ATO,0.044128,106.32,-0.14,(-0.13%)\n367,Netapp Inc,NTAP,0.044116,76.49,1.54,(2.05%)\n368,Textron Inc,TXT,0.043659,79.27,0.33,(0.41%)\n369,Cooper Cos Inc,COO,0.04361,318.15,2.23,(0.71%)\n370,Kellogg Co,K,0.043517,58.90,-0.22,(-0.38%)\n371,Idex Corp,IEX,0.043484,210.72,3.28,(1.58%)\n372,Cms Energy Corp,CMS,0.043476,52.78,-0.57,(-1.07%)\n373,Skyworks Solutions Inc,SWKS,0.042974,98.55,2.25,(2.33%)\n374,Alexandria Real Estate Equit,ARE,0.042466,99.48,0.59,(0.60%)\n375,Hunt (Jb) Transprt Svcs Inc,JBHT,0.042319,186.54,0.95,(0.51%)\n376,Las Vegas Sands Corp,LVS,0.042222,45.63,-0.53,(-1.15%)\n377,Ball Corp,BALL,0.042202,48.27,0.04,(0.08%)\n378,Walgreens Boots Alliance Inc,WBA,0.04215,20.97,-0.06,(-0.26%)\n379,Teradyne Inc,TER,0.041494,100.04,3.56,(3.68%)\n380,Mid America Apartment Comm,MAA,0.041385,128.55,0.48,(0.37%)\n381,Epam Systems Inc,EPAM,0.041006,257.76,0.96,(0.37%)\n382,Avery Dennison Corp,AVY,0.040961,183.42,1.39,(0.76%)\n383,Omnicom Group,OMC,0.040483,74.60,1.21,(1.65%)\n384,Huntington Bancshares Inc,HBAN,0.040444,10.25,0.13,(1.24%)\n385,Eqt Corp,EQT,0.040251,40.00,0.39,(0.99%)\n386,Tyson Foods Inc Cl A,TSN,0.040042,49.74,-0.37,(-0.74%)\n387,Western Digital Corp,WDC,0.039814,45.50,0.94,(2.11%)\n388,Northern Trust Corp,NTRS,0.039557,69.29,0.84,(1.23%)\n389,Carnival Corp,CCL,0.039206,14.52,0.54,(3.88%)\n390,Expedia Group Inc,EXPE,0.038585,102.75,2.50,(2.49%)\n391,United Airlines Holdings Inc,UAL,0.038383,42.84,0.81,(1.94%)\n392,Quest Diagnostics Inc,DGX,0.038331,123.71,0.31,(0.25%)\n393,Axon Enterprise Inc,AXON,0.03828,195.69,1.04,(0.53%)\n394,Packaging Corp of America,PKG,0.038236,152.79,0.90,(0.59%)\n395,Revvity Inc,RVTY,0.0378,110.55,1.50,(1.38%)\n396,Snap on Inc,SNA,0.037774,257.97,4.00,(1.58%)\n397,Pool Corp,POOL,0.037475,353.56,9.86,(2.87%)\n398,Essex Property Trust Inc,ESS,0.03733,210.81,0.07,(0.03%)\n399,Domino S Pizza Inc,DPZ,0.037258,382.39,2.18,(0.57%)\n400,Amcor Plc,AMCR,0.037101,9.09,0.06,(0.61%)\n401,Best Buy Co Inc,BBY,0.037071,68.66,0.29,(0.43%)\n402,Apa Corp,APA,0.03662,42.49,0.11,(0.27%)\n403,Lamb Weston Holdings Inc,LW,0.036553,91.47,0.09,(0.10%)\n404,Wr Berkley Corp,WRB,0.036551,65.21,0.86,(1.33%)\n405,Conagra Brands Inc,CAG,0.036484,27.44,-0.10,(-0.35%)\n406,Lkq Corp,LKQ,0.036449,49.51,0.72,(1.47%)\n407,Jm Smucker Co,SJM,0.035767,124.48,-0.96,(-0.77%)\n408,Stanley Black & Decker Inc,SWK,0.035567,83.87,0.97,(1.17%)\n409,Synchrony Financial,SYF,0.035241,30.73,0.55,(1.84%)\n410,Carmax Inc,KMX,0.035202,71.64,-8.05,(-10.10%)\n411,Leidos Holdings Inc,LDOS,0.034943,92.20,0.21,(0.23%)\n412,Seagate Technology Holdings,STX,0.034918,65.71,1.42,(2.20%)\n413,Paycom Software Inc,PAYC,0.034914,259.42,2.34,(0.91%)\n414,Celanese Corp,CE,0.034212,127.11,3.81,(3.09%)\n415,Trimble Inc,TRMB,0.034136,52.22,3.01,(6.12%)\n416,Alliant Energy Corp,LNT,0.03411,48.06,-0.49,(-1.02%)\n417,Citizens Financial Group,CFG,0.033972,26.28,0.52,(2.00%)\n418,International Paper Co,IP,0.033961,35.10,0.15,(0.41%)\n419,Masco Corp,MAS,0.033414,54.58,1.37,(2.58%)\n420,Nordson Corp,NDSN,0.033057,223.81,3.73,(1.69%)\n421,Loews Corp,L,0.032942,64.16,0.36,(0.56%)\n422,Evergy Inc,EVRG,0.032792,50.48,-0.58,(-1.13%)\n423,Mosaic Co,MOS,0.03266,35.63,0.43,(1.22%)\n424,Molson Coors Beverage Co B,TAP,0.032624,62.29,-0.12,(-0.19%)\n425,Zebra Technologies Corp Cl A,ZBRA,0.03257,236.95,11.04,(4.89%)\n426,Viatris Inc,VTRS,0.032115,9.80,0.21,(2.14%)\n427,Live Nation Entertainment In,LYV,0.032035,83.73,2.71,(3.34%)\n428,Host Hotels & Resorts Inc,HST,0.03173,16.38,0.34,(2.11%)\n429,Insulet Corp,PODD,0.031493,166.19,4.49,(2.77%)\n430,Match Group Inc,MTCH,0.031269,40.07,0.09,(0.23%)\n431,Interpublic Group of Cos Inc,IPG,0.031184,29.12,0.39,(1.35%)\n432,Hormel Foods Corp,HRL,0.030887,38.15,-0.19,(-0.48%)\n433,Incyte Corp,INCY,0.03067,58.93,-0.18,(-0.30%)\n434,Udr Inc,UDR,0.030252,35.67,0.28,(0.79%)\n435,Jack Henry & Associates Inc,JKHY,0.030211,150.61,2.17,(1.46%)\n436,Kimco Realty Corp,KIM,0.029862,17.73,0.24,(1.34%)\n437,Aes Corp,AES,0.029775,15.29,-0.65,(-4.05%)\n438,Bio Techne Corp,TECH,0.029742,67.67,0.10,(0.15%)\n439,Pentair Plc,PNR,0.029592,65.59,0.87,(1.34%)\n440,Rollins Inc,ROL,0.029276,37.64,0.20,(0.52%)\n441,Mgm Resorts International,MGM,0.028601,36.76,0.27,(0.74%)\n442,Ceridian Hcm Holding Inc,CDAY,0.028589,67.38,0.35,(0.52%)\n443,Brown Forman Corp Class B,BF.B,0.028542,56.78,0.14,(0.25%)\n444,Nisource Inc,NI,0.028365,24.84,-0.35,(-1.37%)\n445,Gen Digital Inc,GEN,0.028124,17.83,-0.07,(-0.37%)\n446,C.H. Robinson Worldwide Inc,CHRW,0.028048,86.31,0.02,(0.02%)\n447,Camden Property Trust,CPT,0.027984,94.56,-0.32,(-0.34%)\n448,Charles River Laboratories,CRL,0.027736,195.69,0.75,(0.38%)\n449,Healthpeak Properties Inc,PEAK,0.027617,18.15,0.10,(0.58%)\n450,Caesars Entertainment Inc,CZR,0.027217,47.52,1.54,(3.36%)\n451,Regency Centers Corp,REG,0.027131,59.98,0.85,(1.43%)\n452,Keycorp,KEY,0.0269,10.52,0.22,(2.09%)\n453,Henry Schein Inc,HSIC,0.026715,73.88,0.62,(0.84%)\n454,Globe Life Inc,GL,0.026574,110.04,0.61,(0.56%)\n455,Borgwarner Inc,BWA,0.026416,40.72,0.92,(2.31%)\n456,F5 Inc,FFIV,0.026087,160.33,2.74,(1.74%)\n457,Qorvo Inc,QRVO,0.025849,96.39,1.83,(1.93%)\n458,Teleflex Inc,TFX,0.025796,199.42,2.91,(1.48%)\n459,Allegion Plc,ALLE,0.025545,104.97,1.68,(1.63%)\n460,Westrock Co,WRK,0.025292,35.98,0.23,(0.64%)\n461,Eastman Chemical Co,EMN,0.025003,76.99,2.35,(3.15%)\n462,Wynn Resorts Ltd,WYNN,0.024938,92.21,-0.00,(-0.00%)\n463,Nrg Energy Inc,NRG,0.024681,38.55,-0.03,(-0.08%)\n464,Juniper Networks Inc,JNPR,0.024655,27.92,0.42,(1.52%)\n465,Pinnacle West Capital,PNW,0.02321,73.45,-0.71,(-0.95%)\n466,Hasbro Inc,HAS,0.02308,65.23,0.24,(0.37%)\n467,Catalent Inc,CTLT,0.023069,45.85,0.07,(0.15%)\n468,American Airlines Group Inc,AAL,0.02296,13.00,0.39,(3.05%)\n469,Fmc Corp,FMC,0.022942,66.03,0.02,(0.03%)\n470,Campbell Soup Co,CPB,0.022776,41.15,-0.31,(-0.76%)\n471,Smith (a.O.) Corp,AOS,0.022769,66.99,1.54,(2.35%)\n472,Boston Properties Inc,BXP,0.02269,59.66,0.79,(1.34%)\n473,Huntington Ingalls Industrie,HII,0.022502,204.41,1.22,(0.60%)\n474,Fox Corp Class A,FOXA,0.021902,31.47,0.55,(1.76%)\n475,Robert Half Inc,RHI,0.021872,73.78,0.64,(0.87%)\n476,Assurant Inc,AIZ,0.021618,145.63,-0.13,(-0.09%)\n477,Universal Health Services B,UHS,0.021551,127.00,2.80,(2.25%)\n478,Etsy Inc,ETSY,0.021257,63.53,1.64,(2.65%)\n479,Marketaxess Holdings Inc,MKTX,0.021132,205.89,4.11,(2.04%)\n480,News Corp Class A,NWSA,0.0209,20.00,0.35,(1.76%)\n481,Bio Rad Laboratories A,BIO,0.020548,356.10,3.63,(1.03%)\n482,Bath & Body Works Inc,BBWI,0.020412,33.19,1.04,(3.23%)\n483,Dentsply Sirona Inc,XRAY,0.020079,33.94,-0.17,(-0.51%)\n484,Solaredge Technologies Inc,SEDG,0.020026,132.35,4.34,(3.39%)\n485,Whirlpool Corp,WHR,0.019812,131.66,1.03,(0.79%)\n486,Franklin Resources Inc,BEN,0.019128,24.55,0.28,(1.14%)\n487,Generac Holdings Inc,GNRC,0.018958,110.73,1.84,(1.69%)\n488,Norwegian Cruise Line Holdin,NCLH,0.018812,16.96,0.67,(4.08%)\n489,Federal Realty Invs Trust,FRT,0.018475,91.45,1.05,(1.16%)\n490,Tapestry Inc,TPR,0.01809,28.18,0.23,(0.84%)\n491,Invesco Ltd,IVZ,0.017835,14.31,0.22,(1.53%)\n492,Paramount Global Class B,PARA,0.017208,12.89,0.11,(0.89%)\n493,Vf Corp,VFC,0.015631,16.59,-0.32,(-1.89%)\n494,Comerica Inc,CMA,0.014638,41.07,1.12,(2.81%)\n495,Davita Inc,DVA,0.014395,95.75,0.01,(0.01%)\n496,Zions Bancorp Na,ZION,0.013918,33.96,0.79,(2.39%)\n497,Ralph Lauren Corp,RL,0.013127,115.52,0.26,(0.22%)\n498,Sealed Air Corp,SEE,0.012794,32.20,0.46,(1.46%)\n499,Alaska Air Group Inc,ALK,0.012574,37.04,0.63,(1.73%)\n500,Mohawk Industries Inc,MHK,0.011998,85.15,1.23,(1.46%)\n501,Organon & Co,OGN,0.011665,16.93,0.34,(2.02%)\n502,Dxc Technology Co,DXC,0.011658,20.64,0.29,(1.40%)\n503,Fox Corp Class B,FOX,0.010545,29.16,0.53,(1.85%)\n504,News Corp Class B,NWS,0.006575,20.75,0.36,(1.74%)\n*/\n", "// Name,Symbol,Last,Change,Change %\",Volume,Turn.,P/E,P/B\",Yield,Market Cap\n\n// prettier-ignore\nexport default [\n [\"CKH HOLDINGS\",\"00001.HK\",41.900,+1.150,\"+2.822%\",\"5.15M\",\"215.13M\",4.38,0.31,\"6.98%\",\"160.48B\"],\n [\"CLP HOLDINGS\",\"00002.HK\",57.950,-0.100,\"-0.172%\",\"3.32M\",\"193.19M\",156.62,1.39,\"5.35%\",\"146.41B\"],\n [\"HK & CHINA GAS\",\"00003.HK\",5.460,+0.130,\"+2.439%\",\"16.16M\",\"88.00M\",19.43,1.66,\"6.41%\",\"101.88B\"],\n [\"HSBC HOLDINGS,00005.HK\",61.700,+1.100,\"+1.815%\",\"22.19M\",\"1.37B\",10.54,0.86,\"4.05%\",1,\"227.60B\"],\n [\"POWER ASSETS\",\"00006.HK\",37.900,-0.250,\"-0.655%\",\"4.23M\",\"160.75M\",14.30,0.93,\"7.44%\",\"80.77B\"],\n [\"HANG SENG BANK\",\"00011.HK\",97.450,+2.950,\"+3.122%\",\"2.54M\",\"247.44M\",19.69,1.01,\"4.21%\",\"186.31B\"],\n [\"HENDERSON LAND\",\"00012.HK\",20.650,+0.850,\"+4.293%\",\"5.07M\",\"103.70M\",10.81,0.31,\"8.72%\",\"99.97B\"],\n [\"SHK PPT\",\"00016.HK\",83.800,+3.250,\"+4.035%\",\"8.25M\",\"685.41M\",10.16,0.40,\"5.91%\",\"242.83B\"],\n [\"NEW WORLD DEV\",\"00017.HK\",15.240,+0.800,\"+5.540%\",\"12.95M\",\"196.19M\",30.48,0.18,\"13.52%\",\"38.35B\"],\n [\"GALAXY ENT\",\"00027.HK\",47.150,+1.900,\"+4.199%\",\"11.97M\",\"560.21M\",\"No Profit\",3.22,\"0.00%\",\"206.21B\"],\n [\"MTR CORPORATION\",\"00066.HK\",31.000,+0.800,\"+2.649%\",\"4.68M\",\"144.86M\",19.50,1.07,\"4.23%\",\"192.64B\"],\n [\"HANG LUNG PPT\",\"00101.HK\",10.720,+0.560,\"+5.512%\",\"7.68M\",\"81.99M\",12.61,0.36,\"7.28%\",\"48.23B\"],\n [\"GEELY AUTO\",\"00175.HK\",9.240,+0.170,\"+1.874%\",\"18.77M\",\"173.30M\",16.06,1.15,\"2.27%\",\"92.99B\"],\n [\"ALI HEALTH\",\"00241.HK\",4.880,+0.470,\"+10.658%\",\"53.62M\",\"257.82M\",108.09,3.81,\"0.00%\",\"66.04B\"],\n [\"CITIC\",\"00267.HK\",7.200,+0.200,\"+2.857%\",\"11.54M\",\"82.96M\",2.78,0.28,\"9.04%\",\"209.45B\"],\n [\"WH GROUP\",\"00288.HK\",4.110,+0.080,\"+1.985%\",\"18.94M\",\"77.65M\",4.93,0.70,\"7.30%\",\"52.73B\"],\n [\"CHINA RES BEER\",\"00291.HK\",42.950,+1.200,\"+2.874%\",\"4.83M\",\"207.98M\",28.41,4.57,\"1.41%\",\"139.34B\"],\n [\"OOIL\",\"00316.HK\",104.500,-0.400,\"-0.381%\",\"296.54K\",\"30.98M\",0.89,0.66,\"78.90%\",\"69.01B\"],\n [\"TINGYI\",\"00322.HK\",10.940,+0.180,\"+1.673%\",\"2.91M\",\"31.81M\",20.75,4.09,\"9.39%\",\"61.64B\"],\n [\"SINOPEC CORP\",\"00386.HK\",4.280,-0.010,\"-0.233%\",\"92.43M\",\"396.61M\",6.94,0.58,\"9.36%\",\"105.92B\"],\n [\"HKEX\",\"00388.HK\",292.600,+9.000,\"+3.173%\",\"4.61M\",\"1.34B\",36.76,7.46,\"2.44%\",\"370.97B\"],\n [\"TECHTRONIC IND\",\"00669.HK\",76.000,+1.350,\"+1.808%\",\"5.47M\",\"414.78M\",16.54,3.43,\"2.43%\",\"139.45B\"],\n [\"CHINA OVERSEAS\",\"00688.HK\",16.240,+0.520,\"+3.308%\",\"13.15M\",\"212.60M\",6.76,0.44,\"4.93%\",\"177.74B\"],\n [\"TENCENT\",\"00700.HK\",306.200,+8.800,\"+2.959%\",\"11.25M\",\"3.43B\",13.74,3.60,\"0.78%\",2,\"926.16B\"],\n [\"CHINA UNICOM\",\"00762.HK\",5.680,-0.050,\"-0.873%\",\"9.23M\",\"52.77M\",9.16,0.45,\"5.44%\",\"173.80B\"],\n [\"LINK REIT\",\"00823.HK\",38.400,+1.450,\"+3.924%\",\"12.04M\",\"460.96M\",5.42,0.52,\"7.03%\",\"98.38B\"],\n [\"CHINA RES POWER\",\"00836.HK\",14.940,+0.320,\"+2.189%\",\"9.91M\",\"147.81M\",10.23,0.87,\"3.92%\",\"71.87B\"],\n [\"PETROCHINA\",\"00857.HK\",5.900,0.000,\"0.000%\",\"64.23M\",\"380.44M\",6.38,0.70,\"8.08%\",\"124.48B\"],\n [\"XINYI GLASS\",\"00868.HK\",10.140,+0.170,\"+1.705%\",\"3.75M\",\"38.02M\",8.01,1.30,\"6.11%\",\"42.22B\"],\n [\"ZHONGSHENG HLDG\",\"00881.HK\",22.050,+1.450,\"+7.039%\",\"6.76M\",\"147.71M\",7.08,1.07,\"4.94%\",\"52.72B\"],\n [\"CNOOC\",\"00883.HK\",13.780,-0.020,\"-0.145%\",\"26.37M\",\"365.08M\",4.03,0.97,\"19.09%\",\"655.47B\"],\n [\"CCB\",\"00939.HK\",4.420,+0.060,\"+1.376%\",\"233.61M\",\"1.03B\",3.06,0.35,\"9.93%\",1,\"062.64B\"],\n [\"CHINA MOBILE\",\"00941.HK\",65.700,+0.250,\"+0.382%\",\"7.82M\",\"516.10M\",9.91,0.96,\"6.71%\",1,\"404.46B\"],\n [\"LONGFOR GROUP\",\"00960.HK\",14.080,+0.900,\"+6.829%\",\"10.88M\",\"150.68M\",3.06,0.55,\"9.05%\",\"92.81B\"],\n [\"XINYI SOLAR\",\"00968.HK\",5.860,+0.280,\"+5.018%\",\"15.99M\",\"92.88M\",13.64,1.75,\"3.41%\",\"52.17B\"],\n [\"SMIC\",\"00981.HK\",20.050,+0.250,\"+1.263%\",\"13.10M\",\"264.32M\",11.17,1.06,\"0.00%\",\"159.31B\"],\n [\"LENOVO GROUP\",\"00992.HK\",8.070,+0.250,\"+3.197%\",\"33.60M\",\"270.50M\",7.61,2.23,\"4.71%\",\"97.87B\"],\n [\"CKI HOLDINGS\",\"01038.HK\",37.050,-0.200,\"-0.537%\",\"1.44M\",\"53.73M\",12.03,0.78,\"6.83%\",\"93.35B\"],\n [\"HENGAN INT'L\",\"01044.HK\",24.950,+0.200,\"+0.808%\",\"2.62M\",\"64.97M\",13.35,1.32,\"6.33%\",\"28.99B\"],\n [\"CHINA SHENHUA\",\"01088.HK\",25.400,+0.350,\"+1.397%\",\"7.98M\",\"203.11M\",6.14,1.13,\"11.33%\",\"85.79B\"],\n [\"CSPC PHARMA\",\"01093.HK\",5.740,+0.050,\"+0.879%\",\"29.29M\",\"167.41M\",9.96,2.01,\"3.66%\",\"68.32B\"],\n [\"SINOPHARM\",\"01099.HK\",22.700,+0.200,\"+0.889%\",\"2.07M\",\"46.80M\",7.37,0.92,\"4.08%\",\"30.46B\"],\n [\"CHINA RES LAND\",\"01109.HK\",31.200,+1.000,\"+3.311%\",\"9.88M\",\"305.88M\",7.02,0.81,\"5.07%\",\"222.49B\"],\n [\"CK ASSET\",\"01113.HK\",41.250,+1.250,\"+3.125%\",\"8.57M\",\"352.44M\",6.90,0.39,\"5.53%\",\"146.47B\"],\n [\"SINO BIOPHARM\",\"01177.HK\",2.830,+0.020,\"+0.712%\",\"26.30M\",\"74.09M\",18.37,1.59,\"4.24%\",\"53.21B\"],\n [\"CHINA RES MIXC\",\"01209.HK\",31.600,+1.600,\"+5.333%\",\"3.07M\",\"96.42M\",28.97,4.48,\"2.87%\",\"72.13B\"],\n [\"BYD COMPANY\",\"01211.HK\",242.000,+7.000,\"+2.979%\",\"3.90M\",\"938.50M\",37.57,5.63,\"0.53%\",\"265.72B\"],\n [\"AIA\",\"01299.HK\",63.850,+0.950,\"+1.510%\",\"38.75M\",\"2.48B\",408.88,2.53,\"2.41%\",\"735.40B\"],\n [\"CHINAHONGQIAO\",\"01378.HK\",7.670,+0.280,\"+3.789%\",\"13.05M\",\"99.58M\",7.27,0.76,\"6.65%\",\"72.68B\"],\n [\"ICBC\",\"01398.HK\",3.770,+0.070,\"+1.892%\",\"233.48M\",\"881.67M\",3.45,0.36,\"9.08%\",\"327.21B\"],\n [\"XIAOMI-W\",\"01810.HK\",12.340,+0.620,\"+5.290%\",\"78.53M\",\"960.98M\",109.39,1.90,\"0.00%\",\"308.83B\"],\n [\"BUD APAC\",\"01876.HK\",15.460,+0.160,\"+1.046%\",\"16.17M\",\"250.45M\",28.65,2.44,\"1.91%\",\"204.74B\"],\n [\"SANDS CHINA LTD\",\"01928.HK\",24.000,+0.950,\"+4.121%\",\"19.98M\",\"475.93M\",\"No Profit\",\"N/A\",\"0.00%\",\"194.24B\"],\n [\"CHOW TAI FOOK\",\"01929.HK\",11.800,+0.280,\"+2.431%\",\"4.88M\",\"57.68M\",21.93,3.64,\"10.34%\",\"118.00B\"],\n [\"WHARF REIC\",\"01997.HK\",30.250,+1.400,\"+4.853%\",\"4.23M\",\"127.31M\",\"No Profit\",0.48,\"4.33%\",\"91.85B\"],\n [\"ANTA SPORTS\",\"02020.HK\",88.150,+4.400,\"+5.254%\",\"4.82M\",\"422.51M\",27.71,6.16,\"1.52%\",\"249.70B\"],\n [\"WUXI BIO\",\"02269.HK\",45.650,+1.550,\"+3.515%\",\"17.91M\",\"811.49M\",38.18,4.88,\"0.00%\",\"194.01B\"],\n [\"SHENZHOU INTL\",\"02313.HK\",75.000,+4.600,\"+6.534%\",\"5.52M\",\"410.68M\",21.87,3.25,\"2.55%\",\"112.74B\"],\n [\"PING AN\",\"02318.HK\",44.850,+0.850,\"+1.932%\",\"23.05M\",\"1.03B\",8.28,0.85,\"6.09%\",\"334.02B\"],\n [\"MENGNIU DAIRY\",\"02319.HK\",26.250,+1.500,\"+6.061%\",\"8.58M\",\"223.15M\",17.34,2.30,\"1.73%\",\"103.42B\"],\n [\"LI NING\",\"02331.HK\",32.950,+1.500,\"+4.769%\",\"22.54M\",\"738.37M\",18.80,3.16,\"1.58%\",\"86.86B\"],\n [\"SUNNY OPTICAL\",\"02382.HK\",54.700,+1.050,\"+1.957%\",\"5.62M\",\"308.60M\",22.01,2.44,\"0.91%\",\"60.00B\"],\n [\"BOC HONG KONG\",\"02388.HK\",21.450,+0.300,\"+1.418%\",\"6.53M\",\"140.32M\",8.38,0.75,\"6.33%\",\"226.79B\"],\n [\"CHINA LIFE\",\"02628.HK\",12.200,+0.240,\"+2.007%\",\"13.53M\",\"165.07M\",9.49,0.70,\"4.53%\",\"90.78B\"],\n [\"ENN ENERGY\",\"02688.HK\",65.000,+1.150,\"+1.801%\",\"3.06M\",\"198.69M\",11.08,1.67,\"4.48%\",\"73.53B\"],\n [\"ZIJIN MINING\",\"02899.HK\",11.980,+0.160,\"+1.354%\",\"16.20M\",\"194.50M\",13.97,3.14,\"1.88%\",\"68.73B\"],\n [\"MEITUAN-W\",\"03690.HK\",114.600,+3.800,\"+3.430%\",\"19.17M\",\"2.19B\",\"No Profit\",4.89,\"0.00%\",\"715.43B\"],\n [\"HANSOH PHARMA\",\"03692.HK\",10.660,+0.160,\"+1.524%\",\"17.56M\",\"187.72M\",21.48,2.47,\"0.94%\",\"63.25B\"],\n [\"CM BANK\",\"03968.HK\",32.700,+0.100,\"+0.307%\",\"11.13M\",\"363.99M\",5.51,0.86,\"6.00%\",\"150.12B\"],\n [\"BANK OF CHINA\",\"03988.HK\",2.740,+0.050,\"+1.859%\",\"275.47M\",\"754.54M\",3.33,0.33,\"9.55%\",\"229.13B\"],\n [\"CG SERVICES\",\"06098.HK\",8.080,+0.250,\"+3.193%\",\"16.08M\",\"128.87M\",12.42,0.65,\"5.20%\",\"27.01B\"],\n [\"JD HEALTH\",\"06618.HK\",40.600,+2.950,\"+7.835%\",\"7.75M\",\"312.36M\",299.91,2.56,\"0.00%\",\"129.12B\"],\n [\"HAIER SMARTHOME\",\"06690.HK\",24.650,+1.150,\"+4.894%\",\"7.24M\",\"178.37M\",13.83,2.21,\"2.59%\",\"70.46B\"],\n [\"HAIDILAO\",\"06862.HK\",21.000,+0.600,\"+2.941%\",\"6.86M\",\"143.79M\",74.46,13.94,\"0.55%\",\"117.05B\"],\n [\"JD-SW\",\"09618.HK\",115.100,+4.000,\"+3.600%\",\"7.43M\",\"852.28M\",30.73,1.50,\"6.38%\",\"360.24B\"],\n [\"NONGFU SPRING\",\"09633.HK\",45.000,+1.500,\"+3.448%\",\"3.69M\",\"165.62M\",52.49,18.63,\"1.71%\",\"226.56B\"],\n [\"BIDU-SW\",\"09888.HK\",133.400,+4.600,\"+3.571%\",\"5.82M\",\"772.73M\",47.30,1.50,\"0.00%\",\"377.37B\"],\n [\"TRIP.COM-S\",\"09961.HK\",279.200,+7.000,\"+2.572%\",\"1.25M\",\"349.59M\",114.05,1.40,\"0.00%\",\"176.65B\"],\n [\"BABA-SW\",\"09988.HK\",85.600,+2.600,\"+3.133%\",\"34.61M\",\"2.96B\",21.65,1.62,\"0.00%\",1,\"837.13B\"],\n [\"NTES-S\",\"09999.HK\",159.500,+8.300,\"+5.489%\",\"5.02M\",\"797.10M\",22.70,4.63,\"1.36%\",\"546.99B\"],\n]\n", "import ftse from \"./ftse100\";\nimport nasdaq from \"./nasdaq100\";\nimport sp500 from \"./sp500\";\nimport hsi from \"./hsi\";\nimport { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\n\nconst basketConstituentData = [];\nfor (const row of ftse) {\n // prettier-ignore\n const [ric, name, lastTrade, change, volume] = row;\n const basketId = \".FTSE100\";\n const side = \"BUY\";\n const weighting = 1;\n // prettier-ignore\n basketConstituentData.push([ basketId, change, name, lastTrade, ric, `${ric}-${basketId}`, side, volume, weighting ]);\n}\n\nfor (const row of hsi) {\n // prettier-ignore\n const [name, ric, lastTrade, change, , volume] = row;\n const basketId = \".HSI\";\n const side = \"BUY\";\n const weighting = 1;\n // prettier-ignore\n basketConstituentData.push([basketId,change,name, lastTrade,ric,`${ric}-${basketId}`,side,volume,weighting ]);\n}\n\nfor (const row of nasdaq) {\n // prettier-ignore\n const [name, ric, weighting, lastTrade, change] = row;\n const basketId = \".NASDAQ100\";\n const side = \"BUY\";\n const volume = 1000;\n // prettier-ignore\n basketConstituentData.push([ basketId, change, name, lastTrade, ric, `${ric}-${basketId}`, side, volume, weighting ]);\n}\n\nfor (const row of sp500) {\n // prettier-ignore\n const [name, ric, weighting,,change] = row;\n const basketId = \".SP500\";\n const side = \"BUY\";\n const volume = 1000;\n const lastTrade = 0;\n // prettier-ignore\n basketConstituentData.push([ basketId, change, name, lastTrade, ric, `${ric}-${basketId}`, side, volume, weighting ]);\n}\n\nexport default basketConstituentData as VuuRowDataItemType[][];\n", "import { buildDataColumnMap, Table } from \"../../Table\";\nimport { BaseUpdateGenerator } from \"../../UpdateGenerator\";\nimport { schemas } from \"../../simul/simul-schemas\";\nimport basketConstituentData from \"./constituents\";\nimport { initBidAsk, nextRandomDouble, random } from \"../../data-utils\";\n\nexport type ask = number;\nexport type askSize = number;\nexport type bid = number;\nexport type bidSize = number;\nexport type close = number;\nexport type last = number;\nexport type open = number;\nexport type phase = \"C\";\nexport type ric = string;\nexport type scenario = \"close\";\n\nexport type PricesDataRow = [\n ask,\n askSize,\n bid,\n bidSize,\n close,\n last,\n open,\n phase,\n ric,\n scenario\n];\n\nconst { bid, bidSize, ask, askSize, last } = buildDataColumnMap(schemas.prices);\nconst pricesUpdateGenerator = new BaseUpdateGenerator({\n bid,\n bidSize,\n ask,\n askSize,\n last,\n});\n\nconst prices: PricesDataRow[] = [];\n\n// prettier-ignore\nfor (const [,,,lastTrade,ric] of basketConstituentData) {\n const priceSeed = parseFloat(String(lastTrade));\n if (!isNaN(priceSeed)){\n const [bid, ask] = initBidAsk(5,nextRandomDouble)\n const askSize = random(1000, 3000);\n const bidSize = random(1000, 3000);\n const close = priceSeed + random(0, 1) / 10;\n const last = priceSeed + random(0, 1) / 10;\n const open = priceSeed + random(0, 1) / 10;\n const phase = \"C\";\n const scenario = \"close\";\n prices.push([\n ask,\n askSize,\n bid,\n bidSize,\n close,\n last,\n open,\n phase,\n ric as string,\n scenario,\n ]);\n\n }\n}\n\nconst pricesTable = new Table(\n schemas.prices,\n prices,\n buildDataColumnMap(schemas.prices),\n pricesUpdateGenerator\n);\n\nexport default pricesTable;\n", "import {\n ClientToServerViewportRpcCall,\n VuuMenu,\n VuuRowDataItemType,\n} from \"@vuu-ui/vuu-protocol-types\";\nimport { ColumnMap } from \"@vuu-ui/vuu-utils\";\nimport pricesTable from \"./reference-data/prices\";\nimport { joinTables, Table } from \"../Table\";\nimport { TickingArrayDataSource } from \"../TickingArrayDataSource\";\nimport { VuuModule } from \"../vuu-modules\";\nimport { BasketsTableName, schemas } from \"./basket-schemas\";\nimport basketConstituentData from \"./reference-data/constituents\";\n\n// This is a 'local' columnMap\nconst buildDataColumnMap = (tableName: BasketsTableName) =>\n Object.values(schemas[tableName].columns).reduce<ColumnMap>(\n (map, col, index) => {\n map[col.name] = index;\n return map;\n },\n {}\n );\n\nconst tableMaps: Record<BasketsTableName, ColumnMap> = {\n algoType: buildDataColumnMap(\"algoType\"),\n basket: buildDataColumnMap(\"basket\"),\n basketTrading: buildDataColumnMap(\"basketTrading\"),\n basketTradingConstituent: buildDataColumnMap(\"basketTradingConstituent\"),\n basketConstituent: buildDataColumnMap(\"basketConstituent\"),\n basketTradingConstituentJoin: buildDataColumnMap(\n \"basketTradingConstituentJoin\"\n ),\n priceStrategyType: buildDataColumnMap(\"priceStrategyType\"),\n};\n\n/**\n * BasketConstituent\n */\n\nconst basketConstituent = new Table(\n schemas.basketConstituent,\n basketConstituentData,\n tableMaps.basketConstituent\n);\n\n/**\n * BasketTrading\n */\nconst basketTrading = new Table(\n schemas.basketTrading,\n [],\n tableMaps.basketTrading\n);\n\nlet basketIncrement = 1;\n/**\n * BasketTradingConstituent\n */\nconst basketTradingConstituent = new Table(\n schemas.basketTradingConstituent,\n [],\n tableMaps.basketTradingConstituent\n);\n\n// export as convenience for showcase examples\nexport const createBasketTradingRow = (\n basketId: string,\n basketName: string,\n side = \"BUY\",\n status = \"OFF MARKET\"\n) => [\n basketId,\n basketName,\n 0,\n 1.25,\n `steve-${basketIncrement++}`,\n side,\n status,\n 1_000_000,\n 1_250_000,\n 100,\n];\n\nfunction createTradingBasket(basketId: string, basketName: string) {\n const basketTradingRow = createBasketTradingRow(basketId, basketName);\n\n basketTrading.insert(basketTradingRow);\n\n const { basketId: key } = buildDataColumnMap(\"basketConstituent\");\n const constituents = basketConstituent.data.filter(\n (c) => c[key] === basketId\n );\n\n const { instanceId } = tableMaps.basketTrading;\n\n constituents.forEach(([, , description, , ric, , , quantity, weighting]) => {\n const algo = \"\";\n const algoParams = \"\";\n const limitPrice = 95;\n const notionalLocal = 0;\n const notionalUsd = 0;\n const pctFilled = 0;\n const priceSpread = 0;\n const priceStrategyId = \"\";\n const side = \"BUY\";\n const venue = \"venue\";\n\n const basketInstanceId = basketTradingRow[instanceId];\n const basketTradingConstituentRow: VuuRowDataItemType[] = [\n algo,\n algoParams,\n basketId,\n description,\n basketInstanceId,\n `${basketInstanceId}-${ric}`,\n limitPrice,\n notionalLocal,\n notionalUsd,\n pctFilled,\n priceSpread,\n priceStrategyId,\n quantity,\n ric,\n side,\n venue,\n weighting,\n ];\n basketTradingConstituent.insert(basketTradingConstituentRow);\n });\n\n // return the key\n return basketTradingRow[instanceId] as string;\n}\n\nasync function addConstituent(rpcRequest: ClientToServerViewportRpcCall) {\n console.log(`RPC call erceived ${rpcRequest.rpcName}`);\n}\nasync function sendToMarket(rpcRequest: ClientToServerViewportRpcCall) {\n const [basketInstanceId] = rpcRequest.params;\n basketTrading.update(basketInstanceId, \"status\", \"ON_MARKET\");\n}\nasync function takeOffMarket(rpcRequest: ClientToServerViewportRpcCall) {\n const [basketInstanceId] = rpcRequest.params;\n basketTrading.update(basketInstanceId, \"status\", \"OFF-MARKET\");\n}\n\nasync function createNewBasket(rpcRequest: ClientToServerViewportRpcCall) {\n const {\n params: [basketId, basketName],\n } = rpcRequest;\n const key = createTradingBasket(basketId, basketName);\n return {\n action: {\n type: \"VP_CREATE_SUCCESS\",\n key,\n },\n };\n}\n\n//-------------------\n\nexport const tables: Record<BasketsTableName, Table> = {\n algoType: new Table(\n schemas.algoType,\n [\n [\"Sniper\", 0],\n [\"Dark Liquidity\", 1],\n [\"VWAP\", 2],\n [\"POV\", 3],\n [\"Dynamic Close\", 4],\n ],\n tableMaps.algoType\n ),\n basket: new Table(\n schemas.basket,\n [\n [\".NASDAQ100\", \".NASDAQ100\", 0, 0],\n [\".HSI\", \".HSI\", 0, 0],\n [\".FTSE100\", \".FTSE100\", 0, 0],\n [\".SP500\", \".SP500\", 0, 0],\n ],\n tableMaps.basket\n ),\n basketConstituent,\n basketTrading,\n basketTradingConstituent,\n basketTradingConstituentJoin: joinTables(\n { module: \"BASKET\", table: \"basketTradingConstituentJoin\" },\n basketTradingConstituent,\n pricesTable,\n \"ric\"\n ),\n priceStrategyType: new Table(\n schemas.priceStrategyType,\n [\n [\"Peg to Near Touch\", 0],\n [\"Far Touch\", 1],\n [\"Limit\", 2],\n [\"Algo\", 3],\n ],\n tableMaps.priceStrategyType\n ),\n};\n\nconst menus: Record<BasketsTableName, VuuMenu | undefined> = {\n algoType: undefined,\n basket: {\n name: \"ROOT\",\n menus: [\n {\n context: \"selected-rows\",\n filter: \"\",\n name: \"Add Basket\",\n rpcName: \"CREATE_NEW_BASKET\",\n },\n ],\n },\n basketConstituent: undefined,\n basketTrading: undefined,\n basketTradingConstituent: undefined,\n basketTradingConstituentJoin: undefined,\n priceStrategyType: undefined,\n};\n\ntype RpcService = {\n rpcName: string;\n service: (rpcRequest: any) => Promise<unknown>;\n};\n\nconst services: Record<BasketsTableName, RpcService[] | undefined> = {\n algoType: undefined,\n basket: [\n {\n rpcName: \"createBasket\",\n service: createNewBasket,\n },\n ],\n basketConstituent: undefined,\n basketTrading: [\n {\n rpcName: \"sendToMarket\",\n service: sendToMarket,\n },\n {\n rpcName: \"takeOffMarket\",\n service: takeOffMarket,\n },\n ],\n basketTradingConstituent: undefined,\n basketTradingConstituentJoin: [\n {\n rpcName: \"addConstituent\",\n service: addConstituent,\n },\n ],\n priceStrategyType: undefined,\n};\n\nconst getColumnDescriptors = (tableName: BasketsTableName) => {\n const schema = schemas[tableName];\n return schema.columns;\n};\n\nconst createDataSource = (tableName: BasketsTableName) => {\n const columnDescriptors = getColumnDescriptors(tableName);\n const { key } = schemas[tableName];\n return new TickingArrayDataSource({\n columnDescriptors,\n dataMap: tableMaps[tableName],\n keyColumn: key,\n menu: menus[tableName],\n rpcServices: services[tableName],\n table: tables[tableName],\n // updateGenerator: createUpdateGenerator?.(),\n });\n};\n\nconst nullTypeaheadHook = async () => [];\n\nconst basketModule: VuuModule<BasketsTableName> = {\n createDataSource,\n typeaheadHook: () => nullTypeaheadHook,\n};\n\nexport default basketModule;\n", "import { isinGenerator } from \"@thomaschaplin/isin-generator\";\nimport { currencies } from \"./currencies\";\nimport { locations, suffixes } from \"./locations\";\nimport { lotsizes } from \"./lotsizes\";\nimport { random } from \"../../data-utils\";\nimport { buildDataColumnMap, Table } from \"../../Table\";\nimport { schemas } from \"../simul-schemas\";\n\nexport type bbg = string;\nexport type currency = string;\nexport type ric = string;\nexport type description = string;\nexport type exchange = string;\n// seed for price generation\nexport type price = number;\n\nexport type InstrumentsDataRow = [\n bbg,\n currency,\n description,\n exchange,\n string,\n number,\n ric,\n price\n];\n\nexport const InstrumentColumnMap = {\n bbg: 0,\n currency: 1,\n description: 2,\n exchange: 3,\n string: 4,\n number: 5,\n ric: 6,\n price: 7,\n} as const;\n\nconst instrumentsData: InstrumentsDataRow[] = [];\n\nconst chars = Array.from(\"ABCEFGHKMNOPQRTUVWYZ\");\n\nconst randomPrice = () => {\n const price = random(0, 10000);\n const multiplier = random(1, 10);\n return price / multiplier;\n};\n\n// const start = performance.now();\n// Create 10_000 Instruments\nfor (const char of chars) {\n for (let i = 0; i < 10_00; i++) {\n const char2 = chars[random(0, chars.length - 1)];\n const char3 = chars[random(0, chars.length - 1)];\n const char4 = chars[random(0, chars.length - 1)];\n\n const suffix = suffixes[random(0, suffixes.length - 1)];\n const ric = char + char2 + char3 + char4 + \".\" + suffix;\n const bbg = char + char2 + char3 + char4 + \" \" + suffix;\n const description = `${ric} description`;\n const currency = currencies[random(0, 4)];\n const isin = isinGenerator();\n const lotSize = lotsizes[random(0, lotsizes.length - 1)];\n\n const exchange = locations[suffix][1];\n const price = randomPrice();\n\n instrumentsData.push([\n bbg,\n currency,\n description,\n exchange,\n String(isin),\n lotSize,\n ric,\n price,\n ]);\n }\n}\n// const end = performance.now();\n// console.log(`generating 10,000 instruments took ${end - start} ms`);\n\nconst instrumentsTable = new Table(\n schemas.instruments,\n instrumentsData,\n buildDataColumnMap(schemas.instruments)\n);\n\nexport { instrumentsData };\nexport default instrumentsTable;\n", "export const currencies = [\"CAD\", \"GBX\", \"USD\", \"EUR\", \"GBP\"];\n", "export const locations: { [key: string]: string[] } = {\n L: [\"London PLC\", \"XLON/LSE-SETS\"],\n N: [\"Corporation\", \"XNGS/NAS-GSM\"],\n AS: [\"B.V.\", \"XAMS/ENA-MAIN\"],\n OQ: [\"Co.\", \"XNYS/NYS-MAIN\"],\n PA: [\"Paris\", \"PAR/EUR_FR\"],\n MI: [\"Milan\", \"MIL/EUR_IT\"],\n FR: [\"Frankfurt\", \"FR/EUR_DE\"],\n AT: [\"Athens\", \"AT/EUR_GR\"],\n};\nexport const suffixes = [\"L\", \"N\", \"OQ\", \"AS\", \"PA\", \"MI\", \"FR\", \"AT\"];\n", "export const lotsizes = [\n 1, 2, 5, 10, 50, 50, 70, 100, 100, 100, 120, 150, 150, 200, 500, 700, 1000,\n 2000, 2500, 5000, 10000,\n];\n", "import { VuuRowDataItemType } from \"@vuu-ui/vuu-protocol-types\";\nimport { random } from \"../../data-utils\";\nimport { buildDataColumnMap, Table } from \"../../Table\";\nimport { schemas } from \"../simul-schemas\";\nimport { instrumentsData } from \"./instruments\";\n\nconst instrumentsExtendedData = instrumentsData.map((row) =>\n (row as VuuRowDataItemType[])\n .slice(0, -1)\n .concat([random(0, 1) === 1, random(0, 1) === 1, new Date().getTime()])\n);\n\nconst instrumentsExtendedTable = new Table(\n schemas.instrumentsExtended,\n instrumentsExtendedData,\n buildDataColumnMap(schemas.instrumentsExtended)\n);\n\nexport default instrumentsExtendedTable;\n", "import { buildDataColumnMap, Table } from \"../../Table\";\nimport { BaseUpdateGenerator } from \"../../UpdateGenerator\";\nimport { schemas } from \"../simul-schemas\";\nimport { instrumentsData, InstrumentColumnMap } from \"./instruments\";\nimport { random } from \"../../data-utils\";\nimport basketConstituentData from \"../../basket/reference-data/constituents\";\n\nexport type ask = number;\nexport type askSize = number;\nexport type bid = number;\nexport type bidSize = number;\nexport type close = number;\nexport type last = number;\nexport type open = number;\nexport type phase = \"C\";\nexport type ric = string;\nexport type scenario = \"close\";\n\nexport type PricesDataRow = [\n ask,\n askSize,\n bid,\n bidSize,\n close,\n last,\n open,\n phase,\n ric,\n scenario\n];\n\nconst { bid, bidSize, ask, askSize } = buildDataColumnMap(schemas.prices);\nconst pricesUpdateGenerator = new BaseUpdateGenerator({\n bid,\n bidSize,\n ask,\n askSize,\n});\n\n// const start = performance.now();\n// Create 100_000 Instruments\nconst requiredInstrumentFields = [\"ric\", \"price\"] as const;\nconst pricesData: Array<PricesDataRow> = instrumentsData.map((instrument) => {\n const { ric, price: priceSeed } = requiredInstrumentFields.reduce(\n (obj, f) => ({ ...obj, [f]: instrument[InstrumentColumnMap[f]] }),\n {} as { ric: string; price: number }\n );\n const spread = random(0, 10);\n\n const ask = priceSeed + spread / 2;\n const askSize = random(1000, 3000);\n const bid = priceSeed - spread / 2;\n const bidSize = random(1000, 3000);\n const close = priceSeed + random(0, 1) / 10;\n const last = priceSeed + random(0, 1) / 10;\n const open = priceSeed + random(0, 1) / 10;\n const phase = \"C\";\n const scenario = \"close\";\n return [ask, askSize, bid, bidSize, close, last, open, phase, ric, scenario];\n});\n\n// prettier-ignore\nfor (const [,,,lastTrade,ric] of basketConstituentData) {\n const priceSeed = parseFloat(String(lastTrade));\n if (!isNaN(priceSeed)) {\n const spread = random(0, 10);\n const ask = priceSeed + spread / 2;\n const askSize = random(1000, 3000);\n const bid = priceSeed - spread / 2;\n const bidSize = random(1000, 3000);\n const close = priceSeed + random(0, 1) / 10;\n const last = priceSeed + random(0, 1) / 10;\n const open = priceSeed + random(0, 1) / 10;\n const phase = \"C\";\n const scenario = \"close\";\n pricesData.push([\n ask,\n askSize,\n bid,\n bidSize,\n close,\n last,\n open,\n phase,\n ric as string,\n scenario,\n ]);\n }\n}\n\n// const end = performance.now();\n// console.log(`generating 100,000 prices took ${end - start} ms`);\n\nconst pricesTable = new Table(\n schemas.prices,\n pricesData,\n buildDataColumnMap(schemas.prices),\n pricesUpdateGenerator\n);\n\nexport { pricesData };\nexport default pricesTable;\n", "import { TickingArrayDataSource } from \"../TickingArrayDataSource\";\nimport { VuuModule } from \"../vuu-modules\";\nimport instrumentsTable from \"./reference-data/instruments\";\nimport instrumentsExtendedTable from \"./reference-data/instruments-extended\";\nimport pricesTable from \"./reference-data/prices\";\nimport { schemas, SimulTableName } from \"./simul-schemas\";\nimport { buildDataColumnMap, joinTables, Table } from \"../Table\";\nimport { TypeaheadParams } from \"@vuu-ui/vuu-protocol-types\";\nimport { SuggestionFetcher } from \"@vuu-ui/vuu-data-react\";\nimport { makeSuggestions } from \"../makeSuggestions\";\n\nconst tables: Record<SimulTableName, Table> = {\n childOrders: new Table(\n schemas.childOrders,\n [],\n buildDataColumnMap(schemas.childOrders)\n ),\n instruments: instrumentsTable,\n instrumentsExtended: instrumentsExtendedTable,\n instrumentPrices: joinTables(\n { module: \"SIMUL\", table: \"instrumentPrices\" },\n instrumentsTable,\n pricesTable,\n \"ric\"\n ),\n orders: new Table(schemas.orders, [], buildDataColumnMap(schemas.orders)),\n parentOrders: new Table(\n schemas.parentOrders,\n [],\n buildDataColumnMap(schemas.parentOrders)\n ),\n prices: pricesTable,\n};\n\nconst getColumnDescriptors = (tableName: SimulTableName) => {\n const schema = schemas[tableName];\n if (schema) {\n return schema.columns;\n } else {\n throw Error(`simul-module no schema found for table SIMUL ${tableName}`);\n }\n};\n\nconst createDataSource = (tableName: SimulTableName) => {\n const columnDescriptors = getColumnDescriptors(tableName);\n return new TickingArrayDataSource({\n columnDescriptors,\n keyColumn: schemas[tableName].key,\n table: tables[tableName],\n // menu: menus[tableName],\n // rpcServices: services[tableName],\n });\n};\n\nconst suggestionFetcher: SuggestionFetcher = ([\n vuuTable,\n column,\n pattern,\n]: TypeaheadParams) => {\n const table = tables[vuuTable.table as SimulTableName];\n if (table) {\n return makeSuggestions(table, column, pattern);\n } else {\n throw Error(\n `SIMUL suggestionFetcher, unknown table ${vuuTable.module} ${vuuTable.table}`\n );\n }\n};\n\nconst simulModule: VuuModule<SimulTableName> = {\n createDataSource,\n typeaheadHook: () => suggestionFetcher,\n};\n\nexport default simulModule;\n", "import { DataSource } from \"@vuu-ui/vuu-data-types\";\nimport { SuggestionFetcher } from \"@vuu-ui/vuu-data-react\";\nimport basketModule from \"./basket/basket-module\";\nimport { BasketsTableName } from \"./basket/basket-schemas\";\nimport simulModule from \"./simul/simul-module\";\nimport { SimulTableName } from \"./simul/simul-schemas\";\n\nexport type VuuModuleName = \"BASKET\" | \"SIMUL\";\n\nexport interface VuuModule<T extends string = string> {\n createDataSource: (tableName: T) => DataSource;\n typeaheadHook: () => SuggestionFetcher;\n}\n\nconst vuuModules: Record<\n VuuModuleName,\n VuuModule<BasketsTableName> | VuuModule<SimulTableName>\n> = {\n BASKET: basketModule,\n SIMUL: simulModule,\n};\n\nexport const vuuModule = <T extends string = string>(\n moduleName: VuuModuleName\n) => vuuModules[moduleName] as VuuModule<T>;\n"],
|
|
5
|
-
"mappings": "+2BAAA,IAAAA,GAAAC,EAAA,CAAAC,GAAAC,KAAA,CAAAA,GAAA,SACI,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KACA,KAC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",
|
|
6
|
-
"names": ["
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA,MACI;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;AAAA,MACA;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",
|
|
6
|
+
"names": ["cusip", "isinGenerator", "schemas", "schemas", "row", "nextRandomDouble", "ask", "bid", "bid", "ask", "last", "schemas", "bid", "ask", "askSize", "bidSize", "last", "buildDataColumnMap", "schemas", "schemas", "bid", "bidSize", "ask", "askSize", "schemas", "pricesUpdateGenerator", "last", "pricesTable", "prices_default", "pricesTable", "tables", "schemas", "prices_default", "getColumnDescriptors", "createDataSource"]
|
|
7
7
|
}
|