Skip to content

Commit fe631a4

Browse files
committed
Add benchmarking data and scripts
1 parent f9e5dd0 commit fe631a4

File tree

67 files changed

+493
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

67 files changed

+493
-0
lines changed

Diff for: .gitattributes

+62
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,62 @@
1+
bench_data filter=lfs diff=lfs merge=lfs -text
2+
bench_data/quotes_0005.parquet filter=lfs diff=lfs merge=lfs -text
3+
bench_data/multi_stream_data/trades_9868_20221103.parquet filter=lfs diff=lfs merge=lfs -text
4+
bench_data/multi_stream_data/quotes_9961_20221109.parquet filter=lfs diff=lfs merge=lfs -text
5+
bench_data/multi_stream_data/quotes_9999_20221102.parquet filter=lfs diff=lfs merge=lfs -text
6+
bench_data/multi_stream_data/quotes_9999_20221108.parquet filter=lfs diff=lfs merge=lfs -text
7+
bench_data/multi_stream_data/trades_0005_20221109.parquet filter=lfs diff=lfs merge=lfs -text
8+
bench_data/multi_stream_data/quotes_9961_20221101.parquet filter=lfs diff=lfs merge=lfs -text
9+
bench_data/multi_stream_data/trades_0005_20221101.parquet filter=lfs diff=lfs merge=lfs -text
10+
bench_data/multi_stream_data/trades_9961_20221102.parquet filter=lfs diff=lfs merge=lfs -text
11+
bench_data/multi_stream_data/trades_9961_20221108.parquet filter=lfs diff=lfs merge=lfs -text
12+
bench_data/multi_stream_data/trades_9868_20221104.parquet filter=lfs diff=lfs merge=lfs -text
13+
bench_data/multi_stream_data/quotes_9961_20221104.parquet filter=lfs diff=lfs merge=lfs -text
14+
bench_data/multi_stream_data/trades_0005_20221104.parquet filter=lfs diff=lfs merge=lfs -text
15+
bench_data/multi_stream_data/trades_9868_20221101.parquet filter=lfs diff=lfs merge=lfs -text
16+
bench_data/multi_stream_data/trades_9999_20221102.parquet filter=lfs diff=lfs merge=lfs -text
17+
bench_data/multi_stream_data/trades_9999_20221108.parquet filter=lfs diff=lfs merge=lfs -text
18+
bench_data/multi_stream_data/quotes_9626_20221102.parquet filter=lfs diff=lfs merge=lfs -text
19+
bench_data/multi_stream_data/quotes_9626_20221108.parquet filter=lfs diff=lfs merge=lfs -text
20+
bench_data/multi_stream_data/trades_9626_20221102.parquet filter=lfs diff=lfs merge=lfs -text
21+
bench_data/multi_stream_data/trades_9626_20221108.parquet filter=lfs diff=lfs merge=lfs -text
22+
bench_data/multi_stream_data/quotes_9868_20221101.parquet filter=lfs diff=lfs merge=lfs -text
23+
bench_data/multi_stream_data/quotes_9999_20221104.parquet filter=lfs diff=lfs merge=lfs -text
24+
bench_data/multi_stream_data/trades_9961_20221103.parquet filter=lfs diff=lfs merge=lfs -text
25+
bench_data/multi_stream_data/quotes_0005_20221101.parquet filter=lfs diff=lfs merge=lfs -text
26+
bench_data/multi_stream_data/quotes_9626_20221109.parquet filter=lfs diff=lfs merge=lfs -text
27+
bench_data/multi_stream_data/trades_9626_20221109.parquet filter=lfs diff=lfs merge=lfs -text
28+
bench_data/multi_stream_data/trades_9999_20221109.parquet filter=lfs diff=lfs merge=lfs -text
29+
bench_data/multi_stream_data/quotes_9868_20221104.parquet filter=lfs diff=lfs merge=lfs -text
30+
bench_data/multi_stream_data/quotes_9999_20221101.parquet filter=lfs diff=lfs merge=lfs -text
31+
bench_data/multi_stream_data/trades_9961_20221109.parquet filter=lfs diff=lfs merge=lfs -text
32+
bench_data/multi_stream_data/quotes_0005_20221104.parquet filter=lfs diff=lfs merge=lfs -text
33+
bench_data/multi_stream_data/quotes_9626_20221103.parquet filter=lfs diff=lfs merge=lfs -text
34+
bench_data/multi_stream_data/trades_9626_20221103.parquet filter=lfs diff=lfs merge=lfs -text
35+
bench_data/multi_stream_data/trades_9999_20221103.parquet filter=lfs diff=lfs merge=lfs -text
36+
bench_data/multi_stream_data/quotes_0005_20221103.parquet filter=lfs diff=lfs merge=lfs -text
37+
bench_data/multi_stream_data/quotes_9626_20221104.parquet filter=lfs diff=lfs merge=lfs -text
38+
bench_data/multi_stream_data/trades_9626_20221104.parquet filter=lfs diff=lfs merge=lfs -text
39+
bench_data/multi_stream_data/trades_9999_20221104.parquet filter=lfs diff=lfs merge=lfs -text
40+
bench_data/multi_stream_data/trades_0005_20221102.parquet filter=lfs diff=lfs merge=lfs -text
41+
bench_data/multi_stream_data/trades_0005_20221108.parquet filter=lfs diff=lfs merge=lfs -text
42+
bench_data/multi_stream_data/trades_9961_20221101.parquet filter=lfs diff=lfs merge=lfs -text
43+
bench_data/multi_stream_data/quotes_9868_20221103.parquet filter=lfs diff=lfs merge=lfs -text
44+
bench_data/multi_stream_data/quotes_9961_20221102.parquet filter=lfs diff=lfs merge=lfs -text
45+
bench_data/multi_stream_data/quotes_9961_20221108.parquet filter=lfs diff=lfs merge=lfs -text
46+
bench_data/multi_stream_data/quotes_9999_20221109.parquet filter=lfs diff=lfs merge=lfs -text
47+
bench_data/multi_stream_data/trades_9868_20221108.parquet filter=lfs diff=lfs merge=lfs -text
48+
bench_data/multi_stream_data/trades_9999_20221101.parquet filter=lfs diff=lfs merge=lfs -text
49+
bench_data/multi_stream_data/quotes_0005_20221109.parquet filter=lfs diff=lfs merge=lfs -text
50+
bench_data/multi_stream_data/quotes_9626_20221101.parquet filter=lfs diff=lfs merge=lfs -text
51+
bench_data/multi_stream_data/trades_9626_20221101.parquet filter=lfs diff=lfs merge=lfs -text
52+
bench_data/multi_stream_data/trades_9868_20221102.parquet filter=lfs diff=lfs merge=lfs -text
53+
bench_data/multi_stream_data/quotes_9868_20221109.parquet filter=lfs diff=lfs merge=lfs -text
54+
bench_data/multi_stream_data/quotes_9999_20221103.parquet filter=lfs diff=lfs merge=lfs -text
55+
bench_data/multi_stream_data/trades_9961_20221104.parquet filter=lfs diff=lfs merge=lfs -text
56+
bench_data/multi_stream_data/quotes_0005_20221102.parquet filter=lfs diff=lfs merge=lfs -text
57+
bench_data/multi_stream_data/quotes_0005_20221108.parquet filter=lfs diff=lfs merge=lfs -text
58+
bench_data/multi_stream_data/trades_9868_20221109.parquet filter=lfs diff=lfs merge=lfs -text
59+
bench_data/multi_stream_data/quotes_9868_20221102.parquet filter=lfs diff=lfs merge=lfs -text
60+
bench_data/multi_stream_data/quotes_9868_20221108.parquet filter=lfs diff=lfs merge=lfs -text
61+
bench_data/multi_stream_data/quotes_9961_20221103.parquet filter=lfs diff=lfs merge=lfs -text
62+
bench_data/multi_stream_data/trades_0005_20221103.parquet filter=lfs diff=lfs merge=lfs -text

