Separating Signal From Noise With ICA
Written by Luke Chang
In this tutorial we will use ICA to explore which signals in our imaging data might be real signal or artifacts. We cover ICA in more depth in the multivariate decomposition subsection of the connectivity tutorial and also using simulations in the ICA tutorial.
To run this tutorial, we will be working with data that has already been preprocessed. If you are in Psych60, this has already been done for you . If you reading this online, then I recommend reading the preprocessing tutorial , or downloading the data using the Download Data tutorial.
For a brief overview of types of artifacts that might be present in your data, I recommend watching this video by Tor Wager and Martin Lindquist.
VIDEO
Loading Data
Ok, let's load a subject and run an ICA to explore signals that are present. Since we have completed preprocessing, our data should be realigned and also normalized to MNI stereotactic space. We will use the nltools package to work with this data in python.
sub = 'S01'
data = BrainData ( localizer . get_file ( sub , 'derivatives' , 'bold' ))
Warning: You are sending unauthenticated requests to the HF Hub. Please set a HF_TOKEN to enable higher rate limits and faster downloads.
More Preprocessing
Even though, we have technically already run most of the preprocessing there are a couple of more steps that will help make the ICA cleaner.
First, we will run a high pass filter to remove any low frequency scanner drift. We will pick a fairly arbitrary filter size of 0.0078hz (1/128s). We will also run spatial smoothing with a 6mm FWHM gaussian kernel to increase a signal to noise ratio at each voxel. These steps are very easy to run using nltools after the data has been loaded.
tr = localizer . get_tr ()
with mo . persistent_cache ( "ica_preprocess" ):
data_1 = data . filter ( sampling_freq = 1 / tr , high_pass = 1 / 128 )
data_1 = data_1 . smooth ( 6 )
Independent Component Analysis (ICA)
Ok, we are finally ready to run an ICA analysis on our data.
ICA attempts to perform blind source separation by decomposing a multivariate signal into additive subcomponents that are maximally independent.
We will be using the decompose() method on our BrainData instance. This runs the FastICA algorithm implemented by scikit-learn. You can choose whether you want to run spatial ICA by setting axis='voxels or temporal ICA by setting axis='images'. We also recommend running the whitening flat whiten=True. By default decompose will estimate the maximum components that are possible given the data. We recommend using a completely arbitrary heuristic of 20-30 components.
with mo . persistent_cache ( "ica_decompose" ):
# 10 components keeps the WASM-mode page snappy: the slider
# range stays small and ICA convergence in Pyodide is faster.
# Cranking back to 20-30 is one number-edit away if the reader
# wants more granularity.
# random_state pins FastICA so the components are identical across
# runs (the static build re-executes this notebook per slider value).
output = data_1 . decompose (
method = 'ica' , n_components = 10 , axis = 'images' , whiten = 'unit-variance' , random_state = 0
)
Viewing Components
We will use an interactive component viewer to explore the results of the analysis. Use the Component slider to select which component to view; the plot updates automatically as you move it.
Components have been standardized so we can threshold the brain in terms of standard deviations. We display voxels that load greater or less than 2 standard deviations on the component (a tighter or looser cutoff than 2.0 σ requires running this notebook in marimo edit).
The second plot is the time course of the voxels that load on the component. The x-axis is in TRs, which for this dataset is 2.4 sec.
The third plot is the powerspectrum of the timecourse. There is not a large range of possible values as we can only observe signals at the nyquist frequency, which is half of our sampling frequency of 1/2.4s (approximately 0.21hz) to a lower bound of 0.0078hz based on our high pass filter. There might be systematic oscillatory signals. Remember, that signals that oscillate a faster frequency than the nyquist frequency will be aliased. This includes physiological artifacts such as respiration and cardiac signals.
It is important to note that ICA cannot resolve the sign of the component. So make sure you consider signals that are positive as well as negative.
Exercises
For this tutorial, try to guess which components are signal and which are noise. Also, be sure to label the type of noise you think you might be seeing (e.g., head motion, scanner spikes, cardiac, respiration, etc.) Do this for subjects s01 and s02.
What features do you think are important to consider when making this judgment? Does the spatial map provide any useful information? What about the timecourse of the component? Does it map on to the plausible timecourse of the task.What about the power spectrum?
{"var_name":"component_slider","kind":"slider","values":[0,1,2,3,4,5,6,7,8,9],"default":0,"label":"Component"}
{"1":{"6":"\u003cdiv class=\"language-python highlight\"\u003e\u003cpre\u003e\u003cspan\u003e\u003c/span\u003e\u003ccode\u003e\u003cspan id=\"__span-0-1\"\u003e\u003ca id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;S01\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003cspan id=\"__span-0-2\"\u003e\u003ca id=\"__codelineno-0-2\" name=\"__codelineno-0-2\" href=\"#__codelineno-0-2\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003edata\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eBrainData\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elocalizer\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eget_file\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;derivatives\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;bold\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='1' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 2 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/4b7b35d96d5abd2af9ed76e9b19dd00e5e7edc332168e31c49ad88c79faf9b1f.bin\", \"size\": 909919}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.6512605190277094, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.6512605190277094, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_5f8d927b73994fee84e87f77fbfb1660\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.07167577743530273, \"max\": 14.335155487060547, \"value_low\": 2.0, \"value_high\": 2.6512605190277094, \"step\": 0.07167577743530273}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"7915206d60fd47e0a8569df22f3e9123\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[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,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"kwlMOQVIkLu2MSC77pRzu8TNILu4Iku7HGYyu38OpbvjALG7AWZfuxFWZrt3FbC6HRGlOmvZObk8BDK6EcFjuiMggTprmpE6kh4Hurxj7ziwGZu6y1GfuI9PrTkaERI7bxEBupCmIThYdzy5ev+uOgQAMzuNO5Q7dANFO/OP37lPxSk6eCaxuPE0NTrSgqq6qrApu3JjmbqqBYS6WzoZOoDre7YYgNu3Uxw7O5pWMTqGkTI6CkD7OisK5ToYhUe6NR9Xuc1VzTlu1vM518Aoumwo4LkaaRi70waYuhhnKbnIYH063cd9Oq7SlrqTS7G666o7uwZqo7q0RMK6kNO3uE+yIjpAXmE6opjlOkkdJzrAt2A6FSKkuWghKLrHg+664GPuN5ZeJbtQzns5evOcOlVobDsTMKY6gHY5umdrBLq/ods6MMyGOsgAZ7mDPOG6mnf6uSQiqLprSwu6RsAJu8yVEzko8qw68tiFOg7vBzseeRO6A/wtOt10D7teGkq6IzwKOgoEAjul25I6r54FO42EkjlQwNg6fTbBOQki9jkXJ5q7FWsMu5pjArsLkJK6mtOFOrDcYTjCK4u6ZItGu/wonjruYpm5A70zO1ln2Dq4WQ03Dt+FOjNopbouj7I6tNVXuuTFvjqeWB85pFdQunlIBDpjZQQ77t88O1hn3jg=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"/x8WOvVNzjpV/PI6FSWqOho4Nzu79wc5vhSKOYg/9jrvE5c66SUZOiblxzqueZw5ulRFOZi0HTaJUsk6WCWjOXDMnTg0ICM5Mi97NzbxjDpa4zc6KB98Oq2AMTloMRw6J4oROThl7Ti01+A4uMY+OWM3WDjX9qw5OZCnONyAKzndjiU4mlYHObjhAjh1eSA4ojiONxXH4zi0s2I5gxZsOQNDgjgNCbg4uiQbN7l+BzbQ4zY5LhTCN358sDa5+oQ4A7LvNpwhjzis66w4Csm/OL8REDlF0Go4uYP1OXP2vTnt25g5L/GPOVjiLzlFhYM5jIulOWF/hjlZ0jw4\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"2":{"12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='2' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 3 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/772b21ab38460a9336e167d38a15629888c47351e3119eac14fcaa239345313e.bin\", \"size\": 910781}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.113563718795775, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.113563718795775, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_290f2738dcc543f4bb848454b7344133\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.19563533782958983, \"max\": 39.12706756591797, \"value_low\": 2.0, \"value_high\": 2.113563718795775, \"step\": 0.19563533782958983}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"1cce85df133e47b188ef55c422aaf3a1\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[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,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"5CyhuBKYl7nss3S4yOroOYnFKjsRWQe7CV4hu2ojiLr/27w6pF+VOmpNkzptXKY65OxwulMc4bow5Cu6ONdiuG3siLrNBja6oo7NOdV1mDovgxA5cEkIOS2JeDruEhk6yNfDOrbFoDrwXIk60pWPuUK9o7pVL7Q52C4quyhbV7tqHKO6Eg41Oni4TjoOCyO5oximuQkqkTodC8U6W2oDO8YVjznASR26o+VWumSUxDp0F1O6itGEuuJ7pDoWNlI6vS7VueQ8XbrD5Oi6Hi1fuhweHTrFz4S65EWxuEXYDjszdU86H/KROs2Q2rqlfDO6+2cEOonqbLo3Cfk6zLSXuaCnFzqV3co5Cb/2uaBspDp8J225zOt2ut8Tl7qZ3y46Ozq2uhEp27mw55m3iXsFOsagnrqrRN06UKy8NlqKqDgwrcA6XAGSuhWz/jmkbUa60O2xOKKcEDlzKSe65T6YOlXY77k04fc50hioupwbC7s2jdk5P2yguo6hj7oOB5a6uMgxO+3zGDq8B1A74pNLumaWYDqL1eq6Yk5mOceWsrp2LBo6U6JCuigRRTrmt4s6pMQtOFYI0TqWj8i5xOoVOiTxMLnL7Y+5RD8BO1HYzbo1DEK5UERROu4UCjpKe/a5UsiHus7turnJEV669p8uOr1jNDlx2Hk6PDLAuiQCGbg=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"0BG6NPJZqTcIIEg4nfkLOMIFvzPZiYQ5t3UUOjXE0zie6ho6nChyOS6UhzeE2RQ6qMHPOaZczDhdics51BYPOQDVrTnX9Zc5v6J6OLKEVTniyZo4Jx6FOeB2kzUEjJ84QfRjOFY0tjlkK6A5KIQ2OT6KaTl/QU05hdeZOCjnVjhP7RU49/6GOJaY1jnhEdA5e+56OHd9hjejNkI2+ENHODvjQzlwzCM5Lq+jNpemOze1Y7E4KRiaOD53WzmPYXE3oUrnOAqp0jiX67A5k6AXOVEs7jgFv5Y3DvlKOCuk7Dk2TSU635v0NwSHGzflC6o4KxOxOZQS/Di7C2M5\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"3":{"12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='3' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 4 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/b3fc0c1624e58311d1da9a6fb7e1e214e0860b11ca4b85b51a83a76dc77fe938.bin\", \"size\": 914237}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.553162364959708, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.553162364959708, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_e691f9562bb943cab4014a87e1b7b039\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.15349130630493163, \"max\": 30.698261260986328, \"value_low\": 2.0, \"value_high\": 2.553162364959708, \"step\": 0.15349130630493163}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"d5ee41c53f4b4f56aae8d98b8a3e1ad1\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[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,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"5ILFt3QFGrvZN3u6zR6buvqMnjqj0yK6eIOxOoY/sDpiq24639q/OnI8yrrEY+m4CJADuilGCruPV9g6MUAvuWgt9rqel5e6or9bunjmGToQWHq6i00gucQSx7rINCc6gsbJOvINGTsYYAo7lYwvO6YnPjqxNsu5NE7gulz85roWFkq6A4eFurzA/jnxlgM7JLZfupEWzTpEmfG5DojjOSReCbrhFu06G8sPuurubbqS/Qi6mUYbuwDpzra6uaO6OiwLOmFcxroxFSS6PttDuvYQ+Dn3KcU5CPv9Opq+9DoUfD26Qn97OsvetrnTQ+A6LjqcOj656LrdLyy5wMPRt2aQAzvQi6m6ROayulhMDDmqFb25H5fFOoTs1LprIkS6tj78OhK+Czp+uE+6jAZ8OLmRE7skQ5E58CzJOkIf5Lr1sZI683AeuzXwADoMJyW6iJyvOXoc6Dr7JR26YPrmN9X/9zo6qXs6hiDqOpUNzLoCofi5T8gkukB49LpE/Pm5lcSmOvhsZrnc7PU6wC80uIxUiTpsP426cPn7Oc3u17pQAMq6UgqCOtCRMbnG05s6qUu4ugjbFrmOYv+5To0IuvFhqTp//KS6EhR8Ogq85LoX7YI6zEk2OdovqDpMb2U5bJT6ucZ1uDqMGdC6df3+ObPh2Tq6/F25bhVWOja4LTg=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"f35ONECeuzSm1y83MBzSOZ8e3Dh5YN83GNbHOGFpkjpap8g54WBHOcOVSzllUSQ5TBTQOYRLZjqzKPE1NyYkOI8nbTjVzNU5pEqBOGwwSjkc/EU4lHGMOWoEMjhJ25o5mZWRON/AtDkH+Kc4WUUzORGdBznp9hM5UcU8ORi/fzh4K0E4o6+LOLe1fzi2Luk4SKZQOCiG1jhSfTc3I0s3OYiTETiOV2Q5kmMkN/mWCDnKhAo5t9qhOAazCTn+vgU5vav5OSGY7Tnhd+g5YMbjODe7iDgkNJI5dQGKOf1fnDoepcA5PD6wOHzokzft/Bw4RDpROZidBjiMSpM5\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"4":{"12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='4' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 5 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/030962ce1d2e57ee3213c8f8cf8f5425e0efdadee8ffad377d32580b3abf1b3d.bin\", \"size\": 912511}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.402211284637451, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.402211284637451, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_138db52b73ec463f878d3a436f8dd224\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.12499564170837402, \"max\": 24.999128341674805, \"value_low\": 2.0, \"value_high\": 2.402211284637451, \"step\": 0.12499564170837402}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"553a86f3ac9c4ab8ab42e6db9bbccec0\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[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,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"cOGjOAzOM7suy3u6GN+JuW3VnbpEL2U6/e0pO6KcHDsiM9q6yp4Xu3gohbsN//W4nNW5OpKavzobVpM6pRDQup0sSLrfr026IkuVOkstCjojcNs62iwAu2BZJ7urWzu7TvTGuilDuLpTBR665IVnOuEtpTr6ww87BpxsOviIVjtEbUi5buudOqa3hzrvIRQ7PDM0ulUQybq3uzu7lQcnOqKpo7nsC9Q6WApfOgC4CbrAhU+6l+sPu12iI7qgxyu586yFOZKFuLoe3Fo6JoUvO5CFlDkSEwM7v6vDOnbLBLsW54+5X2ulugg8wDrcDOk6XPAOOY2Cz7okGKG5XYw5OqAQnDmN1Ry7dlIXu/9LQDrpkxG6chflOmo1dLoKCIu5om3QOqg3Vbnvgbk6SOpPuvldi7oXzYq6lgZCOianIbsqsXy6XWh5ujKxg7m6jQg6LwSTOttN4ToO+qK6wirAOvgs9Dlea8k6sIjnOjKk/bnw5uY4Ip6iukwYHjuoTPy5jAoSurxs1LqA9qO5XjbGOUDBWTcWZNq5IL29OF9B6brxWok6eo6jOv1f+zo/YgE64lzluoDZ/LlVjIW6IqmqOggTZrl0hdm6IGpauDxKNDisdDu5TkCtOlhVgzhyhXg6mhhrOdPjBrs5bHG69PSXOc70bLrAptg3QSLMuiJYiTg=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"ylHNONz3ZTmWrrQ21nCcOMlEzzmtVus5QO1VOnsoPjgp6U46HLnSOZiixTlujC46j2H6N3dwwzn+7n84aNOnOS9CMzqb5oY6Dtz1OQNe8zhe7r43l3u1OoY0KTowuvA5psDeOW2wLDi0ink53jOfOOWECTjtDo85kUShOHeu0zmCD504SkbhN/dGhDiRIwQ5C2qsNrc1OTkmS+s3jnYuODQmjzg6Sho58j4UORN/qDd6J5E4HIO/Oa+oSDc+u4o5GtzJOJ5hLTkT+LE56NaYN5T7KTnbgZ84885jOby2GTmzXtM56myyOFK++TlgDPg43sWbOdWa/TcfExU5\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"5":{"6":"\u003cdiv class=\"language-python highlight\"\u003e\u003cpre\u003e\u003cspan\u003e\u003c/span\u003e\u003ccode\u003e\u003cspan id=\"__span-0-1\"\u003e\u003ca id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;S01\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003cspan id=\"__span-0-2\"\u003e\u003ca id=\"__codelineno-0-2\" name=\"__codelineno-0-2\" href=\"#__codelineno-0-2\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003edata\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eBrainData\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elocalizer\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eget_file\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;derivatives\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;bold\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='5' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 6 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/07c325a5614a44c316a5804ebb7f16146890b73a8ff32296e5cceffa40d8bef2.bin\", \"size\": 912055}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.0, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.0, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_7426139b1de7473a96325df6aa03cfe6\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.15092900276184082, \"max\": 30.185800552368164, \"value_low\": 2.0, \"value_high\": 2.0, \"step\": 0.15092900276184082}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"1033c5e559c24224a0c749d51c157e18\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[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,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"oDcntgN+wbngbbY314Fsuooq6jh4aDG70MSQOARrFTqyI1Y6rfmyOvw0j7pgIcs6gKqoOjqmO7uenis6DwvvOBZv9zegPi24zIk7up4f3zlwoli6TjDSucGMsrqeUF06gGdPOEqOqDqgwdE5X+zUOpqx9jm8IQQ7CQm8usMSCbv0+e+5kLWSN96Iazq4F1G6DIsOOozosjpDOb24YIbsOlS+B7td+6M5gj5rOliQZLqlZcm6egyVusRkxTrENMO6kEDAusBp6blbfKk6jN22OaT7SDqU2f+6jlNqOgRQljr+zWc6M+yhurqGuLokFok6MnxlOjJELzqK7M86mFy4usjINToQiem31CKbOF0tjTqcP866QyEHOSSjFDnfJvu6KGAlOtIkhDrlysU6EKcduxq5wLqiu1w6Jor4uaKGIbrl40267OWJupeBHLpueT26YSwBO/fxwbkOIOY57tBzOqTfQTlH0y875G03Osx2YjqHUFK6KFMHuVyNkbrMwzk6RBPmOYz8EbqDihk60DR9uRA/OTrAYHu5fjOfOm0yL7p/lT66GLc7udmwwjoI4kW6uDrDOA3fj7qAmAC6Ji7rOdIW1rmaonW6Od/9OkcrJ7ug9nA4WXLCOp4WXbqaxcM6Qi8fu6CxKrmMbZu6FqVXOFQd6bqCdqy5SlTruiSr9jg=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"642DOKnUJjnKVRU5KXK4ODOQczlw6iQ4Vj9WN8y6jjlaMrs3bdPhOWyVAjnuuSc2UhbROEJIizlxPO44oGSxOHO2ATfaFjo24GCaN2G+wjjuif82KGGSOT3JKTp8tb82Vy9jN/rFXzYzu/g4gemkORAdHTrsb8E5rA+gOIzXuzg00BU5aDFcOPaFrzk7iv430B49OUbKADndFQ82twDSN9udkTnq0sA2XtxhOHChZjmu1NM4moh7OZcmXDidwNQ4+O+dOXarPzm8OI06ub61OOLpsDjUTos4rvmrOTso+Dk0gLw2oujtN2shljnMe+85CjhbOYxmozhs3Q85\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"6":{"12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='6' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 7 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/33fa2d2c7d964bc664cb9dabf4ac9af89d3904448295d17f1b01d9caed6b8382.bin\", \"size\": 910944}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.8646253013610816, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.8646253013610816, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_488ffb83edc14b7682fd55320f733d9c\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.0436714506149292, \"max\": 8.73429012298584, \"value_low\": 2.0, \"value_high\": 2.8646253013610816, \"step\": 0.0436714506149292}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"346f6d5bf6d248fd9d6dc91f42571e17\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[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,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"9mo7OR4XUrozv0672Dgwu5CRObt1AlS7E+UVu8CijLlomG06cx81OMxt/Dkt3LU6gjz5OuI43jqv29w6ntTKOd2jwrq4S7m66If3uuiXGbttf2y6sAZ6OW/rUzoOSts4prNyuuRgu7qeVwC7pd+lut0ArzqzNEs7do9CO2AirjqiFJ069ksEOpNFNLo8hDq60QW2OqaunzrUyh07lne7OvVIrDrXk8y6hQdAuyAaCrtGQOG6FAXJuZTERbqQ/a45+OwOutR+qDrg2fA5mu91Oq46zDnmvLO66/GjurACxbreHQG7/vbTusT7XzirUdQ6lzLbOhXDFjtIgRs7pII2OfBFkLrvEwW6XB9Bur5E+LpsTqy5rH+eOs9OFzuG+9g6tn0LO5dEPzsaGq463JHGupTW+brmqbW69roSu0alKrpBRRG7rf1JOlT7fTmAugY6FvUGuhasErpe9rE5TbVsuiqNhLrl6lm61GNouo7w3Dl8p3g6vkONOYqlmLrYgjK7/Doyu75jdjnP6986RpwpOibx+TpVjPY6IuiTOqJnP7qeUDu6nB/numo5crpUgZW4jiE8O0DvdzsaEQw7laM6OpxuPLpsBJS6U6sYuwC/4zj2s146NKJcOmXTbDoA7OA6kT+MOiB0lrfwz9y45IbYuOy2ULqcLeC5GLI2uRWlYLk=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"huocOPoLjjmDV6w6qs4eOXej6TnUVUY6SrPDOtm6jDlctgY5yXvGOrfPojpkePI5E8KCO5TnUTrfeYI6Nt/MOn4ZnTkAXfg55Uq5NrNOvDjGEdo4Du0lOarSgTYGgpw5FgP4NZnaiDi/CFw4fgEWOIU/MThujT43nVLxOGkE1Tja9ig50+JFOdhvNDm+8cM4zF6jOIVfUDg14TQ4wpBuOA1dYzduEDQ4Oq3zN4GS0TWs85I33m05N8pUyDftT344uIyRNjMXFTc0YS83sHM5OJ8nAThsUqI2OYejNsz8HznaGXE4XDhMN/iQSjdgfgQ5P6ksOKbJnjduvyA3\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"7":{"12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='7' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 8 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/b591f8bcb0d145ef28885aa1cd7c04dc37306b83ac108ea44ed55838eaecec45.bin\", \"size\": 905335}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.850837221145626, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.850837221145626, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_bac90da09ef74f4dbaf35410ee67eed9\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.06205772876739502, \"max\": 12.411545753479004, \"value_low\": 2.0, \"value_high\": 2.850837221145626, \"step\": 0.06205772876739502}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"b3b7c893f94a42b7901e0d98efa11073\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[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,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"o6fBtzLBGjregI06tq7XOklz9zqXeDI7efecOmgdxLj2way5KIgKurgcXLpQN5K4Q60ouv6pWbry2Fw5bmqxOCdcMLoF2sG52HzQufzAHjnAksI5nGO/uPI21DmjbG06+nCEOsGEUTrRx5Q6n4xeOZq8XrqMEA26KIBFOUgVrLr0JLW6VFoBuq+pR7puXBQ6AiLkuHJnSrpLrcO6mrdvuqrvOTqSe1A6HnDWOeT3EDloKt63XZsLuu3rXLkIpJe5/w7NOqb62zowPLA6n/ycOSDUZ7gJZyo6OB8vuV373rkToJa5WjgCOiRCOzqpWFw5IDkIOoJ/HbouNKO6D4osuhxMwbfP95i5FBBcOQ6/RTlewZs52Ly3uQDSfLcPiNs5MfObOiOvYrrIveq6x4pJum63SLr+rzM5JHfFuExqmrqNWpO6N523ufybyrhwGvU5UHDduOCWizlyTzg6MxBZOqZsuTp7cqA6n+RvOpZMZ7r73n66CF6VuYCnzTkhkgy6ptc0uynL6Lqo9yo5FPE5O7oRVDvtH1A7HpEpO6y2sDrKb9Y5N5OFuql2ALt/pce6h0K/ukynHLoQvLw6QzUIO25EVjqEZLq4mCOKujbykLoVqda61LniukOMArnIrgI61wwht9tG1Lp9SLS6/Rsou155K7uXp/m6PnIoupm0Urg=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"BQvONy+41DgBF1s67AehON4xyTmWEjU6dxczOZ+6rTqFBxo64LmKOeVpDTkCpaA6EE5bOmQ/LzmquUM6ZIdoOFktwzkgo884vp0DODHh0DhpohI5YQGxOd/iUjluFWM5t5e3NRTcqDgJQmc4L1myOGmT1DjDLgQ4rlWgOHqIwze/s7o4bYRqN11fITitkEA4MzIzOBd/TDYmHU82Wjj6NykQdjdB7bc3IB/1N4hLPzhSGS42eryoN7iQoTUW2vc3QrcJNzDq0zYals03NYKzNweV4zWuuCk1XsKtNiEbADgA6qo3nEeQN2fvyTfKaBE3mMdJNtXSvzaqcIo2\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"8":{"6":"\u003cdiv class=\"language-python highlight\"\u003e\u003cpre\u003e\u003cspan\u003e\u003c/span\u003e\u003ccode\u003e\u003cspan id=\"__span-0-1\"\u003e\u003ca id=\"__codelineno-0-1\" name=\"__codelineno-0-1\" href=\"#__codelineno-0-1\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;S01\u0026#39;\u003c/span\u003e\n\u003c/span\u003e\u003cspan id=\"__span-0-2\"\u003e\u003ca id=\"__codelineno-0-2\" name=\"__codelineno-0-2\" href=\"#__codelineno-0-2\"\u003e\u003c/a\u003e\u003cspan class=\"n\"\u003edata\u003c/span\u003e \u003cspan class=\"o\"\u003e=\u003c/span\u003e \u003cspan class=\"n\"\u003eBrainData\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003elocalizer\u003c/span\u003e\u003cspan class=\"o\"\u003e.\u003c/span\u003e\u003cspan class=\"n\"\u003eget_file\u003c/span\u003e\u003cspan class=\"p\"\u003e(\u003c/span\u003e\u003cspan class=\"n\"\u003esub\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;derivatives\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e,\u003c/span\u003e \u003cspan class=\"s1\"\u003e\u0026#39;bold\u0026#39;\u003c/span\u003e\u003cspan class=\"p\"\u003e))\u003c/span\u003e\n\u003c/span\u003e\u003c/code\u003e\u003c/pre\u003e\u003c/div\u003e","12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='8' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 9 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/ee641fd54c032899dfdb106f640c6672c20fa4d14d9f137ce51abd26d1d09ac2.bin\", \"size\": 909904}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.727791891098017, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.727791891098017, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_294036ec4fee49b59346c4fb674d0d80\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.04108082294464111, \"max\": 8.216164588928223, \"value_low\": 2.0, \"value_high\": 2.727791891098017, \"step\": 0.04108082294464111}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"b7d957c538cc4d6aa053c083aaf42c70\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[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,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"Rst4tv2iMjrtnKA7RWddOwPIOTtypTg7a+prO7g37TqELFW6R+OOudm7Qbo59Zg5YWUpO+kMLTpflVY6eQWIunP0l7qO8Lm5o6rvOKVo7TpyBHa68UpFOe5457pkdlq649oLu+Od27iGaZm5pPH9OrqpOjqw9JS59F17upCBvTl3oKE6LxQFuoQtiTlKR0+6t5YRux0J8ros4eq6LP6jOtqp6zgj5A+6UX2OOolpHLvZ5X+6cT30uBwbgjrvBdI5al/WOglkXjrcwCo7k+VKOnWCtbmYlfe5Z1hLuv1lBbtDnJ05WIDvOtq9mTp1how68n3luiFx0bnriaq6kAfauCAbELq5tG260fMQOtcClTq94tA67m+cOsFZtjrA2K828iCXOuW2l7oZokk4LsriuaCKCjnqihG7K90Uu760SrvEdTS5kd58Od/fgDra4Ik5sdshOztUCjsOZw47cVqEOulNjTqkacs5nR6Huid29zoYsEo6k74TO7tgJLvu84C7+ts1uwX71zkeH6E6YV+vOh3J0ro9MXe6pCtTuwMtTrta+Zu7+VOoum7VQLnttQ45GinoOguD8jrKtr06GYRSul0XwblUlma6MKDTOvIUITlanm86Va5MOwVoBjuDIR87JNhPOdls8TrXpMc66IvEOgnUKTsZ99w6DHRYOyzSNbk=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"5xCNOu2SIzu8v8462QwaOtLDMznkO8o6wkjQOX7wcDkLtp85uwFMOmNnZTq0tFY5hh8eOqpksDdqwe46FwjiOooEDTotlvg5cnG7OZd6lTiF6Ak6vN+0OS9Cljkdpbc5dtvGOMuhCTk/j4g4iwGSOB2Z2jjEOLE5O5sCOn0OYTnfxHc2dLnXOEXvnDjwDZk49jLUN4eeADj/5Us4XKuBOK2MJzdJG5Q4S5hKOPb9FjgMsu03ea14OHwX/jhde2E4t4XyNxL/EjkU5ZE47Hj5OM8CFzfGcTQ3eB63OctvpjmmWwc5cIk/ODeklziDLcc5ikvUOaVJlDlMHuU3\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"},"9":{"12":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cmarimo-slider data-initial-value='9' data-label='\u0026quot;\u0026#92;u003cspan class=\u0026#92;\u0026quot;markdown prose dark:prose-invert contents\u0026#92;\u0026quot;\u0026#92;u003e\u0026#92;u003cspan class=\u0026#92;\u0026quot;paragraph\u0026#92;\u0026quot;\u0026#92;u003eComponent\u0026#92;u003c/span\u0026#92;u003e\u0026#92;u003c/span\u0026#92;u003e\u0026quot;' data-start='0' data-stop='9' data-step='1' data-steps='[]' data-debounce='false' data-disabled='false' data-orientation='\u0026quot;horizontal\u0026quot;' data-show-value='true' data-include-input='false' data-full-width='false'\u003e\u003c/marimo-slider\u003e\n\u003c/div\u003e","13":"\u003cdiv class=\"marimo-book-output\"\u003e\n\u003cdiv style=\"display: flex;flex: 1;flex-direction: column;justify-content: flex-start;align-items: normal;flex-wrap: nowrap;gap: 0.5rem\"\u003e\u003cspan class=\"markdown prose dark:prose-invert contents\"\u003e\u003cspan class=\"paragraph\"\u003e\u003cstrong\u003eComponent 10 of 10\u003c/strong\u003e\u003c/span\u003e\u003c/span\u003e\u003cdiv class=\"marimo-book-anywidget\" data-buffers='[{\"path\": [\"atlas_bytes\"], \"empty\": true}, {\"path\": [\"bg_bytes\"], \"url\": \"assets/anywidget/c02b4524b0c54de882947847c0f613f75d3131c979be42145b19a46de3dece42.bin\", \"size\": 533672}, {\"path\": [\"statmap_bytes\"], \"url\": \"assets/anywidget/869519967470cc7275c233f0be494cb30e297f9db510e44382d0c8411324396e.bin\", \"size\": 913372}]' data-initial-value='{\"_anywidget_id\": \"nltools.data.braindata.viewer._NiivueViewer\", \"_dom_classes\": [], \"_model_module\": \"anywidget\", \"_model_module_version\": \"~0.10.*\", \"_model_name\": \"AnyModel\", \"_view_count\": null, \"_view_module\": \"anywidget\", \"_view_module_version\": \"~0.10.*\", \"_view_name\": \"AnyView\", \"atlas_lut\": {}, \"atlas_name\": \"\", \"atlas_outline\": 0.0, \"cal_max\": 2.775427989959716, \"cal_max_neg\": -2.0, \"cal_min\": 2.0, \"cal_min_neg\": -2.775427989959716, \"colorbar\": true, \"controls\": true, \"height\": 600, \"layout\": \"IPY_MODEL_937a4b8950ec442d8639f23ec8bbf37b\", \"mirror_negative\": true, \"niivue_opts\": {}, \"slice_type\": \"MULTIPLANAR\", \"slider_bounds\": {\"min\": 0.06423725605010987, \"max\": 12.847451210021973, \"value_low\": 2.0, \"value_high\": 2.775427989959716, \"step\": 0.06423725605010987}, \"statmap\": {\"name\": \"statmap\", \"colormap\": \"warm\", \"colormap_negative\": \"winter\", \"opacity\": 1.0}, \"tabbable\": null, \"tooltip\": null}' data-js-url='\"data:text/javascript;base64,Ly8gbmlpdnVlIHZpZXdlciBmb3IgQnJhaW5EYXRhLmlwbG90KCksIGRyaXZlbiB0aHJvdWdoIGFueXdpZGdldCdzICpzdGFuZGFyZCoKLy8gbW9kZWwgQVBJIChnZXQgLyBzZXQgLyBzYXZlX2NoYW5nZXMgLyBvbikgb25seSDigJQgbm8gaG9zdC1zcGVjaWZpYyBwcm90b2NvbAovLyAodGhlIGNvbnRyYXN0IHdpdGggaXB5bmlpdnVlLCBzZWUgY29zYW5sYWIvbmx0b29scyM0NTUpLCBzbyB0aGUgd2lkZ2V0IHdvcmtzCi8vIGlkZW50aWNhbGx5IGluIEp1cHl0ZXIgYW5kIGBtYXJpbW8gZWRpdGAuCi8vCi8vIG5paXZ1ZSBpdHNlbGYgaXMgcHVsbGVkIGZyb20gYSBDRE4gYXMgYW4gRVMgbW9kdWxlLiBgX2VzbWAgaXMgYW4gRVMgbW9kdWxlLCBzbwovLyBhIHRvcC1sZXZlbCBgaW1wb3J0YCBpcyByZXNvbHZlZCBieSB0aGUgYnJvd3NlciBhdCByZW5kZXIgdGltZS4gVGhlIHBpbiBrZWVwcwovLyB0aGUgQVBJIHN0YWJsZS4KaW1wb3J0IHsKICBOaWl2dWUsCiAgTlZJbWFnZSwKICBTTElDRV9UWVBFLAp9IGZyb20gImh0dHBzOi8vZXNtLnNoL0BuaWl2dWUvbmlpdnVlQDAuNjkuMCI7CgovLyBBIHRyYWl0bGV0cyBgQnl0ZXNgIHRyYWl0IGFycml2ZXMgaW4gSlMgYXMgYSBEYXRhVmlldyBvdmVyIGEgc2hhcmVkIGJ1ZmZlci4KLy8gbmlpdnVlIHdhbnRzIGEgc3RhbmRhbG9uZSBBcnJheUJ1ZmZlciwgc28gc2xpY2Ugb3V0IGV4YWN0bHkgdGhpcyB2aWV3J3MKLy8gd2luZG93LiBFbXB0eSBieXRlcyAoYW4gYWJzZW50IG9wdGlvbmFsIHZvbHVtZSkgeWllbGQgYG51bGxgLgpmdW5jdGlvbiBieXRlc1RvQXJyYXlCdWZmZXIoZHYpIHsKICBpZiAoIWR2IHx8IGR2LmJ5dGVMZW5ndGggPT09IDApIHJldHVybiBudWxsOwogIHJldHVybiBkdi5idWZmZXIuc2xpY2UoZHYuYnl0ZU9mZnNldCwgZHYuYnl0ZU9mZnNldCArIGR2LmJ5dGVMZW5ndGgpOwp9CgovLyBOVkltYWdlLm5ldyB0cmVhdHMgTmFOIGNhbF9taW4vY2FsX21heCBhcyAiYXV0byIgKHBlcmNlbnRpbGUtZGVyaXZlZCkuIEEgbnVsbAovLyB0cmFpdCAod2luZG93IGxlZnQgb24gYXV0bykgbWFwcyB0byBOYU47IGEgbnVtYmVyIHBhc3NlcyB0aHJvdWdoLgpmdW5jdGlvbiBvck5hTih4KSB7CiAgcmV0dXJuIHggPT09IG51bGwgfHwgeCA9PT0gdW5kZWZpbmVkID8gTmFOIDogeDsKfQoKLy8gQSB0cmFpdCBvciBzbGlkZXIgdmFsdWUgdGhhdCBpcyByZWFsbHkgYSBudW1iZXIgKGEgbnVsbC91bmRlZmluZWQgdHJhaXQgb3IgYQovLyBOYU4gcGFyc2UgbWVhbnMgImxlYXZlIHRoaXMgZWRnZSBhbG9uZSIpLgpmdW5jdGlvbiBpc051bWJlcih4KSB7CiAgcmV0dXJuIHggIT09IG51bGwgJiYgeCAhPT0gdW5kZWZpbmVkICYmICFOdW1iZXIuaXNOYU4oeCk7Cn0KCmZ1bmN0aW9uIGZvcm1hdFZhbHVlKHZhbHVlKSB7CiAgY29uc3QgbnVtYmVyID0gTnVtYmVyKHZhbHVlKTsKICBpZiAoIU51bWJlci5pc0Zpbml0ZShudW1iZXIpKSByZXR1cm4gIuKAlCI7CiAgcmV0dXJuIE51bWJlci5wYXJzZUZsb2F0KG51bWJlci50b1ByZWNpc2lvbig0KSkudG9TdHJpbmcoKTsKfQoKZXhwb3J0IGRlZmF1bHQgewogIGFzeW5jIHJlbmRlcih7IG1vZGVsLCBlbCB9KSB7CiAgICBlbC5zdHlsZS53aWR0aCA9ICIxMDAlIjsKCiAgICAvLyAtLS0gRE9NOiBvcHRpb25hbCB0aHJlc2hvbGQgY29udHJvbHMgKyB0aGUgV2ViR0wgY2FudmFzIC0tLS0tLS0tLS0tLS0tIC8vCiAgICBsZXQgZmxvb3JJbnB1dCA9IG51bGw7CiAgICBsZXQgY2VpbElucHV0ID0gbnVsbDsKICAgIGxldCBmbG9vclZhbHVlID0gbnVsbDsKICAgIGxldCBjZWlsVmFsdWUgPSBudWxsOwogICAgY29uc3QgYm91bmRzID0gbW9kZWwuZ2V0KCJzbGlkZXJfYm91bmRzIikgfHwge307CiAgICAvLyBUaGUgd2luZG93IGlzIGEgbWFnbml0dWRlIHdpbmRvdyBtaXJyb3JlZCBvbnRvIHRoZSBuZWdhdGl2ZSBsaW1iLCBhbmQgYQogICAgLy8gZmxvb3Igb2YgemVybyAob3IgYmVsb3cpIGFkbWl0cyBldmVyeSB6ZXJvLXZhbHVlZCB2b3hlbCDigJQgdGhlIHdob2xlCiAgICAvLyB2b2x1bWUgYm94IG91dHNpZGUgdGhlIG1hc2sgcGFpbnRzIGluIHRoZSBuZWdhdGl2ZSBjb2xvcm1hcC4gTmV2ZXIgbGV0CiAgICAvLyB0aGUgYXBwbGllZCBmbG9vciByZWFjaCB6ZXJvLCB3aGF0ZXZlciB0aGUgc2xpZGVyIG9yIHRoZSBtb2RlbCBzYXlzLgogICAgLy8KICAgIC8vIFRoZSBlcHNpbG9uIGlzIHRoZSBzbGlkZXIncyBvd24gbG93ZXIgYm91bmQsIHdoaWNoIFB5dGhvbiBndWFyYW50ZWVzIGlzCiAgICAvLyBzdHJpY3RseSBwb3NpdGl2ZSBhbmQgYXQgb3IgYmVsb3cgdGhlIHJlc29sdmVkIGBjYWxfbWluYC4gRGVyaXZpbmcgaXQKICAgIC8vIGhlcmUgaW5zdGVhZCAoZnJvbSB0aGUgc3RlcCwgc2F5KSB3b3VsZCBsZXQgdGhlIHR3byBkcmlmdCBhcGFydCBhbmQKICAgIC8vIHJhaXNlIHRoZSByZW5kZXJlZCBmbG9vciBhYm92ZSB0aGUgd2luZG93IFB5dGhvbiByZXNvbHZlZC4KICAgIGNvbnN0IGZsb29yRXBzID0gTnVtYmVyKGJvdW5kcy5taW4pID4gMCA/IE51bWJlcihib3VuZHMubWluKSA6IDFlLTk7CiAgICBjb25zdCBjbGFtcEZsb29yID0gKHYpID0+IE1hdGgubWF4KE1hdGguYWJzKHYpLCBmbG9vckVwcyk7CgogICAgaWYgKG1vZGVsLmdldCgiY29udHJvbHMiKSkgewogICAgICBjb25zdCBjb250cm9scyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgICBjb250cm9scy5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAiZGlzcGxheTpmbGV4O2dhcDowLjc1cmVtO2FsaWduLWl0ZW1zOmNlbnRlcjtmb250OjEycHgvMS40IHN5c3RlbS11aSwiICsKICAgICAgICAic2Fucy1zZXJpZjtwYWRkaW5nOjRweCAycHg7ZmxleC13cmFwOndyYXAiOwoKICAgICAgY29uc3QgbWtSYW5nZSA9IChsYWJlbFRleHQsIHZhbHVlKSA9PiB7CiAgICAgICAgY29uc3Qgd3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImxhYmVsIik7CiAgICAgICAgd3JhcC5zdHlsZS5jc3NUZXh0ID0KICAgICAgICAgICJkaXNwbGF5OmZsZXg7Z2FwOjAuNHJlbTthbGlnbi1pdGVtczpjZW50ZXI7ZmxleDoxIDEgMjAwcHgiOwogICAgICAgIGNvbnN0IHNwYW4gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgc3Bhbi50ZXh0Q29udGVudCA9IGxhYmVsVGV4dDsKICAgICAgICBjb25zdCBsb3cgPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzcGFuIik7CiAgICAgICAgbG93LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoYm91bmRzLm1pbiA/PyAwKTsKICAgICAgICBjb25zdCBoaWdoID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3BhbiIpOwogICAgICAgIGhpZ2gudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShib3VuZHMubWF4ID8/IDEpOwogICAgICAgIGNvbnN0IGlucHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaW5wdXQiKTsKICAgICAgICBpbnB1dC50eXBlID0gInJhbmdlIjsKICAgICAgICBpbnB1dC5taW4gPSBib3VuZHMubWluID8/IDA7CiAgICAgICAgaW5wdXQubWF4ID0gYm91bmRzLm1heCA/PyAxOwogICAgICAgIGlucHV0LnN0ZXAgPSBib3VuZHMuc3RlcCA/PyAwLjAxOwogICAgICAgIGlucHV0LnZhbHVlID0gdmFsdWUgPz8gYm91bmRzLm1pbiA/PyAwOwogICAgICAgIGlucHV0LnN0eWxlLmZsZXggPSAiMSI7CiAgICAgICAgY29uc3Qgb3V0cHV0ID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3V0cHV0Iik7CiAgICAgICAgb3V0cHV0LnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaW5wdXQudmFsdWUpOwogICAgICAgIG91dHB1dC5zdHlsZS5jc3NUZXh0ID0gIm1pbi13aWR0aDo2Y2g7dGV4dC1hbGlnbjpyaWdodDtmb250LXZhcmlhbnQtbnVtZXJpYzp0YWJ1bGFyLW51bXMiOwogICAgICAgIHdyYXAuYXBwZW5kKHNwYW4sIGxvdywgaW5wdXQsIGhpZ2gsIG91dHB1dCk7CiAgICAgICAgY29udHJvbHMuYXBwZW5kQ2hpbGQod3JhcCk7CiAgICAgICAgcmV0dXJuIFtpbnB1dCwgb3V0cHV0XTsKICAgICAgfTsKCiAgICAgIFtmbG9vcklucHV0LCBmbG9vclZhbHVlXSA9IG1rUmFuZ2UoIm1pbiIsIGJvdW5kcy52YWx1ZV9sb3cpOwogICAgICBbY2VpbElucHV0LCBjZWlsVmFsdWVdID0gbWtSYW5nZSgibWF4IiwgYm91bmRzLnZhbHVlX2hpZ2gpOwogICAgICBlbC5hcHBlbmRDaGlsZChjb250cm9scyk7CiAgICB9CgogICAgY29uc3QgaGVpZ2h0ID0gbW9kZWwuZ2V0KCJoZWlnaHQiKSB8fCA0MDA7CiAgICAvLyBuaWl2dWUncyByZXNpemUgb2JzZXJ2ZXIgc2l6ZXMgdGhlIGNhbnZhcyBmcm9tIGl0cyAqcGFyZW50KiBhbmQgcmV3cml0ZXMKICAgIC8vIHRoZSBjYW52YXMncyBvd24gaW5saW5lIGhlaWdodCB0byAxMDAlLCBzbyB0aGUgcmVxdWVzdGVkIGhlaWdodCBoYXMgdG8KICAgIC8vIGxpdmUgb24gYSB3cmFwcGVyLiBXaXRob3V0IGl0IHRoZSB2aWV3ZXIgY29sbGFwc2VzIHRvIHRoZSBwYXJlbnQncwogICAgLy8gbmF0dXJhbCBoZWlnaHQgKH4xNTBweCkgaW4gYW55IGhvc3QgdGhhdCBkb2Vzbid0IHNpemUgdGhlIHdpZGdldCBmb3IKICAgIC8vIHVzIOKAlCBzdGF0aWMvZXhwb3J0ZWQgcGFnZXMsIGlmcmFtZXMsIHBsYWluIEp1cHl0ZXIgb3V0cHV0IGFyZWFzLgogICAgY29uc3QgY2FudmFzV3JhcCA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImRpdiIpOwogICAgY2FudmFzV3JhcC5zdHlsZS5jc3NUZXh0ID0gYHdpZHRoOjEwMCU7aGVpZ2h0OiR7aGVpZ2h0fXB4YDsKICAgIGNvbnN0IGNhbnZhcyA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImNhbnZhcyIpOwogICAgY2FudmFzLnN0eWxlLmNzc1RleHQgPSAid2lkdGg6MTAwJTtoZWlnaHQ6MTAwJTtkaXNwbGF5OmJsb2NrIjsKICAgIGNhbnZhc1dyYXAuYXBwZW5kQ2hpbGQoY2FudmFzKTsKICAgIGVsLmFwcGVuZENoaWxkKGNhbnZhc1dyYXApOwoKICAgIC8vIC0tLSBuaWl2dWUgaW5zdGFuY2UgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIC8vCiAgICBjb25zdCBudiA9IG5ldyBOaWl2dWUoewogICAgICBpc0NvbG9yYmFyOiBtb2RlbC5nZXQoImNvbG9yYmFyIiksCiAgICAgIC4uLihtb2RlbC5nZXQoIm5paXZ1ZV9vcHRzIikgfHwge30pLAogICAgfSk7CiAgICBhd2FpdCBudi5hdHRhY2hUb0NhbnZhcyhjYW52YXMpOwoKICAgIC8vIEluZGV4IG9mIHRoZSBzdGF0IG1hcCBpbnNpZGUgbnYudm9sdW1lcyAoc2V0IGJ5IGxvYWRTdGFjayk7IHRoZSB0aHJlc2hvbGQKICAgIC8vIGNvbnRyb2xzIGRyaXZlIHRoaXMgdm9sdW1lJ3Mgd2luZG93LgogICAgbGV0IHN0YXRtYXBJZHggPSAtMTsKCiAgICAvLyBCdWlsZCB0aGUgdm9sdW1lIHN0YWNrIFtiYWNrZ3JvdW5kPywgc3RhdG1hcCwgYXRsYXM/XSBmcm9tIHRoZSBieXRlCiAgICAvLyB0cmFpdHMgKyBkaXNwbGF5IHBhcmFtcy4gUmVidWlsdCB3aGVuZXZlciBhbnkgdm9sdW1lJ3MgYnl0ZXMgY2hhbmdlLgogICAgYXN5bmMgZnVuY3Rpb24gbG9hZFN0YWNrKCkgewogICAgICB3aGlsZSAobnYudm9sdW1lcy5sZW5ndGgpIG52LnJlbW92ZVZvbHVtZUJ5SW5kZXgoMCk7CiAgICAgIHN0YXRtYXBJZHggPSAtMTsKCiAgICAgIGNvbnN0IGJnID0gYnl0ZXNUb0FycmF5QnVmZmVyKG1vZGVsLmdldCgiYmdfYnl0ZXMiKSk7CiAgICAgIGlmIChiZykgewogICAgICAgIGNvbnN0IGJnVm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoYmcsICJiYWNrZ3JvdW5kLm5paS5neiIsICJncmF5Iik7CiAgICAgICAgYmdWb2wuY29sb3JiYXJWaXNpYmxlID0gZmFsc2U7CiAgICAgICAgbnYuYWRkVm9sdW1lKGJnVm9sKTsKICAgICAgfQoKICAgICAgY29uc3Qgc3RhdCA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoInN0YXRtYXBfYnl0ZXMiKSk7CiAgICAgIGlmIChzdGF0KSB7CiAgICAgICAgY29uc3QgcCA9IG1vZGVsLmdldCgic3RhdG1hcCIpIHx8IHt9OwogICAgICAgIGNvbnN0IHZvbCA9IGF3YWl0IE5WSW1hZ2UubmV3KAogICAgICAgICAgc3RhdCwKICAgICAgICAgIChwLm5hbWUgfHwgInN0YXRtYXAiKSArICIubmlpLmd6IiwKICAgICAgICAgIHAuY29sb3JtYXAgfHwgIndhcm0iLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICAgIG51bGwsCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9taW4iKSksCiAgICAgICAgICBvck5hTihtb2RlbC5nZXQoImNhbF9tYXgiKSksCiAgICAgICAgKTsKICAgICAgICBpZiAoTnVtYmVyLmlzRmluaXRlKHZvbC5jYWxfbWluKSkgdm9sLmNhbF9taW4gPSBjbGFtcEZsb29yKHZvbC5jYWxfbWluKTsKICAgICAgICBpZiAocC5jb2xvcm1hcF9uZWdhdGl2ZSkgdm9sLmNvbG9ybWFwTmVnYXRpdmUgPSBwLmNvbG9ybWFwX25lZ2F0aXZlOwogICAgICAgIHZvbC5jYWxfbWluTmVnID0gb3JOYU4obW9kZWwuZ2V0KCJjYWxfbWluX25lZyIpKTsKICAgICAgICB2b2wuY2FsX21heE5lZyA9IG9yTmFOKG1vZGVsLmdldCgiY2FsX21heF9uZWciKSk7CiAgICAgICAgdm9sLmNvbG9yYmFyVmlzaWJsZSA9IHRydWU7CiAgICAgICAgc3RhdG1hcElkeCA9IG52LnZvbHVtZXMubGVuZ3RoOwogICAgICAgIG52LmFkZFZvbHVtZSh2b2wpOwogICAgICB9CgogICAgICBjb25zdCBhdGxhcyA9IGJ5dGVzVG9BcnJheUJ1ZmZlcihtb2RlbC5nZXQoImF0bGFzX2J5dGVzIikpOwogICAgICBpZiAoYXRsYXMpIHsKICAgICAgICBjb25zdCBwID0gbW9kZWwuZ2V0KCJzdGF0bWFwIikgfHwge307CiAgICAgICAgY29uc3Qgdm9sID0gYXdhaXQgTlZJbWFnZS5uZXcoCiAgICAgICAgICBhdGxhcywKICAgICAgICAgIChtb2RlbC5nZXQoImF0bGFzX25hbWUiKSB8fCAiYXRsYXMiKSArICIubmlpLmd6IiwKICAgICAgICAgICIiLAogICAgICAgICAgcC5vcGFjaXR5ID8/IDEuMCwKICAgICAgICApOwogICAgICAgIGNvbnN0IGx1dCA9IG1vZGVsLmdldCgiYXRsYXNfbHV0Iik7CiAgICAgICAgaWYgKGx1dCAmJiBsdXQubGFiZWxzKSB2b2wuc2V0Q29sb3JtYXBMYWJlbChsdXQpOwogICAgICAgIHZvbC5jb2xvcmJhclZpc2libGUgPSBmYWxzZTsKICAgICAgICBudi5hZGRWb2x1bWUodm9sKTsKICAgICAgfQoKICAgICAgbnYub3B0cy5hdGxhc091dGxpbmUgPSBtb2RlbC5nZXQoImF0bGFzX291dGxpbmUiKSB8fCAwOwogICAgICBudi51cGRhdGVHTFZvbHVtZSgpOwogICAgfQoKICAgIGF3YWl0IGxvYWRTdGFjaygpOwogICAgbnYuc2V0U2xpY2VUeXBlKFNMSUNFX1RZUEVbbW9kZWwuZ2V0KCJzbGljZV90eXBlIildID8/IFNMSUNFX1RZUEUuTVVMVElQTEFOQVIpOwoKICAgIC8vIC0tLSB0aHJlc2hvbGQgY29udHJvbHMgLT4gbmlpdnVlICsgUHl0aG9uIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gLy8KICAgIC8vIEFwcGxpZXMgdGhlIGNsYW1wZWQgd2luZG93IHRvIG5paXZ1ZSBhbmQgcmV0dXJucyBpdCwgc28gdGhlIGNhbGxlcnMgdGhhdAogICAgLy8gd3JpdGUgYmFjayB0byBQeXRob24gc2VuZCB3aGF0IHdhcyByZW5kZXJlZCByYXRoZXIgdGhhbiB3aGF0IHdhcyBkcmFnZ2VkLgogICAgZnVuY3Rpb24gYXBwbHlXaW5kb3coKSB7CiAgICAgIGlmIChzdGF0bWFwSWR4IDwgMCkgcmV0dXJuIG51bGw7CiAgICAgIGNvbnN0IHZvbCA9IG52LnZvbHVtZXNbc3RhdG1hcElkeF07CiAgICAgIGNvbnN0IGxvUmF3ID0gZmxvb3JJbnB1dCA/IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9taW4iKTsKICAgICAgY29uc3QgaGlSYXcgPSBjZWlsSW5wdXQgPyBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSkgOiBtb2RlbC5nZXQoImNhbF9tYXgiKTsKICAgICAgLy8gQm90aCBlZGdlcyBhcmUgbWFnbml0dWRlczogdGhlIGZsb29yIHN0YXlzIGFib3ZlIHplcm8gYW5kIHRoZSBjZWlsaW5nCiAgICAgIC8vIHN0YXlzIGFib3ZlIHRoZSBmbG9vci4KICAgICAgY29uc3QgbG8gPSBpc051bWJlcihsb1JhdykgPyBjbGFtcEZsb29yKGxvUmF3KSA6IG51bGw7CiAgICAgIGNvbnN0IGZsb29yID0gbG8gPT09IG51bGwgPyB2b2wuY2FsX21pbiA6IGxvOwogICAgICBjb25zdCBoaSA9IGlzTnVtYmVyKGhpUmF3KQogICAgICAgID8gTWF0aC5tYXgoTWF0aC5hYnMoaGlSYXcpLCBmbG9vciArIGZsb29yRXBzKQogICAgICAgIDogbnVsbDsKICAgICAgaWYgKGxvICE9PSBudWxsKSB2b2wuY2FsX21pbiA9IGxvOwogICAgICBpZiAoaGkgIT09IG51bGwpIHZvbC5jYWxfbWF4ID0gaGk7CiAgICAgIGlmIChtb2RlbC5nZXQoIm1pcnJvcl9uZWdhdGl2ZSIpKSB7CiAgICAgICAgaWYgKGhpICE9PSBudWxsKSB2b2wuY2FsX21pbk5lZyA9IC1oaTsKICAgICAgICBpZiAobG8gIT09IG51bGwpIHZvbC5jYWxfbWF4TmVnID0gLWxvOwogICAgICB9IGVsc2UgaWYgKGxvICE9PSBudWxsKSB7CiAgICAgICAgdm9sLmNhbF9tYXhOZWcgPSAtbG87CiAgICAgIH0KICAgICAgbnYudXBkYXRlR0xWb2x1bWUoKTsKICAgICAgcmV0dXJuIHsgbG8sIGhpIH07CiAgICB9CgogICAgaWYgKGZsb29ySW5wdXQpIHsKICAgICAgZmxvb3JJbnB1dC5hZGRFdmVudExpc3RlbmVyKCJpbnB1dCIsICgpID0+IHsKICAgICAgICBjb25zdCBhcHBsaWVkID0gYXBwbHlXaW5kb3coKTsKICAgICAgICBjb25zdCBsbyA9IGFwcGxpZWQgJiYgYXBwbGllZC5sbyAhPT0gbnVsbAogICAgICAgICAgPyBhcHBsaWVkLmxvCiAgICAgICAgICA6IHBhcnNlRmxvYXQoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgICAgZmxvb3JWYWx1ZS50ZXh0Q29udGVudCA9IGZvcm1hdFZhbHVlKGxvKTsKICAgICAgICBtb2RlbC5zZXQoImNhbF9taW4iLCBsbyk7CiAgICAgICAgbW9kZWwuc2F2ZV9jaGFuZ2VzKCk7CiAgICAgIH0pOwogICAgfQogICAgaWYgKGNlaWxJbnB1dCkgewogICAgICBjZWlsSW5wdXQuYWRkRXZlbnRMaXN0ZW5lcigiaW5wdXQiLCAoKSA9PiB7CiAgICAgICAgY29uc3QgYXBwbGllZCA9IGFwcGx5V2luZG93KCk7CiAgICAgICAgY29uc3QgaGkgPSBhcHBsaWVkICYmIGFwcGxpZWQuaGkgIT09IG51bGwKICAgICAgICAgID8gYXBwbGllZC5oaQogICAgICAgICAgOiBwYXJzZUZsb2F0KGNlaWxJbnB1dC52YWx1ZSk7CiAgICAgICAgY2VpbFZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoaGkpOwogICAgICAgIG1vZGVsLnNldCgiY2FsX21heCIsIGhpKTsKICAgICAgICBtb2RlbC5zYXZlX2NoYW5nZXMoKTsKICAgICAgfSk7CiAgICB9CgogICAgLy8gLS0tIFB5dGhvbiAtPiBKUyByZWFjdGl2aXR5IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAvLwogICAgY29uc3Qgb25CeXRlcyA9ICgpID0+IGxvYWRTdGFjaygpOwogICAgbW9kZWwub24oImNoYW5nZTpzdGF0bWFwX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmJnX2J5dGVzIiwgb25CeXRlcyk7CiAgICBtb2RlbC5vbigiY2hhbmdlOmF0bGFzX2J5dGVzIiwgb25CeXRlcyk7CgogICAgbW9kZWwub24oImNoYW5nZTpjYWxfbWluIiwgKCkgPT4gewogICAgICBpZiAoZmxvb3JJbnB1dCkgZmxvb3JJbnB1dC52YWx1ZSA9IG1vZGVsLmdldCgiY2FsX21pbiIpID8/IGZsb29ySW5wdXQudmFsdWU7CiAgICAgIGlmIChmbG9vclZhbHVlKSBmbG9vclZhbHVlLnRleHRDb250ZW50ID0gZm9ybWF0VmFsdWUoZmxvb3JJbnB1dC52YWx1ZSk7CiAgICAgIGFwcGx5V2luZG93KCk7CiAgICB9KTsKICAgIG1vZGVsLm9uKCJjaGFuZ2U6Y2FsX21heCIsICgpID0+IHsKICAgICAgaWYgKGNlaWxJbnB1dCkgY2VpbElucHV0LnZhbHVlID0gbW9kZWwuZ2V0KCJjYWxfbWF4IikgPz8gY2VpbElucHV0LnZhbHVlOwogICAgICBpZiAoY2VpbFZhbHVlKSBjZWlsVmFsdWUudGV4dENvbnRlbnQgPSBmb3JtYXRWYWx1ZShjZWlsSW5wdXQudmFsdWUpOwogICAgICBhcHBseVdpbmRvdygpOwogICAgfSk7CiAgICBtb2RlbC5vbigiY2hhbmdlOnNsaWNlX3R5cGUiLCAoKSA9PgogICAgICBudi5zZXRTbGljZVR5cGUoU0xJQ0VfVFlQRVttb2RlbC5nZXQoInNsaWNlX3R5cGUiKV0gPz8gU0xJQ0VfVFlQRS5NVUxUSVBMQU5BUiksCiAgICApOwogICAgbW9kZWwub24oImNoYW5nZTpjb2xvcmJhciIsICgpID0+IHsKICAgICAgbnYub3B0cy5pc0NvbG9yYmFyID0gbW9kZWwuZ2V0KCJjb2xvcmJhciIpOwogICAgICBudi5kcmF3U2NlbmUoKTsKICAgIH0pOwogICAgbW9kZWwub24oImNoYW5nZTphdGxhc19vdXRsaW5lIiwgKCkgPT4gewogICAgICBudi5vcHRzLmF0bGFzT3V0bGluZSA9IG1vZGVsLmdldCgiYXRsYXNfb3V0bGluZSIpIHx8IDA7CiAgICAgIG52LmRyYXdTY2VuZSgpOwogICAgfSk7CgogICAgLy8gbmlpdnVlIGhhcyBubyBkZXN0cm95KCk7IGRyb3AgdGhlIFdlYkdMIGNvbnRleHQgb24gdGVhcmRvd24gLyByZS1yZW5kZXIKICAgIC8vIHNvIHJlcGVhdGVkIGNlbGwgcnVucyBkb24ndCBsZWFrIEdMIGNvbnRleHRzIChicm93c2VycyBjYXAgdGhlbSkuCiAgICByZXR1cm4gKCkgPT4gewogICAgICBjYW52YXMKICAgICAgICAuZ2V0Q29udGV4dCgid2ViZ2wyIikKICAgICAgICA/LmdldEV4dGVuc2lvbigiV0VCR0xfbG9zZV9jb250ZXh0IikKICAgICAgICA/Lmxvc2VDb250ZXh0KCk7CiAgICB9OwogIH0sCn07Cg==\"' data-label=\"null\" data-model-id='\"540848bc22204b768e969d68373dcb9c\"'\u003e\u003c/div\u003e\u003cdiv class=\"marimo-book-plotly\" data-config=\"{}\" data-figure='{\"data\":[{\"hovertemplate\":\"TR: %{x}\\u003cbr\\u003eIntensity: %{y:.4f}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#EF553B\",\"width\":2},\"mode\":\"lines\",\"name\":\"Timecourse\",\"x\":[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,27,28,29,30,31,32,33,34,35,36,37,38,39,40,41,42,43,44,45,46,47,48,49,50,51,52,53,54,55,56,57,58,59,60,61,62,63,64,65,66,67,68,69,70,71,72,73,74,75,76,77,78,79,80,81,82,83,84,85,86,87,88,89,90,91,92,93,94,95,96,97,98,99,100,101,102,103,104,105,106,107,108,109,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127],\"y\":{\"dtype\":\"f4\",\"bdata\":\"za07uCmtaDpVagO7xcNruj50Zro2I5K6FULvunx7hrnwQAE6wH8DuqicbDrH9rC6odcaOUv0rzmlnBu6AsOJOueuXLq6b6m6IVSOusu1Jbmcl4G6NxpfOj6GwjrUX9k6PLADO5ccAjuRQAk7mt7MOoxTErm1GGe6ApSHuBw1eLqsHz26LdO+uU2FWrpLDEK7jxCoOrZqTDquPsE6kGJxuUUoXzqw1zG680ZxulZdVzpXYyE66m0guRDzBTpLrIY64quOOTZevDqPhhQ6KznxupIBWbpMlDa7dr8bu53NS7ohXm66KiOeuhSgjboGtwa6Tx15Oo3pOTqqDoc6jDvaukj/JLmp99g5EQo/Ojvr8jh0DbM6oIsEuoekmDo884c6tCFvuuYrrTqVTju63bFburJE6rqu1LU5JNT1uqJ0jToYPJk4Ne4tOvN9mjrgH6A6vHU7O58fpDqt9G87MfxDOxc/8TqZIRw7KntYOST9/zpWICQ7AdzZOkDka7utOHi7J4hqu447grt5lFK7QDK5u89Q/rptSoC7+suwuqo9Vbt2MbY6T5h3Oh53qTpXdBQ6c9C5OnstnTqlIHc6NM17OnTvgrkAUI46whYXO/ORCzv71806L2r4OrfrJjrWoQ46MkKRuRaxGLqcYSC6qOFLOfeXvrow95+6eyeQuny+gLk=\"},\"type\":\"scatter\",\"xaxis\":\"x\",\"yaxis\":\"y\"},{\"hovertemplate\":\"Freq: %{x:.4f} Hz\\u003cbr\\u003ePower: %{y:.4e}\\u003cextra\\u003e\\u003c/extra\\u003e\",\"line\":{\"color\":\"#636EFA\",\"width\":2},\"mode\":\"lines\",\"name\":\"Power\",\"x\":{\"dtype\":\"f8\",\"bdata\":\"q6qqqqqqaj+rqqqqqqp6PwAAAAAAAIQ/q6qqqqqqij+rqqqqqqqQPwAAAAAAAJQ/VlVVVVVVlz+rqqqqqqqaPwAAAAAAAJ4/q6qqqqqqoD9WVVVVVVWiPwAAAAAAAKQ/q6qqqqqqpT9WVVVVVVWnPwAAAAAAAKk/q6qqqqqqqj9WVVVVVVWsPwAAAAAAAK4/q6qqqqqqrz+rqqqqqqqwPwAAAAAAgLE/VlVVVVVVsj+rqqqqqiqzPwAAAAAAALQ/VlVVVVXVtD+rqqqqqqq1PwAAAAAAgLY/VlVVVVVVtz+rqqqqqiq4PwAAAAAAALk/VlVVVVXVuT+rqqqqqqq6PwAAAAAAgLs/VlVVVVVVvD+rqqqqqiq9PwAAAAAAAL4/VlVVVVXVvj+rqqqqqqq/PwAAAAAAQMA/q6qqqqqqwD9WVVVVVRXBPwAAAAAAgME/q6qqqqrqwT9WVVVVVVXCPwAAAAAAwMI/q6qqqqoqwz9WVVVVVZXDPwAAAAAAAMQ/q6qqqqpqxD9WVVVVVdXEPwAAAAAAQMU/q6qqqqqqxT9WVVVVVRXGPwAAAAAAgMY/q6qqqqrqxj9WVVVVVVXHPwAAAAAAwMc/q6qqqqoqyD9WVVVVVZXIPwAAAAAAAMk/q6qqqqpqyT9WVVVVVdXJPwAAAAAAQMo/\"},\"y\":{\"dtype\":\"f4\",\"bdata\":\"uIjeN4qhSjnHSQQ7eAA8OwYtCztWV5M7ziyPOSlucDq9pIU4kT/wOVrMtTpuTgE5/mBDOPRahTW6/aY4G6M/NYsYbDl1FBw5BS2rN/zbeDjNiRA6a7fGOCeVhzlTmpE49Kp2ONSLITcKZRI3z7yNOQyfmTlE3mM4YzawN9TX2jiJATM4ot8GOOI8nzgodQw57pAIN+rkQjgzy1o4gSmNNygKOzmWrwE6apnRN9fTvDj1i2g4BCmTN8NHwDhycRI52O9sOAqeHjfSgAA2UScCOAgH7TX+LRI5kTfOODqqxznI1PI5wMQMOVGo7Tj1f4Q5Q/A+OY5ynDmTVLY3\"},\"type\":\"scatter\",\"xaxis\":\"x2\",\"yaxis\":\"y2\"}],\"layout\":{\"template\":{\"data\":{\"histogram2dcontour\":[{\"type\":\"histogram2dcontour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"choropleth\":[{\"type\":\"choropleth\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"histogram2d\":[{\"type\":\"histogram2d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"heatmap\":[{\"type\":\"heatmap\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"contourcarpet\":[{\"type\":\"contourcarpet\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"contour\":[{\"type\":\"contour\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"surface\":[{\"type\":\"surface\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"},\"colorscale\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]]}],\"mesh3d\":[{\"type\":\"mesh3d\",\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}],\"scatter\":[{\"fillpattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2},\"type\":\"scatter\"}],\"parcoords\":[{\"type\":\"parcoords\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolargl\":[{\"type\":\"scatterpolargl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"bar\":[{\"error_x\":{\"color\":\"#2a3f5f\"},\"error_y\":{\"color\":\"#2a3f5f\"},\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"bar\"}],\"scattergeo\":[{\"type\":\"scattergeo\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterpolar\":[{\"type\":\"scatterpolar\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"histogram\":[{\"marker\":{\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"histogram\"}],\"scattergl\":[{\"type\":\"scattergl\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatter3d\":[{\"type\":\"scatter3d\",\"line\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermap\":[{\"type\":\"scattermap\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattermapbox\":[{\"type\":\"scattermapbox\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scatterternary\":[{\"type\":\"scatterternary\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"scattercarpet\":[{\"type\":\"scattercarpet\",\"marker\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}}}],\"carpet\":[{\"aaxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"baxis\":{\"endlinecolor\":\"#2a3f5f\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"minorgridcolor\":\"white\",\"startlinecolor\":\"#2a3f5f\"},\"type\":\"carpet\"}],\"table\":[{\"cells\":{\"fill\":{\"color\":\"#EBF0F8\"},\"line\":{\"color\":\"white\"}},\"header\":{\"fill\":{\"color\":\"#C8D4E3\"},\"line\":{\"color\":\"white\"}},\"type\":\"table\"}],\"barpolar\":[{\"marker\":{\"line\":{\"color\":\"#E5ECF6\",\"width\":0.5},\"pattern\":{\"fillmode\":\"overlay\",\"size\":10,\"solidity\":0.2}},\"type\":\"barpolar\"}],\"pie\":[{\"automargin\":true,\"type\":\"pie\"}]},\"layout\":{\"autotypenumbers\":\"strict\",\"colorway\":[\"#636efa\",\"#EF553B\",\"#00cc96\",\"#ab63fa\",\"#FFA15A\",\"#19d3f3\",\"#FF6692\",\"#B6E880\",\"#FF97FF\",\"#FECB52\"],\"font\":{\"color\":\"#2a3f5f\"},\"hovermode\":\"closest\",\"hoverlabel\":{\"align\":\"left\"},\"paper_bgcolor\":\"white\",\"plot_bgcolor\":\"#E5ECF6\",\"polar\":{\"bgcolor\":\"#E5ECF6\",\"angularaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"radialaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"ternary\":{\"bgcolor\":\"#E5ECF6\",\"aaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"baxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"},\"caxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\"}},\"coloraxis\":{\"colorbar\":{\"outlinewidth\":0,\"ticks\":\"\"}},\"colorscale\":{\"sequential\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"sequentialminus\":[[0.0,\"#0d0887\"],[0.1111111111111111,\"#46039f\"],[0.2222222222222222,\"#7201a8\"],[0.3333333333333333,\"#9c179e\"],[0.4444444444444444,\"#bd3786\"],[0.5555555555555556,\"#d8576b\"],[0.6666666666666666,\"#ed7953\"],[0.7777777777777778,\"#fb9f3a\"],[0.8888888888888888,\"#fdca26\"],[1.0,\"#f0f921\"]],\"diverging\":[[0,\"#8e0152\"],[0.1,\"#c51b7d\"],[0.2,\"#de77ae\"],[0.3,\"#f1b6da\"],[0.4,\"#fde0ef\"],[0.5,\"#f7f7f7\"],[0.6,\"#e6f5d0\"],[0.7,\"#b8e186\"],[0.8,\"#7fbc41\"],[0.9,\"#4d9221\"],[1,\"#276419\"]]},\"xaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"yaxis\":{\"gridcolor\":\"white\",\"linecolor\":\"white\",\"ticks\":\"\",\"title\":{\"standoff\":15},\"zerolinecolor\":\"white\",\"automargin\":true,\"zerolinewidth\":2},\"scene\":{\"xaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"yaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2},\"zaxis\":{\"backgroundcolor\":\"#E5ECF6\",\"gridcolor\":\"white\",\"linecolor\":\"white\",\"showbackground\":true,\"ticks\":\"\",\"zerolinecolor\":\"white\",\"gridwidth\":2}},\"shapedefaults\":{\"line\":{\"color\":\"#2a3f5f\"}},\"annotationdefaults\":{\"arrowcolor\":\"#2a3f5f\",\"arrowhead\":0,\"arrowwidth\":1},\"geo\":{\"bgcolor\":\"white\",\"landcolor\":\"#E5ECF6\",\"subunitcolor\":\"white\",\"showland\":true,\"showlakes\":true,\"lakecolor\":\"white\"},\"title\":{\"x\":0.05},\"mapbox\":{\"style\":\"light\"}}},\"xaxis\":{\"anchor\":\"y\",\"domain\":[0.0,0.41000000000000003],\"title\":{\"text\":\"TR\"}},\"yaxis\":{\"anchor\":\"x\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Intensity (AU)\"}},\"xaxis2\":{\"anchor\":\"y2\",\"domain\":[0.5900000000000001,1.0],\"title\":{\"text\":\"Frequency (Hz)\"}},\"yaxis2\":{\"anchor\":\"x2\",\"domain\":[0.0,1.0],\"title\":{\"text\":\"Power\"}},\"annotations\":[{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Timecourse (TR=2.4s)\",\"x\":0.20500000000000002,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"},{\"font\":{\"size\":16},\"showarrow\":false,\"text\":\"Power Spectrum\",\"x\":0.795,\"xanchor\":\"center\",\"xref\":\"paper\",\"y\":1.0,\"yanchor\":\"bottom\",\"yref\":\"paper\"}],\"margin\":{\"t\":40,\"b\":50,\"l\":70,\"r\":30},\"height\":280,\"showlegend\":false,\"dragmode\":\"zoom\"}}'\u003e\u003c/div\u003e\u003c/div\u003e\n\u003c/div\u003e"}}