vania-janet/multiturn-rag-retrieval-data huggingface dataset:
Db2 Warehouse on Cloud driver package 

The Db2 Warehouse on Cloud driver package contains software for connecting client applications to a Db2 Warehouse on Cloud database.



 About 



* The driver package contains client interface tools, such as CLPPlus.
* The driver package also contains the following drivers:



* JDBC
* Node.js
* Ruby
* ODBC
* CLI
* .Net
* OLE DB
* And more ...









 Already installed? 

To verify that the driver package is already on your computer so that you can skip installing it again, or to determine the driver package version number, you can use the [db2level](https://www.ibm.com/support/knowledgecenter/SS6NHC/com.ibm.swg.im.dashdb.admin.cmd.doc/doc/r0009195.html) command.





 Downloading 

You can download the driver package for your operating system from the driver download center. Your web console provides a link to the site. In your web console, select Administration > Connections. Select the tab for your operating system.





 Installing 

Install the driver package for your operating system:



* [Installing on Linux or PowerLinux](https://cloud.ibm.com/docs/Db2whc?topic=Db2whc-dr_pkginstall_dr_pkg_linux)
* [Installing on Mac OS X](https://cloud.ibm.com/docs/Db2whc?topic=Db2whc-dr_pkginstall_dr_pkg_mac)
* [Installing on Windows](https://cloud.ibm.com/docs/Db2whc?topic=Db2whc-dr_pkginstall_dr_pkg_windows)





 Installing the driver package on Linux or PowerLinux 

You can install the Db2 Warehouse on Cloud driver package on Linux or PowerLinux by using installDSDriver.



 Prerequisites
* Determines whether the date/time value is after or the same as the date/time argument.
* Analogous to .after().







 .sameOrBefore(String date/time) 



* Determines whether the date/time value is before or the same as the date/time argument.







 Date and time calculations 

Use the following methods to calculate a date.



 Method Description 

 <date>.minusDays(_n_) Returns the date of the day n days before the specified date. 
 <date>.minusMonths(_n_) Returns the date of the day n months before the specified date. 
 <date>.minusYears(_n_) Returns the date of the day n years before the specified date. 
 <date>.plusDays(_n_) Returns the date of the day n days after the specified date. 
 <date>.plusMonths(_n_) Returns the date of the day n months after the specified date. 
 <date>.plusYears(n) Returns the date of the day n years after the specified date. 



where <date> is specified in the format yyyy-MM-dd or yyyy-MM-dd HH:mm:ss.

For example, to get tomorrow's date, specify the following expression:

${system_current_date}.plusDays(1)

Use the following methods to calculate a time.



 Method Description 

 <time>.minusHours(_n_) Returns the time n hours before the specified time. 
 <time>.minusMinutes(_n_) Returns the time n minutes before the specified time. 
 <time>.minusSeconds(_n_) Returns the time n seconds before the specified time. 
 <time>.plusHours(_n_) Returns the time n hours after the specified time. 
 <time>.plusMinutes(_n_) Returns the time n minutes after the specified time. 
 <time>.plusSeconds(_n_) Returns the time n secons after the specified time. 



where <time> is specified in the format HH:mm:ss.
Use interpolation either to fill missing values or to resample a time series at a different periodicity.

String matching
Match the values of a string time series against a string sequence (sequence matching) or a set of strings (item set matching).

Time functions
Convert a string or timestamp into a value of type Long.



* [Time reference systems](https://cloud.ibm.com/docs/services/sql-query?topic=sql-query-TRS)
A time reference system (TRS) defines the granularity of a time series (that is, the length of each timetick), and the date and time from which the timeticks are to be counted (that is, the time series start time).
* [Time series data types](https://cloud.ibm.com/docs/services/sql-query?topic=sql-query-ts_datatypes)
Time series functions operate on a wide variety of special data types that are designed especially for time series data.
* [Using SQL statements to process time series data](https://cloud.ibm.com/docs/services/sql-query?topic=sql-query-using_sql)
You can call time series functions from within SQL statements to manipulate and analyze time series data.
* [Time series functions](https://cloud.ibm.com/docs/services/sql-query?topic=sql-query-ts_functions) Use time series functions to process time series data.
Generally speaking, dates and timestamps are easier for humans to read, and timeticks are better suited for machine processing. Consider the following simple time series:

[(0, 1.0), (1, 2.0), (2, 4.0)]

Using a TRS that has a time granularity of 5 minutes and a start time of 50 years past the Unix epoch ("2020-01-01T00:00") results in the following new set of timestamps:

[(0=2020-01-01T00:00, 1.0), (1=2020-01-01T00:05, 2.0), (2=2020-01-01T00:10, 4.0)]

Note: When you use a TRS to convert a timestamp to a numeric representation, if the time granularity of the TRS is coarser than the granularity of the input timestamp, precision is lost. For example, if the time granularity of a timestamp is 1 second and you use a TRS with a granularity of 1 minute, converting the timestamp 9:05:43 results in a numeric representation that corresponds to 9:05:00 (the seconds are truncated). However, if the time granularity of the TRS is finer than an integral divisor of the granularity of the input time series (for example, 1 second for the TRS and 5 seconds for the input time series), forward projection is lossless.



 Associating a time series with a TRS 

To associate a time series with a TRS, use one of the creation functions that have WITH_TRS as part of their names. A time series can be associated with a TRS only at the time that the time series is created; a TRS cannot be added to a time series retroactively. However, you can use the TS_WITH_TRS function to change the TRS with which a time series is associated.





 Duplicate timestamps 

Changing the TRS can result in duplicate timestamps, for example when the time granularity of the new TRS is coarser than the granularity of the old TRS.
":"m2","label":"M_m2","name":"parametric_pulse","parameters":{"amp":-0.18486217867866572,0.19678916355881254],"duration":2240,"sigma":64,"width":1984},"pulse_shape":"gaussian_square","t0":0},{"ch":"m2","duration":1616,"name":"delay","t0":2240},{"ch":"m20","label":"M_m20","name":"parametric_pulse","parameters":{"amp":0.2027627962022292,-0.24756261526380255],"duration":2240,"sigma":64,"width":1984},"pulse_shape":"gaussian_square","t0":0},{"ch":"m20","duration":1616,"name":"delay","t0":2240},{"ch":"m21","label":"M_m21","name":"parametric_pulse","parameters":{"amp":-0.11848105465368988,-0.16112802266567214],"duration":2240,"sigma":64,"width":1984},"pulse_shape":"gaussian_square","t0":0},{"
See the following example: (1,(1, 7.2), (3, 4.5)]), (5,(5, 4.5), (5, 4.6), (5, 7.1)]), (7,(7, 3.9), (9, 1.1)])] || DoubleArraySegmentTimeSeries | DoubleArrayTimeSeries that is segmented. See the following example: (1,(1, 7.2, 8.74), (3, 4.5, 9.44)]), (5,(5, 4.5, 10.12), (5, 4.6, 12.91), (5, 7.1, 9.90)]), (7,(7, 3.9, 3.76)])] || StringTimeSeries | Time series with univariate observations of type String. See the following example: (1, "a"), (3, "b"), (5, "c"), (5, "d"), (5, "e"), (7, "f"), (9, "g")] || StringArrayTimeSeries | Time series with multivariate observations of type String. See the following example: (1, "a", "xq"]), (3, "b", "zr"]), (5, "c", "ms"]), (5, "d", "rt"]), (5, "e", "wu"]), (7, "f", "vv"]), (9, "g", "zw"])] || StringSegmentTimeSeries | StringTimeSeries that is segmented.
The following example changes the time tick to one hour which results in duplicate timestamps. The time series library handles duplicate timestamps seamlessly and provides convenience combiners to reduce values associated with duplicate timestamps into a single value, for example by calculating an average of the values grouped by duplicate timestamps.

