Return to previous page

This file contains statistics and figures from the paper, “Molecular, Cellular, and Developmental Organization of the Mouse Vomeronasal organ at Single Cell Resolution” by Max Hills Jr., Limei Ma, Ai Fang, Thelma Chiremba, Seth Malloy, Allison Scott, Anoja Perera, and C. Ron Yu.

The paper can be found here:

Molecular, Cellular, and Developmental Organization of the Mouse Vomeronasal organ at Single Cell Resolution

Neuronal Lineage UMAP – Cell Types

VNO sVSN Analysis

mVSN-V1R vs sVSN

gene
p_val
avg_log2FC
pct.1
pct.2
p_val_adj
Cox20
0
0.55672
0.546
0.085
0
Ap1s3
0
-1.54774
0.907
0.922
0
Cspp1
0
-1.41698
0.845
0.812
0
Acbd6
0
0.53074
0.64
0.138
0
H3f3a
0
1.33912
0.953
0.508
0
Rpl7
0
1.17279
0.864
0.296
0
Eloc
0
0.96236
0.79
0.179
0
Srp9
0
0.58114
0.712
0.194
0
Ptma
0
1.3595
0.996
0.742
0
Pde6d
0
0.93862
0.825
0.273
0
1–10 of 11202 rows
...

mVSN-V1R vs sVSN GO Terms

pathway
pval
padj
log2err
ES
NES
size
Category
CATALYTIC_COMPLEX
0
0
0.50045
1.60987
1120
CC
CELL_SUBSTRATE_JUNCTION
0
0
0.61722
1.89839
263
CC
CYTOSOLIC_LARGE_RIBOSOMAL_SUBUNIT
0
0
0.90006
2.37862
51
CC
CYTOSOLIC_RIBOSOME
0
0
0.90478
2.53738
87
CC
CYTOSOLIC_SMALL_RIBOSOMAL_SUBUNIT
0
0
0.9085
2.28585
37
CC
ENVELOPE
0
0
0.59679
1.91736
902
CC
INNER_MITOCHONDRIAL_MEMBRANE_PROTEIN_COMPLEX
0
0
0.78424
2.30816
136
CC
LARGE_RIBOSOMAL_SUBUNIT
0
0
0.82367
2.36843
104
CC
MEMBRANE_PROTEIN_COMPLEX
0
0
0.56814
1.81465
634
CC
MITOCHONDRIAL_ENVELOPE
0
0
0.65816
2.0991
612
CC
1–10 of 406 rows
...

mVSN-V2R vs sVSN

gene
p_val
avg_log2FC
pct.1
pct.2
p_val_adj
Ap1s3
0
-1.90457
0.856
0.922
0
Sphkap
0
1.03356
0.754
0.11
0
H3f3a
0
1.21794
0.941
0.508
0
Rpl7
0
1.17652
0.855
0.296
0
Eloc
0
0.8271
0.765
0.179
0
Ptma
0
1.5838
0.993
0.742
0
Pde6d
0
0.99009
0.845
0.273
0
Sdhaf4
0
0.67882
0.661
0.123
0
Cacybp
0
0.88008
0.753
0.183
0
Ndufb3
0
1.29701
0.908
0.261
0
1–10 of 11748 rows
...

mVSN-V2R vs sVSN GO Terms

pathway
pval
padj
log2err
ES
NES
size
Category
CATALYTIC_COMPLEX
0
0
0.46229
1.50328
1167
CC
CELL_SUBSTRATE_JUNCTION
0
0
0.63855
1.99261
267
CC
CYTOSOLIC_LARGE_RIBOSOMAL_SUBUNIT
0
0
0.89387
2.35945
51
CC
CYTOSOLIC_RIBOSOME
0
0
0.88547
2.50213
88
CC
CYTOSOLIC_SMALL_RIBOSOMAL_SUBUNIT
0
0
0.87493
2.1728
37
CC
ENVELOPE
0
0
0.57442
1.86191
922
CC
INNER_MITOCHONDRIAL_MEMBRANE_PROTEIN_COMPLEX
0
0
0.81107
2.42518
138
CC
LARGE_RIBOSOMAL_SUBUNIT
0
0
0.8059
2.32646
103
CC
MEMBRANE_PROTEIN_COMPLEX
0
0
0.56873
1.8356
659
CC
MITOCHONDRIAL_ENVELOPE
0
0
0.64891
2.08957
612
CC
1–10 of 351 rows
...