Diff for: bench_data/check_invariant.py

+26
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,26 @@
1+
import sys
2+
import pandas as pd
3+
4+
5+
def check_file(file_name):
6+
"""Check if the 'start_ts' column is in ascending order and 'end_ts' for a row groups comes before 'start_ts' of the next row group."""
7+
df = pd.read_csv(file_name)
8+
9+
# Check if 'start_ts' is in ascending order
10+
if not df["start_ts"].is_monotonic_increasing:
11+
print("The 'start_ts' column is not in ascending order.")
12+
13+
# Check if 'end_ts' for a row comes before 'start_ts' of the next row
14+
for i in range(1, len(df)):
15+
if df.loc[i - 1, "end_ts"] > df.loc[i, "start_ts"]:
16+
print(f"Row {i-1} and {i} fail the check:")
17+
print(df.loc[[i - 1, i]])
18+
19+
20+
if __name__ == "__main__":
21+
if len(sys.argv) < 2:
22+
print("Usage: python check_invariant.py <csv_file>")
23+
sys.exit(1)
24+
25+
input_file = sys.argv[1]
26+
check_file(input_file)

Diff for: bench_data/extract_groups.py

+76
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,76 @@
1+
import pandas as pd
2+
import pyarrow as pa
3+
import pyarrow.parquet as pq
4+
import sys
5+
6+
# Define schema for quote ticks
7+
quote_tick_schema = pa.schema(
8+
[
9+
("bid", pa.int64()),
10+
("ask", pa.int64()),
11+
("bid_size", pa.uint64()),
12+
("ask_size", pa.uint64()),
13+
("ts_event", pa.uint64()),
14+
("ts_init", pa.uint64()),
15+
]
16+
)
17+
18+
quote_tick_schema = quote_tick_schema.with_metadata(
19+
{
20+
"instrument_id": "EUR/USD.SIM",
21+
"price_precision": "0",
22+
"size_precision": "0",
23+
}
24+
)
25+
26+
trade_tick_schema = pa.schema(
27+
[
28+
("price", pa.int64()),
29+
("size", pa.uint64()),
30+
("aggresor_side", pa.uint8()),
31+
("trade_id", pa.string()),
32+
("ts_event", pa.uint64()),
33+
("ts_init", pa.uint64()),
34+
]
35+
)
36+
37+
trade_tick_schema = trade_tick_schema.with_metadata(
38+
{
39+
"instrument_id": "EUR/USD.SIM",
40+
"price_precision": "0",
41+
"size_precision": "0",
42+
}
43+
)
44+
45+
46+
def write_parquet_with_row_group(input_file, output_file, rows_per_row_group):
47+
"""Write a Parquet file with specified row group size."""
48+
df = pd.read_parquet(input_file)
49+
50+
schema = quote_tick_schema if "quotes" in input_file else trade_tick_schema
51+
52+
# Create a new Parquet file writer
53+
writer = pq.ParquetWriter(output_file, schema, compression="snappy")
54+
55+
# Write the dataframe to the new Parquet file with specified row group size
56+
num_rows = len(df)
57+
for i in range(0, num_rows, rows_per_row_group):
58+
batch = pa.RecordBatch.from_pandas(df[i : i + rows_per_row_group])
59+
writer.write_batch(batch)
60+
61+
# Close the Parquet file writer
62+
writer.close()
63+
64+
65+
if __name__ == "__main__":
66+
if len(sys.argv) < 4:
67+
print("Usage: python extract_ts_init.py <parquet_file> <num_rows_per_row_group>")
68+
sys.exit(1)
69+
70+
# Get command-line inputs
71+
input_file = sys.argv[1]
72+
output_file = sys.argv[2]
73+
rows_per_row_group = int(sys.argv[3])
74+
75+
# Write the Parquet file with specified row group size
76+
write_parquet_with_row_group(input_file, output_file, rows_per_row_group)