y_hourly = y_minutely.with_trs(time_tick=datetime.timedelta(hours=1), start_time=zdt2)
print(y_minutely)
print(y_minutely.get_values(0,2))

print(y_hourly)
print(y_hourly.get_values(0,0))

This returns:

 y_minutely - minutely time series
TimeStamp: 2019-01-01T00:00Z Value: 1.0
TimeStamp: 2019-01-01T00:01Z Value: 2.0
TimeStamp: 2019-01-01T00:02Z Value: 4.0

 y_minutely has numeric timestamps 0, 1 and 2
[(0,1.0),(1,2.0),(2,4.0)]

 y_hourly - hourly time series has duplicate timestamps
TimeStamp: 2019-01-01T00:00Z Value: 1.0
TimeStamp: 2019-01-01T00:00Z Value: 2.0
TimeStamp: 2019-01-01T00:00Z Value: 4.0

 y_hourly has numeric timestamps of all 0
[(0,1.0),(0,2.0),(0,4.0)]

Duplicate timestamps can be optionally combined as follows:

y_hourly_averaged = y_hourly.transform(transformers.combine_duplicate_time_ticks(lambda x: sum(x)/len(x))
print(y_hourly_averaged.get_values(0,0))

This returns:

 values corresponding to the duplicate numeric timestamp 0 have been combined using average
 average = (1+2+4)/3 = 2.33
","name":"parametric_pulse","parameters":{"amp":-0.0008929161783406374,0.09654547381563526],"beta":-1.0515939347463945,"duration":160,"sigma":40},"pulse_shape":"drag","t0":0},{"ch":"d2","name":"CX_d2_u6","t0":160},{"ch":"d2","name":"fc","phase":-0.10779824245016983,"t0":1360},{"ch":"d2","name":"fc","phase":-3.141592653589793,"t0":1360},{"ch":"d2","label":"Y90p_d2","name":"parametric_pulse","parameters":{"amp":-0.0008929161783406374,0.09654547381563526],"beta":-1.0515939347463945,"duration":160,"sigma":40},"pulse_shape":"drag","t0":1360},{"ch":"d3","name":"fc","phase":-3.141592653589793,"t0":0},{"ch":"d3","label":"Y90p_d3","name":"parametric_pulse","parameters":{"amp
":18,15],"sequence":{"ch":"d15","name":"fc","phase":-1.5707963267948966,"t0":0},{"ch":"d15","label":"X90p_d15","name":"parametric_pulse","parameters":{"amp":0.09850270935496451,0.0019986417971878646],"beta":-0.7783748646463993,"duration":160,"sigma":40},"pulse_shape":"drag","t0":0},{"ch":"d15","label":"Xp_d15","name":"parametric_pulse","parameters":{"amp":0.1967638065540257,0],"beta":-1.1916515615716399,"duration":160,"sigma":40},"pulse_shape":"drag","t0":928},{"ch":"d15","label":"Y90m_d15","name":"parametric_pulse","parameters":{"amp":0.0019986417971878064,-0.09850270935496451],"beta":-0.7783748646463993,"duration":160,"sigma":40},"pulse_shape":"drag","t0":1856},{"ch":"d18","name":"fc","phase":-
* MM/dd/yyyy for 12/31/2016
* h a for 10pm



To return the day of the week:



* EEEE for Tuesday
* E for Tue
* u for day index (1 = Monday, ..., 7 = Sunday)



For example, this expression returns the value 17:30:00 as 5:30 PM:

${system_current_date}.reformatDateTime('h:mm a')

If the input string includes only a time, the default date 1970-01-01 is used in the output. If the input string includes only a date, the default time 12 AM (00:00) is used.





 .before(String date/time) 



* Determines whether a date/time value is before the specified date/time argument, as in this example:



${system_current_date}.before('2021-11-19')

You can compare a date with another date, or a time with another time. You can also compare a time with a date/time value, in which case the date is ignored and only the times are compared. Any other comparisons of mismatched values (for example, comparing a date with a time) return false, an exception is logged in output.debug.log_messages (which you can see in the assistant preview or in API responses).





 .after(String date/time) 



* Determines whether the date/time value is after the date/time argument.







 .sameMoment(String date/time) 



* Determines whether the date/time value is the same as the date/time argument.







 .sameOrAfter(String date/time) 



* Determines whether the date/time value is after or the same as the date/time argument.
* Analogous to .after().







 .sameOrBefore(String date/time) 



* Determines whether the date/time value is before or the same as the date/time argument.







 Date and time calculations 

Use the following methods to calculate a date.



 Method Description 

 <date>.minusDays(_n_) Returns the date of the day n days before the specified date.
Time reference systems 

A time reference system (TRS) defines the granularity of a time series (that is, the length of each timetick), and the date and time from which the timeticks are to be counted (that is, the time series start time).

Each TRS comprises two components:



* A granularity, which specifies the length of each timetick. For example, it might specify that each timetick in a time series represents 1 second, 5 minutes, 1 hour, 7 days, or any other length of time.
* A zoned datetime that specifies the start time of the TRS. For example, a start time of 2019-12-30T14:15:30 specifies that all timestamp increments are relative to 30 December 2019 at 14:15:30. A start time can be specified either as a TimestampType or as a string.



For a time series that uses a TRS, each timetick is relative to the TRS start time. See the following examples:



* If the TRS granularity is 1 day and the start time is 1990-01-01, a timetick of 10 corresponds to the date 1990-01-11 (that is, 10 days after 1990-01-01).
* If the TRS granularity is 1 millisecond and the start time is 1980-1-1T00:00:00.000, a timetick of 1546300800004 corresponds to the timestamp 2029-1-1T00:00:00.004.



Generally speaking, dates and timestamps are easier for humans to read, and timeticks are better suited for machine processing. Consider the following simple time series:

[(0, 1.0), (1, 2.0), (2, 4.0)]

Using a TRS that has a time granularity of 5 minutes and a start time of 50 years past the Unix epoch ("2020-01-01T00:00") results in the following new set of timestamps:
[(1, 1.5), (3, 2.5), (5, 3.5), (7, 4.5)]





 Time reference system (TRS) 

If necessary, use a [TRS](https://cloud.ibm.com/docs/services/sql-query?topic=sql-query-TRS) to specify the time granularity of and a start time for a time series. Consider the following input DoubleTimeSeries, which is stored in a table column with the name ts3.

[(1, 1.0), (3, 2.0), (5, 3.0), (7, 4.0), (9, 5.0)]

The following SELECT statement uses column ts3 and a TRS to generate a new DoubleTimeSeries that has a time granularity of 1 day and a start time of 00:00 on 01 January 1990.

SELECT TS_WITH_TRS(ts3, TS_TRS('PT24H', '1990-01-01T00:00:00'))
FROM cos://us/sql/timeseries.parquet STORED AS PARQUET
INTO <your target location> STORED AS PARQUET

Following, see the result of the example query:

[(1=1990-01-02T00:00:00, 1.0), (3=1990-01-04T00:00:00, 2.0), (5=1990-01-06T00:00:00, 3.0), (7=1990-01-08T00:00:00, 4.0), (9=1990-01-10T00:00:00, 5.0)]





 Cleaning 

Consider the following time series, which is stored in a table column with the name ts5:

[(1, NaN), (3, 2.0), (5, NaN), (7, 6.0), (8, 7.1)]

You can use the TS_FILLNA function to replace the null values in this time series, for example:
1002 Gloves 20.50 2020-10-23 16:05:00 
1003 Hat 18.99 2020-10-23 16:10:00 
1004 | Shoes | 125.25 | 2020-10-23 16:15:00 | 2020-10-23 17:00:00
(4 rows)

In this example, the price for Shoes has been modified after the specified AS OF timestamp. The system returns the previous valid row.

See also [the AS OF subclause](https://cloud.ibm.com/docs/netezza?topic=netezza-runningqueries_tt).





 Querying data for a specific time with BEFORE 

SELECT , _SYS_START, _SYS_END FROM <table_name> FOR SYSTEM_TIME BEFORE <TIMESTAMP EXPRESSION>;

Example:

SELECT , _SYS_START, _SYS_END FROM PRODUCT FOR SYSTEM_TIME BEFORE '2020-10-23 17:00:00';
PRODUCTID | DESCRIPTION | PRICE | _SYS_START | _SYS_END
-----------+-------------+--------+---------------------+---------------------
1001 Jacket 102.00 2020-10-23 16:00:00 
1002 Gloves 20.50 2020-10-23 16:05:00 
1003 Hat 18.99 2020-10-23 16:10:00 
1004 | Shoes | 125.25 | 2020-10-23 16:15:00 | 2020-10-23 17:00:00
(4 rows)

In this example, the price for Shoes has been modified after or at the BEFORE timestamp. The system returns the previous valid row.

See also [the BEFORE subclause](https://cloud.ibm.com/docs/netezza?topic=netezza-runningqueries_tt).





 Querying data for all rows over a time period
","phase":"-(P2)","t0":0},{"ch":"d2","label":"X90p_d2","name":"parametric_pulse","parameters":{"amp":0.09654547381563526,0.0008929161783406343],"beta":-1.0515939347463945,"duration":160,"sigma":40},"pulse_shape":"drag","t0":0},{"ch":"d2","name":"fc","phase":"-(P0)","t0":160},{"ch":"d2","label":"X90m_d2","name":"parametric_pulse","parameters":{"amp":-0.09654547381563526,-0.0008929161783406102],"beta":-1.0515939347463945,"duration":160,"sigma":40},"pulse_shape":"drag","t0":160},{"ch":"d2","name":"fc","phase":"-(P1)","t0":320},{"ch":"u2","name":"fc","phase":"-(P2)","t0":0},{"ch":"u2","name":"fc","phase":"-(P0)","t0":160},{"ch":"u2","
Using SQL statements to process time series data 

You can call time series functions from within SQL statements to manipulate and analyze time series data.



*  [Examples of common time series queries](https://cloud.ibm.com/docs/services/sql-query?topic=sql-query-examples_common) illustrate commonly used time series functions.
*  With [string matching](https://cloud.ibm.com/docs/services/sql-query?topic=sql-query-string_matching) you can match the values of a string time series against a string sequence (sequence matching) or against a set of strings (set matching).
*  [Using a temporal join or align](https://cloud.ibm.com/docs/services/sql-query?topic=sql-query-temporal_align)



*  A temporal join produces a single array time series based on the observations of the two input time series.
*  A temporal align produces two output time series with identical timeticks. In both cases, an interpolator is used to complete missing values.
":"fc","phase":-3.141592653589793,"t0":0},{"ch":"d1","label":"Y90p_d1","name":"parametric_pulse","parameters":{"amp":-0.0008741383451928899,0.10112982022801392],"beta":0.17618440502644936,"duration":160,"sigma":40},"pulse_shape":"drag","t0":0},{"ch":"d1","name":"CX_d1_u0","t0":160},{"ch":"d1","name":"fc","phase":-0.10881402985236886,"t0":1296},{"ch":"d1","name":"fc","phase":-3.141592653589793,"t0":1296},{"ch":"d1","label":"Y90p_d1","name":"parametric_pulse","parameters":{"amp":-0.0008741383451928899,0.10112982022801392],"beta":0.17618440502644936,"duration":160,"sigma":40},"pulse_shape":"drag","t0":1296},{"ch":"u0","name":"fc","phase":-3.141592653589793,"t0":
","t0":2240},{"ch":"m6","label":"M_m6","name":"parametric_pulse","parameters":{"amp":-0.3259343447066711,0.13293157239961056],"duration":2240,"sigma":64,"width":1984},"pulse_shape":"gaussian_square","t0":0},{"ch":"m6","duration":1616,"name":"delay","t0":2240},{"ch":"m7","label":"M_m7","name":"parametric_pulse","parameters":{"amp":0.11092421329597962,-0.17831382140672106],"duration":2240,"sigma":64,"width":1984},"pulse_shape":"gaussian_square","t0":0},{"ch":"m7","duration":1616,"name":"delay","t0":2240},{"ch":"m8","label":"M_m8","name":"parametric_pulse","parameters":{"amp":-0.13504226572319203,0.3765150547698602],"duration":2240,"sigma":64,"width":1984},"pulse_shape":"gaussian_square
[(1, 1.2, 2.0]), (3, 2.2, 2.8]), (5, 3.6, 3.4]), (7, 4.4, NaN]), (9, 5.4, 8.0])]

Where no matching timetick exists in the right table, this statement uses an interpolator of type TS_INTERPOLATOR_PREV to generate the missing value.
* The following SELECT statement left-outer-joins the two input DoubleTimeSeries to produce the following output DoubleArrayTimeSeries:

SELECT TS_LEFT_OUTER_JOIN(table1.col7, table2.col8, TS_INTERPOLATOR_PREV(-1.0))

Result:

[(3, 2.2, 2.8]), (5, 3.6, 3.4]), (7, 4.4, NaN])]