mOSN vs sVSN

gene
p_val
avg_log2FC
pct.1
pct.2
p_val_adj
Cyb5r1
0
0.9052
0.635
0.002
0
Cfap126
0
1.4155
0.709
0.015
0
Ric8b
0
1.91651
0.851
0.028
0
Ppp1r14c
0
1.94199
0.798
0.016
0
Ormdl3
0
1.67856
0.823
0.065
0
Nsg2
0
1.03441
0.693
0.028
0
Atox1
0
3.21771
0.902
0.057
0
Hdac9
0
1.17551
0.66
0.012
0
Id4
0
2.05801
0.879
0.051
0
Mslnl
0
1.72191
0.665
0.02
0
1–10 of 11345 rows
...

mOSN vs sVSN GO Terms

pathway
pval
padj
log2err
ES
NES
size
Category
CYTOSOLIC_RIBOSOME
0
0
0.80351
2.11465
87
CC
ENVELOPE
0
0
0.57056
1.67497
892
CC
INNER_MITOCHONDRIAL_MEMBRANE_PROTEIN_COMPLEX
0
0
0.80471
2.20865
131
CC
MEMBRANE_PROTEIN_COMPLEX
0
0
0.57281
1.67448
627
CC
MITOCHONDRIAL_ENVELOPE
0
0
0.64004
1.86729
596
CC
MITOCHONDRIAL_PROTEIN_CONTAINING_COMPLEX
0
0
0.74153
2.11048
252
CC
MITOCHONDRION
0
0
0.55063
1.61931
1185
CC
ORGANELLE_INNER_MEMBRANE
0
0
0.67096
1.94226
425
CC
OXIDOREDUCTASE_COMPLEX
0
0
0.77804
2.06667
91
CC
RESPIRASOME
0
0
0.83194
2.18029
82
CC
1–10 of 191 rows
...
LS0tCnRpdGxlOiAiVk5PIEF0bGFzIHNWU04gQW5hbHlzaXMgVGFibGVzIgphdXRob3I6ICJNYXggSGlsbHMiCmRhdGU6ICJgciBmb3JtYXQoU3lzLnRpbWUoKSwgJyVkICVCLCAlWScpYCIKb3V0cHV0OgogIGh0bWxfbm90ZWJvb2s6CiAgICBjc3M6IHN0eWxlLmNzcwotLS0KCmBgYHtyLCBlY2hvPUZBTFNFfQoKcmVhY3RhYmxlIDwtIGZ1bmN0aW9uKC4uLikgewogIGh0bWx0b29sczo6dGFnTGlzdChyZWFjdGFibGU6OnJlYWN0YWJsZSguLi4pKQp9CgpgYGAKCioqUmV0dXJuIHRvIHByZXZpb3VzIHBhZ2UqKiAgCmBgYHtyLCByZXN1bHRzPSdhc2lzJ30KCmNhdCgiPGJ1dHRvbiBvbmNsaWNrPSdoaXN0b3J5LmJhY2soKSc+QmFjazwvYnV0dG9uPiIpCgpgYGAKICAKICAKICAKPlRoaXMgZmlsZSBjb250YWlucyBzdGF0aXN0aWNzIGFuZCBmaWd1cmVzIGZyb20gdGhlIHBhcGVyLCAiTW9sZWN1bGFyLCBDZWxsdWxhciwgYW5kIERldmVsb3BtZW50YWwgT3JnYW5pemF0aW9uIG9mIHRoZSBNb3VzZSBWb21lcm9uYXNhbCBvcmdhbiBhdCBTaW5nbGUgQ2VsbCBSZXNvbHV0aW9uIiBieSBNYXggSGlsbHMgSnIuLCBMaW1laSBNYSwgQWkgRmFuZywgVGhlbG1hIENoaXJlbWJhLCBTZXRoIE1hbGxveSwgQWxsaXNvbiBTY290dCwgQW5vamEgUGVyZXJhLCBhbmQgQy4gUm9uIFl1LiAgICAKClRoZSBwYXBlciBjYW4gYmUgZm91bmQgaGVyZTogIAoKW01vbGVjdWxhciwgQ2VsbHVsYXIsIGFuZCBEZXZlbG9wbWVudGFsIE9yZ2FuaXphdGlvbiBvZiB0aGUgTW91c2UgVm9tZXJvbmFzYWwgb3JnYW4gYXQgU2luZ2xlIENlbGwgUmVzb2x1dGlvbl0oaHR0cHM6Ly9lbGlmZXNjaWVuY2VzLm9yZy9yZXZpZXdlZC1wcmVwcmludHMvOTczNTYjdGFiLWNvbnRlbnQpCgpgYGB7ciBzZXR1cCwgaW5jbHVkZT1GQUxTRX0KCiMgUi1NYXJrZG93biBHbG9iYWwgU2V0dGluZ3MgIAoKIyBTZXQtdXAgYSBkZWZhdWx0IGltYWdlIHNpemUgb2YgMTAgWCAxMCBpbmNoZXMuIFN1cHByZXNzIHdhcm5pbmcKIyBhbmQgZXJyb3IgbWVzc2FnZXMuIEhpZGUgY29kZS4Ka25pdHI6Om9wdHNfY2h1bmskc2V0KGVjaG89RkFMU0UsIHdhcm5pbmc9RkFMU0UsIG1lc3NhZ2U9RkFMU0UsIGNvbW1lbnQ9IiIsCiAgICAgICAgICAgICAgICAgICAgICBlcnJvcj1GQUxTRSwgZmlnLndpZHRoPTEyLCBmaWcuaGVpZ2h0PTEyLCBjYWNoZT1GQUxTRSkKCmBgYAoKYGBge3IgbGlicmFyaWVzLCBpbmNsdWRlPUZBTFNFfQoKIyBMaWJyYXJ5IExvYWRpbmcgIAoKc3VwcHJlc3NQYWNrYWdlU3RhcnR1cE1lc3NhZ2VzKHsKICBsaWJyYXJ5KHRpZHl2ZXJzZSk7IGxpYnJhcnkoc3RyaW5ncik7IGxpYnJhcnkoZ2dwbG90MikKICBsaWJyYXJ5KGRhdGEudGFibGUpOyBsaWJyYXJ5KG9yZy5NbS5lZy5kYik7IGxpYnJhcnkoZHBseXIpCiAgbGlicmFyeShTZXVyYXQpOyBsaWJyYXJ5KERCSSk7IGxpYnJhcnkoY293cGxvdCk7IGxpYnJhcnkoTWF0cml4KSAKICBsaWJyYXJ5KGdsbUdhbVBvaSk7IGxpYnJhcnkodGliYmxlKTsgbGlicmFyeShnZ3B1YnIpOyBsaWJyYXJ5KHN2Z2xpdGUpCiAgbGlicmFyeShnZ3NpZ25pZik7IGxpYnJhcnkoc3RhdHMpOyBsaWJyYXJ5KHZlZ2FuKTsgbGlicmFyeShzY2FsZXMpCiAgbGlicmFyeShjYXJldCk7IGxpYnJhcnkocGF0Y2h3b3JrKTsgbGlicmFyeShwbG90bHkpOyBsaWJyYXJ5KHJlYWN0YWJsZSkKICBsaWJyYXJ5KG9wZW54bHN4KTsgbGlicmFyeShncmlkRXh0cmEpOyBsaWJyYXJ5KGdncmVwZWwpOyBsaWJyYXJ5KGh0bWx0b29scykKICBsaWJyYXJ5KGJpb21hUnQpOyBsaWJyYXJ5KHBoZWF0bWFwKTsgbGlicmFyeShtc2lnZGJyKQogIGxpYnJhcnkoUm1pc2MpOyBsaWJyYXJ5KGdncGxvdGlmeSk7IGxpYnJhcnkoZ2dwbWlzYykKICBsaWJyYXJ5KHNjYWxlcyk7IGxpYnJhcnkoaGVhdG1hcGx5KTsgbGlicmFyeShkZW5kZXh0ZW5kKQp9KQoKYGBgCgpgYGB7cn0KCiMgR2xvYmFsIFZhcmlhYmxlcwpvcHRpb25zKHNjaXBlbiA9IDk5OSkKIyBUaGUgaG9tZSBkaXJlY3RvcnkKaG9tZV9kaXIgPC0gIi9sL1l1L1l1TGFiL0Jpb2luZm9ybWF0aWNzL3Byb2plY3RzL21oaC9zY19WTk8vIgojIERpcmVjdG9yeSBmb3Igc3RvcmluZyBkYXRhIG9iamVjdHMgYXQgY3J1Y2lhbCBzdGFnZXMKb2JqZWN0X2RpciA8LSBwYXN0ZTAoaG9tZV9kaXIsImZpbmFsLnNldS5vYmpzLyIpCiMgRGlyZWN0b3J5IGZvciBpbWFnZXMgZnJvbSB0aGUgZmluYWwgYW5hbHlzaXMKaW1hZ2VfZGlyIDwtIHBhc3RlMChob21lX2RpciwiZmluYWxfaW1hZ2VzLyIpCm5ld19vYmpfZGlyIDwtICIvbC9ZdS9ZdUxhYi9CaW9pbmZvcm1hdGljcy9wcm9qZWN0cy9taGgvc2NfVk5PL3JldmlzaW9uL29iamVjdHMvIgoKI0xvYWQgTmV1cm9uYWwgTGluZWFnZSBTZXVyYXQgT2JqZWN0ICAKbG9hZChmaWxlID0gcGFzdGUwKG9iamVjdF9kaXIsIm5ldXJvbi5pbnRlZ3JhdGVkLnBvc3RDZWxsSUQiKSkKIyBSZW5hbWUgdW5rbm93bl9tVlNOIHRvIHNWU04KbGV2ZWxzKG5ldXJvbi5pbnRlZ3JhdGVkQGFjdGl2ZS5pZGVudClbbGV2ZWxzKG5ldXJvbi5pbnRlZ3JhdGVkQGFjdGl2ZS5pZGVudCk9PSJ1bmtub3duX21WU04iXSA8LSAic1ZTTiIKbGV2ZWxzKG5ldXJvbi5pbnRlZ3JhdGVkJGNlbGxfdHlwZSlbbGV2ZWxzKG5ldXJvbi5pbnRlZ3JhdGVkJGNlbGxfdHlwZSk9PSJ1bmtub3duX21WU04iXSA8LSAic1ZTTiIKCmdsb2JhbC52YXJzIDwtIGMobHMoKSwiZ2xvYmFsLnZhcnMiKQppbnZpc2libGUoZ2MoKSkKCmBgYAoKIyBOZXVyb25hbCBMaW5lYWdlIFVNQVAgLS0gQ2VsbCBUeXBlcyAgCgpgYGB7cn0KCkRpbVBsb3QobmV1cm9uLmludGVncmF0ZWQsIGxhYmVsPVRSVUUsIHJlcGVsPVRSVUUpCgpgYGAKCiMgVk5PIHNWU04gQW5hbHlzaXMgey50YWJzZXQgLnRhYnNldC1waWxsc30gIAoKIyMgbVZTTi1WMVIgdnMgc1ZTTiAgCgpgYGB7cn0KCnNpZy5tVlNOX1YxUl92c19zVlNOIDwtIHJlYWQuY3N2KGZpbGU9cGFzdGUwKG5ld19vYmpfZGlyLCJzaWcubVZTTl9WMVJfdnNfc1ZTTi5jc3YiKSkKCnNpZy5tVlNOX1YxUl92c19zVlNOWyAsYygicF92YWwiLCJhdmdfbG9nMkZDIiwicF92YWxfYWRqIildIDwtIHJvdW5kKHNpZy5tVlNOX1YxUl92c19zVlNOWyAsYygicF92YWwiLCJhdmdfbG9nMkZDIiwicF92YWxfYWRqIildLCA1KSAKCnJlYWN0YWJsZShzaWcubVZTTl9WMVJfdnNfc1ZTTiwKICAgICAgICAgIHNvcnRhYmxlID0gVFJVRSwKICAgICAgICAgIHNob3dTb3J0YWJsZSA9IFRSVUUsCiAgICAgICAgICByZXNpemFibGUgPSBUUlVFLAogICAgICAgICAgZmlsdGVyYWJsZSA9IFRSVUUsCiAgICAgICAgICBzZWFyY2hhYmxlID0gVFJVRSwKICAgICAgICAgIGRlZmF1bHRQYWdlU2l6ZSA9IDEwLAogICAgICAgICAgc3RyaXBlZCA9IFRSVUUsCiAgICAgICAgICBib3JkZXJlZCA9IFRSVUUsCiAgICAgICAgICBzdGF0aWMgPSBUUlVFLAogICAgICAgICAgY29sdW1ucyA9IGxpc3QoCiAgICAgICAgICAgIGF2Z19sb2cyRkMgPSBjb2xEZWYoCiAgICAgICAgICAgICAgc3R5bGUgPSBmdW5jdGlvbih2YWx1ZSkgewogICAgICAgICAgICAgICAgaWYgKHZhbHVlID4gMCkgewogICAgICAgICAgICAgICAgICBjb2xvciA8LSAiIzAwODAwMCIKICAgICAgICAgICAgICAgIH0gZWxzZSBpZiAodmFsdWUgPCAwKSB7CiAgICAgICAgICAgICAgICAgICAgY29sb3IgPC0gIiNlMDAwMDAiCiAgICAgICAgICAgICAgICB9IGVsc2UgewogICAgICAgICAgICAgICAgICAgICAgY29sb3IgPC0gIiM3NzciCiAgICAgICAgICAgICAgICB9CiAgICAgICAgICAgICAgICBsaXN0KGNvbG9yID0gY29sb3IsIGZvbnRXZWlnaHQgPSAiYm9sZCIpCiAgICAgICAgICAgICAgfSkKKSkKCmBgYAoKIyMgbVZTTi1WMVIgdnMgc1ZTTiBHTyBUZXJtcyAgCgpgYGB7cn0KCnNpZy5HTy5tVlNOX1YxUl92c19zVlNOIDwtIHJlYWQuY3N2KGZpbGU9cGFzdGUwKG5ld19vYmpfZGlyLCJzaWcuR08ubVZTTl9WMVJfdnNfc1ZTTi5jc3YiKSkKCnZlY3NfMl9yb3VuZCA8LSBzYXBwbHkoc2lnLkdPLm1WU05fVjFSX3ZzX3NWU04sIGlzLmRvdWJsZSkKCnNpZy5HTy5tVlNOX1YxUl92c19zVlNOWyAsdmVjc18yX3JvdW5kXSA8LSByb3VuZChzaWcuR08ubVZTTl9WMVJfdnNfc1ZTTlsgLHZlY3NfMl9yb3VuZF0sIDUpIAoKcmVhY3RhYmxlKHNpZy5HTy5tVlNOX1YxUl92c19zVlNOLAogICAgICAgICAgc29ydGFibGUgPSBUUlVFLAogICAgICAgICAgc2hvd1NvcnRhYmxlID0gVFJVRSwKICAgICAgICAgIHJlc2l6YWJsZSA9IFRSVUUsCiAgICAgICAgICBmaWx0ZXJhYmxlID0gVFJVRSwKICAgICAgICAgIHNlYXJjaGFibGUgPSBUUlVFLAogICAgICAgICAgZGVmYXVsdFBhZ2VTaXplID0gMTAsCiAgICAgICAgICBzdHJpcGVkID0gVFJVRSwKICAgICAgICAgIGJvcmRlcmVkID0gVFJVRSwKICAgICAgICAgIHN0YXRpYyA9IFRSVUUsCiAgICAgICAgICBjb2x1bW5zID0gbGlzdCgKICAgICAgICAgICAgTkVTID0gY29sRGVmKAogICAgICAgICAgICAgIHN0eWxlID0gZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA+IDApIHsKICAgICAgICAgICAgICAgICAgY29sb3IgPC0gIiMwMDgwMDAiCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIDwgMCkgewogICAgICAgICAgICAgICAgICAgIGNvbG9yIDwtICIjZTAwMDAwIgogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIGNvbG9yIDwtICIjNzc3IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbGlzdChjb2xvciA9IGNvbG9yLCBmb250V2VpZ2h0ID0gImJvbGQiKQogICAgICAgICAgICAgIH0pCikpCgpgYGAKCiMjIG1WU04tVjJSIHZzIHNWU04gIAoKYGBge3J9CgpzaWcubVZTTl9WMlJfdnNfc1ZTTiA8LSByZWFkLmNzdihmaWxlPXBhc3RlMChuZXdfb2JqX2Rpciwic2lnLm1WU05fVjJSX3ZzX3NWU04uY3N2IikpCgpzaWcubVZTTl9WMlJfdnNfc1ZTTlsgLGMoInBfdmFsIiwiYXZnX2xvZzJGQyIsInBfdmFsX2FkaiIpXSA8LSByb3VuZChzaWcubVZTTl9WMlJfdnNfc1ZTTlsgLGMoInBfdmFsIiwiYXZnX2xvZzJGQyIsInBfdmFsX2FkaiIpXSwgNSkgCgpyZWFjdGFibGUoc2lnLm1WU05fVjJSX3ZzX3NWU04sCiAgICAgICAgICBzb3J0YWJsZSA9IFRSVUUsCiAgICAgICAgICBzaG93U29ydGFibGUgPSBUUlVFLAogICAgICAgICAgcmVzaXphYmxlID0gVFJVRSwKICAgICAgICAgIGZpbHRlcmFibGUgPSBUUlVFLAogICAgICAgICAgc2VhcmNoYWJsZSA9IFRSVUUsCiAgICAgICAgICBkZWZhdWx0UGFnZVNpemUgPSAxMCwKICAgICAgICAgIHN0cmlwZWQgPSBUUlVFLAogICAgICAgICAgYm9yZGVyZWQgPSBUUlVFLAogICAgICAgICAgc3RhdGljID0gVFJVRSwKICAgICAgICAgIGNvbHVtbnMgPSBsaXN0KAogICAgICAgICAgICBhdmdfbG9nMkZDID0gY29sRGVmKAogICAgICAgICAgICAgIHN0eWxlID0gZnVuY3Rpb24odmFsdWUpIHsKICAgICAgICAgICAgICAgIGlmICh2YWx1ZSA+IDApIHsKICAgICAgICAgICAgICAgICAgY29sb3IgPC0gIiMwMDgwMDAiCiAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKHZhbHVlIDwgMCkgewogICAgICAgICAgICAgICAgICAgIGNvbG9yIDwtICIjZTAwMDAwIgogICAgICAgICAgICAgICAgfSBlbHNlIHsKICAgICAgICAgICAgICAgICAgICAgIGNvbG9yIDwtICIjNzc3IgogICAgICAgICAgICAgICAgfQogICAgICAgICAgICAgICAgbGlzdChjb2xvciA9IGNvbG9yLCBmb250V2VpZ2h0ID0gImJvbGQiKQogICAgICAgICAgICAgIH0pCikpCgpgYGAKCiMjIG1WU04tVjJSIHZzIHNWU04gR08gVGVybXMgIAoKYGBge3J9CgpzaWcuR08ubVZTTl9WMlJfdnNfc1ZTTiA8LSByZWFkLmNzdihmaWxlPXBhc3RlMChuZXdfb2JqX2Rpciwic2lnLkdPLm1WU05fVjJSX3ZzX3NWU04uY3N2IikpCgp2ZWNzXzJfcm91bmQgPC0gc2FwcGx5KHNpZy5HTy5tVlNOX1YyUl92c19zVlNOLCBpcy5kb3VibGUpCgpzaWcuR08ubVZTTl9WMlJfdnNfc1ZTTlsgLHZlY3NfMl9yb3VuZF0gPC0gcm91bmQoc2lnLkdPLm1WU05fVjJSX3ZzX3NWU05bICx2ZWNzXzJfcm91bmRdLCA1KSAKCnJlYWN0YWJsZShzaWcuR08ubVZTTl9WMlJfdnNfc1ZTTiwKICAgICAgICAgIHNvcnRhYmxlID0gVFJVRSwKICAgICAgICAgIHNob3dTb3J0YWJsZSA9IFRSVUUsCiAgICAgICAgICByZXNpemFibGUgPSBUUlVFLAogICAgICAgICAgZmlsdGVyYWJsZSA9IFRSVUUsCiAgICAgICAgICBzZWFyY2hhYmxlID0gVFJVRSwKICAgICAgICAgIGRlZmF1bHRQYWdlU2l6ZSA9IDEwLAogICAgICAgICAgc3RyaXBlZCA9IFRSVUUsCiAgICAgICAgICBib3JkZXJlZCA9IFRSVUUsCiAgICAgICAgICBzdGF0aWMgPSBUUlVFLAogICAgICAgICAgY29sdW1ucyA9IGxpc3QoCiAgICAgICAgICAgIE5FUyA9IGNvbERlZigKICAgICAgICAgICAgICBzdHlsZSA9IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPiAwKSB7CiAgICAgICAgICAgICAgICAgIGNvbG9yIDwtICIjMDA4MDAwIgogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBjb2xvciA8LSAiI2UwMDAwMCIKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICBjb2xvciA8LSAiIzc3NyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxpc3QoY29sb3IgPSBjb2xvciwgZm9udFdlaWdodCA9ICJib2xkIikKICAgICAgICAgICAgICB9KQopKQoKYGBgCgojIyBtT1NOIHZzIHNWU04gIAoKYGBge3J9CgpzaWcubU9TTl92c19zVlNOIDwtIHJlYWQuY3N2KGZpbGU9cGFzdGUwKG5ld19vYmpfZGlyLCJzaWcubU9TTl92c19zVlNOLmNzdiIpKQoKc2lnLm1PU05fdnNfc1ZTTlsgLGMoInBfdmFsIiwiYXZnX2xvZzJGQyIsInBfdmFsX2FkaiIpXSA8LSByb3VuZChzaWcubU9TTl92c19zVlNOWyAsYygicF92YWwiLCJhdmdfbG9nMkZDIiwicF92YWxfYWRqIildLCA1KSAKCnJlYWN0YWJsZShzaWcubU9TTl92c19zVlNOLAogICAgICAgICAgc29ydGFibGUgPSBUUlVFLAogICAgICAgICAgc2hvd1NvcnRhYmxlID0gVFJVRSwKICAgICAgICAgIHJlc2l6YWJsZSA9IFRSVUUsCiAgICAgICAgICBmaWx0ZXJhYmxlID0gVFJVRSwKICAgICAgICAgIHNlYXJjaGFibGUgPSBUUlVFLAogICAgICAgICAgZGVmYXVsdFBhZ2VTaXplID0gMTAsCiAgICAgICAgICBzdHJpcGVkID0gVFJVRSwKICAgICAgICAgIGJvcmRlcmVkID0gVFJVRSwKICAgICAgICAgIHN0YXRpYyA9IFRSVUUsCiAgICAgICAgICBjb2x1bW5zID0gbGlzdCgKICAgICAgICAgICAgYXZnX2xvZzJGQyA9IGNvbERlZigKICAgICAgICAgICAgICBzdHlsZSA9IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPiAwKSB7CiAgICAgICAgICAgICAgICAgIGNvbG9yIDwtICIjMDA4MDAwIgogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBjb2xvciA8LSAiI2UwMDAwMCIKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICBjb2xvciA8LSAiIzc3NyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxpc3QoY29sb3IgPSBjb2xvciwgZm9udFdlaWdodCA9ICJib2xkIikKICAgICAgICAgICAgICB9KQopKQoKYGBgCgojIyBtT1NOIHZzIHNWU04gR08gVGVybXMgIAoKYGBge3J9CgpzaWcuR08ubU9TTl92c19zVlNOIDwtIHJlYWQuY3N2KGZpbGU9cGFzdGUwKG5ld19vYmpfZGlyLCJzaWcuR08ubU9TTl92c19zVlNOLmNzdiIpKQoKdmVjc18yX3JvdW5kIDwtIHNhcHBseShzaWcuR08ubU9TTl92c19zVlNOLCBpcy5kb3VibGUpCgpzaWcuR08ubU9TTl92c19zVlNOWyAsdmVjc18yX3JvdW5kXSA8LSByb3VuZChzaWcuR08ubU9TTl92c19zVlNOWyAsdmVjc18yX3JvdW5kXSwgNSkgCgpyZWFjdGFibGUoc2lnLkdPLm1PU05fdnNfc1ZTTiwKICAgICAgICAgIHNvcnRhYmxlID0gVFJVRSwKICAgICAgICAgIHNob3dTb3J0YWJsZSA9IFRSVUUsCiAgICAgICAgICByZXNpemFibGUgPSBUUlVFLAogICAgICAgICAgZmlsdGVyYWJsZSA9IFRSVUUsCiAgICAgICAgICBzZWFyY2hhYmxlID0gVFJVRSwKICAgICAgICAgIGRlZmF1bHRQYWdlU2l6ZSA9IDEwLAogICAgICAgICAgc3RyaXBlZCA9IFRSVUUsCiAgICAgICAgICBib3JkZXJlZCA9IFRSVUUsCiAgICAgICAgICBzdGF0aWMgPSBUUlVFLAogICAgICAgICAgY29sdW1ucyA9IGxpc3QoCiAgICAgICAgICAgIE5FUyA9IGNvbERlZigKICAgICAgICAgICAgICBzdHlsZSA9IGZ1bmN0aW9uKHZhbHVlKSB7CiAgICAgICAgICAgICAgICBpZiAodmFsdWUgPiAwKSB7CiAgICAgICAgICAgICAgICAgIGNvbG9yIDwtICIjMDA4MDAwIgogICAgICAgICAgICAgICAgfSBlbHNlIGlmICh2YWx1ZSA8IDApIHsKICAgICAgICAgICAgICAgICAgICBjb2xvciA8LSAiI2UwMDAwMCIKICAgICAgICAgICAgICAgIH0gZWxzZSB7CiAgICAgICAgICAgICAgICAgICAgICBjb2xvciA8LSAiIzc3NyIKICAgICAgICAgICAgICAgIH0KICAgICAgICAgICAgICAgIGxpc3QoY29sb3IgPSBjb2xvciwgZm9udFdlaWdodCA9ICJib2xkIikKICAgICAgICAgICAgICB9KQopKQoKYGBgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAgCiAg