References, resources, data and initial directory contents

STAR-Fusion: Fast and Accurate Fusion Transcript Detection from RNA-Seq. rian Haas, Alexander Dobin, Nicolas Stransky, Bo Li, Xiao Yang, Timothy Tickle, Asma Bankapur, Carrie Ganote, Thomas Doak, Natalie Pochet, Jing Sun, Catherine Wu, Thomas Gingeras, Aviv Regev. bioRxiv 120295; doi: https://doi.org/10.1101/120295

AWS instance type: r5.2xlarge (64 GB RAM)

~$ git clone https://github.com/STAR-Fusion/STAR-Fusion-Tutorial.git

Cloning into ‘STAR-Fusion-Tutorial’…

remote: Enumerating objects: 3, done.

remote: Counting objects: 100% (3/3), done.

remote: Compressing objects: 100% (3/3), done.

remote: Total 28 (delta 0), reused 2 (delta 0), pack-reused 25

Unpacking objects: 100% (28/28), done.

~$ ls -l

drwxrwxr-x 4 ubuntu ubuntu 4096 Mar 29 00:50 STAR-Fusion-Tutorial

~$ cd STAR-Fusion-Tutorial/

~/STAR-Fusion-Tutorial$ ls -l

-rw-rw-r– 1 ubuntu ubuntu 1719 Mar 29 00:50 AnnotFilterRule.pm

-rw-rw-r– 1 ubuntu ubuntu 6586 Mar 29 00:50 CTAT_HumanFusionLib.mini.dat.gz

-rw-rw-r– 1 ubuntu ubuntu 129 Mar 29 00:50 README.md

drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 29 00:50 STAR-Fusion-Tutorial.wiki

-rwxrwxr-x 1 ubuntu ubuntu 188 Mar 29 00:50 cleanMe.sh

-rw-rw-r– 1 ubuntu ubuntu 11299925 Mar 29 00:50 minigenome.fa

-rw-rw-r– 1 ubuntu ubuntu 15636276 Mar 29 00:50 minigenome.gtf

-rw-rw-r– 1 ubuntu ubuntu 41380839 Mar 29 00:50 rnaseq_1.fastq.gz

-rw-rw-r– 1 ubuntu ubuntu 45350714 Mar 29 00:50 rnaseq_2.fastq.gz

Obtain resouce library

~$ wget https://data.broadinstitute.org/Trinity/CTAT_RESOURCE_LIB/GRCh38_v27_CTAT_lib_Feb092018.plug-n-play.tar.gz

100%[++=====================================================================================>] 28.39G 1.51MB/s in 3h 18m

2019-03-29 01:12:21 (2.37 MB/s) - 018GRCh38_v27_CTAT_lib_Feb092018.plug-n-play.tar.gz019 saved [30484302229/30484302229]

~$ tar xvf GRCh38_v27_CTAT_lib_Feb092018.plug-n-play.tar.gz

GRCh38_v27_CTAT_lib_Feb092018/ GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/AnnotFilterRule.pm GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/pfam_domains.dbm GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.fai GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_annot.gtf.mini.sortu GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/blast_pairs.idx GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_annot.gtf.gene_spans GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.gmap.ok GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/ GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/build.ok GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.fromGTF.out.tab GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonGeTrInfo.tab GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SAindex GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/transcriptInfo.tab GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/geneInfo.tab GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbInfo.txt GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/SA GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrStart.txt GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrName.txt GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrLength.txt GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/genomeParameters.txt GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/sjdbList.out.tab GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/Genome GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/chrNameLength.txt GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/exonInfo.tab GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_annot.pep GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dat GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/trans.blast.align_coords.align_coords.dbm GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_annot.gtf GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_annot.cds GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/blast_pairs.idx.prev.1518217631 GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/fusion_annot_lib.idx GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_annot.prot_info.dbm

~$ ls -l GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/

-rw-rw-r– 1 ubuntu ubuntu 2839 Feb 23 2018 AnnotFilterRule.pm

-rw-rw-r– 1 ubuntu ubuntu 1400848384 Feb 21 2018 blast_pairs.idx

-rw-rw-r– 1 ubuntu ubuntu 1400848384 Feb 21 2018 blast_pairs.idx.prev.1518217631

-rw-rw-r– 1 ubuntu ubuntu 2320236544 Feb 21 2018 fusion_annot_lib.idx

-rw-rw-r– 1 ubuntu ubuntu 190857216 Feb 23 2018 pfam_domains.dbm

-rw-rw-r– 1 ubuntu ubuntu 108993409 Feb 21 2018 ref_annot.cds

-rw-rw-r– 1 ubuntu ubuntu 1150835305 Feb 21 2018 ref_annot.gtf

-rw-rw-r– 1 ubuntu ubuntu 3933998 Feb 21 2018 ref_annot.gtf.gene_spans

-rw-rw-r– 1 ubuntu ubuntu 49752053 Feb 21 2018 ref_annot.gtf.mini.sortu

-rw-rw-r– 1 ubuntu ubuntu 37597442 Feb 21 2018 ref_annot.pep

-rw-rw-r– 1 ubuntu ubuntu 719781888 Feb 21 2018 ref_annot.prot_info.dbm

-rw-rw-r– 1 ubuntu ubuntu 3139758082 Feb 21 2018 ref_genome.fa

-rw-rw-r– 1 ubuntu ubuntu 788 Feb 21 2018 ref_genome.fa.fai

-rw-rw-r– 1 ubuntu ubuntu 0 Feb 21 2018 ref_genome.fa.gmap.ok

drwxrwxr-x 2 ubuntu ubuntu 4096 Feb 21 2018 ref_genome.fa.star.idx

-rw-rw-r– 1 ubuntu ubuntu 1552146399 Feb 21 2018 trans.blast.align_coords.align_coords.dat

-rw-rw-r– 1 ubuntu ubuntu 4034531328 Feb 21 2018 trans.blast.align_coords.align_coords.dbm

~$ ls -l GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx/

-rw-rw-r– 1 ubuntu ubuntu 3195539919 Feb 21 2018 Genome

-rw-rw-r– 1 ubuntu ubuntu 25110292089 Feb 21 2018 SA

-rw-rw-r– 1 ubuntu ubuntu 1565873619 Feb 21 2018 SAindex

-rw-rw-r– 1 ubuntu ubuntu 0 Feb 21 2018 build.ok

-rw-rw-r– 1 ubuntu ubuntu 238 Feb 21 2018 chrLength.txt

-rw-rw-r– 1 ubuntu ubuntu 138 Feb 21 2018 chrName.txt

-rw-rw-r– 1 ubuntu ubuntu 376 Feb 21 2018 chrNameLength.txt

-rw-rw-r– 1 ubuntu ubuntu 273 Feb 21 2018 chrStart.txt

-rw-rw-r– 1 ubuntu ubuntu 42635542 Feb 21 2018 exonGeTrInfo.tab

-rw-rw-r– 1 ubuntu ubuntu 17254967 Feb 21 2018 exonInfo.tab

-rw-rw-r– 1 ubuntu ubuntu 1061759 Feb 21 2018 geneInfo.tab

-rw-rw-r– 1 ubuntu ubuntu 1018 Feb 21 2018 genomeParameters.txt

-rw-rw-r– 1 ubuntu ubuntu 10355017 Feb 21 2018 sjdbInfo.txt

-rw-rw-r– 1 ubuntu ubuntu 9147473 Feb 21 2018 sjdbList.fromGTF.out.tab

-rw-rw-r– 1 ubuntu ubuntu 9140743 Feb 21 2018 sjdbList.out.tab

-rw-rw-r– 1 ubuntu ubuntu 12267969 Feb 21 2018 transcriptInfo.tab

Predict Fusions Using STAR-Fusion: Running STAR-Fusion starting with FASTQ files (typical)

~/STAR-Fusion-Tutorial$ STAR-Fusion –left_fq rnaseq_1.fastq.gz –right_fq rnaseq_2.fastq.gz –genome_lib_dir ~/GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/

CMD: mkdir -p /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir

……………………………..

  • Running CMD:

/home/ubuntu/miniconda3/bin/STAR –genomeDir /home/ubuntu/GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir//ref_genome.fa.star.idx –outReadsUnmapped None –chimSegmentMin 12 –chimJunctionOverhangMin 12 –chimOutJunctionFormat 1 –alignSJDBoverhangMin 10 –alignMatesGapMax 100000 –alignIntronMax 100000 –alignSJstitchMismatchNmax 5 -1 5 5 –runThreadN 4 –outSAMstrandField intronMotif –outSAMunmapped Within –outSAMtype BAM Unsorted –readFilesIn /home/ubuntu/STAR-Fusion-Tutorial/rnaseq_1.fastq.gz /home/ubuntu/STAR-Fusion-Tutorial/rnaseq_2.fastq.gz –outSAMattrRGline ID:GRPundef –chimMultimapScoreRange 10 –chimMultimapNmax 10 –chimNonchimScoreDropMin 10 –peOverlapNbasesMin 12 –peOverlapMMp 0.1 –genomeLoad NoSharedMemory –twopassMode Basic –readFilesCommand ‘gunzip -c’

Mar 29 16:15:18 ….. started STAR run

Mar 29 16:15:18 ….. loading genome

Mar 29 16:17:48 ….. started 1st pass mapping

Mar 29 16:18:06 ….. finished 1st pass mapping

Mar 29 16:18:07 ….. inserting junctions into the genome indices

Mar 29 16:19:35 ….. started mapping

Mar 29 16:19:58 ….. finished successfully

-sample contains 733290

  • Running CMD:

/home/ubuntu/miniconda3/lib/STAR-Fusion/util/STAR-Fusion.map_chimeric_reads_to_genes –genome_lib_dir /home/ubuntu/GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ -J Chimeric.out.junction > /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/star-fusion.preliminary/star-fusion.junction_breakpts_to_genes.txt -building interval tree based on /home/ubuntu/GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir//ref_annot.gtf.mini.sortu -done building interval tree (0.07 min). -parsing fusion evidence: Chimeric.out.junction -mapping reads to genes [20000], rate=1200000.00/min

……………………………..

  • Running CMD:

cp /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/star-fusion.preliminary/star-fusion.fusion_candidates.preliminary.wSpliceInfo.wAnnot.pass.minFFPM.0.1.pass star-fusion.fusion_predictions.tsv

  • Running CMD:

/home/ubuntu/miniconda3/lib/STAR-Fusion/util/column_exclusions.pl star-fusion.fusion_predictions.tsv JunctionReads,SpanningFrags > star-fusion.fusion_predictions.abridged.tsv

STAR-Fusion complete. See output: star-fusion.fusion_candidates.tsv (or .abridged.tsv version)

Additional files/directories/subdirectories and their contents following the above run

~/STAR-Fusion-Tutorial$ ls -l

drwxrwxr-x 6 ubuntu ubuntu 4096 Mar 29 16:20 STAR-Fusion_outdir

~/STAR-Fusion-Tutorial$ ls -l STAR-Fusion_outdir/

-rw-rw-r– 1 ubuntu ubuntu 132072054 Mar 29 16:19 Aligned.out.bam

-rw-rw-r– 1 ubuntu ubuntu 2317214 Mar 29 16:19 Chimeric.out.junction

-rw-rw-r– 1 ubuntu ubuntu 1851 Mar 29 16:19 Log.final.out

-rw-rw-r– 1 ubuntu ubuntu 25044 Mar 29 16:19 Log.out

-rw-rw-r– 1 ubuntu ubuntu 447 Mar 29 16:19 Log.progress.out

-rw-rw-r– 1 ubuntu ubuntu 190840 Mar 29 16:19 SJ.out.tab

drwx—— 2 ubuntu ubuntu 4096 Mar 29 16:18 _STARgenome

drwx—— 2 ubuntu ubuntu 4096 Mar 29 16:18 _STARpass1

drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 29 16:20 _starF_checkpoints

-rw-rw-r– 1 ubuntu ubuntu 4782 Mar 29 16:20 pipeliner.5985.cmds

-rw-rw-r– 1 ubuntu ubuntu 8597 Mar 29 16:20 star-fusion.fusion_predictions.abridged.tsv

-rw-rw-r– 1 ubuntu ubuntu 42353 Mar 29 16:20 star-fusion.fusion_predictions.tsv

drwxrwxr-x 3 ubuntu ubuntu 4096 Mar 29 16:20 star-fusion.preliminary

~/STAR-Fusion-Tutorial$ ls -l STAR-Fusion_outdir/star-fusion.preliminary/

drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 29 16:20 star-fusion.filter.intermediates_dir

-rw-rw-r– 1 ubuntu ubuntu 58304 Mar 29 16:20 star-fusion.fusion_candidates.preliminary

lrwxrwxrwx 1 ubuntu ubuntu 159 Mar 29 16:20 star-fusion.fusion_candidates.preliminary.filtered -> /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/star-fusion.preliminary/star-fusion.filter.intermediates_dir/star-fusion.post_blast_and_promiscuity_filter

-rw-rw-r– 1 ubuntu ubuntu 38764 Mar 29 16:20 star-fusion.fusion_candidates.preliminary.filtered.FFPM

-rw-rw-r– 1 ubuntu ubuntu 39550 Mar 29 16:20 star-fusion.fusion_candidates.preliminary.wSpliceInfo

-rw-rw-r– 1 ubuntu ubuntu 42353 Mar 29 16:20 star-fusion.fusion_candidates.preliminary.wSpliceInfo.wAnnot

-rw-rw-r– 1 ubuntu ubuntu 252 Mar 29 16:20 star-fusion.fusion_candidates.preliminary.wSpliceInfo.wAnnot.annot_filt

-rw-rw-r– 1 ubuntu ubuntu 42353 Mar 29 16:20 star-fusion.fusion_candidates.preliminary.wSpliceInfo.wAnnot.pass

-rw-rw-r– 1 ubuntu ubuntu 42353 Mar 29 16:20 star-fusion.fusion_candidates.preliminary.wSpliceInfo.wAnnot.pass.minFFPM.0.1.pass

-rw-rw-r– 1 ubuntu ubuntu 9002233 Mar 29 16:20 star-fusion.junction_breakpts_to_genes.txt

-rw-rw-r– 1 ubuntu ubuntu 8032339 Mar 29 16:20 star-fusion.junction_breakpts_to_genes.txt.fail

-rw-rw-r– 1 ubuntu ubuntu 1401934 Mar 29 16:20 star-fusion.junction_breakpts_to_genes.txt.pass

-rw-rw-r– 1 ubuntu ubuntu 51475 Mar 29 16:20 star-fusion.junction_read_names

-rw-rw-r– 1 ubuntu ubuntu 62556 Mar 29 16:20 star-fusion.spanning_frag_names

~/STAR-Fusion-Tutorial$ head STAR-Fusion_outdir/star-fusion.fusion_predictions.abridged.tsv

FusionName JunctionReadCount SpanningFragCount SpliceType LeftGene LeftBreakpoint RightGene RightBreakpoint LargeAnchorSupport FFPM LeftBreakDinuc LeftBreakEntropy RightBreakDinuc RightBreakEntropy annots

TATDN1–GSDMB 81 184 ONLY_REF_SPLICE TATDN1^ENSG00000147687.18 chr8:124539025:- GSDMB^ENSG00000073605.18 chr17:39909924:- YES_LDAS 361.385 GT 1.9219 AG 1.5628 [“CCLE”,“Klijn_CellLines”,“FA_CancerSupp”,“ChimerPub”,“INTERCHROMOSOMAL[chr8–chr17]”]

THRA–THRA1/BTR 63 93 ONLY_REF_SPLICE THRA^ENSG00000126351.12 chr17:40086853:+ THRA1/BTR^ENSG00000235300.4 chr17:48294347:+ YES_LDAS 212.7399 GT 1.8892 AG 1.9656 [“INTRACHROMOSOMAL[chr17:8.20Mb]”]

TATDN1–GSDMB 32 182 ONLY_REF_SPLICE TATDN1^ENSG00000147687.18 chr8:124539025:- GSDMB^ENSG00000073605.18 chr17:39905985:- YES_LDAS 291.8354 GT 1.9219 AG 1.9086 [“CCLE”,“Klijn_CellLines”,“FA_CancerSupp”,“ChimerPub”,“INTERCHROMOSOMAL[chr8–chr17]”]

TATDN1–GSDMB 23 182 ONLY_REF_SPLICE TATDN1^ENSG00000147687.18 chr8:124539025:- GSDMB^ENSG00000073605.18 chr17:39906271:- YES_LDAS 279.562 GT 1.9219 AG 1.7819 [“CCLE”,“Klijn_CellLines”,“FA_CancerSupp”,“ChimerPub”,“INTERCHROMOSOMAL[chr8–chr17]”]

ACACA–STAC2 31 47 ONLY_REF_SPLICE ACACA^ENSG00000278540.4 chr17:37122531:- STAC2^ENSG00000141750.6 chr17:39218173:- YES_LDAS 106.3699 GT 1.9656 AG 1.9656 [“ChimerSeq”,“CCLE”,“Klijn_CellLines”,“FA_CancerSupp”,“INTRACHROMOSOMAL[chr17:1.80Mb]”]

BCAS4–BCAS3 10 122 ONLY_REF_SPLICE BCAS4^ENSG00000124243.17 chr20:50795173:+ BCAS3^ENSG00000141376.22 chr17:61368327:+ YES_LDAS 180.0107 GT 1.6402 AG 1.9899 [“ChimerPub”,“ChimerSeq”,“chimerdb_pubmed”,“CCLE”,“FA_CancerSupp”,“INTERCHROMOSOMAL[chr20–chr17]”]

THRA–THRA1/BTR 17 92 ONLY_REF_SPLICE THRA^ENSG00000126351.12 chr17:40086853:+ THRA1/BTR^ENSG00000235300.4 chr17:48307331:+ YES_LDAS 148.6452 GT 1.8892 AG 1.4295 [“INTRACHROMOSOMAL[chr17:8.20Mb]”]

BCAS4–BCAS3 4 122 ONLY_REF_SPLICE BCAS4^ENSG00000124243.17 chr20:50795173:+ BCAS3^ENSG00000141376.22 chr17:61353588:+ NO_LDAS 171.8284 GT 1.6402 AG 1.3996 [“ChimerPub”,“ChimerSeq”,“chimerdb_pubmed”,“CCLE”,“FA_CancerSupp”,“INTERCHROMOSOMAL[chr20–chr17]”]

CCDC6–RET 26 15 ONLY_REF_SPLICE CCDC6^ENSG00000108091.10 chr10:59906122:- RET^ENSG00000165731.18 chr10:43116584:+ YES_LDAS 55.9124 GT 1.8892 AG 1.8323 [“ChimerSeq”,“ChimerKB”,“FA_CancerSupp”,“Cosmic”,“Mitelman”,“ChimerPub”,“HaasMedCancer”,“Larsson_TCGA”,“YOSHIHARA_TCGA”,“INTRACHROMOSOMAL[chr10:16.66Mb]”]

~/STAR-Fusion-Tutorial$ head STAR-Fusion_outdir/star-fusion.fusion_predictions.abridged.tsv | column -t

FusionName JunctionReadCount SpanningFragCount SpliceType LeftGene LeftBreakpoint RightGene RightBreakpoint LargeAnchorSupport FFPM LeftBreakDinuc LeftBreakEntropy RightBreakDinuc RightBreakEntropy annots

TATDN1–GSDMB 81 184 ONLY_REF_SPLICE TATDN1^ENSG00000147687.18 chr8:124539025:- GSDMB^ENSG00000073605.18 chr17:39909924:- YES_LDAS 361.385 GT 1.9219 AG 1.5628 [“CCLE”,“Klijn_CellLines”,“FA_CancerSupp”,“ChimerPub”,“INTERCHROMOSOMAL[chr8–chr17]”]