Where no matching timetick exists in the right table, this statement uses an interpolator of type TS_INTERPOLATOR_PREV to generate the missing value.
* The following SELECT statement full-joins the two input DoubleTimeSeries to produce the following output DoubleArrayTimeSeries:

SELECT TS_FULL_JOIN(table1.col7, table2.col8, TS_INTERPOLATOR_NEAREST(-1.0))

Result:

[(1, 1.2, 2.0]), (2, 1.2, 2.8]), (3, 2.2, 2.8]), (4, 2.2, 3.4]), (5, 3.6, 3.4]), (6, 3.6, NaN]), (7, 4.4, NaN]), (9, 5.4, 8.0])]

Where no matching timetick exists in one table, this statement uses an interpolator of type TS_INTERPOLATOR_NEAREST to generate the missing value.







 Temporal align 

A temporal align is similar to a temporal join, except that, instead of producing a single array time series based on the observations of the two input time series, it produces two output time series with identical timeticks:
","name":"fc","phase":1.3996339032141307,"t0":1136},{"ch":"u25","name":"fc","phase":-3.141592653589793,"t0":1136},{"ch":"u27","name":"fc","phase":-3.141592653589793,"t0":0},{"ch":"u27","label":"CX_u27","name":"parametric_pulse","parameters":{"amp":0.06396272420497219,-0.21556368620339103],"duration":976,"sigma":64,"width":720},"pulse_shape":"gaussian_square","t0":160},{"ch":"u27","name":"fc","phase":-0.08096603909239776,"t0":1136},{"ch":"u27","name":"fc","phase":-3.141592653589793,"t0":1136},{"ch":"u30","name":"fc","phase":-3.141592653589793,"t0":0},{"ch":"u30","name":"fc","phase":1.3996339032141307,"t0":1136},{"ch":"u30","name":"fc
,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],"name":"acquire","qubits":0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],"t0":0}]},{"name":"measure","qubits":21],"sequence":{"ch":"m21","label":"M_m21","name":"parametric_pulse","parameters":{"amp":-0.11848105465368988,-0.16112802266567214],"duration":2240,"sigma":64,"width":1984},"pulse_shape":"gaussian_square","t0":0},{"ch":"m21","duration":1616,"name":"delay","t0":2240},{"duration":2240,"memory_slot":0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],"name":"acquire","qubits":0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26],"t0":0}]},{"name":"measure","qubits":22]
}
}
Show more