Diff for: bench_data/extract_ts_init.py

+36
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import pyarrow.parquet as pq
2+
import csv
3+
import sys
4+
5+
6+
def extract_ts_init_values(parquet_file, csv_file):
7+
"""Write the first and last 'ts_init' values of each row group to a CSV file."""
8+
# Open the Parquet file
9+
parquet_file = pq.ParquetFile(parquet_file)
10+
11+
# Open the CSV file for writing
12+
with open(csv_file, "w", newline="") as csvfile:
13+
writer = csv.writer(csvfile)
14+
writer.writerow(["index", "start_ts", "end_ts", "group_size"]) # Write the header
15+
16+
# Iterate over each row group in the Parquet file
17+
for i in range(parquet_file.num_row_groups):
18+
# Read the row group into a table
19+
table = parquet_file.read_row_group(i)
20+
21+
# Convert the 'ts_init' column to a list
22+
ts_init_values = table.column("ts_init").to_pandas().tolist()
23+
24+
# Write the index, first and last value to the CSV file
25+
writer.writerow([i, ts_init_values[0], ts_init_values[-1], table.num_rows])
26+
27+
28+
if __name__ == "__main__":
29+
if len(sys.argv) < 3:
30+
print("Usage: python extract_ts_init.py <parquet_file> <csv_file>")
31+
sys.exit(1)
32+
33+
parquet_file = sys.argv[1]
34+
csv_file = sys.argv[2]
35+
36+
extract_ts_init_values(parquet_file, csv_file)