THRA–THRA1/BTR 63 93 ONLY_REF_SPLICE THRA^ENSG00000126351.12 chr17:40086853:+ THRA1/BTR^ENSG00000235300.4 chr17:48294347:+ YES_LDAS 212.7399 GT 1.8892 AG 1.9656 [“INTRACHROMOSOMAL[chr17:8.20Mb]”]

TATDN1–GSDMB 32 182 ONLY_REF_SPLICE TATDN1^ENSG00000147687.18 chr8:124539025:- GSDMB^ENSG00000073605.18 chr17:39905985:- YES_LDAS 291.8354 GT 1.9219 AG 1.9086 [“CCLE”,“Klijn_CellLines”,“FA_CancerSupp”,“ChimerPub”,“INTERCHROMOSOMAL[chr8–chr17]”]

TATDN1–GSDMB 23 182 ONLY_REF_SPLICE TATDN1^ENSG00000147687.18 chr8:124539025:- GSDMB^ENSG00000073605.18 chr17:39906271:- YES_LDAS 279.562 GT 1.9219 AG 1.7819 [“CCLE”,“Klijn_CellLines”,“FA_CancerSupp”,“ChimerPub”,“INTERCHROMOSOMAL[chr8–chr17]”]

ACACA–STAC2 31 47 ONLY_REF_SPLICE ACACA^ENSG00000278540.4 chr17:37122531:- STAC2^ENSG00000141750.6 chr17:39218173:- YES_LDAS 106.3699 GT 1.9656 AG 1.9656 [“ChimerSeq”,“CCLE”,“Klijn_CellLines”,“FA_CancerSupp”,“INTRACHROMOSOMAL[chr17:1.80Mb]”]

BCAS4–BCAS3 10 122 ONLY_REF_SPLICE BCAS4^ENSG00000124243.17 chr20:50795173:+ BCAS3^ENSG00000141376.22 chr17:61368327:+ YES_LDAS 180.0107 GT 1.6402 AG 1.9899 [“ChimerPub”,“ChimerSeq”,“chimerdb_pubmed”,“CCLE”,“FA_CancerSupp”,“INTERCHROMOSOMAL[chr20–chr17]”]

THRA–THRA1/BTR 17 92 ONLY_REF_SPLICE THRA^ENSG00000126351.12 chr17:40086853:+ THRA1/BTR^ENSG00000235300.4 chr17:48307331:+ YES_LDAS 148.6452 GT 1.8892 AG 1.4295 [“INTRACHROMOSOMAL[chr17:8.20Mb]”]

BCAS4–BCAS3 4 122 ONLY_REF_SPLICE BCAS4^ENSG00000124243.17 chr20:50795173:+ BCAS3^ENSG00000141376.22 chr17:61353588:+ NO_LDAS 171.8284 GT 1.6402 AG 1.3996 [“ChimerPub”,“ChimerSeq”,“chimerdb_pubmed”,“CCLE”,“FA_CancerSupp”,“INTERCHROMOSOMAL[chr20–chr17]”]

CCDC6–RET 26 15 ONLY_REF_SPLICE CCDC6^ENSG00000108091.10 chr10:59906122:- RET^ENSG00000165731.18 chr10:43116584:+ YES_LDAS 55.9124 GT 1.8892 AG 1.8323 [“ChimerSeq”,“ChimerKB”,“FA_CancerSupp”,“Cosmic”,“Mitelman”,“ChimerPub”,“HaasMedCancer”,“Larsson_TCGA”,“YOSHIHARA_TCGA”,“INTRACHROMOSOMAL[chr10:16.66Mb]”]

In silico Validation Using FusionInspector

~/STAR-Fusion-Tutorial$ STAR-Fusion –left_fq rnaseq_1.fastq.gz –right_fq rnaseq_2.fastq.gz –genome_lib_dir ~/GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ –FusionInspector validate

– Skipping CMD:

/home/ubuntu/miniconda3/bin/STAR –genomeDir /home/ubuntu/GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir//ref_genome.fa.star.idx –outReadsUnmapped None –chimSegmentMin 12 –chimJunctionOverhangMin 12 –chimOutJunctionFormat 1 –alignSJDBoverhangMin 10 –alignMatesGapMax 100000 –alignIntronMax 100000 –alignSJstitchMismatchNmax 5 -1 5 5 –runThreadN 4 –outSAMstrandField intronMotif –outSAMunmapped Within –outSAMtype BAM Unsorted –readFilesIn /home/ubuntu/STAR-Fusion-Tutorial/rnaseq_1.fastq.gz /home/ubuntu/STAR-Fusion-Tutorial/rnaseq_2.fastq.gz –outSAMattrRGline ID:GRPundef –chimMultimapScoreRange 10 –chimMultimapNmax 10 –chimNonchimScoreDropMin 10 –peOverlapNbasesMin 12 –peOverlapMMp 0.1 –genomeLoad NoSharedMemory –twopassMode Basic –readFilesCommand ‘gunzip -c’ , checkpoint [/home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/_starF_checkpoints/run_star_aligner.ok] exists. -sample contains 733290

………………………………

STAR-Fusion complete. See output: star-fusion.fusion_candidates.tsv (or .abridged.tsv version)

  • Running CMD:

/home/ubuntu/miniconda3/lib/STAR-Fusion/FusionInspector/FusionInspector –fusions star-fusion.fusion_predictions.abridged.tsv –out_prefix finspector –min_junction_reads 1 –min_novel_junction_support 3 –min_spanning_frags_only 5 –prep_for_IGV –max_promiscuity 10 –out_dir /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate –genome_lib_dir /home/ubuntu/GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ –CPU 4 –left_fq /home/ubuntu/STAR-Fusion-Tutorial/rnaseq_1.fastq.gz –right_fq /home/ubuntu/STAR-Fusion-Tutorial/rnaseq_2.fastq.gz –annotate

…………………………..

CMD:

sort -k1,1 -k2,2n /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/finspector.bed > /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/finspector.bed.sorted.bed already processed. Skipping.

Running: bgzip -f /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/finspector.bed.sorted.bed

Running: touch /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/chckpts_dir/finspector.bed.bgzip.ok

Running: tabix -p bed /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/finspector.bed.sorted.bed.gz

Running: touch /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/chckpts_dir/finspector.bed.tabix.ok

Running: samtools faidx /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/finspector.fa

Running: touch /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/chckpts_dir/merged_contig_fai.ok

………………………………….

  • Running CMD: /home/ubuntu/miniconda3/bin/STAR –runThreadN 4 –genomeDir /home/ubuntu/GRCh38_v27_CTAT_lib_Feb092018/ctat_genome_lib_build_dir/ref_genome.fa.star.idx –outSAMtype BAM SortedByCoordinate –twopassMode Basic –alignMatesGapMax 100000 –alignIntronMax 100000 –alignSJDBoverhangMin 10 –genomeSuffixLengthMax 10000 –limitBAMsortRAM 20000000000 –readFilesIn /home/ubuntu/STAR-Fusion-Tutorial/rnaseq_1.fastq.gz /home/ubuntu/STAR-Fusion-Tutorial/rnaseq_2.fastq.gz –genomeFastaFiles /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/fi_workdir/finspector.fa –outSAMfilter KeepAllAddedReferences –sjdbGTFfile /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/fi_workdir/finspector.gtf –alignSJstitchMismatchNmax 5 -1 5 5 –readFilesCommand ‘gunzip -c’

Mar 29 16:42:44 ….. started STAR run

Mar 29 16:42:44 ….. loading genome

Mar 29 16:44:54 … generating Suffix Array index

Mar 29 16:49:24 … completed Suffix Array index

Mar 29 16:49:25 ….. processing annotations GTF

Mar 29 16:49:25 ….. inserting junctions into the genome indices

Mar 29 16:50:53 ….. started 1st pass mapping

Mar 29 16:51:05 ….. finished 1st pass mapping

Mar 29 16:51:06 ….. inserting junctions into the genome indices

Mar 29 16:52:34 ….. started mapping

Mar 29 16:52:47 ….. started sorting BAM

Mar 29 16:52:48 ….. finished successfully

  • Running CMD: mv Aligned.sortedByCoord.out.bam finspector.star.sortedByCoord.out.bam

  • Running CMD: samtools index finspector.star.sortedByCoord.out.bam

Running: touch /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/chckpts_dir/run_STAR.ok

Running: java -jar /home/ubuntu/miniconda3/lib/STAR-Fusion/FusionInspector/plugins/MarkDuplicates.jar I=/home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/fi_workdir/finspector.star.sortedByCoord.out.bam O=/home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/fi_workdir/finspector.star.cSorted.dupsMarked.bam M=/home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/fi_workdir/finspector.star.cSorted.dupsMarked.bam.stats TMP_DIR=/home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/fi_workdir VALIDATION_STRINGENCY=SILENT

[Fri Mar 29 16:52:49 UTC 2019] picard.sam.MarkDuplicates

INPUT=[/home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/fi_workdir/finspector.star.sortedByCoord.out.bam] OUTPUT=/home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/fi_workdir/finspector.star.cSorted.dupsMarked.bam METRICS_FILE=/home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/fi_workdir/finspector.star.cSorted.dupsMarked.bam.stats TMP_DIR=[/home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/fi_workdir] VALIDATION_STRINGENCY=SILENT PROGRAM_RECORD_ID=MarkDuplicates PROGRAM_GROUP_NAME=MarkDuplicates REMOVE_DUPLICATES=false ASSUME_SORTED=false MAX_SEQUENCES_FOR_DISK_READ_ENDS_MAP=50000 MAX_FILE_HANDLES_FOR_READ_ENDS_MAP=8000 SORTING_COLLECTION_SIZE_RATIO=0.25 READ_NAME_REGEX=[a-zA-Z0-9]+:[0-9]:([0-9]+):([0-9]+):([0-9]+).* OPTICAL_DUPLICATE_PIXEL_DISTANCE=100 VERBOSITY=INFO QUIET=false COMPRESSION_LEVEL=5 MAX_RECORDS_IN_RAM=500000 CREATE_INDEX=false CREATE_MD5_FILE=false

………………………………………………….

INFO 2019-03-29 16:52:51 MarkDuplicates Read 487046 records. 0 pairs never matched.

INFO 2019-03-29 16:52:51 MarkDuplicates After buildSortedReadEndLists freeMemory: 557182696; totalMemory: 1140850688; maxMemory: 16680747008

INFO 2019-03-29 16:52:51 MarkDuplicates Will retain up to 521273344 duplicate indices before spilling to disk.

INFO 2019-03-29 16:52:53 MarkDuplicates Traversing read pair information and detecting duplicates.

INFO 2019-03-29 16:52:53 MarkDuplicates Traversing fragment information and detecting duplicates.

INFO 2019-03-29 16:52:53 MarkDuplicates Sorting list of duplicate records.

INFO 2019-03-29 16:52:53 MarkDuplicates After generateDuplicateIndexes freeMemory: 2822714136; totalMemory: 7000293376; maxMemory: 16680747008

INFO 2019-03-29 16:52:53 MarkDuplicates Marking 12084 records as duplicates.

INFO 2019-03-29 16:52:53 MarkDuplicates Found 0 optical duplicate clusters.

INFO 2019-03-29 16:52:57 MarkDuplicates Before output close freeMemory: 68119192; totalMemory: 71303168; maxMemory: 16680747008

INFO 2019-03-29 16:52:57 MarkDuplicates After output close freeMemory: 14175400; totalMemory: 16777216; maxMemory: 16680747008

[Fri Mar 29 16:52:57 UTC 2019] picard.sam.MarkDuplicates done. Elapsed time: 0.14 minutes.

Runtime.totalMemory()=16777216

…………………………..

[487000] -retrieving read alignments for 633 spanning frags.

………………………………..

CMD: ln -sf /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/fi_workdir/finspector.fusion_preds.coalesced.summary.min_frag_thresh.starFfmt.wSpliceInfo.post_blast_filter.post_promisc_filter /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/finspector.fusion_predictions.post_blast_and_promiscuity_filter

…………………………

Additional files/directories/subdirectories and some of their contents following the above run

~/STAR-Fusion-Tutorial$ ls -ltr STAR-Fusion_outdir/

drwxrwxr-x 4 ubuntu ubuntu 4096 Mar 29 16:54 FusionInspector-validate

-rw-rw-r– 1 ubuntu ubuntu 24626 Mar 29 16:54 FusionInspector.log

-rw-rw-r– 1 ubuntu ubuntu 0 Mar 29 16:54 _fi_validate_598.ok

~/STAR-Fusion-Tutorial$ ls -ltr STAR-Fusion_outdir/FusionInspector-validate/

-rw-rw-r– 1 ubuntu ubuntu 2903977 Mar 29 16:40 finspector.gtf

-rw-rw-r– 1 ubuntu ubuntu 1307933 Mar 29 16:40 finspector.fa

-rw-rw-r– 1 ubuntu ubuntu 5613 Mar 29 16:40 cytoBand.txt

-rw-rw-r– 1 ubuntu ubuntu 117434 Mar 29 16:40 finspector.bed

-rw-rw-r– 1 ubuntu ubuntu 29097 Mar 29 16:42 finspector.bed.sorted.bed.gz

-rw-rw-r– 1 ubuntu ubuntu 873 Mar 29 16:42 finspector.bed.sorted.bed.gz.tbi

-rw-rw-r– 1 ubuntu ubuntu 807 Mar 29 16:42 finspector.fa.fai

-rw-rw-r– 1 ubuntu ubuntu 26255 Mar 29 16:53 finspector.junction_reads.bam

-rw-rw-r– 1 ubuntu ubuntu 2208 Mar 29 16:53 finspector.junction_reads.bam.bai

-rw-rw-r– 1 ubuntu ubuntu 34215 Mar 29 16:53 finspector.junction_reads.bam.bed

-rw-rw-r– 1 ubuntu ubuntu 6230 Mar 29 16:53 finspector.junction_reads.bam.bed.sorted.bed.gz

-rw-rw-r– 1 ubuntu ubuntu 675 Mar 29 16:53 finspector.junction_reads.bam.bed.sorted.bed.gz.tbi

-rw-rw-r– 1 ubuntu ubuntu 65864 Mar 29 16:53 finspector.spanning_reads.bam

-rw-rw-r– 1 ubuntu ubuntu 2832 Mar 29 16:53 finspector.spanning_reads.bam.bai

-rw-rw-r– 1 ubuntu ubuntu 48476 Mar 29 16:53 finspector.spanning_reads.bam.bed

-rw-rw-r– 1 ubuntu ubuntu 11417 Mar 29 16:53 finspector.spanning_reads.bam.bed.sorted.bed.gz

-rw-rw-r– 1 ubuntu ubuntu 714 Mar 29 16:53 finspector.spanning_reads.bam.bed.sorted.bed.gz.tbi

-rw-rw-r– 1 ubuntu ubuntu 27459384 Mar 29 16:54 finspector.consolidated.cSorted.bam

-rw-rw-r– 1 ubuntu ubuntu 6248 Mar 29 16:54 finspector.consolidated.cSorted.bam.bai

-rw-rw-r– 1 ubuntu ubuntu 11775 Mar 29 16:54 finspector.igv.FusionJuncSpan

drwxrwxrwx 4 ubuntu ubuntu 4096 Mar 29 16:54 fi_workdir

lrwxrwxrwx 1 ubuntu ubuntu 205 Mar 29 16:54 finspector.fusion_predictions.post_blast_and_promiscuity_filter -> /home/ubuntu/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate/fi_workdir/finspector.fusion_preds.coalesced.summary.min_frag_thresh.starFfmt.wSpliceInfo.post_blast_filter.post_promisc_filter

-rw-rw-r– 1 ubuntu ubuntu 154510 Mar 29 16:54 finspector.fusion_predictions.final

-rw-rw-r– 1 ubuntu ubuntu 5895 Mar 29 16:54 finspector.fusion_predictions.final.abridged

-rw-rw-r– 1 ubuntu ubuntu 6161 Mar 29 16:54 finspector.fusion_predictions.final.abridged.FFPM

-rw-rw-r– 1 ubuntu ubuntu 14520 Mar 29 16:54 finspector.fusion_inspector_web.json

-rw-rw-r– 1 ubuntu ubuntu 8810 Mar 29 16:54 finspector.fusion_predictions.final.abridged.FFPM.annotated

drwxrwxr-x 2 ubuntu ubuntu 4096 Mar 29 16:54 chckpts_dir

~/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate$ head finspector.bed | column -t

ACACA–STAC2 50155 53604 ID=ACACA–STAC2ENST00000619245.1;ACACA–STAC2ACACA^ENSG00000278540.4;ACACA 0 + 50155 53604 0 4 85,216,156,178 0,1085,2115,3271

ACACA–STAC2 43239 48865 ID=ACACA–STAC2ENST00000614450.4;ACACA–STAC2ACACA^ENSG00000278540.4;ACACA 0 + 43239 48865 0 7 44,119,24,144,97,108,55 0,186,1511,2535,3456,4463,5571

ACACA–STAC2 11923 13492 ID=ACACA–STAC2ENST00000614438.1;ACACA–STAC2ACACA^ENSG00000278540.4;ACACA 0 + 11923 13492 0 2 227,342 0,1227 ACACA–STAC2 1000 7569 ID=ACACA–STAC2ENST00000618351.1;ACACA–STAC2ACACA^ENSG00000278540.4;ACACA 0 + 1000 7569 0 2 557,159 0,6410

ACACA–STAC2 71436 73042 ID=ACACA–STAC2ENST00000618053.1;ACACA–STAC2ACACA^ENSG00000278540.4;ACACA 0 + 71436 73042 0 3 46,120,297 0,1046,1309

ACACA–STAC2 1038 17224 ID=ACACA–STAC2ENST00000617548.1;ACACA–STAC2ACACA^ENSG00000278540.4;ACACA 0 + 1038 17224 0 5 519,47,253,111,133 0,9812,10859,14942,16053

ACACA–STAC2 8602 17224 ID=ACACA–STAC2ENST00000614789.4;ACACA–STAC2ACACA^ENSG00000278540.4;ACACA 0 + 8602 17224 0 5 118,47,253,111,133 0,2248,3295,7378,8489

ACACA–STAC2 14492 73105 ID=ACACA–STAC2ENST00000617649.4;ACACA–STAC2ACACA^ENSG00000278540.4;ACACA 0 + 14492 73105 0 55 488,111,133,139,110,82,99,107,111,210,171,162,164,151,104,82,146,151,135,147,189,101,89,125,114,114,90,119,24,144,97,108,57,45,42,216,156,204,156,147,270,98,121,111,144,121,97,97,136,178,113,155,171,137,623 0,1488,2599,3732,4871,5762,6827,7926,9033,10144,11354,12511,13018,14182,15110,16216,16734,17914,19065,19545,20692,21881,22982,24071,25196,26543,27657,28933,30258,31282,32203,33210,34318,34618,35706,36748,37778,38934,40138,41294,42441,43892,44990,46111,47222,47955,49076,50340,51437,52573,53751,54864,55682,56853,57990

ACACA–STAC2 14492 74928 ID=ACACA–STAC2ENST00000612895.4;ACACA–STAC2ACACA^ENSG00000278540.4;ACACA 0 + 14492 74928 0 54 488,133,139,110,82,99,107,111,210,171,162,164,151,104,82,146,151,135,147,189,101,89,125,114,114,90,119,24,144,97,108,57,45,42,216,156,204,156,147,270,98,121,111,144,121,97,97,136,178,113,155,171,137,2446 0,2599,3732,4871,5762,6827,7926,9033,10144,11354,12511,13018,14182,15110,16216,16734,17914,19065,19545,20692,21881,22982,24071,25196,26543,27657,28933,30258,31282,32203,33210,34318,34618,35706,36748,37778,38934,40138,41294,42441,43892,44990,46111,47222,47955,49076,50340,51437,52573,53751,54864,55682,56853,57990