Result: Today's date is 2018-03-09.







 Date and time calculations 

Use the following methods to calculate a date.



 Method Description 

 <date>.minusDays(n) Returns the date of the day n number of days before the specified date. 
 <date>.minusMonths(n) Returns the date of the day n number of months before the specified date. 
 <date>.minusYears(n) Returns the date of the day n number of years before the specified date. 
 <date>.plusDays(n) Returns the date of the day n number of days after the specified date. 
 <date>.plusMonths(n) Returns the date of the day n number of months after the specified date. 
 <date>.plusYears(n) Returns the date of the day n number of years after the specified date. 



where <date> is specified in the format yyyy-MM-dd or yyyy-MM-dd HH:mm:ss.

To get tomorrow's date, specify the following expression:

{
"output": {
"generic": [
{
"values":
{
"text": "Tomorrow's date is <? today().plusDays(1) ?>."
}
],
"response_type": "text",
"selection_policy": "sequential"
}
]
}
}

Result if today is March 9, 2018: Tomorrow's date is 2018-03-10.

To get the date for the day a week from today, specify the following expression:

{
"output": {
"generic": [
{
"values":
{
"text": "Next week's date is <? @sys-date.plusDays(7) ?>."
}
],
"response_type": "text",
"selection_policy": "sequential"
}
]
}
}
"row_index_begin" : 2,
"row_index_end" : 2,
"column_index_begin" : 4,
"column_index_end" : 4,
"row_header_ids" : "rowHeader-2244-2262" ],
"row_header_texts" : "Statutory tax rate" ],
"row_header_texts_normalized" : "Statutory tax rate" ],
"column_header_ids" : "colHeader-1270-1301", "colHeader-2057-2061" ],
"column_header_texts" : "Nine months ended September 30,", "2004" ],
"column_header_texts_normalized" : "Nine months ended September 30,", "Year 2" ],
"attributes": ]
},
...
],
"contexts": ] ! ! ! !! !!! ! ! ! !