Diff for: bench_data/gen_data_stats.py

+48
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,48 @@
1+
import sys
2+
import os
3+
import csv
4+
import pyarrow.parquet as pq
5+
6+
7+
def record_data_stats(folder_path, csv_file):
8+
"""Record statistics about Parquet files in a folder."""
9+
with open(csv_file, "w", newline="") as csvfile:
10+
writer = csv.writer(csvfile)
11+
writer.writerow(
12+
["file_name", "file_size_kb", "total_rows", "max_row_group_size"]
13+
) # Write the header
14+
15+
# Walk the folder
16+
for root, dirs, files in os.walk(folder_path):
17+
for file in files:
18+
if file.endswith(".parquet"):
19+
file_path = os.path.join(root, file)
20+
21+
# Calculate file size in KB
22+
file_size_kb = os.path.getsize(file_path) // 1024
23+
24+
# Read the Parquet file
25+
parquet_file = pq.ParquetFile(file_path)
26+
27+
# Calculate total number of rows and maximum row group size
28+
total_rows = 0
29+
max_row_group_size = 0
30+
for i in range(parquet_file.num_row_groups):
31+
row_group = parquet_file.read_row_group(i)
32+
num_rows = row_group.num_rows
33+
total_rows += num_rows
34+
max_row_group_size = max(max_row_group_size, num_rows)
35+
36+
# Write the statistics to the CSV file
37+
writer.writerow([file_path, file_size_kb, total_rows, max_row_group_size])
38+
39+
40+
if __name__ == "__main__":
41+
if len(sys.argv) < 3:
42+
print("Usage: python script.py <folder_path> <csv_file>")
43+
sys.exit(1)
44+
45+
folder_path = sys.argv[1]
46+
csv_file = sys.argv[2]
47+
48+
record_data_stats(folder_path, csv_file)
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:a69c60c7434c52de8cfbb60cbc2fa01ee7114093cd5b5f47b6d67f60bb4976e0
3+
size 30956735
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:0bf0bd1417fb959d243e02bdbf5bee497c0486e404031014f6a5f3700ed2f4aa
3+
size 17705789
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:6166b21cc8910398c0700324a36e086ad17aa233ccecdb3139007da17e8b6e94
3+
size 21145855
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:ac754bd0c8849cda6970031e39d5e6d45c1ecbbd1ebd20c1372100c1f6cbfaa4
3+
size 28335542
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:6493ab3c490b9660bc2d50bd616235befbc4744ef3d86bb26eee15f1cec3ff85
3+
size 22113624
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:e6a0d6f95eea33c034ba3bab285751c95eb30bd4e0604b294e526b7f94857c6c
3+
size 24171029
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:d3e65ca13f1d6204b58536369546fba2df668a04cd48c3054714b76a5db3331d
3+
size 38973830
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:00188c7bf00b242fa8f1843ed1c5e12d2651dfd19a38cc85e7880c7ea5fa7a9b
3+
size 33889857
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:949215791f06698362ba571aa9235268edb2d12dce770f298979bd3c2db421d5
3+
size 22230253
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:6e108d2305c84e02cadbd253cb97e92a8cb7adc3c395b885e5e23ea02e5df544
3+
size 49650431
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:505d2f86bec7571ba0cfd49cf80938059d0eb05939395080c6143e5c326a6342
3+
size 32367016
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:d18872d252de8db93b557110dacbe096d41326dcfd75f578669d5a698d39f781
3+
size 39151630
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:764c0efb11bd1711c4f5dbb83e137b3ec57104cc65cce3465d56e9cd3073ab8f
3+
size 57096817
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:e5880135d7c72be2950be80f28c9f766b94f4add9caf4a0f465de709315bf311
3+
size 24716890
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:50d528966a68f314911c48a6a537ea4c03b881a3107726b9695e1dffb8e9893e
3+
size 17825637
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:e2f0ffab7ae6503e8e70c070fbe22ca2f87e389ce0e4d8915cdb2829114701b3
3+
size 65120669
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:4dcd306ef91ce95b17e86e492ebbb9ed59becfe44b27a469370115a6c4a6fec0
3+
size 29601081
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:d6d082545a650de93c70f22bb0247f3a7cef0427dccd2f816bd603edc32ed944
3+
size 30378696
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:a06773ca20cff158c3b8890ede1d3890afa56975023da05521aa8c058b41948f
3+
size 28408514
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:6a525054858d2dc346c93c70df480bd7a1172643e7ec1eb0fd38c123a7e45f3f
3+
size 29044441
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:577d51d89b1c6048d67c260d98c24e4dfe150b6da5097f71fa218dbcf1be00d8
3+
size 19245032
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:4d128e72ec8ef9753c1b2b3a3bd013f47c66f23feb6a4a4bd4057887f53b2b16
3+
size 37694138
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:8b6b047e3e08c683617daaabc337111d932331b7b5f4ed7ba90e7e83f851bd1f
3+
size 17480914
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:0c553d897cc678314003b68cddbad7dd5c7c1e9cadcbe4fc428777ba492008cc
3+
size 15203443
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:9415e28593e8019c1f5228e78acb481a4944c8338243af2f7e6a40f582289fb8
3+
size 64022564
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:fc81002ec72bc6153a10ed8a0e5ea30fd9bd63237f46bb114fe4a97dced36b27
3+
size 56843532
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:71ceff3ebe913ec787250113261df1a9cddaf0c6ec881798f83a1ca4bb8b5cc8
3+
size 38922345
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:02db85e138fa184c791a3236ebc7fa1a6d35479237f066da6a1fc5d1ec34e924
3+
size 55685414
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:f28e6f299c61ddf802eee716335ab0e222404c988fabe018f139e4c3cfa2f768
3+
size 36837633
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:ee244c6f95ca0f9fc71a07b8ccd28ffc5d781e58b95de6c16dda5ac803e7e840
3+
size 36336421
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:5c15323f9c05bf0cabc1ba5fe4aade8076b719b46ed49040227ff9f9905cd265
3+
size 73269
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:cff04a874a334d96b0f9cecb6afe677e39ea0bdd48a3a68f41e87c18903a4b79
3+
size 65058
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:aae45907167f8bf7341dc59d7185d4f4f2ecefcd9b871d499e37d048f39749cf
3+
size 63071
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:df2b9e29b4e243a3087c2db17a518fdf9ae6d56e27ff0866e654180a06626bd6
3+
size 79934
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:dad4561c8cf7c9995beec7c670e061e3e2e9e88a5cc46202acf18d83c8a13899
3+
size 58202
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
version https://git-lfs.github.com/spec/v1
2+
oid sha256:4c622d0f29b88de92f13486cf3376f90d3ebda37fa5ebae05c529a8794b6b7f0
3+
size 46180

0 commit comments

Comments
 (0)