ACACA–STAC2 1146 22501 ID=ACACA–STAC2ENST00000615229.4;ACACA–STAC2ACACA^ENSG00000278540.4;ACACA 0 + 1146 22501 0 10 411,47,253,111,133,139,110,82,99,83 0,9704,10751,14834,15945,17078,18217,19108,20173,21272

~/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate$ samtools view finspector.junction_reads.bam | head -10

fustut000014464b 163 ACACA–STAC2 64894 255 36M14465N14M = 79515 14660 CCAGCTGATCCAGCAAGCCTGGATTCTGAAGCCAAGCTCCAGCGATTCAA CC@ACAB>BCCBACBBBBCBB@BBBC@BBBABBCBBBBBBAABA9@AB?B PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:2 AS:i:84

fustut0000185b7b 163 ACACA–STAC2 64894 255 36M14465N14M = 79509 14665 CCAGCTGATCCAGCAAACCTGGATTCTGAAGCCAAGCTCCAGCGATTCAA BBB?B??>@BBB;BBBABB???><@B?AAB?AAAA?B=A@B?B<15:B?? PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:0 AS:i:99

fustut0000078bb4 163 ACACA–STAC2 64896 255 34M14465N16M = 79425 14579 AGCTGATCCAGCAAACCTGGATTCTGAAGCCAAGCTCCAGCGATTCAAGC BCCBCBB@AABBBAB@AAAB@?B@@A@@@@?B??<==54=;>/65;<63/ PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:0 AS:i:99

fustut000011d1a6 83 ACACA–STAC2 64898 255 32M14465N18M = 63619 -15794 CTGATCCAGCAAACCTGGATTCTGAAGCCAAGCTCCAGCGATTCAAGCGC ?67==?@?=@@88?@???@:?<??@A?A?@??@>BBAB??BABBBA@BAB PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:1 AS:i:95

fustut0000143249 163 ACACA–STAC2 64899 255 31M14465N19M = 79551 14702 TGATCCAGCAAACCTGGATTCTGAAGCCAAGCTCCAGCGATTCAAGCGCT CABBCCBBCBCCBCBBACBBBBACAACCCCACABCB@B>>AABBC?B>B? PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:0 AS:i:99

fustut0000102c56 99 ACACA–STAC2 64900 255 30M14465N20M = 79426 14576 GATCCAGCAAACCTGGATTCTGAAGCCAAGCTCCAGCGATTCAAGCGCTC BBBBBBCBBBBBBBBBBBCBBBBABABBBBAB?A?BAB?A?@?@@?A??< PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:0 AS:i:99

fustut0000101d0e 147 ACACA–STAC2 64901 255 29M14465N21M = 62505 -16911 ATCCAGCAAACCTGGATTCTGAAGCCAAGCTCCAGCGATTCAAGCGCTCC B@>A@BBBA:ABBBBBBBBBBBBBBBBBBBABBBCCCBCCCBBBCCBBBB PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:0 AS:i:98

fustut0000110e1d 147 ACACA–STAC2 64901 255 29M14465N21M = 64830 -14586 ATCCAGCAAACCTGGATTCTGAAGCCAAGCTCCAGCGATTCAAGCGCTCC ><@BA?B@@?AB?B@?A?BBABAAABAB?B?BBBBBBBBBBBBBBBBBBB PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:0 AS:i:97

fustut0000001745 147 ACACA–STAC2 64904 255 26M14465N24M = 63572 -15847 CAGCAAACCTGGATTCTGAAGCCAAGCTCCAGCGATTCAAGCGCTCCCTC AA?A<<6?@??AA?@?A?@A??@?A@B?ABABBAABBBAAABAB@BBBAB PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:0 AS:i:99

fustut00001a4553 83 ACACA–STAC2 64904 255 26M14465N22M2S = 63617 -15800 CAGCAAACCTGGATTCTGAAGCCAAGCTCCAGCGATTCAAGCGCTCCCCA =?7?7?6??677>47@<<??=?????@7AB??A=AA?BAB?B@B?BBBCB PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:0 AS:i:97

~/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate$ samtools view finspector.spanning_reads.bam | head -10

fustut0000030301 99 ACACA–STAC2 62533 255 36M1000N14M = 79410 16927 ATCCTCGATGGATGCTAGCAGGCCGTCCTCACCCAACCCAAAAAGGTCAG @B@@@AA@@B@8<B?A?@?<A==@?7=@8A=@==8>6===;38=82CCCB=9ABBB>B PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:0 AS:i:97

fustut0000084fac 163 ACACA–STAC2 63594 255 50M = 79424 15880 CTTTTTTGACTATGGATCTTTCTCAGAGATTATGCAGCCCTGGGCACAGA CBCCCCBCCCCCBCCCCCCBCCCCCCBB@BCCCBCCBBCCBABBCCCCCB PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:1 AS:i:95

fustut00000b744e 99 ACACA–STAC2 63615 255 50M = 79390 15818 CTCAGAGATTATGCAGCCCTGGGCACAGACTGTGGTGGTTGGTAGAGCCA BCA;AACBCCBBCBBBBBBBBBBB?A>B@ABB5B@1@@7><<+15+719/ PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:1 AS:i:88

fustut0000104c44 99 ACACA–STAC2 63621 255 46M4S = 79390 15818 GATTATGCAGCCCTGGGCACAGACTGTGGTGGTTGGTAGAGCCAGGCTAG BABBBBBBBBAAABB?BAB?AB??BB?BA6A@/>7>72:99982:<17;: PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:1 AS:i:90

fustut0000107de9 99 ACACA–STAC2 63637 255 29M1167N21M = 79485 15898 GCACAGACTGTGGTGGTTGGTAGAGCCAGGCTAGGAGGAATAACCGTGGG BCCBB>BCBB=6>;B@(>7?72;91;>5-6=3=(@244);76######## PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:2 AS:i:94

fustut00001a6fb6 99 ACACA–STAC2 63650 255 16M1167N34M = 79412 15812 TGGTTGGTAGAGCCAGGCTAGGAGGAATACCTGTGGGAGTTGTTGCTGTA BAB?CBA:69:=BA3>=C@CBBBB>7=@;B>99= PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:0 AS:i:99

fustut00000232a4 99 ACACA–STAC2 64830 255 3S47M = 79524 14744 AGCCAGGCTAGGAGGAATACCTGTGGGAGTTGTTGCTGTAGAAACCCGAA :@CA=ABC@9@=5:?:2?CCCBB??A>0><@;>A>B>>6:;8?ABB@779 PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:0 AS:i:94

fustut000006da80 99 ACACA–STAC2 64830 255 1S49M = 79526 14746 CCAGGCTAGGAGGAATACCTGTGGGAGTTGTTGCTGTAGAAACCCGAACA CCB@CCB>??AB?AA@BCBCCACCCACB@CBBCC>;>CABCA8@C@>@>A PG:Z:MarkDuplicates NH:i:1 HI:i:1 nM:i:0 AS:i:96

~/STAR-Fusion-Tutorial/STAR-Fusion_outdir/FusionInspector-validate$ samtools view finspector.consolidated.cSorted.bam | head -10

fustut00000fbb76 99 ACACA–STAC2 171 3 50M = 226 105 GAGAAAAAAAAAAAAAGGCAAAAAAGCACAATATTGCAGTCTGCAGAATC A:ABBBBB@>B>ABAA=>8@9?A?=9;>?=>7:?<990:7:<::69>>>; PG:Z:MarkDuplicates NH:i:2 HI:i:1 nM:i:0 AS:i:98

fustut0000171425 163 ACACA–STAC2 206 3 50M = 358 202 GCAGTCTGCAGAATCTTCTTTCTCCCCCTTTCACAAGAGACCACATTCTG AC@BABBCBBBBCBBCBBBBBBBBABAABBBBBBCBBBBA@ABB?7?AAB PG:Z:MarkDuplicates NH:i:2 HI:i:1 nM:i:0 AS:i:98

fustut00000fbb76 147 ACACA–STAC2 226 3 50M = 171 -105 TCTCCCCCTTTCACAAGAGACCACATTCTGACACCAACTTCCGTGGAAAC =B=AAAA@6?2?ABBBBBB?BB?BA67AABAB?BBC?B>>BBBBCCBCBB PG:Z:MarkDuplicates NH:i:2 HI:i:1 nM:i:0 AS:i:98

fustut0000017d0a 163 ACACA–STAC2 227 3 50M = 377 200 CTCCCCCTTTCACAAGAGACCACATTCTGACACCAACTTCCGTGGAAACA BCBCBBBCB@CBBBB@@BBCAB6AB@BA?>@BAA:2>A?AAB=A<<9;<9 PG:Z:MarkDuplicates NH:i:2 HI:i:1 nM:i:0 AS:i:98

fustut00001b1af0 99 ACACA–STAC2 251 3 50M = 367 166 TTCTGACACCAACTTCCGTGGAAACACTGGCGCTAGCTCCAAACTAACAA BBBBBBBBBBBB@BBB@B@BABBB@BBBBA@AA@A@@>?=6A@@@?@A@? PG:Z:MarkDuplicates NH:i:2 HI:i:1 nM:i:0 AS:i:98

fustut0000066a67 99 ACACA–STAC2 259 3 50M = 301 92 CCAACTTCCGTGGAAACACTGGCGCTAGCTCCAAACTAACAATCGCCAAA BBBBBBBBBC@CB=ABABBABBBBABABBA@?A=??AAA@AB?BA@BB?A?>A5B=AA;A=A@;?=;A==5>?=;?;9395?5==9>5?94A PG:Z:MarkDuplicates NH:i:2 HI:i:1 nM:i:0 AS:i:98

fustut000012fcc3 99 ACACA–STAC2 325 3 50M = 433 158 GGAGAAGGAAGTGAGGCACTTCGCCGGGCAGGAGTCCACGTTGGGAGGAG AB=A66;?=?A?BB>AAABA?AA89::><-:=B:<>B9AA>=,>>1> PG:Z:MarkDuplicates NH:i:2 HI:i:1 nM:i:0 AS:i:98

Vizualize in IGV

finspector.bed # reference transcript structure annotations in BED format

finspector.consolidated.cSorted.bam # reads aligned to the fusion contigs

finspector.junction_reads.bam # junction / split-reads supporting fusions

finspector.spanning_reads.bam # fusion spanning fragment evidence

LS0tCnRpdGxlOiAiRGlzY292ZXJpbmcgdHJhbnNjcmlwdC9nZW5lIGZ1c2lvbiBmcm9tIFJOQS1zZXEgZGF0YSB1c2luZyBTVEFSLUZ1c2lvbiBmcm9tIFRyaW5pdHkgQ2FuY2VyIFRyYW5zY3JpcHRvbWUgQW5hbHlzaXMgVG9vbGtpdCAoQ1RBVCkiCmF1dGhvcjogIkJoYWdpcmF0aGkgRGFzaCIKb3V0cHV0OiBodG1sX25vdGVib29rCi0tLQoKCiMjIFJlZmVyZW5jZXMsIHJlc291cmNlcywgZGF0YSBhbmQgaW5pdGlhbCBkaXJlY3RvcnkgY29udGVudHMKCiMjIyMgU1RBUi1GdXNpb246IEZhc3QgYW5kIEFjY3VyYXRlIEZ1c2lvbiBUcmFuc2NyaXB0IERldGVjdGlvbiBmcm9tIFJOQS1TZXEuIHJpYW4gSGFhcywgQWxleGFuZGVyIERvYmluLCBOaWNvbGFzIFN0cmFuc2t5LCBCbyBMaSwgWGlhbyBZYW5nLCBUaW1vdGh5IFRpY2tsZSwgQXNtYSBCYW5rYXB1ciwgQ2FycmllIEdhbm90ZSwgVGhvbWFzIERvYWssIE5hdGFsaWUgUG9jaGV0LCBKaW5nIFN1biwgQ2F0aGVyaW5lIFd1LCBUaG9tYXMgR2luZ2VyYXMsIEF2aXYgUmVnZXYuIGJpb1J4aXYgMTIwMjk1OyBkb2k6IGh0dHBzOi8vZG9pLm9yZy8xMC4xMTAxLzEyMDI5NQoKCiMjIyMgQVdTIGluc3RhbmNlIHR5cGU6IHI1LjJ4bGFyZ2UgKDY0IEdCIFJBTSkKCgojIyMgfiQgZ2l0IGNsb25lIGh0dHBzOi8vZ2l0aHViLmNvbS9TVEFSLUZ1c2lvbi9TVEFSLUZ1c2lvbi1UdXRvcmlhbC5naXQKCkNsb25pbmcgaW50byAnU1RBUi1GdXNpb24tVHV0b3JpYWwnLi4uCgpyZW1vdGU6IEVudW1lcmF0aW5nIG9iamVjdHM6IDMsIGRvbmUuCgpyZW1vdGU6IENvdW50aW5nIG9iamVjdHM6IDEwMCUgKDMvMyksIGRvbmUuCgpyZW1vdGU6IENvbXByZXNzaW5nIG9iamVjdHM6IDEwMCUgKDMvMyksIGRvbmUuCgpyZW1vdGU6IFRvdGFsIDI4IChkZWx0YSAwKSwgcmV1c2VkIDIgKGRlbHRhIDApLCBwYWNrLXJldXNlZCAyNQoKVW5wYWNraW5nIG9iamVjdHM6IDEwMCUgKDI4LzI4KSwgZG9uZS4KCiMjIyMgfiQgbHMgLWwKCmRyd3hyd3hyLXggIDQgdWJ1bnR1IHVidW50dSAgICAgICAgNDA5NiBNYXIgMjkgMDA6NTAgU1RBUi1GdXNpb24tVHV0b3JpYWwKCiMjIyMgfiQgY2QgU1RBUi1GdXNpb24tVHV0b3JpYWwvCgojIyMjIH4vU1RBUi1GdXNpb24tVHV0b3JpYWwkIGxzIC1sCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgMTcxOSBNYXIgMjkgMDA6NTAgQW5ub3RGaWx0ZXJSdWxlLnBtCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgNjU4NiBNYXIgMjkgMDA6NTAgQ1RBVF9IdW1hbkZ1c2lvbkxpYi5taW5pLmRhdC5negoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICAxMjkgTWFyIDI5IDAwOjUwIFJFQURNRS5tZAoKZHJ3eHJ3eHIteCAyIHVidW50dSB1YnVudHUgICAgIDQwOTYgTWFyIDI5IDAwOjUwIFNUQVItRnVzaW9uLVR1dG9yaWFsLndpa2kKCi1yd3hyd3hyLXggMSB1YnVudHUgdWJ1bnR1ICAgICAgMTg4IE1hciAyOSAwMDo1MCBjbGVhbk1lLnNoCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAxMTI5OTkyNSBNYXIgMjkgMDA6NTAgbWluaWdlbm9tZS5mYQoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgMTU2MzYyNzYgTWFyIDI5IDAwOjUwIG1pbmlnZW5vbWUuZ3RmCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSA0MTM4MDgzOSBNYXIgMjkgMDA6NTAgcm5hc2VxXzEuZmFzdHEuZ3oKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1IDQ1MzUwNzE0IE1hciAyOSAwMDo1MCBybmFzZXFfMi5mYXN0cS5negoKIyMjIyBPYnRhaW4gcmVzb3VjZSBsaWJyYXJ5IAoKIyMjIH4kIHdnZXQgaHR0cHM6Ly9kYXRhLmJyb2FkaW5zdGl0dXRlLm9yZy9UcmluaXR5L0NUQVRfUkVTT1VSQ0VfTElCL0dSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4LnBsdWctbi1wbGF5LnRhci5negoKCjEwMCVbKys9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Pl0gIDI4LjM5RyAgMS41MU1CL3MgICAgaW4gM2ggMThtICAKCjIwMTktMDMtMjkgMDE6MTI6MjEgKDIuMzcgTUIvcykgLSBcdTIwMThHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC5wbHVnLW4tcGxheS50YXIuZ3pcdTIwMTkgc2F2ZWQgWzMwNDg0MzAyMjI5LzMwNDg0MzAyMjI5XQoKCiMjIyMgfiQgdGFyIHh2ZiBHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC5wbHVnLW4tcGxheS50YXIuZ3ogICAKCkdSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4LwpHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC9jdGF0X2dlbm9tZV9saWJfYnVpbGRfZGlyLwpHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC9jdGF0X2dlbm9tZV9saWJfYnVpbGRfZGlyL0Fubm90RmlsdGVyUnVsZS5wbQpHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC9jdGF0X2dlbm9tZV9saWJfYnVpbGRfZGlyL3JlZl9nZW5vbWUuZmEKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9wZmFtX2RvbWFpbnMuZGJtCkdSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvcmVmX2dlbm9tZS5mYS5mYWkKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfYW5ub3QuZ3RmLm1pbmkuc29ydHUKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9ibGFzdF9wYWlycy5pZHgKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfYW5ub3QuZ3RmLmdlbmVfc3BhbnMKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfZ2Vub21lLmZhLmdtYXAub2sKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfZ2Vub21lLmZhLnN0YXIuaWR4LwpHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC9jdGF0X2dlbm9tZV9saWJfYnVpbGRfZGlyL3JlZl9nZW5vbWUuZmEuc3Rhci5pZHgvYnVpbGQub2sKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfZ2Vub21lLmZhLnN0YXIuaWR4L3NqZGJMaXN0LmZyb21HVEYub3V0LnRhYgpHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC9jdGF0X2dlbm9tZV9saWJfYnVpbGRfZGlyL3JlZl9nZW5vbWUuZmEuc3Rhci5pZHgvZXhvbkdlVHJJbmZvLnRhYgpHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC9jdGF0X2dlbm9tZV9saWJfYnVpbGRfZGlyL3JlZl9nZW5vbWUuZmEuc3Rhci5pZHgvU0FpbmRleApHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC9jdGF0X2dlbm9tZV9saWJfYnVpbGRfZGlyL3JlZl9nZW5vbWUuZmEuc3Rhci5pZHgvdHJhbnNjcmlwdEluZm8udGFiCkdSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvcmVmX2dlbm9tZS5mYS5zdGFyLmlkeC9nZW5lSW5mby50YWIKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfZ2Vub21lLmZhLnN0YXIuaWR4L3NqZGJJbmZvLnR4dApHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC9jdGF0X2dlbm9tZV9saWJfYnVpbGRfZGlyL3JlZl9nZW5vbWUuZmEuc3Rhci5pZHgvU0EKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfZ2Vub21lLmZhLnN0YXIuaWR4L2NoclN0YXJ0LnR4dApHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC9jdGF0X2dlbm9tZV9saWJfYnVpbGRfZGlyL3JlZl9nZW5vbWUuZmEuc3Rhci5pZHgvY2hyTmFtZS50eHQKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfZ2Vub21lLmZhLnN0YXIuaWR4L2Nockxlbmd0aC50eHQKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfZ2Vub21lLmZhLnN0YXIuaWR4L2dlbm9tZVBhcmFtZXRlcnMudHh0CkdSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvcmVmX2dlbm9tZS5mYS5zdGFyLmlkeC9zamRiTGlzdC5vdXQudGFiCkdSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvcmVmX2dlbm9tZS5mYS5zdGFyLmlkeC9HZW5vbWUKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfZ2Vub21lLmZhLnN0YXIuaWR4L2Nock5hbWVMZW5ndGgudHh0CkdSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvcmVmX2dlbm9tZS5mYS5zdGFyLmlkeC9leG9uSW5mby50YWIKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfYW5ub3QucGVwCkdSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvdHJhbnMuYmxhc3QuYWxpZ25fY29vcmRzLmFsaWduX2Nvb3Jkcy5kYXQKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci90cmFucy5ibGFzdC5hbGlnbl9jb29yZHMuYWxpZ25fY29vcmRzLmRibQpHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC9jdGF0X2dlbm9tZV9saWJfYnVpbGRfZGlyL3JlZl9hbm5vdC5ndGYKR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfYW5ub3QuY2RzCkdSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvYmxhc3RfcGFpcnMuaWR4LnByZXYuMTUxODIxNzYzMQpHUkNoMzhfdjI3X0NUQVRfbGliX0ZlYjA5MjAxOC9jdGF0X2dlbm9tZV9saWJfYnVpbGRfZGlyL2Z1c2lvbl9hbm5vdF9saWIuaWR4CkdSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvcmVmX2Fubm90LnByb3RfaW5mby5kYm0KCgojIyMjIH4kIGxzIC1sIEdSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgICAyODM5IEZlYiAyMyAgMjAxOCBBbm5vdEZpbHRlclJ1bGUucG0KCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1IDE0MDA4NDgzODQgRmViIDIxICAyMDE4IGJsYXN0X3BhaXJzLmlkeAoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgMTQwMDg0ODM4NCBGZWIgMjEgIDIwMTggYmxhc3RfcGFpcnMuaWR4LnByZXYuMTUxODIxNzYzMQoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgMjMyMDIzNjU0NCBGZWIgMjEgIDIwMTggZnVzaW9uX2Fubm90X2xpYi5pZHgKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAxOTA4NTcyMTYgRmViIDIzICAyMDE4IHBmYW1fZG9tYWlucy5kYm0KCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAxMDg5OTM0MDkgRmViIDIxICAyMDE4IHJlZl9hbm5vdC5jZHMKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1IDExNTA4MzUzMDUgRmViIDIxICAyMDE4IHJlZl9hbm5vdC5ndGYKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgIDM5MzM5OTggRmViIDIxICAyMDE4IHJlZl9hbm5vdC5ndGYuZ2VuZV9zcGFucwoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICA0OTc1MjA1MyBGZWIgMjEgIDIwMTggcmVmX2Fubm90Lmd0Zi5taW5pLnNvcnR1Cgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgIDM3NTk3NDQyIEZlYiAyMSAgMjAxOCByZWZfYW5ub3QucGVwCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgNzE5NzgxODg4IEZlYiAyMSAgMjAxOCByZWZfYW5ub3QucHJvdF9pbmZvLmRibQoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgMzEzOTc1ODA4MiBGZWIgMjEgIDIwMTggcmVmX2dlbm9tZS5mYQoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICAgIDc4OCBGZWIgMjEgIDIwMTggcmVmX2dlbm9tZS5mYS5mYWkKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICAgICAgIDAgRmViIDIxICAyMDE4IHJlZl9nZW5vbWUuZmEuZ21hcC5vawoKKipkcnd4cnd4ci14IDIgdWJ1bnR1IHVidW50dSAgICAgICA0MDk2IEZlYiAyMSAgMjAxOCByZWZfZ2Vub21lLmZhLnN0YXIuaWR4KioKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1IDE1NTIxNDYzOTkgRmViIDIxICAyMDE4IHRyYW5zLmJsYXN0LmFsaWduX2Nvb3Jkcy5hbGlnbl9jb29yZHMuZGF0Cgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSA0MDM0NTMxMzI4IEZlYiAyMSAgMjAxOCB0cmFucy5ibGFzdC5hbGlnbl9jb29yZHMuYWxpZ25fY29vcmRzLmRibQoKCiMjIyMgfiQgbHMgLWwgR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfZ2Vub21lLmZhLnN0YXIuaWR4LwoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgIDMxOTU1Mzk5MTkgRmViIDIxICAyMDE4IEdlbm9tZQoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgMjUxMTAyOTIwODkgRmViIDIxICAyMDE4IFNBCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgMTU2NTg3MzYxOSBGZWIgMjEgIDIwMTggU0FpbmRleAoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICAgICAgIDAgRmViIDIxICAyMDE4IGJ1aWxkLm9rCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgICAgIDIzOCBGZWIgMjEgIDIwMTggY2hyTGVuZ3RoLnR4dAoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICAgICAxMzggRmViIDIxICAyMDE4IGNock5hbWUudHh0Cgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgICAgIDM3NiBGZWIgMjEgIDIwMTggY2hyTmFtZUxlbmd0aC50eHQKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICAgICAgMjczIEZlYiAyMSAgMjAxOCBjaHJTdGFydC50eHQKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgIDQyNjM1NTQyIEZlYiAyMSAgMjAxOCBleG9uR2VUckluZm8udGFiCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAxNzI1NDk2NyBGZWIgMjEgIDIwMTggZXhvbkluZm8udGFiCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgMTA2MTc1OSBGZWIgMjEgIDIwMTggZ2VuZUluZm8udGFiCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgICAgMTAxOCBGZWIgMjEgIDIwMTggZ2Vub21lUGFyYW1ldGVycy50eHQKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgIDEwMzU1MDE3IEZlYiAyMSAgMjAxOCBzamRiSW5mby50eHQKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICA5MTQ3NDczIEZlYiAyMSAgMjAxOCBzamRiTGlzdC5mcm9tR1RGLm91dC50YWIKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICA5MTQwNzQzIEZlYiAyMSAgMjAxOCBzamRiTGlzdC5vdXQudGFiCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAxMjI2Nzk2OSBGZWIgMjEgIDIwMTggdHJhbnNjcmlwdEluZm8udGFiCgoKCgojIyBQcmVkaWN0IEZ1c2lvbnMgVXNpbmcgU1RBUi1GdXNpb246IFJ1bm5pbmcgU1RBUi1GdXNpb24gc3RhcnRpbmcgd2l0aCBGQVNUUSBmaWxlcyAodHlwaWNhbCkKCgojIyMgfi9TVEFSLUZ1c2lvbi1UdXRvcmlhbCQgU1RBUi1GdXNpb24gLS1sZWZ0X2ZxIHJuYXNlcV8xLmZhc3RxLmd6IC0tcmlnaHRfZnEgcm5hc2VxXzIuZmFzdHEuZ3ogLS1nZW5vbWVfbGliX2RpciB+L0dSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvCgpDTUQ6IG1rZGlyIC1wIC9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIKCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgoqIFJ1bm5pbmcgQ01EOgoKL2hvbWUvdWJ1bnR1L21pbmljb25kYTMvYmluL1NUQVIgLS1nZW5vbWVEaXIgL2hvbWUvdWJ1bnR1L0dSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvL3JlZl9nZW5vbWUuZmEuc3Rhci5pZHggIC0tb3V0UmVhZHNVbm1hcHBlZCBOb25lICAtLWNoaW1TZWdtZW50TWluIDEyICAtLWNoaW1KdW5jdGlvbk92ZXJoYW5nTWluIDEyICAtLWNoaW1PdXRKdW5jdGlvbkZvcm1hdCAxICAtLWFsaWduU0pEQm92ZXJoYW5nTWluIDEwICAtLWFsaWduTWF0ZXNHYXBNYXggMTAwMDAwICAtLWFsaWduSW50cm9uTWF4IDEwMDAwMCAgLS1hbGlnblNKc3RpdGNoTWlzbWF0Y2hObWF4IDUgLTEgNSA1ICAtLXJ1blRocmVhZE4gNCAtLW91dFNBTXN0cmFuZEZpZWxkIGludHJvbk1vdGlmICAtLW91dFNBTXVubWFwcGVkIFdpdGhpbiAgLS1vdXRTQU10eXBlIEJBTSBVbnNvcnRlZCAgLS1yZWFkRmlsZXNJbiAvaG9tZS91YnVudHUvU1RBUi1GdXNpb24tVHV0b3JpYWwvcm5hc2VxXzEuZmFzdHEuZ3ogL2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL3JuYXNlcV8yLmZhc3RxLmd6ICAtLW91dFNBTWF0dHJSR2xpbmUgSUQ6R1JQdW5kZWYgIC0tY2hpbU11bHRpbWFwU2NvcmVSYW5nZSAxMCAtLWNoaW1NdWx0aW1hcE5tYXggMTAgLS1jaGltTm9uY2hpbVNjb3JlRHJvcE1pbiAxMCAgLS1wZU92ZXJsYXBOYmFzZXNNaW4gMTIgLS1wZU92ZXJsYXBNTXAgMC4xICAtLWdlbm9tZUxvYWQgTm9TaGFyZWRNZW1vcnkgIC0tdHdvcGFzc01vZGUgQmFzaWMgIC0tcmVhZEZpbGVzQ29tbWFuZCAnZ3VuemlwIC1jJyAKCk1hciAyOSAxNjoxNToxOCAuLi4uLiBzdGFydGVkIFNUQVIgcnVuCgpNYXIgMjkgMTY6MTU6MTggLi4uLi4gbG9hZGluZyBnZW5vbWUKCk1hciAyOSAxNjoxNzo0OCAuLi4uLiBzdGFydGVkIDFzdCBwYXNzIG1hcHBpbmcKCk1hciAyOSAxNjoxODowNiAuLi4uLiBmaW5pc2hlZCAxc3QgcGFzcyBtYXBwaW5nCgpNYXIgMjkgMTY6MTg6MDcgLi4uLi4gaW5zZXJ0aW5nIGp1bmN0aW9ucyBpbnRvIHRoZSBnZW5vbWUgaW5kaWNlcwoKTWFyIDI5IDE2OjE5OjM1IC4uLi4uIHN0YXJ0ZWQgbWFwcGluZwoKTWFyIDI5IDE2OjE5OjU4IC4uLi4uIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseQoKLXNhbXBsZSBjb250YWlucyA3MzMyOTAKCiogUnVubmluZyBDTUQ6CgovaG9tZS91YnVudHUvbWluaWNvbmRhMy9saWIvU1RBUi1GdXNpb24vdXRpbC9TVEFSLUZ1c2lvbi5tYXBfY2hpbWVyaWNfcmVhZHNfdG9fZ2VuZXMgIC0tZ2Vub21lX2xpYl9kaXIgL2hvbWUvdWJ1bnR1L0dSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvICAtSiBDaGltZXJpYy5vdXQuanVuY3Rpb24gID4gL2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL1NUQVItRnVzaW9uX291dGRpci9zdGFyLWZ1c2lvbi5wcmVsaW1pbmFyeS9zdGFyLWZ1c2lvbi5qdW5jdGlvbl9icmVha3B0c190b19nZW5lcy50eHQKLWJ1aWxkaW5nIGludGVydmFsIHRyZWUgYmFzZWQgb24gL2hvbWUvdWJ1bnR1L0dSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvL3JlZl9hbm5vdC5ndGYubWluaS5zb3J0dQotZG9uZSBidWlsZGluZyBpbnRlcnZhbCB0cmVlICgwLjA3IG1pbikuCi1wYXJzaW5nIGZ1c2lvbiBldmlkZW5jZTogQ2hpbWVyaWMub3V0Lmp1bmN0aW9uCi1tYXBwaW5nIHJlYWRzIHRvIGdlbmVzClsyMDAwMF0sIHJhdGU9MTIwMDAwMC4wMC9taW4gCgouLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKKiBSdW5uaW5nIENNRDoKCmNwIC9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvc3Rhci1mdXNpb24ucHJlbGltaW5hcnkvc3Rhci1mdXNpb24uZnVzaW9uX2NhbmRpZGF0ZXMucHJlbGltaW5hcnkud1NwbGljZUluZm8ud0Fubm90LnBhc3MubWluRkZQTS4wLjEucGFzcyBzdGFyLWZ1c2lvbi5mdXNpb25fcHJlZGljdGlvbnMudHN2CgoqIFJ1bm5pbmcgQ01EOgoKL2hvbWUvdWJ1bnR1L21pbmljb25kYTMvbGliL1NUQVItRnVzaW9uL3V0aWwvY29sdW1uX2V4Y2x1c2lvbnMucGwgc3Rhci1mdXNpb24uZnVzaW9uX3ByZWRpY3Rpb25zLnRzdiBKdW5jdGlvblJlYWRzLFNwYW5uaW5nRnJhZ3MgPiBzdGFyLWZ1c2lvbi5mdXNpb25fcHJlZGljdGlvbnMuYWJyaWRnZWQudHN2CgoKKipTVEFSLUZ1c2lvbiBjb21wbGV0ZS4gIFNlZSBvdXRwdXQ6IHN0YXItZnVzaW9uLmZ1c2lvbl9jYW5kaWRhdGVzLnRzdiAob3IgLmFicmlkZ2VkLnRzdiB2ZXJzaW9uKSoqCgkKCQoKIyMjIyBBZGRpdGlvbmFsIGZpbGVzL2RpcmVjdG9yaWVzL3N1YmRpcmVjdG9yaWVzIGFuZCB0aGVpciBjb250ZW50cyBmb2xsb3dpbmcgdGhlIGFib3ZlIHJ1bgoKCiMjIyMgfi9TVEFSLUZ1c2lvbi1UdXRvcmlhbCQgbHMgLWwKCmRyd3hyd3hyLXggNiB1YnVudHUgdWJ1bnR1ICAgICA0MDk2IE1hciAyOSAxNjoyMCBTVEFSLUZ1c2lvbl9vdXRkaXIKCgojIyMjIH4vU1RBUi1GdXNpb24tVHV0b3JpYWwkIGxzIC1sIFNUQVItRnVzaW9uX291dGRpci8KCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1IDEzMjA3MjA1NCBNYXIgMjkgMTY6MTkgQWxpZ25lZC5vdXQuYmFtCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgIDIzMTcyMTQgTWFyIDI5IDE2OjE5IENoaW1lcmljLm91dC5qdW5jdGlvbgoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICAxODUxIE1hciAyOSAxNjoxOSBMb2cuZmluYWwub3V0Cgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgMjUwNDQgTWFyIDI5IDE2OjE5IExvZy5vdXQKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICAgIDQ0NyBNYXIgMjkgMTY6MTkgTG9nLnByb2dyZXNzLm91dAoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgMTkwODQwIE1hciAyOSAxNjoxOSBTSi5vdXQudGFiCgpkcnd4LS0tLS0tIDIgdWJ1bnR1IHVidW50dSAgICAgIDQwOTYgTWFyIDI5IDE2OjE4IF9TVEFSZ2Vub21lCgpkcnd4LS0tLS0tIDIgdWJ1bnR1IHVidW50dSAgICAgIDQwOTYgTWFyIDI5IDE2OjE4IF9TVEFScGFzczEKCmRyd3hyd3hyLXggMiB1YnVudHUgdWJ1bnR1ICAgICAgNDA5NiBNYXIgMjkgMTY6MjAgX3N0YXJGX2NoZWNrcG9pbnRzCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgIDQ3ODIgTWFyIDI5IDE2OjIwIHBpcGVsaW5lci41OTg1LmNtZHMKCioqLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICA4NTk3IE1hciAyOSAxNjoyMCBzdGFyLWZ1c2lvbi5mdXNpb25fcHJlZGljdGlvbnMuYWJyaWRnZWQudHN2KioKCioqLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgIDQyMzUzIE1hciAyOSAxNjoyMCBzdGFyLWZ1c2lvbi5mdXNpb25fcHJlZGljdGlvbnMudHN2KioKCmRyd3hyd3hyLXggMyB1YnVudHUgdWJ1bnR1ICAgICAgNDA5NiBNYXIgMjkgMTY6MjAgc3Rhci1mdXNpb24ucHJlbGltaW5hcnkKCiMjIyMgfi9TVEFSLUZ1c2lvbi1UdXRvcmlhbCQgbHMgLWwgU1RBUi1GdXNpb25fb3V0ZGlyL3N0YXItZnVzaW9uLnByZWxpbWluYXJ5LwoKZHJ3eHJ3eHIteCAyIHVidW50dSB1YnVudHUgICAgNDA5NiBNYXIgMjkgMTY6MjAgc3Rhci1mdXNpb24uZmlsdGVyLmludGVybWVkaWF0ZXNfZGlyCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgIDU4MzA0IE1hciAyOSAxNjoyMCBzdGFyLWZ1c2lvbi5mdXNpb25fY2FuZGlkYXRlcy5wcmVsaW1pbmFyeQoKbHJ3eHJ3eHJ3eCAxIHVidW50dSB1YnVudHUgICAgIDE1OSBNYXIgMjkgMTY6MjAgc3Rhci1mdXNpb24uZnVzaW9uX2NhbmRpZGF0ZXMucHJlbGltaW5hcnkuZmlsdGVyZWQgLT4gL2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL1NUQVItRnVzaW9uX291dGRpci9zdGFyLWZ1c2lvbi5wcmVsaW1pbmFyeS9zdGFyLWZ1c2lvbi5maWx0ZXIuaW50ZXJtZWRpYXRlc19kaXIvc3Rhci1mdXNpb24ucG9zdF9ibGFzdF9hbmRfcHJvbWlzY3VpdHlfZmlsdGVyCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgIDM4NzY0IE1hciAyOSAxNjoyMCBzdGFyLWZ1c2lvbi5mdXNpb25fY2FuZGlkYXRlcy5wcmVsaW1pbmFyeS5maWx0ZXJlZC5GRlBNCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgIDM5NTUwIE1hciAyOSAxNjoyMCBzdGFyLWZ1c2lvbi5mdXNpb25fY2FuZGlkYXRlcy5wcmVsaW1pbmFyeS53U3BsaWNlSW5mbwoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICA0MjM1MyBNYXIgMjkgMTY6MjAgc3Rhci1mdXNpb24uZnVzaW9uX2NhbmRpZGF0ZXMucHJlbGltaW5hcnkud1NwbGljZUluZm8ud0Fubm90Cgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgMjUyIE1hciAyOSAxNjoyMCBzdGFyLWZ1c2lvbi5mdXNpb25fY2FuZGlkYXRlcy5wcmVsaW1pbmFyeS53U3BsaWNlSW5mby53QW5ub3QuYW5ub3RfZmlsdAoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICA0MjM1MyBNYXIgMjkgMTY6MjAgc3Rhci1mdXNpb24uZnVzaW9uX2NhbmRpZGF0ZXMucHJlbGltaW5hcnkud1NwbGljZUluZm8ud0Fubm90LnBhc3MKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgNDIzNTMgTWFyIDI5IDE2OjIwIHN0YXItZnVzaW9uLmZ1c2lvbl9jYW5kaWRhdGVzLnByZWxpbWluYXJ5LndTcGxpY2VJbmZvLndBbm5vdC5wYXNzLm1pbkZGUE0uMC4xLnBhc3MKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1IDkwMDIyMzMgTWFyIDI5IDE2OjIwIHN0YXItZnVzaW9uLmp1bmN0aW9uX2JyZWFrcHRzX3RvX2dlbmVzLnR4dAoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgODAzMjMzOSBNYXIgMjkgMTY6MjAgc3Rhci1mdXNpb24uanVuY3Rpb25fYnJlYWtwdHNfdG9fZ2VuZXMudHh0LmZhaWwKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1IDE0MDE5MzQgTWFyIDI5IDE2OjIwIHN0YXItZnVzaW9uLmp1bmN0aW9uX2JyZWFrcHRzX3RvX2dlbmVzLnR4dC5wYXNzCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgIDUxNDc1IE1hciAyOSAxNjoyMCBzdGFyLWZ1c2lvbi5qdW5jdGlvbl9yZWFkX25hbWVzCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgIDYyNTU2IE1hciAyOSAxNjoyMCBzdGFyLWZ1c2lvbi5zcGFubmluZ19mcmFnX25hbWVzCgoKCgojIyMgfi9TVEFSLUZ1c2lvbi1UdXRvcmlhbCQgaGVhZCBTVEFSLUZ1c2lvbl9vdXRkaXIvc3Rhci1mdXNpb24uZnVzaW9uX3ByZWRpY3Rpb25zLmFicmlkZ2VkLnRzdiAKCioqRnVzaW9uTmFtZQlKdW5jdGlvblJlYWRDb3VudAlTcGFubmluZ0ZyYWdDb3VudAlTcGxpY2VUeXBlCUxlZnRHZW5lCUxlZnRCcmVha3BvaW50CVJpZ2h0R2VuZQlSaWdodEJyZWFrcG9pbnQJTGFyZ2VBbmNob3JTdXBwb3J0CUZGUE0JTGVmdEJyZWFrRGludWMJTGVmdEJyZWFrRW50cm9weQlSaWdodEJyZWFrRGludWMJUmlnaHRCcmVha0VudHJvcHkJYW5ub3RzKioKClRBVEROMS0tR1NETUIJODEJMTg0CU9OTFlfUkVGX1NQTElDRQlUQVRETjFeRU5TRzAwMDAwMTQ3Njg3LjE4CWNocjg6MTI0NTM5MDI1Oi0JR1NETUJeRU5TRzAwMDAwMDczNjA1LjE4CWNocjE3OjM5OTA5OTI0Oi0JWUVTX0xEQVMJMzYxLjM4NQlHVAkxLjkyMTkJQUcJMS41NjI4CVsiQ0NMRSIsIktsaWpuX0NlbGxMaW5lcyIsIkZBX0NhbmNlclN1cHAiLCJDaGltZXJQdWIiLCJJTlRFUkNIUk9NT1NPTUFMW2NocjgtLWNocjE3XSJdCgpUSFJBLS1USFJBMS9CVFIJNjMJOTMJT05MWV9SRUZfU1BMSUNFCVRIUkFeRU5TRzAwMDAwMTI2MzUxLjEyCWNocjE3OjQwMDg2ODUzOisJVEhSQTEvQlRSXkVOU0cwMDAwMDIzNTMwMC40CWNocjE3OjQ4Mjk0MzQ3OisJWUVTX0xEQVMJMjEyLjczOTkJR1QJMS44ODkyCUFHCTEuOTY1NglbIklOVFJBQ0hST01PU09NQUxbY2hyMTc6OC4yME1iXSJdCgpUQVRETjEtLUdTRE1CCTMyCTE4MglPTkxZX1JFRl9TUExJQ0UJVEFURE4xXkVOU0cwMDAwMDE0NzY4Ny4xOAljaHI4OjEyNDUzOTAyNTotCUdTRE1CXkVOU0cwMDAwMDA3MzYwNS4xOAljaHIxNzozOTkwNTk4NTotCVlFU19MREFTCTI5MS44MzU0CUdUCTEuOTIxOQlBRwkxLjkwODYJWyJDQ0xFIiwiS2xpam5fQ2VsbExpbmVzIiwiRkFfQ2FuY2VyU3VwcCIsIkNoaW1lclB1YiIsIklOVEVSQ0hST01PU09NQUxbY2hyOC0tY2hyMTddIl0KClRBVEROMS0tR1NETUIJMjMJMTgyCU9OTFlfUkVGX1NQTElDRQlUQVRETjFeRU5TRzAwMDAwMTQ3Njg3LjE4CWNocjg6MTI0NTM5MDI1Oi0JR1NETUJeRU5TRzAwMDAwMDczNjA1LjE4CWNocjE3OjM5OTA2MjcxOi0JWUVTX0xEQVMJMjc5LjU2MglHVAkxLjkyMTkJQUcJMS43ODE5CVsiQ0NMRSIsIktsaWpuX0NlbGxMaW5lcyIsIkZBX0NhbmNlclN1cHAiLCJDaGltZXJQdWIiLCJJTlRFUkNIUk9NT1NPTUFMW2NocjgtLWNocjE3XSJdCgpBQ0FDQS0tU1RBQzIJMzEJNDcJT05MWV9SRUZfU1BMSUNFCUFDQUNBXkVOU0cwMDAwMDI3ODU0MC40CWNocjE3OjM3MTIyNTMxOi0JU1RBQzJeRU5TRzAwMDAwMTQxNzUwLjYJY2hyMTc6MzkyMTgxNzM6LQlZRVNfTERBUwkxMDYuMzY5OQlHVAkxLjk2NTYJQUcJMS45NjU2CVsiQ2hpbWVyU2VxIiwiQ0NMRSIsIktsaWpuX0NlbGxMaW5lcyIsIkZBX0NhbmNlclN1cHAiLCJJTlRSQUNIUk9NT1NPTUFMW2NocjE3OjEuODBNYl0iXQoKQkNBUzQtLUJDQVMzCTEwCTEyMglPTkxZX1JFRl9TUExJQ0UJQkNBUzReRU5TRzAwMDAwMTI0MjQzLjE3CWNocjIwOjUwNzk1MTczOisJQkNBUzNeRU5TRzAwMDAwMTQxMzc2LjIyCWNocjE3OjYxMzY4MzI3OisJWUVTX0xEQVMJMTgwLjAxMDcJR1QJMS42NDAyCUFHCTEuOTg5OQlbIkNoaW1lclB1YiIsIkNoaW1lclNlcSIsImNoaW1lcmRiX3B1Ym1lZCIsIkNDTEUiLCJGQV9DYW5jZXJTdXBwIiwiSU5URVJDSFJPTU9TT01BTFtjaHIyMC0tY2hyMTddIl0KClRIUkEtLVRIUkExL0JUUgkxNwk5MglPTkxZX1JFRl9TUExJQ0UJVEhSQV5FTlNHMDAwMDAxMjYzNTEuMTIJY2hyMTc6NDAwODY4NTM6KwlUSFJBMS9CVFJeRU5TRzAwMDAwMjM1MzAwLjQJY2hyMTc6NDgzMDczMzE6KwlZRVNfTERBUwkxNDguNjQ1MglHVAkxLjg4OTIJQUcJMS40Mjk1CVsiSU5UUkFDSFJPTU9TT01BTFtjaHIxNzo4LjIwTWJdIl0KCkJDQVM0LS1CQ0FTMwk0CTEyMglPTkxZX1JFRl9TUExJQ0UJQkNBUzReRU5TRzAwMDAwMTI0MjQzLjE3CWNocjIwOjUwNzk1MTczOisJQkNBUzNeRU5TRzAwMDAwMTQxMzc2LjIyCWNocjE3OjYxMzUzNTg4OisJTk9fTERBUwkxNzEuODI4NAlHVAkxLjY0MDIJQUcJMS4zOTk2CVsiQ2hpbWVyUHViIiwiQ2hpbWVyU2VxIiwiY2hpbWVyZGJfcHVibWVkIiwiQ0NMRSIsIkZBX0NhbmNlclN1cHAiLCJJTlRFUkNIUk9NT1NPTUFMW2NocjIwLS1jaHIxN10iXQoKQ0NEQzYtLVJFVAkyNgkxNQlPTkxZX1JFRl9TUExJQ0UJQ0NEQzZeRU5TRzAwMDAwMTA4MDkxLjEwCWNocjEwOjU5OTA2MTIyOi0JUkVUXkVOU0cwMDAwMDE2NTczMS4xOAljaHIxMDo0MzExNjU4NDorCVlFU19MREFTCTU1LjkxMjQJR1QJMS44ODkyCUFHCTEuODMyMwlbIkNoaW1lclNlcSIsIkNoaW1lcktCIiwiRkFfQ2FuY2VyU3VwcCIsIkNvc21pYyIsIk1pdGVsbWFuIiwiQ2hpbWVyUHViIiwiSGFhc01lZENhbmNlciIsIkxhcnNzb25fVENHQSIsIllPU0hJSEFSQV9UQ0dBIiwiSU5UUkFDSFJPTU9TT01BTFtjaHIxMDoxNi42Nk1iXSJdCgojIyMgfi9TVEFSLUZ1c2lvbi1UdXRvcmlhbCQgaGVhZCBTVEFSLUZ1c2lvbl9vdXRkaXIvc3Rhci1mdXNpb24uZnVzaW9uX3ByZWRpY3Rpb25zLmFicmlkZ2VkLnRzdiB8IGNvbHVtbiAtdAoKKipGdXNpb25OYW1lICAgICAgSnVuY3Rpb25SZWFkQ291bnQgIFNwYW5uaW5nRnJhZ0NvdW50ICBTcGxpY2VUeXBlICAgICAgIExlZnRHZW5lICAgICAgICAgICAgICAgICAgIExlZnRCcmVha3BvaW50ICAgIFJpZ2h0R2VuZSAgICAgICAgICAgICAgICAgICAgUmlnaHRCcmVha3BvaW50ICAgTGFyZ2VBbmNob3JTdXBwb3J0ICBGRlBNICAgICAgTGVmdEJyZWFrRGludWMgIExlZnRCcmVha0VudHJvcHkgIFJpZ2h0QnJlYWtEaW51YyAgUmlnaHRCcmVha0VudHJvcHkgYW5ub3RzKioKClRBVEROMS0tR1NETUIgICAgODEgICAgICAgICAgICAgICAgIDE4NCAgICAgICAgICAgICAgICBPTkxZX1JFRl9TUExJQ0UgIFRBVEROMV5FTlNHMDAwMDAxNDc2ODcuMTggIGNocjg6MTI0NTM5MDI1Oi0gIEdTRE1CXkVOU0cwMDAwMDA3MzYwNS4xOCAgICAgY2hyMTc6Mzk5MDk5MjQ6LSAgWUVTX0xEQVMgICAgICAgICAgICAzNjEuMzg1ICAgR1QgICAgICAgICAgICAgIDEuOTIxOSAgICAgICAgICAgIEFHICAgICAgICAgICAgICAgMS41NjI4ICAgICAgICAgICAgIFsiQ0NMRSIsIktsaWpuX0NlbGxMaW5lcyIsIkZBX0NhbmNlclN1cHAiLCJDaGltZXJQdWIiLCJJTlRFUkNIUk9NT1NPTUFMW2NocjgtLWNocjE3XSJdCgpUSFJBLS1USFJBMS9CVFIgIDYzICAgICAgICAgICAgICAgICA5MyAgICAgICAgICAgICAgICAgT05MWV9SRUZfU1BMSUNFICBUSFJBXkVOU0cwMDAwMDEyNjM1MS4xMiAgICBjaHIxNzo0MDA4Njg1MzorICBUSFJBMS9CVFJeRU5TRzAwMDAwMjM1MzAwLjQgIGNocjE3OjQ4Mjk0MzQ3OisgIFlFU19MREFTICAgICAgICAgICAgMjEyLjczOTkgIEdUICAgICAgICAgICAgICAxLjg4OTIgICAgICAgICAgICBBRyAgICAgICAgICAgICAgIDEuOTY1NiAgICAgICAgICAgICBbIklOVFJBQ0hST01PU09NQUxbY2hyMTc6OC4yME1iXSJdCgpUQVRETjEtLUdTRE1CICAgIDMyICAgICAgICAgICAgICAgICAxODIgICAgICAgICAgICAgICAgT05MWV9SRUZfU1BMSUNFICBUQVRETjFeRU5TRzAwMDAwMTQ3Njg3LjE4ICBjaHI4OjEyNDUzOTAyNTotICBHU0RNQl5FTlNHMDAwMDAwNzM2MDUuMTggICAgIGNocjE3OjM5OTA1OTg1Oi0gIFlFU19MREFTICAgICAgICAgICAgMjkxLjgzNTQgIEdUICAgICAgICAgICAgICAxLjkyMTkgICAgICAgICAgICBBRyAgICAgICAgICAgICAgIDEuOTA4NiAgICAgICAgICAgICBbIkNDTEUiLCJLbGlqbl9DZWxsTGluZXMiLCJGQV9DYW5jZXJTdXBwIiwiQ2hpbWVyUHViIiwiSU5URVJDSFJPTU9TT01BTFtjaHI4LS1jaHIxN10iXQoKVEFURE4xLS1HU0RNQiAgICAyMyAgICAgICAgICAgICAgICAgMTgyICAgICAgICAgICAgICAgIE9OTFlfUkVGX1NQTElDRSAgVEFURE4xXkVOU0cwMDAwMDE0NzY4Ny4xOCAgY2hyODoxMjQ1MzkwMjU6LSAgR1NETUJeRU5TRzAwMDAwMDczNjA1LjE4ICAgICBjaHIxNzozOTkwNjI3MTotICBZRVNfTERBUyAgICAgICAgICAgIDI3OS41NjIgICBHVCAgICAgICAgICAgICAgMS45MjE5ICAgICAgICAgICAgQUcgICAgICAgICAgICAgICAxLjc4MTkgICAgICAgICAgICAgWyJDQ0xFIiwiS2xpam5fQ2VsbExpbmVzIiwiRkFfQ2FuY2VyU3VwcCIsIkNoaW1lclB1YiIsIklOVEVSQ0hST01PU09NQUxbY2hyOC0tY2hyMTddIl0KCkFDQUNBLS1TVEFDMiAgICAgMzEgICAgICAgICAgICAgICAgIDQ3ICAgICAgICAgICAgICAgICBPTkxZX1JFRl9TUExJQ0UgIEFDQUNBXkVOU0cwMDAwMDI3ODU0MC40ICAgIGNocjE3OjM3MTIyNTMxOi0gIFNUQUMyXkVOU0cwMDAwMDE0MTc1MC42ICAgICAgY2hyMTc6MzkyMTgxNzM6LSAgWUVTX0xEQVMgICAgICAgICAgICAxMDYuMzY5OSAgR1QgICAgICAgICAgICAgIDEuOTY1NiAgICAgICAgICAgIEFHICAgICAgICAgICAgICAgMS45NjU2ICAgICAgICAgICAgIFsiQ2hpbWVyU2VxIiwiQ0NMRSIsIktsaWpuX0NlbGxMaW5lcyIsIkZBX0NhbmNlclN1cHAiLCJJTlRSQUNIUk9NT1NPTUFMW2NocjE3OjEuODBNYl0iXQoKQkNBUzQtLUJDQVMzICAgICAxMCAgICAgICAgICAgICAgICAgMTIyICAgICAgICAgICAgICAgIE9OTFlfUkVGX1NQTElDRSAgQkNBUzReRU5TRzAwMDAwMTI0MjQzLjE3ICAgY2hyMjA6NTA3OTUxNzM6KyAgQkNBUzNeRU5TRzAwMDAwMTQxMzc2LjIyICAgICBjaHIxNzo2MTM2ODMyNzorICBZRVNfTERBUyAgICAgICAgICAgIDE4MC4wMTA3ICBHVCAgICAgICAgICAgICAgMS42NDAyICAgICAgICAgICAgQUcgICAgICAgICAgICAgICAxLjk4OTkgICAgICAgICAgICAgWyJDaGltZXJQdWIiLCJDaGltZXJTZXEiLCJjaGltZXJkYl9wdWJtZWQiLCJDQ0xFIiwiRkFfQ2FuY2VyU3VwcCIsIklOVEVSQ0hST01PU09NQUxbY2hyMjAtLWNocjE3XSJdCgpUSFJBLS1USFJBMS9CVFIgIDE3ICAgICAgICAgICAgICAgICA5MiAgICAgICAgICAgICAgICAgT05MWV9SRUZfU1BMSUNFICBUSFJBXkVOU0cwMDAwMDEyNjM1MS4xMiAgICBjaHIxNzo0MDA4Njg1MzorICBUSFJBMS9CVFJeRU5TRzAwMDAwMjM1MzAwLjQgIGNocjE3OjQ4MzA3MzMxOisgIFlFU19MREFTICAgICAgICAgICAgMTQ4LjY0NTIgIEdUICAgICAgICAgICAgICAxLjg4OTIgICAgICAgICAgICBBRyAgICAgICAgICAgICAgIDEuNDI5NSAgICAgICAgICAgICBbIklOVFJBQ0hST01PU09NQUxbY2hyMTc6OC4yME1iXSJdCgpCQ0FTNC0tQkNBUzMgICAgIDQgICAgICAgICAgICAgICAgICAxMjIgICAgICAgICAgICAgICAgT05MWV9SRUZfU1BMSUNFICBCQ0FTNF5FTlNHMDAwMDAxMjQyNDMuMTcgICBjaHIyMDo1MDc5NTE3MzorICBCQ0FTM15FTlNHMDAwMDAxNDEzNzYuMjIgICAgIGNocjE3OjYxMzUzNTg4OisgIE5PX0xEQVMgICAgICAgICAgICAgMTcxLjgyODQgIEdUICAgICAgICAgICAgICAxLjY0MDIgICAgICAgICAgICBBRyAgICAgICAgICAgICAgIDEuMzk5NiAgICAgICAgICAgICBbIkNoaW1lclB1YiIsIkNoaW1lclNlcSIsImNoaW1lcmRiX3B1Ym1lZCIsIkNDTEUiLCJGQV9DYW5jZXJTdXBwIiwiSU5URVJDSFJPTU9TT01BTFtjaHIyMC0tY2hyMTddIl0KCkNDREM2LS1SRVQgICAgICAgMjYgICAgICAgICAgICAgICAgIDE1ICAgICAgICAgICAgICAgICBPTkxZX1JFRl9TUExJQ0UgIENDREM2XkVOU0cwMDAwMDEwODA5MS4xMCAgIGNocjEwOjU5OTA2MTIyOi0gIFJFVF5FTlNHMDAwMDAxNjU3MzEuMTggICAgICAgY2hyMTA6NDMxMTY1ODQ6KyAgWUVTX0xEQVMgICAgICAgICAgICA1NS45MTI0ICAgR1QgICAgICAgICAgICAgIDEuODg5MiAgICAgICAgICAgIEFHICAgICAgICAgICAgICAgMS44MzIzICAgICAgICAgICAgIFsiQ2hpbWVyU2VxIiwiQ2hpbWVyS0IiLCJGQV9DYW5jZXJTdXBwIiwiQ29zbWljIiwiTWl0ZWxtYW4iLCJDaGltZXJQdWIiLCJIYWFzTWVkQ2FuY2VyIiwiTGFyc3Nvbl9UQ0dBIiwiWU9TSElIQVJBX1RDR0EiLCJJTlRSQUNIUk9NT1NPTUFMW2NocjEwOjE2LjY2TWJdIl0KCgojIyBJbiBzaWxpY28gVmFsaWRhdGlvbiBVc2luZyBGdXNpb25JbnNwZWN0b3IKCgojIyMgfi9TVEFSLUZ1c2lvbi1UdXRvcmlhbCQgU1RBUi1GdXNpb24gLS1sZWZ0X2ZxIHJuYXNlcV8xLmZhc3RxLmd6IC0tcmlnaHRfZnEgcm5hc2VxXzIuZmFzdHEuZ3ogLS1nZW5vbWVfbGliX2RpciB+L0dSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvIC0tRnVzaW9uSW5zcGVjdG9yIHZhbGlkYXRlCgotLSBTa2lwcGluZyBDTUQ6CgovaG9tZS91YnVudHUvbWluaWNvbmRhMy9iaW4vU1RBUiAtLWdlbm9tZURpciAvaG9tZS91YnVudHUvR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci8vcmVmX2dlbm9tZS5mYS5zdGFyLmlkeCAgLS1vdXRSZWFkc1VubWFwcGVkIE5vbmUgIC0tY2hpbVNlZ21lbnRNaW4gMTIgIC0tY2hpbUp1bmN0aW9uT3ZlcmhhbmdNaW4gMTIgIC0tY2hpbU91dEp1bmN0aW9uRm9ybWF0IDEgIC0tYWxpZ25TSkRCb3ZlcmhhbmdNaW4gMTAgIC0tYWxpZ25NYXRlc0dhcE1heCAxMDAwMDAgIC0tYWxpZ25JbnRyb25NYXggMTAwMDAwICAtLWFsaWduU0pzdGl0Y2hNaXNtYXRjaE5tYXggNSAtMSA1IDUgIC0tcnVuVGhyZWFkTiA0IC0tb3V0U0FNc3RyYW5kRmllbGQgaW50cm9uTW90aWYgIC0tb3V0U0FNdW5tYXBwZWQgV2l0aGluICAtLW91dFNBTXR5cGUgQkFNIFVuc29ydGVkICAtLXJlYWRGaWxlc0luIC9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9ybmFzZXFfMS5mYXN0cS5neiAvaG9tZS91YnVudHUvU1RBUi1GdXNpb24tVHV0b3JpYWwvcm5hc2VxXzIuZmFzdHEuZ3ogIC0tb3V0U0FNYXR0clJHbGluZSBJRDpHUlB1bmRlZiAgLS1jaGltTXVsdGltYXBTY29yZVJhbmdlIDEwIC0tY2hpbU11bHRpbWFwTm1heCAxMCAtLWNoaW1Ob25jaGltU2NvcmVEcm9wTWluIDEwICAtLXBlT3ZlcmxhcE5iYXNlc01pbiAxMiAtLXBlT3ZlcmxhcE1NcCAwLjEgIC0tZ2Vub21lTG9hZCBOb1NoYXJlZE1lbW9yeSAgLS10d29wYXNzTW9kZSBCYXNpYyAgLS1yZWFkRmlsZXNDb21tYW5kICdndW56aXAgLWMnICwgY2hlY2twb2ludCBbL2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL1NUQVItRnVzaW9uX291dGRpci9fc3RhckZfY2hlY2twb2ludHMvcnVuX3N0YXJfYWxpZ25lci5va10gZXhpc3RzLgotc2FtcGxlIGNvbnRhaW5zIDczMzI5MAoKLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgoqKlNUQVItRnVzaW9uIGNvbXBsZXRlLiAgU2VlIG91dHB1dDogc3Rhci1mdXNpb24uZnVzaW9uX2NhbmRpZGF0ZXMudHN2IChvciAuYWJyaWRnZWQudHN2IHZlcnNpb24pKioKCgoqIFJ1bm5pbmcgQ01EOgoKL2hvbWUvdWJ1bnR1L21pbmljb25kYTMvbGliL1NUQVItRnVzaW9uL0Z1c2lvbkluc3BlY3Rvci9GdXNpb25JbnNwZWN0b3IgLS1mdXNpb25zIHN0YXItZnVzaW9uLmZ1c2lvbl9wcmVkaWN0aW9ucy5hYnJpZGdlZC50c3YgIC0tb3V0X3ByZWZpeCBmaW5zcGVjdG9yICAtLW1pbl9qdW5jdGlvbl9yZWFkcyAxICAtLW1pbl9ub3ZlbF9qdW5jdGlvbl9zdXBwb3J0IDMgIC0tbWluX3NwYW5uaW5nX2ZyYWdzX29ubHkgNSAgLS1wcmVwX2Zvcl9JR1YgIC0tbWF4X3Byb21pc2N1aXR5IDEwICAtLW91dF9kaXIgL2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL1NUQVItRnVzaW9uX291dGRpci9GdXNpb25JbnNwZWN0b3ItdmFsaWRhdGUgIC0tZ2Vub21lX2xpYl9kaXIgL2hvbWUvdWJ1bnR1L0dSQ2gzOF92MjdfQ1RBVF9saWJfRmViMDkyMDE4L2N0YXRfZ2Vub21lX2xpYl9idWlsZF9kaXIvICAtLUNQVSA0ICAtLWxlZnRfZnEgL2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL3JuYXNlcV8xLmZhc3RxLmd6IC0tcmlnaHRfZnEgL2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL3JuYXNlcV8yLmZhc3RxLmd6ICAtLWFubm90YXRlIAoKLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCkNNRDoKCnNvcnQgLWsxLDEgLWsyLDJuIC9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvRnVzaW9uSW5zcGVjdG9yLXZhbGlkYXRlL2ZpbnNwZWN0b3IuYmVkID4gL2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL1NUQVItRnVzaW9uX291dGRpci9GdXNpb25JbnNwZWN0b3ItdmFsaWRhdGUvZmluc3BlY3Rvci5iZWQuc29ydGVkLmJlZCBhbHJlYWR5IHByb2Nlc3NlZC4gU2tpcHBpbmcuCgpSdW5uaW5nOiBiZ3ppcCAtZiAvaG9tZS91YnVudHUvU1RBUi1GdXNpb24tVHV0b3JpYWwvU1RBUi1GdXNpb25fb3V0ZGlyL0Z1c2lvbkluc3BlY3Rvci12YWxpZGF0ZS9maW5zcGVjdG9yLmJlZC5zb3J0ZWQuYmVkCgpSdW5uaW5nOiB0b3VjaCAvaG9tZS91YnVudHUvU1RBUi1GdXNpb24tVHV0b3JpYWwvU1RBUi1GdXNpb25fb3V0ZGlyL0Z1c2lvbkluc3BlY3Rvci12YWxpZGF0ZS9jaGNrcHRzX2Rpci9maW5zcGVjdG9yLmJlZC5iZ3ppcC5vawoKUnVubmluZzogdGFiaXggLXAgYmVkIC9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvRnVzaW9uSW5zcGVjdG9yLXZhbGlkYXRlL2ZpbnNwZWN0b3IuYmVkLnNvcnRlZC5iZWQuZ3oKClJ1bm5pbmc6IHRvdWNoIC9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvRnVzaW9uSW5zcGVjdG9yLXZhbGlkYXRlL2NoY2twdHNfZGlyL2ZpbnNwZWN0b3IuYmVkLnRhYml4Lm9rCgpSdW5uaW5nOiBzYW10b29scyBmYWlkeCAvaG9tZS91YnVudHUvU1RBUi1GdXNpb24tVHV0b3JpYWwvU1RBUi1GdXNpb25fb3V0ZGlyL0Z1c2lvbkluc3BlY3Rvci12YWxpZGF0ZS9maW5zcGVjdG9yLmZhCgpSdW5uaW5nOiB0b3VjaCAvaG9tZS91YnVudHUvU1RBUi1GdXNpb24tVHV0b3JpYWwvU1RBUi1GdXNpb25fb3V0ZGlyL0Z1c2lvbkluc3BlY3Rvci12YWxpZGF0ZS9jaGNrcHRzX2Rpci9tZXJnZWRfY29udGlnX2ZhaS5vawoKLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKKiBSdW5uaW5nIENNRDogL2hvbWUvdWJ1bnR1L21pbmljb25kYTMvYmluL1NUQVIgIC0tcnVuVGhyZWFkTiA0ICAtLWdlbm9tZURpciAvaG9tZS91YnVudHUvR1JDaDM4X3YyN19DVEFUX2xpYl9GZWIwOTIwMTgvY3RhdF9nZW5vbWVfbGliX2J1aWxkX2Rpci9yZWZfZ2Vub21lLmZhLnN0YXIuaWR4ICAtLW91dFNBTXR5cGUgQkFNIFNvcnRlZEJ5Q29vcmRpbmF0ZSAgLS10d29wYXNzTW9kZSBCYXNpYyAgLS1hbGlnbk1hdGVzR2FwTWF4IDEwMDAwMCAgLS1hbGlnbkludHJvbk1heCAxMDAwMDAgIC0tYWxpZ25TSkRCb3ZlcmhhbmdNaW4gMTAgIC0tZ2Vub21lU3VmZml4TGVuZ3RoTWF4IDEwMDAwIC0tbGltaXRCQU1zb3J0UkFNIDIwMDAwMDAwMDAwIC0tcmVhZEZpbGVzSW4gL2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL3JuYXNlcV8xLmZhc3RxLmd6IC9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9ybmFzZXFfMi5mYXN0cS5neiAgLS1nZW5vbWVGYXN0YUZpbGVzIC9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvRnVzaW9uSW5zcGVjdG9yLXZhbGlkYXRlL2ZpX3dvcmtkaXIvZmluc3BlY3Rvci5mYSAgLS1vdXRTQU1maWx0ZXIgS2VlcEFsbEFkZGVkUmVmZXJlbmNlcyAgLS1zamRiR1RGZmlsZSAvaG9tZS91YnVudHUvU1RBUi1GdXNpb24tVHV0b3JpYWwvU1RBUi1GdXNpb25fb3V0ZGlyL0Z1c2lvbkluc3BlY3Rvci12YWxpZGF0ZS9maV93b3JrZGlyL2ZpbnNwZWN0b3IuZ3RmICAtLWFsaWduU0pzdGl0Y2hNaXNtYXRjaE5tYXggNSAtMSA1IDUgIC0tcmVhZEZpbGVzQ29tbWFuZCAnZ3VuemlwIC1jJyAKCk1hciAyOSAxNjo0Mjo0NCAuLi4uLiBzdGFydGVkIFNUQVIgcnVuCgpNYXIgMjkgMTY6NDI6NDQgLi4uLi4gbG9hZGluZyBnZW5vbWUKCk1hciAyOSAxNjo0NDo1NCAuLi4gZ2VuZXJhdGluZyBTdWZmaXggQXJyYXkgaW5kZXgKCk1hciAyOSAxNjo0OToyNCAuLi4gY29tcGxldGVkIFN1ZmZpeCBBcnJheSBpbmRleAoKTWFyIDI5IDE2OjQ5OjI1IC4uLi4uIHByb2Nlc3NpbmcgYW5ub3RhdGlvbnMgR1RGCgpNYXIgMjkgMTY6NDk6MjUgLi4uLi4gaW5zZXJ0aW5nIGp1bmN0aW9ucyBpbnRvIHRoZSBnZW5vbWUgaW5kaWNlcwoKTWFyIDI5IDE2OjUwOjUzIC4uLi4uIHN0YXJ0ZWQgMXN0IHBhc3MgbWFwcGluZwoKTWFyIDI5IDE2OjUxOjA1IC4uLi4uIGZpbmlzaGVkIDFzdCBwYXNzIG1hcHBpbmcKCk1hciAyOSAxNjo1MTowNiAuLi4uLiBpbnNlcnRpbmcganVuY3Rpb25zIGludG8gdGhlIGdlbm9tZSBpbmRpY2VzCgpNYXIgMjkgMTY6NTI6MzQgLi4uLi4gc3RhcnRlZCBtYXBwaW5nCgpNYXIgMjkgMTY6NTI6NDcgLi4uLi4gc3RhcnRlZCBzb3J0aW5nIEJBTQoKTWFyIDI5IDE2OjUyOjQ4IC4uLi4uIGZpbmlzaGVkIHN1Y2Nlc3NmdWxseQoKKiBSdW5uaW5nIENNRDogbXYgQWxpZ25lZC5zb3J0ZWRCeUNvb3JkLm91dC5iYW0gZmluc3BlY3Rvci5zdGFyLnNvcnRlZEJ5Q29vcmQub3V0LmJhbQoKKiBSdW5uaW5nIENNRDogc2FtdG9vbHMgaW5kZXggZmluc3BlY3Rvci5zdGFyLnNvcnRlZEJ5Q29vcmQub3V0LmJhbQoKUnVubmluZzogdG91Y2ggL2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL1NUQVItRnVzaW9uX291dGRpci9GdXNpb25JbnNwZWN0b3ItdmFsaWRhdGUvY2hja3B0c19kaXIvcnVuX1NUQVIub2sKClJ1bm5pbmc6IGphdmEgLWphciAvaG9tZS91YnVudHUvbWluaWNvbmRhMy9saWIvU1RBUi1GdXNpb24vRnVzaW9uSW5zcGVjdG9yL3BsdWdpbnMvTWFya0R1cGxpY2F0ZXMuamFyIEk9L2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL1NUQVItRnVzaW9uX291dGRpci9GdXNpb25JbnNwZWN0b3ItdmFsaWRhdGUvZmlfd29ya2Rpci9maW5zcGVjdG9yLnN0YXIuc29ydGVkQnlDb29yZC5vdXQuYmFtIE89L2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL1NUQVItRnVzaW9uX291dGRpci9GdXNpb25JbnNwZWN0b3ItdmFsaWRhdGUvZmlfd29ya2Rpci9maW5zcGVjdG9yLnN0YXIuY1NvcnRlZC5kdXBzTWFya2VkLmJhbSBNPS9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvRnVzaW9uSW5zcGVjdG9yLXZhbGlkYXRlL2ZpX3dvcmtkaXIvZmluc3BlY3Rvci5zdGFyLmNTb3J0ZWQuZHVwc01hcmtlZC5iYW0uc3RhdHMgVE1QX0RJUj0vaG9tZS91YnVudHUvU1RBUi1GdXNpb24tVHV0b3JpYWwvU1RBUi1GdXNpb25fb3V0ZGlyL0Z1c2lvbkluc3BlY3Rvci12YWxpZGF0ZS9maV93b3JrZGlyIFZBTElEQVRJT05fU1RSSU5HRU5DWT1TSUxFTlQgCgpbRnJpIE1hciAyOSAxNjo1Mjo0OSBVVEMgMjAxOV0gcGljYXJkLnNhbS5NYXJrRHVwbGljYXRlcwoKSU5QVVQ9Wy9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvRnVzaW9uSW5zcGVjdG9yLXZhbGlkYXRlL2ZpX3dvcmtkaXIvZmluc3BlY3Rvci5zdGFyLnNvcnRlZEJ5Q29vcmQub3V0LmJhbV0gT1VUUFVUPS9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvRnVzaW9uSW5zcGVjdG9yLXZhbGlkYXRlL2ZpX3dvcmtkaXIvZmluc3BlY3Rvci5zdGFyLmNTb3J0ZWQuZHVwc01hcmtlZC5iYW0gTUVUUklDU19GSUxFPS9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvRnVzaW9uSW5zcGVjdG9yLXZhbGlkYXRlL2ZpX3dvcmtkaXIvZmluc3BlY3Rvci5zdGFyLmNTb3J0ZWQuZHVwc01hcmtlZC5iYW0uc3RhdHMgVE1QX0RJUj1bL2hvbWUvdWJ1bnR1L1NUQVItRnVzaW9uLVR1dG9yaWFsL1NUQVItRnVzaW9uX291dGRpci9GdXNpb25JbnNwZWN0b3ItdmFsaWRhdGUvZmlfd29ya2Rpcl0gVkFMSURBVElPTl9TVFJJTkdFTkNZPVNJTEVOVCAgICBQUk9HUkFNX1JFQ09SRF9JRD1NYXJrRHVwbGljYXRlcyBQUk9HUkFNX0dST1VQX05BTUU9TWFya0R1cGxpY2F0ZXMgUkVNT1ZFX0RVUExJQ0FURVM9ZmFsc2UgQVNTVU1FX1NPUlRFRD1mYWxzZSBNQVhfU0VRVUVOQ0VTX0ZPUl9ESVNLX1JFQURfRU5EU19NQVA9NTAwMDAgTUFYX0ZJTEVfSEFORExFU19GT1JfUkVBRF9FTkRTX01BUD04MDAwIFNPUlRJTkdfQ09MTEVDVElPTl9TSVpFX1JBVElPPTAuMjUgUkVBRF9OQU1FX1JFR0VYPVthLXpBLVowLTldKzpbMC05XTooWzAtOV0rKTooWzAtOV0rKTooWzAtOV0rKS4qIE9QVElDQUxfRFVQTElDQVRFX1BJWEVMX0RJU1RBTkNFPTEwMCBWRVJCT1NJVFk9SU5GTyBRVUlFVD1mYWxzZSBDT01QUkVTU0lPTl9MRVZFTD01IE1BWF9SRUNPUkRTX0lOX1JBTT01MDAwMDAgQ1JFQVRFX0lOREVYPWZhbHNlIENSRUFURV9NRDVfRklMRT1mYWxzZQoKLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgoKSU5GTwkyMDE5LTAzLTI5IDE2OjUyOjUxCU1hcmtEdXBsaWNhdGVzCVJlYWQgNDg3MDQ2IHJlY29yZHMuIDAgcGFpcnMgbmV2ZXIgbWF0Y2hlZC4KCklORk8JMjAxOS0wMy0yOSAxNjo1Mjo1MQlNYXJrRHVwbGljYXRlcwlBZnRlciBidWlsZFNvcnRlZFJlYWRFbmRMaXN0cyBmcmVlTWVtb3J5OiA1NTcxODI2OTY7IHRvdGFsTWVtb3J5OiAxMTQwODUwNjg4OyBtYXhNZW1vcnk6IDE2NjgwNzQ3MDA4CgpJTkZPCTIwMTktMDMtMjkgMTY6NTI6NTEJTWFya0R1cGxpY2F0ZXMJV2lsbCByZXRhaW4gdXAgdG8gNTIxMjczMzQ0IGR1cGxpY2F0ZSBpbmRpY2VzIGJlZm9yZSBzcGlsbGluZyB0byBkaXNrLgoKSU5GTwkyMDE5LTAzLTI5IDE2OjUyOjUzCU1hcmtEdXBsaWNhdGVzCVRyYXZlcnNpbmcgcmVhZCBwYWlyIGluZm9ybWF0aW9uIGFuZCBkZXRlY3RpbmcgZHVwbGljYXRlcy4KCklORk8JMjAxOS0wMy0yOSAxNjo1Mjo1MwlNYXJrRHVwbGljYXRlcwlUcmF2ZXJzaW5nIGZyYWdtZW50IGluZm9ybWF0aW9uIGFuZCBkZXRlY3RpbmcgZHVwbGljYXRlcy4KCklORk8JMjAxOS0wMy0yOSAxNjo1Mjo1MwlNYXJrRHVwbGljYXRlcwlTb3J0aW5nIGxpc3Qgb2YgZHVwbGljYXRlIHJlY29yZHMuCgpJTkZPCTIwMTktMDMtMjkgMTY6NTI6NTMJTWFya0R1cGxpY2F0ZXMJQWZ0ZXIgZ2VuZXJhdGVEdXBsaWNhdGVJbmRleGVzIGZyZWVNZW1vcnk6IDI4MjI3MTQxMzY7IHRvdGFsTWVtb3J5OiA3MDAwMjkzMzc2OyBtYXhNZW1vcnk6IDE2NjgwNzQ3MDA4CgpJTkZPCTIwMTktMDMtMjkgMTY6NTI6NTMJTWFya0R1cGxpY2F0ZXMJTWFya2luZyAxMjA4NCByZWNvcmRzIGFzIGR1cGxpY2F0ZXMuCgpJTkZPCTIwMTktMDMtMjkgMTY6NTI6NTMJTWFya0R1cGxpY2F0ZXMJRm91bmQgMCBvcHRpY2FsIGR1cGxpY2F0ZSBjbHVzdGVycy4KCklORk8JMjAxOS0wMy0yOSAxNjo1Mjo1NwlNYXJrRHVwbGljYXRlcwlCZWZvcmUgb3V0cHV0IGNsb3NlIGZyZWVNZW1vcnk6IDY4MTE5MTkyOyB0b3RhbE1lbW9yeTogNzEzMDMxNjg7IG1heE1lbW9yeTogMTY2ODA3NDcwMDgKCklORk8JMjAxOS0wMy0yOSAxNjo1Mjo1NwlNYXJrRHVwbGljYXRlcwlBZnRlciBvdXRwdXQgY2xvc2UgZnJlZU1lbW9yeTogMTQxNzU0MDA7IHRvdGFsTWVtb3J5OiAxNjc3NzIxNjsgbWF4TWVtb3J5OiAxNjY4MDc0NzAwOAoKW0ZyaSBNYXIgMjkgMTY6NTI6NTcgVVRDIDIwMTldIHBpY2FyZC5zYW0uTWFya0R1cGxpY2F0ZXMgZG9uZS4gRWxhcHNlZCB0aW1lOiAwLjE0IG1pbnV0ZXMuCgpSdW50aW1lLnRvdGFsTWVtb3J5KCk9MTY3NzcyMTYKCi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgpbNDg3MDAwXSAgIC1yZXRyaWV2aW5nIHJlYWQgYWxpZ25tZW50cyBmb3IgNjMzIHNwYW5uaW5nIGZyYWdzLgoKLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KCgpDTUQ6IGxuIC1zZiAvaG9tZS91YnVudHUvU1RBUi1GdXNpb24tVHV0b3JpYWwvU1RBUi1GdXNpb25fb3V0ZGlyL0Z1c2lvbkluc3BlY3Rvci12YWxpZGF0ZS9maV93b3JrZGlyL2ZpbnNwZWN0b3IuZnVzaW9uX3ByZWRzLmNvYWxlc2NlZC5zdW1tYXJ5Lm1pbl9mcmFnX3RocmVzaC5zdGFyRmZtdC53U3BsaWNlSW5mby5wb3N0X2JsYXN0X2ZpbHRlci5wb3N0X3Byb21pc2NfZmlsdGVyIC9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvRnVzaW9uSW5zcGVjdG9yLXZhbGlkYXRlL2ZpbnNwZWN0b3IuZnVzaW9uX3ByZWRpY3Rpb25zLnBvc3RfYmxhc3RfYW5kX3Byb21pc2N1aXR5X2ZpbHRlcgoKLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCgoKIyMjIyBBZGRpdGlvbmFsIGZpbGVzL2RpcmVjdG9yaWVzL3N1YmRpcmVjdG9yaWVzIGFuZCBzb21lIG9mIHRoZWlyIGNvbnRlbnRzIGZvbGxvd2luZyB0aGUgYWJvdmUgcnVuCgojIyMjIH4vU1RBUi1GdXNpb24tVHV0b3JpYWwkIGxzIC1sdHIgU1RBUi1GdXNpb25fb3V0ZGlyLwoKKipkcnd4cnd4ci14IDQgdWJ1bnR1IHVidW50dSAgICAgIDQwOTYgTWFyIDI5IDE2OjU0IEZ1c2lvbkluc3BlY3Rvci12YWxpZGF0ZSoqCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgMjQ2MjYgTWFyIDI5IDE2OjU0IEZ1c2lvbkluc3BlY3Rvci5sb2cKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICAgICAgMCBNYXIgMjkgMTY6NTQgX2ZpX3ZhbGlkYXRlXzU5OC5vawoKIyMjIyB+L1NUQVItRnVzaW9uLVR1dG9yaWFsJCBscyAtbHRyIFNUQVItRnVzaW9uX291dGRpci9GdXNpb25JbnNwZWN0b3ItdmFsaWRhdGUvCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgMjkwMzk3NyBNYXIgMjkgMTY6NDAgZmluc3BlY3Rvci5ndGYKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAxMzA3OTMzIE1hciAyOSAxNjo0MCBmaW5zcGVjdG9yLmZhCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgNTYxMyBNYXIgMjkgMTY6NDAgY3l0b0JhbmQudHh0CgoqKi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgMTE3NDM0IE1hciAyOSAxNjo0MCBmaW5zcGVjdG9yLmJlZCoqCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAyOTA5NyBNYXIgMjkgMTY6NDIgZmluc3BlY3Rvci5iZWQuc29ydGVkLmJlZC5negoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICA4NzMgTWFyIDI5IDE2OjQyIGZpbnNwZWN0b3IuYmVkLnNvcnRlZC5iZWQuZ3oudGJpCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgIDgwNyBNYXIgMjkgMTY6NDIgZmluc3BlY3Rvci5mYS5mYWkKCioqLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgMjYyNTUgTWFyIDI5IDE2OjUzIGZpbnNwZWN0b3IuanVuY3Rpb25fcmVhZHMuYmFtKioKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICAyMjA4IE1hciAyOSAxNjo1MyBmaW5zcGVjdG9yLmp1bmN0aW9uX3JlYWRzLmJhbS5iYWkKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgIDM0MjE1IE1hciAyOSAxNjo1MyBmaW5zcGVjdG9yLmp1bmN0aW9uX3JlYWRzLmJhbS5iZWQKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICA2MjMwIE1hciAyOSAxNjo1MyBmaW5zcGVjdG9yLmp1bmN0aW9uX3JlYWRzLmJhbS5iZWQuc29ydGVkLmJlZC5negoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgICA2NzUgTWFyIDI5IDE2OjUzIGZpbnNwZWN0b3IuanVuY3Rpb25fcmVhZHMuYmFtLmJlZC5zb3J0ZWQuYmVkLmd6LnRiaQoKKiotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICA2NTg2NCBNYXIgMjkgMTY6NTMgZmluc3BlY3Rvci5zcGFubmluZ19yZWFkcy5iYW0qKgoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgIDI4MzIgTWFyIDI5IDE2OjUzIGZpbnNwZWN0b3Iuc3Bhbm5pbmdfcmVhZHMuYmFtLmJhaQoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgNDg0NzYgTWFyIDI5IDE2OjUzIGZpbnNwZWN0b3Iuc3Bhbm5pbmdfcmVhZHMuYmFtLmJlZAoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgMTE0MTcgTWFyIDI5IDE2OjUzIGZpbnNwZWN0b3Iuc3Bhbm5pbmdfcmVhZHMuYmFtLmJlZC5zb3J0ZWQuYmVkLmd6Cgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgIDcxNCBNYXIgMjkgMTY6NTMgZmluc3BlY3Rvci5zcGFubmluZ19yZWFkcy5iYW0uYmVkLnNvcnRlZC5iZWQuZ3oudGJpCgoqKi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1IDI3NDU5Mzg0IE1hciAyOSAxNjo1NCBmaW5zcGVjdG9yLmNvbnNvbGlkYXRlZC5jU29ydGVkLmJhbSoqCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAgNjI0OCBNYXIgMjkgMTY6NTQgZmluc3BlY3Rvci5jb25zb2xpZGF0ZWQuY1NvcnRlZC5iYW0uYmFpCgotcnctcnctci0tIDEgdWJ1bnR1IHVidW50dSAgICAxMTc3NSBNYXIgMjkgMTY6NTQgZmluc3BlY3Rvci5pZ3YuRnVzaW9uSnVuY1NwYW4KCmRyd3hyd3hyd3ggNCB1YnVudHUgdWJ1bnR1ICAgICA0MDk2IE1hciAyOSAxNjo1NCBmaV93b3JrZGlyCgpscnd4cnd4cnd4IDEgdWJ1bnR1IHVidW50dSAgICAgIDIwNSBNYXIgMjkgMTY6NTQgZmluc3BlY3Rvci5mdXNpb25fcHJlZGljdGlvbnMucG9zdF9ibGFzdF9hbmRfcHJvbWlzY3VpdHlfZmlsdGVyIC0+IC9ob21lL3VidW50dS9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvRnVzaW9uSW5zcGVjdG9yLXZhbGlkYXRlL2ZpX3dvcmtkaXIvZmluc3BlY3Rvci5mdXNpb25fcHJlZHMuY29hbGVzY2VkLnN1bW1hcnkubWluX2ZyYWdfdGhyZXNoLnN0YXJGZm10LndTcGxpY2VJbmZvLnBvc3RfYmxhc3RfZmlsdGVyLnBvc3RfcHJvbWlzY19maWx0ZXIKCioqLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAxNTQ1MTAgTWFyIDI5IDE2OjU0IGZpbnNwZWN0b3IuZnVzaW9uX3ByZWRpY3Rpb25zLmZpbmFsKioKCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgICA1ODk1IE1hciAyOSAxNjo1NCBmaW5zcGVjdG9yLmZ1c2lvbl9wcmVkaWN0aW9ucy5maW5hbC5hYnJpZGdlZAoKLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgIDYxNjEgTWFyIDI5IDE2OjU0IGZpbnNwZWN0b3IuZnVzaW9uX3ByZWRpY3Rpb25zLmZpbmFsLmFicmlkZ2VkLkZGUE0KCi1ydy1ydy1yLS0gMSB1YnVudHUgdWJ1bnR1ICAgIDE0NTIwIE1hciAyOSAxNjo1NCBmaW5zcGVjdG9yLmZ1c2lvbl9pbnNwZWN0b3Jfd2ViLmpzb24KCioqLXJ3LXJ3LXItLSAxIHVidW50dSB1YnVudHUgICAgIDg4MTAgTWFyIDI5IDE2OjU0IGZpbnNwZWN0b3IuZnVzaW9uX3ByZWRpY3Rpb25zLmZpbmFsLmFicmlkZ2VkLkZGUE0uYW5ub3RhdGVkKioKCmRyd3hyd3hyLXggMiB1YnVudHUgdWJ1bnR1ICAgICA0MDk2IE1hciAyOSAxNjo1NCBjaGNrcHRzX2RpcgoKCgojIyMgfi9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvRnVzaW9uSW5zcGVjdG9yLXZhbGlkYXRlJCBoZWFkIGZpbnNwZWN0b3IuYmVkIHwgY29sdW1uIC10CgpBQ0FDQS0tU1RBQzIgIDUwMTU1ICA1MzYwNCAgSUQ9QUNBQ0EtLVNUQUMyXkVOU1QwMDAwMDYxOTI0NS4xO0FDQUNBLS1TVEFDMl5BQ0FDQV5FTlNHMDAwMDAyNzg1NDAuNDtBQ0FDQSAgMCAgKyAgNTAxNTUgIDUzNjA0ICAwICA0ICAgODUsMjE2LDE1NiwxNzggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsMTA4NSwyMTE1LDMyNzEKCkFDQUNBLS1TVEFDMiAgNDMyMzkgIDQ4ODY1ICBJRD1BQ0FDQS0tU1RBQzJeRU5TVDAwMDAwNjE0NDUwLjQ7QUNBQ0EtLVNUQUMyXkFDQUNBXkVOU0cwMDAwMDI3ODU0MC40O0FDQUNBICAwICArICA0MzIzOSAgNDg4NjUgIDAgIDcgICA0NCwxMTksMjQsMTQ0LDk3LDEwOCw1NSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwxODYsMTUxMSwyNTM1LDM0NTYsNDQ2Myw1NTcxCgpBQ0FDQS0tU1RBQzIgIDExOTIzICAxMzQ5MiAgSUQ9QUNBQ0EtLVNUQUMyXkVOU1QwMDAwMDYxNDQzOC4xO0FDQUNBLS1TVEFDMl5BQ0FDQV5FTlNHMDAwMDAyNzg1NDAuNDtBQ0FDQSAgMCAgKyAgMTE5MjMgIDEzNDkyICAwICAyICAgMjI3LDM0MiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsMTIyNwpBQ0FDQS0tU1RBQzIgIDEwMDAgICA3NTY5ICAgSUQ9QUNBQ0EtLVNUQUMyXkVOU1QwMDAwMDYxODM1MS4xO0FDQUNBLS1TVEFDMl5BQ0FDQV5FTlNHMDAwMDAyNzg1NDAuNDtBQ0FDQSAgMCAgKyAgMTAwMCAgIDc1NjkgICAwICAyICAgNTU3LDE1OSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAsNjQxMAoKQUNBQ0EtLVNUQUMyICA3MTQzNiAgNzMwNDIgIElEPUFDQUNBLS1TVEFDMl5FTlNUMDAwMDA2MTgwNTMuMTtBQ0FDQS0tU1RBQzJeQUNBQ0FeRU5TRzAwMDAwMjc4NTQwLjQ7QUNBQ0EgIDAgICsgIDcxNDM2ICA3MzA0MiAgMCAgMyAgIDQ2LDEyMCwyOTcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLDEwNDYsMTMwOQoKQUNBQ0EtLVNUQUMyICAxMDM4ICAgMTcyMjQgIElEPUFDQUNBLS1TVEFDMl5FTlNUMDAwMDA2MTc1NDguMTtBQ0FDQS0tU1RBQzJeQUNBQ0FeRU5TRzAwMDAwMjc4NTQwLjQ7QUNBQ0EgIDAgICsgIDEwMzggICAxNzIyNCAgMCAgNSAgIDUxOSw0NywyNTMsMTExLDEzMyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLDk4MTIsMTA4NTksMTQ5NDIsMTYwNTMKCkFDQUNBLS1TVEFDMiAgODYwMiAgIDE3MjI0ICBJRD1BQ0FDQS0tU1RBQzJeRU5TVDAwMDAwNjE0Nzg5LjQ7QUNBQ0EtLVNUQUMyXkFDQUNBXkVOU0cwMDAwMDI3ODU0MC40O0FDQUNBICAwICArICA4NjAyICAgMTcyMjQgIDAgIDUgICAxMTgsNDcsMjUzLDExMSwxMzMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwyMjQ4LDMyOTUsNzM3OCw4NDg5CgpBQ0FDQS0tU1RBQzIgIDE0NDkyICA3MzEwNSAgSUQ9QUNBQ0EtLVNUQUMyXkVOU1QwMDAwMDYxNzY0OS40O0FDQUNBLS1TVEFDMl5BQ0FDQV5FTlNHMDAwMDAyNzg1NDAuNDtBQ0FDQSAgMCAgKyAgMTQ0OTIgIDczMTA1ICAwICA1NSAgNDg4LDExMSwxMzMsMTM5LDExMCw4Miw5OSwxMDcsMTExLDIxMCwxNzEsMTYyLDE2NCwxNTEsMTA0LDgyLDE0NiwxNTEsMTM1LDE0NywxODksMTAxLDg5LDEyNSwxMTQsMTE0LDkwLDExOSwyNCwxNDQsOTcsMTA4LDU3LDQ1LDQyLDIxNiwxNTYsMjA0LDE1NiwxNDcsMjcwLDk4LDEyMSwxMTEsMTQ0LDEyMSw5Nyw5NywxMzYsMTc4LDExMywxNTUsMTcxLDEzNyw2MjMgIDAsMTQ4OCwyNTk5LDM3MzIsNDg3MSw1NzYyLDY4MjcsNzkyNiw5MDMzLDEwMTQ0LDExMzU0LDEyNTExLDEzMDE4LDE0MTgyLDE1MTEwLDE2MjE2LDE2NzM0LDE3OTE0LDE5MDY1LDE5NTQ1LDIwNjkyLDIxODgxLDIyOTgyLDI0MDcxLDI1MTk2LDI2NTQzLDI3NjU3LDI4OTMzLDMwMjU4LDMxMjgyLDMyMjAzLDMzMjEwLDM0MzE4LDM0NjE4LDM1NzA2LDM2NzQ4LDM3Nzc4LDM4OTM0LDQwMTM4LDQxMjk0LDQyNDQxLDQzODkyLDQ0OTkwLDQ2MTExLDQ3MjIyLDQ3OTU1LDQ5MDc2LDUwMzQwLDUxNDM3LDUyNTczLDUzNzUxLDU0ODY0LDU1NjgyLDU2ODUzLDU3OTkwCgpBQ0FDQS0tU1RBQzIgIDE0NDkyICA3NDkyOCAgSUQ9QUNBQ0EtLVNUQUMyXkVOU1QwMDAwMDYxMjg5NS40O0FDQUNBLS1TVEFDMl5BQ0FDQV5FTlNHMDAwMDAyNzg1NDAuNDtBQ0FDQSAgMCAgKyAgMTQ0OTIgIDc0OTI4ICAwICA1NCAgNDg4LDEzMywxMzksMTEwLDgyLDk5LDEwNywxMTEsMjEwLDE3MSwxNjIsMTY0LDE1MSwxMDQsODIsMTQ2LDE1MSwxMzUsMTQ3LDE4OSwxMDEsODksMTI1LDExNCwxMTQsOTAsMTE5LDI0LDE0NCw5NywxMDgsNTcsNDUsNDIsMjE2LDE1NiwyMDQsMTU2LDE0NywyNzAsOTgsMTIxLDExMSwxNDQsMTIxLDk3LDk3LDEzNiwxNzgsMTEzLDE1NSwxNzEsMTM3LDI0NDYgICAgIDAsMjU5OSwzNzMyLDQ4NzEsNTc2Miw2ODI3LDc5MjYsOTAzMywxMDE0NCwxMTM1NCwxMjUxMSwxMzAxOCwxNDE4MiwxNTExMCwxNjIxNiwxNjczNCwxNzkxNCwxOTA2NSwxOTU0NSwyMDY5MiwyMTg4MSwyMjk4MiwyNDA3MSwyNTE5NiwyNjU0MywyNzY1NywyODkzMywzMDI1OCwzMTI4MiwzMjIwMywzMzIxMCwzNDMxOCwzNDYxOCwzNTcwNiwzNjc0OCwzNzc3OCwzODkzNCw0MDEzOCw0MTI5NCw0MjQ0MSw0Mzg5Miw0NDk5MCw0NjExMSw0NzIyMiw0Nzk1NSw0OTA3Niw1MDM0MCw1MTQzNyw1MjU3Myw1Mzc1MSw1NDg2NCw1NTY4Miw1Njg1Myw1Nzk5MAoKQUNBQ0EtLVNUQUMyICAxMTQ2ICAgMjI1MDEgIElEPUFDQUNBLS1TVEFDMl5FTlNUMDAwMDA2MTUyMjkuNDtBQ0FDQS0tU1RBQzJeQUNBQ0FeRU5TRzAwMDAwMjc4NTQwLjQ7QUNBQ0EgIDAgICsgIDExNDYgICAyMjUwMSAgMCAgMTAgIDQxMSw0NywyNTMsMTExLDEzMywxMzksMTEwLDgyLDk5LDgzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLDk3MDQsMTA3NTEsMTQ4MzQsMTU5NDUsMTcwNzgsMTgyMTcsMTkxMDgsMjAxNzMsMjEyNzIKCgoKIyMjIH4vU1RBUi1GdXNpb24tVHV0b3JpYWwvU1RBUi1GdXNpb25fb3V0ZGlyL0Z1c2lvbkluc3BlY3Rvci12YWxpZGF0ZSQgc2FtdG9vbHMgdmlldyBmaW5zcGVjdG9yLmp1bmN0aW9uX3JlYWRzLmJhbSB8IGhlYWQgLTEwCgpmdXN0dXQwMDAwMTQ0NjRiCTE2MwlBQ0FDQS0tU1RBQzIJNjQ4OTQJMjU1CTM2TTE0NDY1TjE0TQk9CTc5NTE1CTE0NjYwCUNDQUdDVEdBVENDQUdDQUFHQ0NUR0dBVFRDVEdBQUdDQ0FBR0NUQ0NBR0NHQVRUQ0FBCUNDQEFDQUI+QkNDQkFDQkJCQkNCQkBCQkJDQEJCQkFCQkNCQkJCQkJBQUJBOUBBQj9CCVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToxCUhJOmk6MQluTTppOjIJQVM6aTo4NAoKZnVzdHV0MDAwMDE4NWI3YgkxNjMJQUNBQ0EtLVNUQUMyCTY0ODk0CTI1NQkzNk0xNDQ2NU4xNE0JPQk3OTUwOQkxNDY2NQlDQ0FHQ1RHQVRDQ0FHQ0FBQUNDVEdHQVRUQ1RHQUFHQ0NBQUdDVENDQUdDR0FUVENBQQlCQkI/Qj8/PkBCQkI7QkJCQUJCPz8/PjxAQj9BQUI/QUFBQT9CPUFAQj9CPDE1OkI/PwlQRzpaOk1hcmtEdXBsaWNhdGVzCU5IOmk6MQlISTppOjEJbk06aTowCUFTOmk6OTkKCmZ1c3R1dDAwMDAwNzhiYjQJMTYzCUFDQUNBLS1TVEFDMgk2NDg5NgkyNTUJMzRNMTQ0NjVOMTZNCT0JNzk0MjUJMTQ1NzkJQUdDVEdBVENDQUdDQUFBQ0NUR0dBVFRDVEdBQUdDQ0FBR0NUQ0NBR0NHQVRUQ0FBR0MJQkNDQkNCQkBBQUJCQkFCQEFBQUJAP0JAQEFAQEBAP0I/Pzw9PTU0PTs+LzY1Ozw2My8JUEc6WjpNYXJrRHVwbGljYXRlcwlOSDppOjEJSEk6aToxCW5NOmk6MAlBUzppOjk5CgpmdXN0dXQwMDAwMTFkMWE2CTgzCUFDQUNBLS1TVEFDMgk2NDg5OAkyNTUJMzJNMTQ0NjVOMThNCT0JNjM2MTkJLTE1Nzk0CUNUR0FUQ0NBR0NBQUFDQ1RHR0FUVENUR0FBR0NDQUFHQ1RDQ0FHQ0dBVFRDQUFHQ0dDCT82Nz09P0A/PUBAODg/QD8/P0A6Pzw/P0BBP0E/QD8/QD5CQkFCPz9CQUJCQkFAQkFCCVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToxCUhJOmk6MQluTTppOjEJQVM6aTo5NQoKZnVzdHV0MDAwMDE0MzI0OQkxNjMJQUNBQ0EtLVNUQUMyCTY0ODk5CTI1NQkzMU0xNDQ2NU4xOU0JPQk3OTU1MQkxNDcwMglUR0FUQ0NBR0NBQUFDQ1RHR0FUVENUR0FBR0NDQUFHQ1RDQ0FHQ0dBVFRDQUFHQ0dDVAlDQUJCQ0NCQkNCQ0NCQ0JCQUNCQkJCQUNBQUNDQ0NBQ0FCQ0JAQj4+QUFCQkM/Qj5CPwlQRzpaOk1hcmtEdXBsaWNhdGVzCU5IOmk6MQlISTppOjEJbk06aTowCUFTOmk6OTkKCmZ1c3R1dDAwMDAxMDJjNTYJOTkJQUNBQ0EtLVNUQUMyCTY0OTAwCTI1NQkzME0xNDQ2NU4yME0JPQk3OTQyNgkxNDU3NglHQVRDQ0FHQ0FBQUNDVEdHQVRUQ1RHQUFHQ0NBQUdDVENDQUdDR0FUVENBQUdDR0NUQwlCQkJCQkJDQkJCQkJCQkJCQkJDQkJCQkFCQUJCQkJBQj9BP0JBQj9BP0A/QEA/QT8/PAlQRzpaOk1hcmtEdXBsaWNhdGVzCU5IOmk6MQlISTppOjEJbk06aTowCUFTOmk6OTkKCmZ1c3R1dDAwMDAxMDFkMGUJMTQ3CUFDQUNBLS1TVEFDMgk2NDkwMQkyNTUJMjlNMTQ0NjVOMjFNCT0JNjI1MDUJLTE2OTExCUFUQ0NBR0NBQUFDQ1RHR0FUVENUR0FBR0NDQUFHQ1RDQ0FHQ0dBVFRDQUFHQ0dDVENDCUJAPkFAQkJCQTpBQkJCQkJCQkJCQkJCQkJCQkJCQkFCQkJDQ0NCQ0NDQkJCQ0NCQkJCCVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToxCUhJOmk6MQluTTppOjAJQVM6aTo5OAoKZnVzdHV0MDAwMDExMGUxZAkxNDcJQUNBQ0EtLVNUQUMyCTY0OTAxCTI1NQkyOU0xNDQ2NU4yMU0JPQk2NDgzMAktMTQ1ODYJQVRDQ0FHQ0FBQUNDVEdHQVRUQ1RHQUFHQ0NBQUdDVENDQUdDR0FUVENBQUdDR0NUQ0MJPjxAQkE/QkBAP0FCP0JAP0E/QkJBQkFBQUJBQj9CP0JCQkJCQkJCQkJCQkJCQkJCQkIJUEc6WjpNYXJrRHVwbGljYXRlcwlOSDppOjEJSEk6aToxCW5NOmk6MAlBUzppOjk3CgpmdXN0dXQwMDAwMDAxNzQ1CTE0NwlBQ0FDQS0tU1RBQzIJNjQ5MDQJMjU1CTI2TTE0NDY1TjI0TQk9CTYzNTcyCS0xNTg0NwlDQUdDQUFBQ0NUR0dBVFRDVEdBQUdDQ0FBR0NUQ0NBR0NHQVRUQ0FBR0NHQ1RDQ0NUQwlBQT9BPDw2P0A/P0FBP0A/QT9AQT8/QD9BQEI/QUJBQkJBQUJCQkFBQUJBQkBCQkJBQglQRzpaOk1hcmtEdXBsaWNhdGVzCU5IOmk6MQlISTppOjEJbk06aTowCUFTOmk6OTkKCmZ1c3R1dDAwMDAxYTQ1NTMJODMJQUNBQ0EtLVNUQUMyCTY0OTA0CTI1NQkyNk0xNDQ2NU4yMk0yUwk9CTYzNjE3CS0xNTgwMAlDQUdDQUFBQ0NUR0dBVFRDVEdBQUdDQ0FBR0NUQ0NBR0NHQVRUQ0FBR0NHQ1RDQ0NDQQk9Pzc/Nz82Pz82Nzc+NDdAPDw/Pz0/Pz8/P0A3QUI/P0E9QUE/QkFCP0JAQj9CQkJDQglQRzpaOk1hcmtEdXBsaWNhdGVzCU5IOmk6MQlISTppOjEJbk06aTowCUFTOmk6OTcKCgojIyMgfi9TVEFSLUZ1c2lvbi1UdXRvcmlhbC9TVEFSLUZ1c2lvbl9vdXRkaXIvRnVzaW9uSW5zcGVjdG9yLXZhbGlkYXRlJCBzYW10b29scyB2aWV3IGZpbnNwZWN0b3Iuc3Bhbm5pbmdfcmVhZHMuYmFtIHwgaGVhZCAtMTAKCmZ1c3R1dDAwMDAwMzAzMDEJOTkJQUNBQ0EtLVNUQUMyCTYyNTMzCTI1NQkzNk0xMDAwTjE0TQk9CTc5NDEwCTE2OTI3CUFUQ0NUQ0dBVEdHQVRHQ1RBR0NBR0dDQ0dUQ0NUQ0FDQ0NBQUNDQ0FBQUFBR0dUQ0FHCUBCQEBAQUFAQEJAODxCP0E/QD88PEE9PUA/Nz1AOEE+PUA9PTg+Nj09PTszOD04MjxBCVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToxCUhJOmk6MQluTTppOjAJQVM6aTo5OAoKZnVzdHV0MDAwMDEyOGUxMQk5OQlBQ0FDQS0tU1RBQzIJNjM1OTMJMjU1CTUwTQk9CTc5NDM4CTE1ODk1CUdDVFRUVFRUR0FDVEFUR0dBVENUVFRDVENBR0FHQVRUQVRHQ0FHQ0NDVEdHR0NBQ0FHCUJDQkNDQ0NDQkNDQ0JDQ0JCQ0NDQ0NDQ0NDQkJCQ0JDQ0NDQjZAQkNDQUJDQ0M7QTtDCVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToxCUhJOmk6MQluTTppOjAJQVM6aTo5NwoKZnVzdHV0MDAwMDE0ZTFkNAkxNjMJQUNBQ0EtLVNUQUMyCTYzNTkzCTI1NQk1ME0JPQk3OTQ3MgkxNTkyOQlHQ1RUVFRUVEdBQ1RBVEdHQVRDVFRUQ1RDQUdBR0FUVEFUR0NBR0NDQ1RHR0dDQUNBRwk6Q0JCQ0JDQ0FDQ0NCQkI9QkJDQkJDQ0NDQkBCQj1CQT9BNkI/PkNDQ0I9OUFCQkI+QglQRzpaOk1hcmtEdXBsaWNhdGVzCU5IOmk6MQlISTppOjEJbk06aTowCUFTOmk6OTcKCmZ1c3R1dDAwMDAwODRmYWMJMTYzCUFDQUNBLS1TVEFDMgk2MzU5NAkyNTUJNTBNCT0JNzk0MjQJMTU4ODAJQ1RUVFRUVEdBQ1RBVEdHQVRDVFRUQ1RDQUdBR0FUVEFUR0NBR0NDQ1RHR0dDQUNBR0EJQ0JDQ0NDQkNDQ0NDQkNDQ0NDQ0JDQ0NDQ0NCQkBCQ0NDQkNDQkJDQ0JBQkJDQ0NDQ0IJUEc6WjpNYXJrRHVwbGljYXRlcwlOSDppOjEJSEk6aToxCW5NOmk6MQlBUzppOjk1CgpmdXN0dXQwMDAwMGI3NDRlCTk5CUFDQUNBLS1TVEFDMgk2MzYxNQkyNTUJNTBNCT0JNzkzOTAJMTU4MTgJQ1RDQUdBR0FUVEFUR0NBR0NDQ1RHR0dDQUNBR0FDVEdUR0dUR0dUVEdHVEFHQUdDQ0EJQkNBO0FBQ0JDQ0JCQ0JCQkJCQkJCQkJCP0E+QkBBQkI1QkAxQEA3Pjw8KzE1KzcxOS8JUEc6WjpNYXJrRHVwbGljYXRlcwlOSDppOjEJSEk6aToxCW5NOmk6MQlBUzppOjg4CgpmdXN0dXQwMDAwMTA0YzQ0CTk5CUFDQUNBLS1TVEFDMgk2MzYyMQkyNTUJNDZNNFMJPQk3OTM5MAkxNTgxOAlHQVRUQVRHQ0FHQ0NDVEdHR0NBQ0FHQUNUR1RHR1RHR1RUR0dUQUdBR0NDQUdHQ1RBRwlCQUJCQkJCQkJCQUFBQkI/QkFCP0FCPz9CQj9CQTZBQC8+Nz43Mjo5OTk4Mjo8MTc7OglQRzpaOk1hcmtEdXBsaWNhdGVzCU5IOmk6MQlISTppOjEJbk06aToxCUFTOmk6OTAKCmZ1c3R1dDAwMDAxMDdkZTkJOTkJQUNBQ0EtLVNUQUMyCTYzNjM3CTI1NQkyOU0xMTY3TjIxTQk9CTc5NDg1CTE1ODk4CUdDQUNBR0FDVEdUR0dUR0dUVEdHVEFHQUdDQ0FHR0NUQUdHQUdHQUFUQUFDQ0dUR0dHCUJDQ0JCPkJDQkI9Nj47QkAoPjc/NzI7OTE7PjUtNj0zPShAMjQ0KTs3NiMjIyMjIyMjCVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToxCUhJOmk6MQluTTppOjIJQVM6aTo5NAoKZnVzdHV0MDAwMDFhNmZiNgk5OQlBQ0FDQS0tU1RBQzIJNjM2NTAJMjU1CTE2TTExNjdOMzRNCT0JNzk0MTIJMTU4MTIJVEdHVFRHR1RBR0FHQ0NBR0dDVEFHR0FHR0FBVEFDQ1RHVEdHR0FHVFRHVFRHQ1RHVEEJQkFCP0NCQTo2OTo9QkEzPj1DQENCQkJCPjw/QUJDQj07O0JCPTk9Pz43PUA7Qj45OT0JUEc6WjpNYXJrRHVwbGljYXRlcwlOSDppOjEJSEk6aToxCW5NOmk6MAlBUzppOjk5CgpmdXN0dXQwMDAwMDIzMmE0CTk5CUFDQUNBLS1TVEFDMgk2NDgzMAkyNTUJM1M0N00JPQk3OTUyNAkxNDc0NAlBR0NDQUdHQ1RBR0dBR0dBQVRBQ0NUR1RHR0dBR1RUR1RUR0NUR1RBR0FBQUNDQ0dBQQk6QENBPUFCQ0A5QD01Oj86Mj9DQ0NCQj8/QT4wPjxAOz5BPkI+PjY6Ozg/QUJCQDc3OQlQRzpaOk1hcmtEdXBsaWNhdGVzCU5IOmk6MQlISTppOjEJbk06aTowCUFTOmk6OTQKCmZ1c3R1dDAwMDAwNmRhODAJOTkJQUNBQ0EtLVNUQUMyCTY0ODMwCTI1NQkxUzQ5TQk9CTc5NTI2CTE0NzQ2CUNDQUdHQ1RBR0dBR0dBQVRBQ0NUR1RHR0dBR1RUR1RUR0NUR1RBR0FBQUNDQ0dBQUNBCUNDQkBDQ0I+Pz9BQj9BQUBCQ0JDQ0FDQ0NBQ0JAQ0JCQ0M+Oz5DQUJDQThAQ0A+QD5BCVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToxCUhJOmk6MQluTTppOjAJQVM6aTo5NgoKCiMjIyB+L1NUQVItRnVzaW9uLVR1dG9yaWFsL1NUQVItRnVzaW9uX291dGRpci9GdXNpb25JbnNwZWN0b3ItdmFsaWRhdGUkIHNhbXRvb2xzIHZpZXcgZmluc3BlY3Rvci5jb25zb2xpZGF0ZWQuY1NvcnRlZC5iYW0gfCBoZWFkIC0xMAoKZnVzdHV0MDAwMDBmYmI3Ngk5OQlBQ0FDQS0tU1RBQzIJMTcxCTMJNTBNCT0JMjI2CTEwNQlHQUdBQUFBQUFBQUFBQUFBR0dDQUFBQUFBR0NBQ0FBVEFUVEdDQUdUQ1RHQ0FHQUFUQwlBOkFCQkJCQkA+Qj5BQkFBPT44QDk/QT89OTs+Pz0+Nzo/PDk5MDo3Ojw6OjY5Pj4+OwlQRzpaOk1hcmtEdXBsaWNhdGVzCU5IOmk6MglISTppOjEJbk06aTowCUFTOmk6OTgKCmZ1c3R1dDAwMDAxNzE0MjUJMTYzCUFDQUNBLS1TVEFDMgkyMDYJMwk1ME0JPQkzNTgJMjAyCUdDQUdUQ1RHQ0FHQUFUQ1RUQ1RUVENUQ0NDQ0NUVFRDQUNBQUdBR0FDQ0FDQVRUQ1RHCUFDQEJBQkJDQkJCQkNCQkNCQkJCQkJCQkFCQUFCQkJCQkJDQkJCQkFAQUJCPzc/QUFCCVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToyCUhJOmk6MQluTTppOjAJQVM6aTo5OAoKZnVzdHV0MDAwMDBmYmI3NgkxNDcJQUNBQ0EtLVNUQUMyCTIyNgkzCTUwTQk9CTE3MQktMTA1CVRDVENDQ0NDVFRUQ0FDQUFHQUdBQ0NBQ0FUVENUR0FDQUNDQUFDVFRDQ0dUR0dBQUFDCT1CPUFBQUFANj8yP0FCQkJCQkI/QkI/QkE2N0FBQkFCP0JCQz9CPj5CQkJCQ0NCQ0JCCVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToyCUhJOmk6MQluTTppOjAJQVM6aTo5OAoKZnVzdHV0MDAwMDAxN2QwYQkxNjMJQUNBQ0EtLVNUQUMyCTIyNwkzCTUwTQk9CTM3NwkyMDAJQ1RDQ0NDQ1RUVENBQ0FBR0FHQUNDQUNBVFRDVEdBQ0FDQ0FBQ1RUQ0NHVEdHQUFBQ0EJQkNCQ0JCQkNCQENCQkJCQEBCQkNBQjZBQkBCQT8+QEJBQToyPkE/QUFCPUE8PDk7PDkJUEc6WjpNYXJrRHVwbGljYXRlcwlOSDppOjIJSEk6aToxCW5NOmk6MAlBUzppOjk4CgpmdXN0dXQwMDAwMWIxYWYwCTk5CUFDQUNBLS1TVEFDMgkyNTEJMwk1ME0JPQkzNjcJMTY2CVRUQ1RHQUNBQ0NBQUNUVENDR1RHR0FBQUNBQ1RHR0NHQ1RBR0NUQ0NBQUFDVEFBQ0FBCUJCQkJCQkJCQkJCQkBCQkJAQkBCQUJCQkBCQkJCQUBBQUBBQEA+Pz02QUBAQD9AQUA/CVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToyCUhJOmk6MQluTTppOjAJQVM6aTo5OAoKZnVzdHV0MDAwMDA2NmE2Nwk5OQlBQ0FDQS0tU1RBQzIJMjU5CTMJNTBNCT0JMzAxCTkyCUNDQUFDVFRDQ0dUR0dBQUFDQUNUR0dDR0NUQUdDVENDQUFBQ1RBQUNBQVRDR0NDQUFBCUJCQkJCQkJCQkNAQ0I9QUJBQkJBQkJCQkFCQUJCQUA/QT0/P0FBQUBBPEJAQT9CP0FBCVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToyCUhJOmk6MQluTTppOjAJQVM6aTo5OAoKZnVzdHV0MDAwMDE4MmE2Zgk5OQlBQ0FDQS0tU1RBQzIJMjg4CTMJNTBNCT0JNTA0CTI2NglUQ0NBQUFDVEFBQ0FBVENHQ0NBQUFUVENHQUFUQ0FHVFRBQ0NHR0dBR0FBR0dBQUdURwlBQUNCQkJBQkNDQkJDQkJCQUJCQ0NCQkJCQkJCQ0JCQEJCQEJAQUBAQEJAQT9BQkI3PAlQRzpaOk1hcmtEdXBsaWNhdGVzCU5IOmk6MglISTppOjEJbk06aTowCUFTOmk6OTgKCmZ1c3R1dDAwMDAwNjZhNjcJMTQ3CUFDQUNBLS1TVEFDMgkzMDEJMwk1ME0JPQkyNTkJLTkyCVRDR0NDQUFBVFRDR0FBVENBR1RUQUNDR0dHQUdBQUdHQUFHVEdBR0dDQUNUVENHQ0NHCTxCPz1CQUBBPT5CP0JBQEJCP0E/PEJCQUBBQkFCQkJBQkJAQkJCQUFCQUNAQkNCQ0JCCVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToyCUhJOmk6MQluTTppOjAJQVM6aTo5OAoKZnVzdHV0MDAwMDBjYTEzYwkxNjMJQUNBQ0EtLVNUQUMyCTMyNQkzCTUwTQk9CTQ4NQkyMTAJR0dBR0FBR0dBQUdUR0FHR0NBQ1RUQ0dDQ0dHR0NBR0dBR1RDQ0FDR1RUR0dHQUdHQUcJQkJBQkFAQEI+PkE1Qj1BQTtBPUFAOz89O0E9PTU+Pz07Pzs5Mzk1PzU9PTk+NT85NEEJUEc6WjpNYXJrRHVwbGljYXRlcwlOSDppOjIJSEk6aToxCW5NOmk6MAlBUzppOjk4CgpmdXN0dXQwMDAwMTJmY2MzCTk5CUFDQUNBLS1TVEFDMgkzMjUJMwk1ME0JPQk0MzMJMTU4CUdHQUdBQUdHQUFHVEdBR0dDQUNUVENHQ0NHR0dDQUdHQUdUQ0NBQ0dUVEdHR0FHR0FHCUFCPUE2NjxBPjs/PT9BP0JCPkFBQUJBP0FBODk6Oj48LTo9Qjo8PkI5QUE+PSw+PjE+CVBHOlo6TWFya0R1cGxpY2F0ZXMJTkg6aToyCUhJOmk6MQluTTppOjAJQVM6aTo5OAoKCgoKCgojIyAgVml6dWFsaXplIGluIElHVgoKZmluc3BlY3Rvci5iZWQgICMgcmVmZXJlbmNlIHRyYW5zY3JpcHQgc3RydWN0dXJlIGFubm90YXRpb25zIGluIEJFRCBmb3JtYXQKCmZpbnNwZWN0b3IuY29uc29saWRhdGVkLmNTb3J0ZWQuYmFtICMgcmVhZHMgYWxpZ25lZCB0byB0aGUgZnVzaW9uIGNvbnRpZ3MKCmZpbnNwZWN0b3IuanVuY3Rpb25fcmVhZHMuYmFtICMganVuY3Rpb24gLyBzcGxpdC1yZWFkcyBzdXBwb3J0aW5nIGZ1c2lvbnMKCmZpbnNwZWN0b3Iuc3Bhbm5pbmdfcmVhZHMuYmFtICMgZnVzaW9uIHNwYW5uaW5nIGZyYWdtZW50IGV2aWRlbmNlIAoKCgoKCgoKCgoK