Ashley Noriega TRGN 545 Exploring Chemical and Biological Therapeutic Modalities Final Market Analysis Project April 30, 2020

Final Project

Overview of Hodgkin Lymphoma

Defining the Lymph System

The lymphatic system is complex and consists of interactions with various tissues and organs. There are approximately 600 lymph nodes spread throughout the body (“Adult Hodgkin Lymphoma Treatment (PDQ®)–Patient Version” and “What Is Hodgkin Lymphoma?”).

library(DiagrammeR)
grViz("
      
digraph boxes_and_circles {

# add node statements
node [shape = circle
      fontname = Futura
      penwidth = 2.0]
A [label = ' LYMPH SYSTEM', 
   fontname = Futura
   fillcolor = red]; 
B [label = ' Lymph fluid', 
   fontname = Futura]; 
C [label = ' Lymph vessels', 
   fontname = Futura]; 
D [label = ' Lymph nodes', 
   fontname = Futura]; 
E [label = ' Spleen', 
   fontname = Futura];
F [label = ' Thymus', 
   fontname = Futura];
G [label = ' Bone Marrow', 
   fontname = Futura];
H [label = ' Tonsils', 
   fontname = Futura];

node [shape = box
      fontname = Helvetica
      penwidth = 2.0]
1 [label = ' T lymphocyte',
   fontname = Baskerville]; 
2 [label = ' B lymphocyte',
   fontname = Baskerville]; 
3 [label = ' Red Blood Cells',
   fontname = Baskerville];
4 [label = ' Platelets',
   fontname = Baskerville];
5 [label = ' White Blood Cells',
   fontname = Baskerville];
6 [label = ' Mediastinum', #area in between the lungs
   fontname = Baskerville];
7 [label = ' Underarms',
   fontname = Baskerville];
8 [label = ' Neck',
   fontname = Baskerville];
9 [label = ' Abdomen',
   fontname = Baskerville];
10 [label = ' Pelvis',
   fontname = Baskerville];
11 [label = ' Groin',
    fontname = Baskerville]

# add edge statements
edge [arrowhead = vee]
A -> {B C D E F G H};
1 -> 5 [label = ' type of',
        fontname = Helvetica]; 
2 -> 5 [label = ' type of',
        fontname = Helvetica];
B -> 1 [label = ' carries',
        fontname = Helvetica];
B -> 2 [label = ' carries',
        fontname = Helvetica];
B -> C [label = ' travels through',
        fontname = Helvetica];
C -> B [label = ' return to bloodstream',
        fontname = Helvetica];
D -> C [label = ' found along',
        fontname = Helvetica];
D -> B [label = ' filters',
        fontname = Helvetica];
D -> 5 [label = ' stores',
        fontname = Helvetica];
D -> 6 [label = ' groups form in',
        fontname = Helvetica];
D -> 7 [label = ' groups form in',
        fontname = Helvetica];
D -> 8 [label = ' groups form in',
        fontname = Helvetica];
D -> 9 [label = ' groups form in',
        fontname = Helvetica];
D -> 10 [label = ' groups form in',
        fontname = Helvetica];
D -> 11 [label = ' groups form in',
        fontname = Helvetica];
E -> 1 [label = ' makes/stores',
        fontname = Helvetica];
E -> 2 [label = ' makes/stores',
        fontname = Helvetica];
E -> 3 [label = ' stores',
        fontname = Helvetica];
2 -> F [label = ' mature/multiply in',
        fontname = Helvetica];
G -> 3 [label = ' makes',
        fontname = Helvetica];
G -> 4 [label = ' makes',
        fontname = Helvetica];
G -> 5 [label = ' makes',
        fontname = Helvetica]
        
# add a graph statement
graph [nodesep = 1.0]
}
")

NA

History of Hodgkin Lymphoma

Hodgkin Lymphoma (HL) was formerly known as “Hodgkin’s disease”. It was discovered in 1832 by a British pathologist named Dr. Thomas Hodgkin. HL is a cancer of the lymphatic system that can be caused by a change in the DNA of lymphocytes which are a type of white blood cells (Hodgkin Lymphoma). This change in DNA causes the uncontrolled growth of abnormal lymphocytes which eventually create tumor masses in and around surrounding lymph node areas- sometimes metastasizing to tissue far from the lymph nodes. The types of abnormal B lymphocytes in HL are Hodgkin/ Reed-Sternberg Cells (HRS) which can be described as “owl-eyes” and lymphocyte-predominant cells which are “popcorn-like”. According to the World Health Organization, there are 2 types of HL: 95% are Classical and 5% Nodular Lymphocyte-predominant (source: NCCN). 7% of Nodular Lymphocyte-Predominant (NLPHL) cases transform into aggressive Non-Hodgkin Lymphoma (Hodgkin Lymphoma). Classical Hodgkin Lymphoma (cHL) has 4 subtypes. 70% of the cHL cases are Nodular Sclerosis, meaning the lymph nodes have fibrous tissue elements. Nodular Sclerosis Hodgkin Lymphoma is most common in young adults and does not discriminate against gender. This type of of cHL is highly curable and 40% of these cases have B symptoms. Mixed Cellularity accounts for 20-25% of the cHL subtypes and is common in older male adults, HIV positive patients, and patients displaying B symptoms (Hodgkin Lymphoma). Lymphocyte-rich make up 5% of the cHL population and is usually diagnosed at early stage, is more common in males, and patients rarely have B symptoms (Hodgkin Lymphoma). Lymphocyte-depleted is the rarest of the 4 subtypes and is usually diagnosed at advanced stages. Lymphocyte-depleted is also common in males with B symptoms, the median patient age being 30 -37 years, and many patients are also HIV positive (Hodgkin Lymphoma).

Flowchart showing types of HL

library(DiagrammeR)
grViz("digraph {
      # node definitions with substituted label text
      node [fontname = Helvetica, shape = diamond]        
      tab1 [label = '@@1']
      node [fontname = Helvetica, shape = rhombus]
      tab2 [label = '@@2']
      node [fontname = Helvetica, shape = oval]
      tab3 [label = '@@3']
      node [fontname = Helvetica, shape = rectangle]
      tab4 [label = '@@4']
      tab5 [label = '@@5']
      tab6 [label = '@@6']
      tab7 [label = '@@7']
      tab8 [label = '@@8']
      tab9 [label = '@@9']
      tab10 [label = '@@10']
      node [fontname = Helvetica, shape = square]
      tab11 [label = '@@11']
      
       # subgroup for cHL
       subgraph cluster_0 {
        node [style=filled];
        '@@11' -> '@@5';
        label = 'CHL';
        color=blue;
    }
      tab12 [label = '@@12']
      
      # subgroup for NLPHL
      subgraph cluster_1 {
        node [style=filled];
        '@@12' -> '@@6';
        label = 'NLPHL';
        color=red;
      } 
    
      node [fontname = Helvetica, shape = circle]
      tab13 [label = '@@13']

      # edge definitions with the node IDs
      edge [arrowhead='vee', penwidth=1]
      tab1 -> tab2;
      tab1 -> tab3;
      edge [penwidth=1]
      tab2 -> tab11;
      tab2 -> tab12;
      tab12 -> tab4;
      tab11 -> tab4; #cHL is made up of HRS cells so made line equally as thick to differentiate
      edge [penwidth=10, label = '95%'] #cHL accounts for greater than 9/10 of the HL cases so made arrow thicker
      tab4 -> tab5;
      edge [penwidth=1, label = '5%'] #NLPHL accounts for less than 1/10 cases so made arrow less thicker
      tab4 -> tab6; 
      edge [penwidth=7, label = '70%'] #NSCHL is the most common cHL so the arrow is thickest of the 4 subtypes
      tab5 -> tab7;
      edge [penwidth=3, label = '20-25%'] #MCCHL is the 2nd most common cHL so the arrow is 2nd thickest 
      tab5 -> tab8;
      edge [penwidth=2, label = '5%']
      tab5 -> tab9;
      edge [penwidth=1, label = 'rare']
      tab5 -> tab10;
      edge [penwidth=1, label = '7%']
      tab6 -> tab13
}
      [1]: 'White Blood Cells'
      [2]: 'B lymphocytes'
      [3]: 'T lymphocytes'
      [4]: 'Hodgkin Lymphoma (HL)'
      [5]: 'Classic Hodgkin Lymphoma (cHL)'
      [6]: 'Nodular lymphocyte-predominant Hodgkin lymphoma (NLPHL)'
      [7]: 'Nodular sclerosis Hodgkin lymphoma (NSCHL)'
      [8]: 'Mixed cellularity Hodgkin lymphoma (MCCHL)'
      [9]: 'Lymphocyte-rich Hodgkin lymphoma (LRCHL)'
      [10]: 'Lymphocyte-depleted Hodgkin lymphoma (LDCHL)'
      [11]: 'Hodgkin/Reed-Sternberg cells'
      [12]: 'Lymphocyte-predominant cells'
      [13]: 'Non-Hodgkin Lymphoma'
      ")

NA

Flowchart of HL Staging using Lugano classification

The staging of HL is derived from the Ann Arbor staging system which divides patients into 4 stages and 2 subcategories: those experiencing and not experiencing symptoms. “A” catergory meanining patient is asymptomatic and “B” category meaning patients have drenching night sweats, unexplained fevers greater than 100.4 degrees Faranheit, or weight loss greater than 10% of their body fat within 6 months preceeding diagnosis (source: NCCN). Lugano classificaion takes into account the Cotswolds modifcations of the Ann Arbor system and introduces new prognostic elements. Stage 1 is localized and means 1 lymph node or group of adjacent nodes (ex. cervical) or one lymphoid structure (ex. spleen) is involved (Canellos, and NG and NCCN). Stage 2 signifies that 2 or more lymph nodes or regions are involved but they are on the same side of the diaphragm (Canellos, and NG and NCCN). Stage 3 means lymph nodes on both sides of the diaphragm are involved (source: uptodate and NCCN). Stage 4 has widespread lymph involvement plus organs such as spleen, lungs, liver, bones, and bone marrow are affected with or without lypmh node involvement (Canellos, and NG and NCCN). Categories A and B were already mentioned but there are also E and S. Category E means organs or tissue outside the lymphatic system are affected and category S means the spleen is involved (Hodgkin Lymphoma, NCCN, uptodate.com). In the Lugano classification, the disease is also referred to as “bulky” when it is either a 10 cm single nodal mass or it is greater or equal to 1/3 of the chest diameter (Canellos, and NG). These stages and categories can be divided into 3 prognostic subgroups: early stage favorable, early stage unfavorable, and advanced stage. Early stage favorable signifies the disease is either stage 1 or 2 without unfavorable factors. Early stage unfavorable is disease stage 1 or 2 with unfavorable factors. Besides having B symptoms, other unfavorable factors include having masses outside of the lymph nodes or lymphatic system, having a “bulky disease”, having 3 or more lymph nodes involved, and having erythrocyte sedimentation rate that is greater than or equal to 50 mm/hr (Hodgkin Lymphoma). Advanced stage is disease that is stage 3 or 4 and has adverse prognosis when patients are males, 45 years and older, albumin levels 4 g/dL, hemoglobin below 10.5 g/dL, white blood cell count greater than 15,000/mm^3, lymphocyte count less than 8% of the white blood cell count and/or lymphocyte count less than 600/mm^3 (Hodgkin Lymphoma).

library(DiagrammeR)
grViz("digraph flowchart {
      # node definitions with substituted label text
      node [fontname = Veranda, shape = rectangle]        
      tab1 [label = 'More than 1 lymph node, region or structure involved?']
      tab2 [label = 'Stage I']
      tab3 [label = 'Same side of the diaphragm?']
      tab4 [label = 'Stage II']
      tab5 [label = 'Extensive extranodal organ involvement either w/ or w/o associated lymph nodes?']
      tab6 [label = 'Stage III']
      tab7 [label = 'Stage IV']
      tab8 [label = 'Stage IE']
      tab9 [label = 'Stage IIE']
      tab10 [label = 'Stage IIIE']
      tab11 [label = 'Stage IIIS']
      tab12 [label = 'Stage IIIE+S']
      tab13 [label = 'Localized extralymphatic site/organ involved?']
      tab14 [label = 'Localized extralymphatic site/organ + regional lymph nodes involved?']
      tab15 [label = 'Unfavorable factors?']
      tab16 [label = 'Early Stage Unfavorable']
      tab17 [label = 'Early Stage Favorable']
      tab18 [label = 'Localized extralymphatic organ/site associated w/ lymph nodes involved?']
      tab19 [label = 'Spleen also involved?']
      tab20 [label = 'Advanced Stage']
      
      # edge definitions with the node IDs
      {tab2 tab4 tab8 tab9} -> tab15
      {tab6 tab7 tab10 tab11 tab11 tab12} -> tab20
      edge [arrowhead='normal', penwidth=3, label = 'NO']
      tab1 -> tab13 -> tab2
      tab3 -> tab5;
      tab5 -> tab18;
      tab14 -> tab4;
      tab15 -> tab17;
      tab19 -> tab10;
      edge [arrowhead='normal', penwidth=3, label = 'YES']
      tab1 -> tab3;
      tab13 -> tab8;
      tab3 -> tab14 -> tab9;
      tab15 -> tab16;
      tab5 -> tab7;
      tab18 -> tab19 -> tab12;
      edge [arrowhead='normal', penwidth=3, label = 'NO, JUST LYMPH NODES']
      tab18 -> tab6;
      edge [arrowhead='normal', penwidth=3, label = 'NO, BUT THE SPLEEN IS']
      tab18 -> tab11;
      }
      ")

NA

Clinical Presentations

Many patients are symptomless. However, those that do have symptoms may experience drenching night sweats, unexplained weight loss, unexplained fevers, persistent fatigue, persistent cough, shortness of breath, pruritus (itchy skin), swollen abdomen, pain in the abdomen, decrease in appetite, increased feeling of fullness, lymphadenopathy (swollen lymph nodes) and rarely pain in lymph nodes after drinking alcohol (Hodgkin Lymphoma). Typical CHL clinical presentations inlcude: mediastinal mass (mass on the chest), lymphadenopathy in more than 2/3 of the patients, and “B symptoms” (Canellos, and NG). 60 -80% of cHL patients have enlarged cervical (neck) and supraclavical (above the clavicle) lymph nodes, 50 -60% have enlarged mediastinal (part of chest) nodes, 30% have enlarged axiliary (armpit) nodes, 30% have enlarged retroperitoneal (behind the abdomen) nodes, 10% have enlarged inguinal (groin) nodes, and less than 10% have enlarged infradiaphragmatic (below the diaphragm) nodes (Canellos, and NG). B symptoms tend to accompany lymphadenopathy and is found in about 1/5 of early stage patients and 1/2 of the late stage patients (Canellos, and NG). Fevers are more common at night and can cyclically increase and decrease over a two week period (Canellos, and NG). This type of fever is called Pel-Ebstein fever. Patients with mediastinal mass can either be asymptomatic or have cough, pain, and/or accompanying pain. Less typical cHL clinical presentations include: liver disease, intra-abdominal disease, skin lesions, bone marrow involvement, nonadjacent spread to muliple lymph nodes, central nervous system involvement, nephrotic syndrome and isolated abnormal lab results (Canellos, and NG). Abnormal lab results include hypercalcemia, anemia, eosinophillia, leukocytosis, thrombocytosis, lymphopenia,and hypoalbuminemia. Although these atypical presentations are less common in cHL population overall, patients who are also HIV positive or already have a suppressed immune system are more likely to experience these symptoms (Canellos, and NG). NLPHL patients typically do not have “B symptoms”, bulky disease, extranodal involvement, or mediastinal masses (Hodgkin Lymphoma). In fact, 3/4 of the NLPHL patients are diagnosed during stage 1 which makes sense because the disease is slow-growing (Hodgkin Lymphoma).

Diagnosing HL

First, a thorough history and physical examination of a patient is conducted to see if there are any symptoms, enlarged lymph nodes, enlarged spleen, enlarged liver, or relevant familial history. Laboratory studies are then done to test complete blood count (CBC w/diff), erythrocyte sedimentation rate (ESR), serum chemistries (CMP), liver function test, renal function test, albumin, Epstein-Barr, and HIV. Scans can be done to better guide biopsies. To properly diagnose HL, either excisional or incisional tissue biopsies or core needle biopsies need to be done (Canellos, and NG). It can be difficult to diagnose HL because RS cells compromise a small portion of a biopsy sample- specifically 0.1 to 10% at most- so a fine needle aspiration biopsy (FNA) would not provide enough tissue to give a definitive diagnosis (Hodgkin Lymphoma). Immunophenotyping is also done to discriminate against Hodgkin and Reed-Sternberg cells and confirm the Hodgkin Lymphoma diagnosis. PET/CT scans are used for staging and restaging after a certain number of cycles of treatment.

Target Market

Market Size

196,508 Americans live with HL or are in remission (Hodgkin Lymphoma). The NIH projects 8,480 new diagnoses and 970 disease related deaths this year, meaning HL represents only 0.5% of all new cancer cases in America (source: cancer.gov). HL is now considered highly curable with an average 5 year survival of 87.4% (source: cancer.gov). This percentage is even greater (93.9%) for patients who were younger than 45 years old when diagnosed (Hodgkin Lymphoma). In childhood cancers, HL makes up about 7% of all cancers and is more commonly found between 20 -24 year olds (Hodgkin Lymphoma).

labels = c('2020 HL new cases', '2020 Other cancer new cases')
values = c(8480, 1696000)
fig <- plot_ly(type='pie', labels=labels, values=values, 
               textinfo='label+percent',
               insidetextorientation='radial')
fig
'pie' objects don't have these attributes: 'insidetextorientation'
Valid attributes include:
'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'meta', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'labels', 'label0', 'dlabel', 'values', 'marker', 'text', 'hovertext', 'scalegroup', 'textinfo', 'hoverinfo', 'hovertemplate', 'textposition', 'textfont', 'insidetextfont', 'outsidetextfont', 'title', 'domain', 'hole', 'sort', 'direction', 'rotation', 'pull', '_deprecated', 'idssrc', 'customdatasrc', 'metasrc', 'labelssrc', 'valuessrc', 'textsrc', 'hovertextsrc', 'hoverinfosrc', 'hovertemplatesrc', 'textpositionsrc', 'pullsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'
'pie' objects don't have these attributes: 'insidetextorientation'
Valid attributes include:
'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'meta', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'labels', 'label0', 'dlabel', 'values', 'marker', 'text', 'hovertext', 'scalegroup', 'textinfo', 'hoverinfo', 'hovertemplate', 'textposition', 'textfont', 'insidetextfont', 'outsidetextfont', 'title', 'domain', 'hole', 'sort', 'direction', 'rotation', 'pull', '_deprecated', 'idssrc', 'customdatasrc', 'metasrc', 'labelssrc', 'valuessrc', 'textsrc', 'hovertextsrc', 'hoverinfosrc', 'hovertemplatesrc', 'textpositionsrc', 'pullsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

labels = c('2020 HL deaths', '2020 Other cancer deaths')
values = c(970, 485000)
fig <- plot_ly(type='pie', labels=labels, values=values, 
               textinfo='label+percent',
               insidetextorientation='radial')
fig
'pie' objects don't have these attributes: 'insidetextorientation'
Valid attributes include:
'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'meta', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'labels', 'label0', 'dlabel', 'values', 'marker', 'text', 'hovertext', 'scalegroup', 'textinfo', 'hoverinfo', 'hovertemplate', 'textposition', 'textfont', 'insidetextfont', 'outsidetextfont', 'title', 'domain', 'hole', 'sort', 'direction', 'rotation', 'pull', '_deprecated', 'idssrc', 'customdatasrc', 'metasrc', 'labelssrc', 'valuessrc', 'textsrc', 'hovertextsrc', 'hoverinfosrc', 'hovertemplatesrc', 'textpositionsrc', 'pullsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'
'pie' objects don't have these attributes: 'insidetextorientation'
Valid attributes include:
'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'meta', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'labels', 'label0', 'dlabel', 'values', 'marker', 'text', 'hovertext', 'scalegroup', 'textinfo', 'hoverinfo', 'hovertemplate', 'textposition', 'textfont', 'insidetextfont', 'outsidetextfont', 'title', 'domain', 'hole', 'sort', 'direction', 'rotation', 'pull', '_deprecated', 'idssrc', 'customdatasrc', 'metasrc', 'labelssrc', 'valuessrc', 'textsrc', 'hovertextsrc', 'hoverinfosrc', 'hovertemplatesrc', 'textpositionsrc', 'pullsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

labels = c('Chilhood HL cases aged 20-24', 'Childhood HL cases per year')
values = c(40, 100000)
fig <- plot_ly(type='pie', labels=labels, values=values, 
               textinfo='label+percent',
               insidetextorientation='radial')
fig
'pie' objects don't have these attributes: 'insidetextorientation'
Valid attributes include:
'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'meta', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'labels', 'label0', 'dlabel', 'values', 'marker', 'text', 'hovertext', 'scalegroup', 'textinfo', 'hoverinfo', 'hovertemplate', 'textposition', 'textfont', 'insidetextfont', 'outsidetextfont', 'title', 'domain', 'hole', 'sort', 'direction', 'rotation', 'pull', '_deprecated', 'idssrc', 'customdatasrc', 'metasrc', 'labelssrc', 'valuessrc', 'textsrc', 'hovertextsrc', 'hoverinfosrc', 'hovertemplatesrc', 'textpositionsrc', 'pullsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'
'pie' objects don't have these attributes: 'insidetextorientation'
Valid attributes include:
'type', 'visible', 'showlegend', 'legendgroup', 'opacity', 'name', 'uid', 'ids', 'customdata', 'meta', 'hoverlabel', 'stream', 'transforms', 'uirevision', 'labels', 'label0', 'dlabel', 'values', 'marker', 'text', 'hovertext', 'scalegroup', 'textinfo', 'hoverinfo', 'hovertemplate', 'textposition', 'textfont', 'insidetextfont', 'outsidetextfont', 'title', 'domain', 'hole', 'sort', 'direction', 'rotation', 'pull', '_deprecated', 'idssrc', 'customdatasrc', 'metasrc', 'labelssrc', 'valuessrc', 'textsrc', 'hovertextsrc', 'hoverinfosrc', 'hovertemplatesrc', 'textpositionsrc', 'pullsrc', 'key', 'set', 'frame', 'transforms', '_isNestedKey', '_isSimpleKey', '_isGraticule', '_bbox'

Competitive Analysis

Current competitors

Radiation alone used to be the standard for all early stages but now it holds true for only early stage NLPHL (Hodgkin Lymphoma). There are two types of radiation commonly used: ISRT (involved site radiation therapy) and INRT (involved-node radiation therapy) where only the lymph nodes and surrounding area where the cancer began are treated. For early stage cHL patients, chemotherapy combinations are now standard and ABVD (Adriamycin (doxorubicin), bleomycin, vinblastine, dacarbazine) followed by radiation is the gold standard (Hodgkin Lymphoma). Early stage unfavorable patients are treated with 4-6 cycles of ABVD or dose escalated BEACOPP (bleomycin, etoposide, Adriamycin [doxorubicin], cyclophosphamide, Oncovin [Vincristine], Procarbazine, Prednisone) followed by radiation therapy (Hodgkin Lymphoma). Advanced cHL stage is rarely treated RT and instead is treated with ABVD, A+AVD (Adcetris[brentuximab vedotin], doxorubicin, vinblastine, and dacarbazine), or dose escalated BEACOPP (Hodgkin Lymphoma). Advanced NLPHL patients are treated with ABVD, CHOP, CVD, or Rituxan. Patients that have relapsed can be treated with more chemotherapies such as ICE (ifosfamide, carboplatin, etoposide), BICE (bortezomib,ifosfamide, carboplatin, and etoposide), ESHAP (etoposide, solu-Medrol-Methylprednisone, high-dose Ara-C-cytarabine, platinol[cisplatin]), or GND(gemcitabine [Gemzar], Navelbine [vinorelbine], Doxil[liposomal doxorubicin]). They can also be treated with immunotherapies such as Adcetris, Opdivo, or Keytruda (or if the patient is NLPHL, Rituxan). Lastly, relapsed patients can also receive stem cell transplants (Hodgkin Lymphoma). Children and young adults are treated with either ABVD, AV-PC (Adriamycin [doxorubicin], vincristine [Oncovin], prednisone,cyclophosphamide), ABVE (Adriamycin [doxorubicin]), bleomycin, vincristine [Oncovin], and etoposide), ABVE-PC (Adriamycin [doxorubicin], bleomycin, vincristine [Oncovin], etoposide, prednisone, cyclophosphamide), BEACOPP, OEPA/COPDac (Oncovin [vincristine], etoposide, prednisone, Adriamycin [doxorubicin], cyclophosphamide, Oncovin [vincristine], prednisone, dacarbazine), OEPA/COPP (Oncovin [vincristine], etoposide, prednisone, Adriamycin [doxorubicin], cyclophosphamide, Oncovin [vincristine], prednisone, procarbazine), monoclonal antibodies, surgery, radiation, and high dose chemotherapy with stem cell transplant (Hodgkin Lymphoma).

Current Competitor Strenghts

Prior to 3D-based planning, IFRT (involved field RT), extended-field radiation (EFRT), mantle field RT, inverterd-Y field RT and total nodal irradition (TNI) were used to treat to HL (source: upttodate.com). These RT targeted lymph node regions affected by disease but resulted in greater exposure to organs at risk (OARs) and late toxicity effects therefore they are no longer used (source: NCCN and uptodate.com). With the advancement of RT techniques and help of CT scans, radiation used is now specific to lymph node regions where disease began and can be combined with chemotherapy to achieve higher cure rates, lower toxicity, and less probability of developing secondary cancers in early stage patients (Canellos, and NG). The NLPHL population is different from the cHL population in that the majority are early stage favorable but patients who are “bulky” or have spleenic involvement are at a higher risk of developing large cell lymphoma (source: NCCN). Retrospective studies have shown early stage favorable NLPH have a 5 year-relapse-free survival of 95% when treated with radiation alone and don’t develop secondary tumors year later (source: NCCN). Advanced stage NLPH has a worse prognosis but even then, european studies have shown that treating with ABVD or similar regimens results in about a 90% 8 year disease-specific survival in stage 3 and about 40% in stage 4 (source: NCCN).

Over 90% of early stage cHL favorabale patients can be cured with 2 courses of ABVD (Adriamycin (doxorubicin), bleomycin, vinblastine, dacarbazine) followed by reduced dose of radiation (Hodgkin Lymphoma). Also, compared to other adult chemotherapy combinations available, ABVD has the least amount of risk of developing leukemia or infertility so it remains the gold standard for early stage cHL favorable patients (Hodgkin Lymphoma).

BICE (bortezomib, ifosfamide, carboplatin, and etoposide) was a phase II trial completed by MD Anderson on May 2nd, 2018 and it compared treatments with BICE vs standard ICE in refractory and relapsed cHL patients. In June 2012 MD Anderson in collaboration with Millennium Pharmaceuticals completed phase 1 of Velcade (trade name for Bortezomib) + ICE for relapsed cHL patients. Bortezomib is a proteosome inhibitor so the idea was that it would synergize with chemotherapy to stop the production of cancer cells. The results of the phase II trial showed that patients treated with BICE had greater overall and complete response than those treated with ICE. However, patients treated with ICE had greater partial response and more stable disease.

Rituximab is a monoclonal antibody that targets CD20 of immune B cells. Rituximab does have a biosimilar called Truxima sold by Teva. Advanced stage or relapsed NLPHL is treated with Rituximab because these cells express CD20. This is a shift from indiscriminantly killing cells with chemotherapy cocktails and radiation towards targeting only cancer cells more specifically.

Nivolumab is the generic name for Bristol Myers Squibb’s Opdivo and it is an immunotherapy that was approved on May 17, 2016 as treatment for cHL patients that have either relapsed or progressed after receiving stem cell transplant and Adcetris. Nivolumab binds to the PD-1 receptor thereby blocking PD-1 and PD-L1 from binding. This is significant because HRS cells express PD-L1 so if they are not able to bind to the PD-1 receptors they can no longer evade/escape immunosurveillence.

A+AVD is Seattle Genetic’s Adcetris(brentuximab vedotin) in combination with doxorubicin, vinblastine, and dacarbazine. It was approved on November 16, 2018 for previously untreated adults with advanced stage cHL and is the only first-line regimen that has been approved in over 40 years for advanced cHL (“FDA Approves Brentuximab Vedotin For Previously Untreated Salcl And CD”). Adcetris is a targeted anti-CD30 antibody–drug conjugate that takes advantage of the fact that HRS cells typically express CD30 in HL cases (Abramson et al.). Treating with A+AVD avoids bleomycin thereby eliminates the risks associated with bleomycin of developing lung problems and the risks associated with radiation (Abramson et al.).

Current Competitor Weaknesses

Radiation, like chemotherapy, reduces the blood cell counts jeopardizing the immune system and making patients more susceptible to infections such as Herpes (Hodgkin Lymphoma). Also, depending on what body parts are radiated, patients can experience side effects such as fatigue, dry mouth, hair loss, lump in the throat, and changes in taste. When radiation alone is used as a first-line treatment, the chances of getting secondary cancers (most commonly breast and lung cancer) are higher. Additionally, radiation mixed with bleomycyin can damage the lungs (Hodgkin Lymphoma). When considering treatment options, physicians have to outweigh the risks of secondary cancers and infections with the benefits of higher cure rates. For example, if a woman is under 30 years old, has familial history of breast cancer and the radiation would require treatment of breast tissue, doing chemotherapy combinations alone would be a viable option. Similarly, if a patient has an extensive history of smoking or cannot quit smoking, radiation with chemotherapies containing alkylating agents should not be given because the risk of secondary lung cancer is 25 to 40 times greater (Hodgkin Lymphoma).

ABVD has a greater than 90% risk of emesis (vommiting) (Canellos, and NG). Doxorubicin is the generic name for Pfizer’s Adriamycin. Doxorubicin is a cytotoxic chemotherapy, anthracycline antibiotic drug that is given via an IV injection and is vesicant, meaning it causes severe tissue damage if it escapes the vein (Cancer). One of the problems with Doxorubicin is that is lowers the white and red blood counts so patients are susceptible to infections, anemia and/or bleeding. Although treating patients with chemotherapy reduces blood cell count, early stage patients have a high cure rate so patients are not discontinued from their treatments, rather they are supplemented with blood and platelet transfusions. Granulocyte-colony stimulating factor (G-CSF) can be given to patients to increase white blood cell counts and prevent infections, but G-CSF has a negative interaction with Bleomycin so it can’t be given to patients receiving ABVD and dose escalated BEACOPP. Bleomycin is the generic name for Bristol-Myers’ Blenoxane. Bleomycin is also a chemotherapy and is given via either IV or intrapleurally (Cancer). Bleomycin causes hair loss and skin reactions in about 30% of patients and lung problems in 10-29% of patients (Cancer). TEVA sells a generic bleomycin. Vinblastine is the generic name for Alkaban-AQ and Velban and it is also a vesicant that can affect nerve tissue (Hodgkin Lymphoma and Cancer). Dacarbazine is the generic name for DTIC-Dome and it is an irritant chemotherapy drug. Greater than 30% of patient taking Dacarbazine experience low blood counts, burning sensation, elevated liver enzymes, and nausea/vommiting (Cancer).

BEACOPP has Bleomycin and Adriamycin like ABVD, but it also adds Etoposide, Cyclophosphamide, Vincristine, Procarbazine, and Prednisone. Etoposide is the generic name for Toposar, VePesid, and Etopophos and is a topoisomerase II inhibitor available in tablet form. This inhibitor has an increased delayed risk of developing leukemia (Cancer). Cyclophosphamide is the generic name for Cytoxan or Neosar and is an alkylating agent that also is available in tablet form. However, this agent has an increased risk of developing leukemia or lung cancer if combined with RT (Cancer and Hodgkin Lymphoma). Vincristine is the generic name for Oncovin or Vincasar Pfs and is a vesicant that can result in hair loss, low blood cell counts, and peripheral neuropathy (Cancer). Teva offers a generic called Vincasar PFS. Procarbazine is a generic name for Matulane and is another alkylating agent that is taken in capusule form. Like cyclophosphamide, procarbazine carries a risk of developing secondary cancers. Prednisone is a glucocorticosteroid generic name for Deltasone, Liquid Pred, Meticorten, or Orasone. Teva also offers a generic Prednisone. Potential side effects include increased blood sugar levels, cataracts, and bone thinning (Cancer). Due to the increased risks of developing secondary cancers, BEACOPP is not preferred over ABVD. However, BEACOPP does have options to take some of the chemotherapies orally which may make it preferable to certain patient populations.

ICE is second line chemotherapy treatment for HL, meaning it can be used for patients who have not responded to current treatment (refractive) or have gotten HL again (relapsed). Ifosfamide is a generic name for Iflex and is an alkylating agent that carries a risk of developing leukemia, affecting fertility, and having central neurotoxicity (Cancer). Carboplatin is generic name for Paraplatin and is also a alkylating agent that can cause neuropathy, neurotoxicity, cardiovascular events, and nephrotoxicity (Cancer). Teva has generics for all 3 drugs.

The BICE results of the phase II trial showed that patients treated with BICE had greater decrease in neutrophils, platelet counts, and experienced more neuropathy than those treated with ICE.

Adcetris is a new class of treatment and although it is more targeted, it still has higher toxicity effects than AVD alone so is not appropriate to use in early stage favorable patients (Abramson et al.). When compared to pateints treated with ABVD, A+AVD patients had higher peripheral neuropathy and neutropenic fevers (Abramson et al.). Also, immunotherapies (Adcetris, Opdivo, Rituximab, etc.) have the risk of creating uncontrollably hightened immune responses leading to cytokine storms.

Stem cell transplants are very high risk especially when combined with high dose chemotherapy or radiation and patients are prone to infections and liver damage.

Ongoing Research

Overall HL is a very curable disease, especially in early stages. The future of treatments must then be directed to increasing the cure rates in the other subpopulations such as advanced disease, unfavorable disease, refractory or relapse disease. With so many tools (chemotherapies, radiation, immunotherapies, transplants) the most successful drugs will be those that more specifically discriminate against the cancer cells and have the least cytoxic effects on neighboring organs/tissues and further decrease the rate of developing a secondary cancer or relapsing. According to clinical trials.gov, there are currently 125 active but not recruiting clinical trials and 131 recruiting or enrolling trials. Many of them are testing which therapeutic combinations work best. There seems to be a large focus on Nivolumab, Brentuximab, and relapse. City of Hope has a phase 2 new drug for relapsed cHL patients that is an antibody drug conjugate directed against CD25.Although not many RS cells express CD25, it can be found on the T cells surrounding HRS cells. NICE (Nivolumab, ifosfamide, carboplatin, etoposide) is currently a phase 2 clinical trial sponsored by City of Hope in collaboration with the National Cancer Institute and it is currently recruiting patients. It is expected to enroll 61 patients and wants to test therapuetic as second-line treatment by adding anti PD-1 antibody to ICE chemotherapy prior to autologous hemapoetic stem cell transplant. Personally, I see why this therapuetic would be used as second-line treatment becuase it would involve too much cytotoxicity and risk for a first line treatment. Immunotherapies carry the risk of generating a cytokine storm, chemotherapies lower or weaken the immune system and stem cell transplants carry risk of infection and not getting completely rid of cancer stem cells.

References

Abramson, Jeremy S. et al. “Brentuximab Vedotin, Doxorubicin, Vinblastine, And Dacarbazine For Nonbulky Limited-Stage Classical Hodgkin Lymphoma”. Blood, vol 134, no. 7, 2019, pp. 606-613. American Society Of Hematology, doi:10.1182/blood.2019001272. Accessed 30 Apr 2020.

“Adult Hodgkin Lymphoma Treatment (PDQ®)–Patient Version”. National Cancer Institute, 2020, https://www.cancer.gov/types/lymphoma/patient/adult-hodgkin-treatment-pdq. Accessed 30 Apr 2020.

Cancer, Cleveland. “Bleomycin - Drug Information - Chemocare”. Chemocare.Com, 2020, http://chemocare.com/chemotherapy/drug-info/bortezomib.aspx. Accessed 30 Apr 2020.

Cancer, Cleveland. “Bortezomib - Drug Information - Chemocare”. Chemocare.Com, 2020, http://chemocare.com/chemotherapy/drug-info/bleomycin.aspx. Accessed 30 Apr 2020.

Cancer, Cleveland. “Carboplatin - Chemotherapy Drugs - Chemocare”. Chemocare.Com, 2020, http://chemocare.com/chemotherapy/drug-info/carboplatin.aspx. Accessed 30 Apr 2020.

Cancer, Cleveland. “Cyclophosphamide - Drug Information - Chemocare”. Chemocare.Com, 2020, http://chemocare.com/chemotherapy/drug-info/cyclophosphamide.aspx. Accessed 30 Apr 2020.

Cancer, Cleveland. “Dacarbazine - Drug Information - Chemocare”. Chemocare.Com, 2020, http://chemocare.com/chemotherapy/drug-info/dacarbazine.aspx. Accessed 30 Apr 2020.

Cancer, Cleveland. “Doxorubicin (Adriamycin, Rubex) Chemotherapy Drug Information”. Chemocare.Com, 2020, http://chemocare.com/chemotherapy/drug-info/doxorubicin.aspx. Accessed 30 Apr 2020.

Cancer, Cleveland. “Etoposide - Chemotherapy Drugs - Chemocare”. Chemocare.Com, 2020, http://chemocare.com/chemotherapy/drug-info/etoposide.aspx. Accessed 30 Apr 2020.

Cancer, Cleveland. “Ifosfamide - Chemotherapy Drugs - Chemocare”. Chemocare.Com, 2020, http://chemocare.com/chemotherapy/drug-info/ifosfamide.aspx. Accessed 30 Apr 2020.

Cancer, Cleveland. “Procarbazine - Chemotherapy Drugs - Chemocare”. Chemocare.Com, 2020, http://chemocare.com/chemotherapy/drug-info/procarbazine.aspx. Accessed 30 Apr 2020.

Cancer, Cleveland. “Prednisone - Chemotherapy Drugs - Chemocare”. Chemocare.Com, 2020, http://chemocare.com/chemotherapy/drug-info/prednisone.aspx. Accessed 30 Apr 2020.

Cancer, Cleveland. “Vinblastine - Chemotherapy Drugs - Chemocare”. Chemocare.Com, 2020, http://chemocare.com/chemotherapy/drug-info/Vinblastine.aspx. Accessed 30 Apr 2020.

Cancer, Cleveland. “Vincristine - Chemotherapy Drugs - Chemocare”. Chemocare.Com, 2020, http://chemocare.com/chemotherapy/drug-info/vincristine.aspx. Accessed 30 Apr 2020.

Canellos, George, and Andrea NG. “Overview Of The Treatment Of Classic Hodgkin Lymphoma In Adults”. Wolters Kluwer, 2020, pp. 1-24. Uptodate, http://www.uptodate.com/contents/overview-of-the-treatment-of-classic-hodgkin-lymphoma. Accessed 30 Apr 2020.

“Facts And Statistics | Leukemia And Lymphoma Society”. Lls.Org, 2020, https://www.lls.org/facts-and-statistics/facts-and-statistics-overview/facts-and-statistics. Accessed 30 Apr 2020.

“FDA Approves Brentuximab Vedotin For Previously Untreated Salcl And CD”. U.S. Food And Drug Administration, 2020, https://www.fda.gov/drugs/fda-approves-brentuximab-vedotin-previously-untreated-salcl-and-cd30-expressing-ptcl. Accessed 30 Apr 2020.

Hodgkin Lymphoma. The Leukemia & Lymphoma Society, 2018, pp. 4-51, https://www.lls.org/sites/default/files/file_assets/PS57_Hodgkin_Lymphoma2018.pdf. Accessed 30 Apr 2020.

“Hodgkin Lymphoma - Cancer Stat Facts”. SEER, 2020, https://seer.cancer.gov/statfacts/html/hodg.html. Accessed 30 Apr 2020.

“NCCN Guidelines Version 2.2020 Hodgkin Lymphoma”. 2.2020, 2020, pp. MS-2 -MS-25., Accessed 30 Apr 2020.

“What Is Hodgkin Lymphoma?”. Cancer.Org, 2020, https://www.cancer.org/cancer/hodgkin-lymphoma/about/what-is-hodgkin-disease.html. Accessed 30 Apr 2020.

LS0tCnRpdGxlOiAiSG9kZ2tpbiBMeW1waG9tYSBNYXJrZXQgQW5hbHlzaXMgR3JhcGhzIgpvdXRwdXQ6IGh0bWxfbm90ZWJvb2sKLS0tCkFzaGxleSBOb3JpZWdhClRSR04gNTQ1IEV4cGxvcmluZyBDaGVtaWNhbCBhbmQgQmlvbG9naWNhbCBUaGVyYXBldXRpYyBNb2RhbGl0aWVzCkZpbmFsIE1hcmtldCBBbmFseXNpcyBQcm9qZWN0CkFwcmlsIDMwLCAyMDIwCgojIEZpbmFsIFByb2plY3QKCiMjIE92ZXJ2aWV3IG9mIEhvZGdraW4gTHltcGhvbWEKCiMjIyBEZWZpbmluZyB0aGUgTHltcGggU3lzdGVtClRoZSBseW1waGF0aWMgc3lzdGVtIGlzIGNvbXBsZXggYW5kIGNvbnNpc3RzIG9mIGludGVyYWN0aW9ucyB3aXRoIHZhcmlvdXMgdGlzc3VlcyBhbmQgb3JnYW5zLiBUaGVyZSBhcmUgYXBwcm94aW1hdGVseSA2MDAgbHltcGggbm9kZXMgc3ByZWFkIHRocm91Z2hvdXQgdGhlIGJvZHkgKCJBZHVsdCBIb2Rna2luIEx5bXBob21hIFRyZWF0bWVudCAoUERRwq4p4oCTUGF0aWVudCBWZXJzaW9uIiBhbmQgIldoYXQgSXMgSG9kZ2tpbiBMeW1waG9tYT8iKS4KYGBge3J9CmxpYnJhcnkoRGlhZ3JhbW1lUikKZ3JWaXooIgogICAgICAKZGlncmFwaCBib3hlc19hbmRfY2lyY2xlcyB7CgojIGFkZCBub2RlIHN0YXRlbWVudHMKbm9kZSBbc2hhcGUgPSBjaXJjbGUKICAgICAgZm9udG5hbWUgPSBGdXR1cmEKICAgICAgcGVud2lkdGggPSAyLjBdCkEgW2xhYmVsID0gJyBMWU1QSCBTWVNURU0nLCAKICAgZm9udG5hbWUgPSBGdXR1cmEKICAgZmlsbGNvbG9yID0gcmVkXTsgCkIgW2xhYmVsID0gJyBMeW1waCBmbHVpZCcsIAogICBmb250bmFtZSA9IEZ1dHVyYV07IApDIFtsYWJlbCA9ICcgTHltcGggdmVzc2VscycsIAogICBmb250bmFtZSA9IEZ1dHVyYV07IApEIFtsYWJlbCA9ICcgTHltcGggbm9kZXMnLCAKICAgZm9udG5hbWUgPSBGdXR1cmFdOyAKRSBbbGFiZWwgPSAnIFNwbGVlbicsIAogICBmb250bmFtZSA9IEZ1dHVyYV07CkYgW2xhYmVsID0gJyBUaHltdXMnLCAKICAgZm9udG5hbWUgPSBGdXR1cmFdOwpHIFtsYWJlbCA9ICcgQm9uZSBNYXJyb3cnLCAKICAgZm9udG5hbWUgPSBGdXR1cmFdOwpIIFtsYWJlbCA9ICcgVG9uc2lscycsIAogICBmb250bmFtZSA9IEZ1dHVyYV07Cgpub2RlIFtzaGFwZSA9IGJveAogICAgICBmb250bmFtZSA9IEhlbHZldGljYQogICAgICBwZW53aWR0aCA9IDIuMF0KMSBbbGFiZWwgPSAnIFQgbHltcGhvY3l0ZScsCiAgIGZvbnRuYW1lID0gQmFza2VydmlsbGVdOyAKMiBbbGFiZWwgPSAnIEIgbHltcGhvY3l0ZScsCiAgIGZvbnRuYW1lID0gQmFza2VydmlsbGVdOyAKMyBbbGFiZWwgPSAnIFJlZCBCbG9vZCBDZWxscycsCiAgIGZvbnRuYW1lID0gQmFza2VydmlsbGVdOwo0IFtsYWJlbCA9ICcgUGxhdGVsZXRzJywKICAgZm9udG5hbWUgPSBCYXNrZXJ2aWxsZV07CjUgW2xhYmVsID0gJyBXaGl0ZSBCbG9vZCBDZWxscycsCiAgIGZvbnRuYW1lID0gQmFza2VydmlsbGVdOwo2IFtsYWJlbCA9ICcgTWVkaWFzdGludW0nLCAjYXJlYSBpbiBiZXR3ZWVuIHRoZSBsdW5ncwogICBmb250bmFtZSA9IEJhc2tlcnZpbGxlXTsKNyBbbGFiZWwgPSAnIFVuZGVyYXJtcycsCiAgIGZvbnRuYW1lID0gQmFza2VydmlsbGVdOwo4IFtsYWJlbCA9ICcgTmVjaycsCiAgIGZvbnRuYW1lID0gQmFza2VydmlsbGVdOwo5IFtsYWJlbCA9ICcgQWJkb21lbicsCiAgIGZvbnRuYW1lID0gQmFza2VydmlsbGVdOwoxMCBbbGFiZWwgPSAnIFBlbHZpcycsCiAgIGZvbnRuYW1lID0gQmFza2VydmlsbGVdOwoxMSBbbGFiZWwgPSAnIEdyb2luJywKICAgIGZvbnRuYW1lID0gQmFza2VydmlsbGVdCgojIGFkZCBlZGdlIHN0YXRlbWVudHMKZWRnZSBbYXJyb3doZWFkID0gdmVlXQpBIC0+IHtCIEMgRCBFIEYgRyBIfTsKMSAtPiA1IFtsYWJlbCA9ICcgdHlwZSBvZicsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOyAKMiAtPiA1IFtsYWJlbCA9ICcgdHlwZSBvZicsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOwpCIC0+IDEgW2xhYmVsID0gJyBjYXJyaWVzJywKICAgICAgICBmb250bmFtZSA9IEhlbHZldGljYV07CkIgLT4gMiBbbGFiZWwgPSAnIGNhcnJpZXMnLAogICAgICAgIGZvbnRuYW1lID0gSGVsdmV0aWNhXTsKQiAtPiBDIFtsYWJlbCA9ICcgdHJhdmVscyB0aHJvdWdoJywKICAgICAgICBmb250bmFtZSA9IEhlbHZldGljYV07CkMgLT4gQiBbbGFiZWwgPSAnIHJldHVybiB0byBibG9vZHN0cmVhbScsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOwpEIC0+IEMgW2xhYmVsID0gJyBmb3VuZCBhbG9uZycsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOwpEIC0+IEIgW2xhYmVsID0gJyBmaWx0ZXJzJywKICAgICAgICBmb250bmFtZSA9IEhlbHZldGljYV07CkQgLT4gNSBbbGFiZWwgPSAnIHN0b3JlcycsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOwpEIC0+IDYgW2xhYmVsID0gJyBncm91cHMgZm9ybSBpbicsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOwpEIC0+IDcgW2xhYmVsID0gJyBncm91cHMgZm9ybSBpbicsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOwpEIC0+IDggW2xhYmVsID0gJyBncm91cHMgZm9ybSBpbicsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOwpEIC0+IDkgW2xhYmVsID0gJyBncm91cHMgZm9ybSBpbicsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOwpEIC0+IDEwIFtsYWJlbCA9ICcgZ3JvdXBzIGZvcm0gaW4nLAogICAgICAgIGZvbnRuYW1lID0gSGVsdmV0aWNhXTsKRCAtPiAxMSBbbGFiZWwgPSAnIGdyb3VwcyBmb3JtIGluJywKICAgICAgICBmb250bmFtZSA9IEhlbHZldGljYV07CkUgLT4gMSBbbGFiZWwgPSAnIG1ha2VzL3N0b3JlcycsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOwpFIC0+IDIgW2xhYmVsID0gJyBtYWtlcy9zdG9yZXMnLAogICAgICAgIGZvbnRuYW1lID0gSGVsdmV0aWNhXTsKRSAtPiAzIFtsYWJlbCA9ICcgc3RvcmVzJywKICAgICAgICBmb250bmFtZSA9IEhlbHZldGljYV07CjIgLT4gRiBbbGFiZWwgPSAnIG1hdHVyZS9tdWx0aXBseSBpbicsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOwpHIC0+IDMgW2xhYmVsID0gJyBtYWtlcycsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOwpHIC0+IDQgW2xhYmVsID0gJyBtYWtlcycsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdOwpHIC0+IDUgW2xhYmVsID0gJyBtYWtlcycsCiAgICAgICAgZm9udG5hbWUgPSBIZWx2ZXRpY2FdCiAgICAgICAgCiMgYWRkIGEgZ3JhcGggc3RhdGVtZW50CmdyYXBoIFtub2Rlc2VwID0gMS4wXQp9CiIpCgpgYGAKCiMjIyBIaXN0b3J5IG9mIEhvZGdraW4gTHltcGhvbWEKSG9kZ2tpbiBMeW1waG9tYSAoSEwpIHdhcyBmb3JtZXJseSBrbm93biBhcyDigJxIb2Rna2lu4oCZcyBkaXNlYXNl4oCdLiBJdCB3YXMgZGlzY292ZXJlZCBpbiAxODMyIGJ5IGEgQnJpdGlzaCBwYXRob2xvZ2lzdCBuYW1lZCBEci4gVGhvbWFzIEhvZGdraW4uIEhMIGlzIGEgY2FuY2VyIG9mIHRoZSBseW1waGF0aWMgc3lzdGVtIHRoYXQgY2FuIGJlIGNhdXNlZCBieSBhIGNoYW5nZSBpbiB0aGUgRE5BIG9mIGx5bXBob2N5dGVzIHdoaWNoIGFyZSBhIHR5cGUgb2Ygd2hpdGUgYmxvb2QgY2VsbHMgKEhvZGdraW4gTHltcGhvbWEpLiBUaGlzIGNoYW5nZSBpbiBETkEgY2F1c2VzIHRoZSB1bmNvbnRyb2xsZWQgZ3Jvd3RoIG9mIGFibm9ybWFsIGx5bXBob2N5dGVzIHdoaWNoIGV2ZW50dWFsbHkgY3JlYXRlIHR1bW9yIG1hc3NlcyBpbiBhbmQgYXJvdW5kIHN1cnJvdW5kaW5nIGx5bXBoIG5vZGUgYXJlYXMtIHNvbWV0aW1lcyBtZXRhc3Rhc2l6aW5nIHRvIHRpc3N1ZSBmYXIgZnJvbSB0aGUgbHltcGggbm9kZXMuIFRoZSB0eXBlcyBvZiBhYm5vcm1hbCBCIGx5bXBob2N5dGVzIGluIEhMIGFyZSBIb2Rna2luLyBSZWVkLVN0ZXJuYmVyZyBDZWxscyAoSFJTKSB3aGljaCBjYW4gYmUgZGVzY3JpYmVkIGFzICJvd2wtZXllcyIgYW5kIGx5bXBob2N5dGUtcHJlZG9taW5hbnQgY2VsbHMgd2hpY2ggYXJlICJwb3Bjb3JuLWxpa2UiLiBBY2NvcmRpbmcgdG8gdGhlIFdvcmxkIEhlYWx0aCBPcmdhbml6YXRpb24sIHRoZXJlIGFyZSAyIHR5cGVzIG9mIEhMOiA5NSUgYXJlIENsYXNzaWNhbCBhbmQgNSUgTm9kdWxhciBMeW1waG9jeXRlLXByZWRvbWluYW50IChzb3VyY2U6IE5DQ04pLiA3JSBvZiBOb2R1bGFyIEx5bXBob2N5dGUtUHJlZG9taW5hbnQgKE5MUEhMKSBjYXNlcyB0cmFuc2Zvcm0gaW50byBhZ2dyZXNzaXZlIE5vbi1Ib2Rna2luIEx5bXBob21hIChIb2Rna2luIEx5bXBob21hKS4gQ2xhc3NpY2FsIEhvZGdraW4gTHltcGhvbWEgKGNITCkgaGFzIDQgc3VidHlwZXMuIDcwJSBvZiB0aGUgY0hMIGNhc2VzIGFyZSBOb2R1bGFyIFNjbGVyb3NpcywgbWVhbmluZyB0aGUgbHltcGggbm9kZXMgaGF2ZSBmaWJyb3VzIHRpc3N1ZSBlbGVtZW50cy4gTm9kdWxhciBTY2xlcm9zaXMgSG9kZ2tpbiBMeW1waG9tYSBpcyBtb3N0IGNvbW1vbiBpbiB5b3VuZyBhZHVsdHMgYW5kIGRvZXMgbm90IGRpc2NyaW1pbmF0ZSBhZ2FpbnN0IGdlbmRlci4gVGhpcyB0eXBlIG9mIG9mIGNITCBpcyBoaWdobHkgY3VyYWJsZSBhbmQgNDAlIG9mIHRoZXNlIGNhc2VzIGhhdmUgQiBzeW1wdG9tcy4gTWl4ZWQgQ2VsbHVsYXJpdHkgYWNjb3VudHMgZm9yIDIwLTI1JSBvZiB0aGUgY0hMIHN1YnR5cGVzIGFuZCBpcyBjb21tb24gaW4gb2xkZXIgbWFsZSBhZHVsdHMsIEhJViBwb3NpdGl2ZSBwYXRpZW50cywgYW5kIHBhdGllbnRzIGRpc3BsYXlpbmcgQiBzeW1wdG9tcyAoSG9kZ2tpbiBMeW1waG9tYSkuIEx5bXBob2N5dGUtcmljaCBtYWtlIHVwIDUlIG9mIHRoZSBjSEwgcG9wdWxhdGlvbiBhbmQgaXMgdXN1YWxseSBkaWFnbm9zZWQgYXQgZWFybHkgc3RhZ2UsIGlzIG1vcmUgY29tbW9uIGluIG1hbGVzLCBhbmQgcGF0aWVudHMgcmFyZWx5IGhhdmUgQiBzeW1wdG9tcyAoSG9kZ2tpbiBMeW1waG9tYSkuIEx5bXBob2N5dGUtZGVwbGV0ZWQgaXMgdGhlIHJhcmVzdCBvZiB0aGUgNCBzdWJ0eXBlcyBhbmQgaXMgdXN1YWxseSBkaWFnbm9zZWQgYXQgYWR2YW5jZWQgc3RhZ2VzLiBMeW1waG9jeXRlLWRlcGxldGVkIGlzIGFsc28gY29tbW9uIGluIG1hbGVzIHdpdGggQiBzeW1wdG9tcywgdGhlIG1lZGlhbiBwYXRpZW50IGFnZSBiZWluZyAzMCAtMzcgeWVhcnMsIGFuZCBtYW55IHBhdGllbnRzIGFyZSBhbHNvIEhJViBwb3NpdGl2ZSAoSG9kZ2tpbiBMeW1waG9tYSkuCgojIyMgRmxvd2NoYXJ0IHNob3dpbmcgdHlwZXMgb2YgSEwKYGBge3J9CmxpYnJhcnkoRGlhZ3JhbW1lUikKZ3JWaXooImRpZ3JhcGggewogICAgICAjIG5vZGUgZGVmaW5pdGlvbnMgd2l0aCBzdWJzdGl0dXRlZCBsYWJlbCB0ZXh0CiAgICAgIG5vZGUgW2ZvbnRuYW1lID0gSGVsdmV0aWNhLCBzaGFwZSA9IGRpYW1vbmRdICAgICAgICAKICAgICAgdGFiMSBbbGFiZWwgPSAnQEAxJ10KICAgICAgbm9kZSBbZm9udG5hbWUgPSBIZWx2ZXRpY2EsIHNoYXBlID0gcmhvbWJ1c10KICAgICAgdGFiMiBbbGFiZWwgPSAnQEAyJ10KICAgICAgbm9kZSBbZm9udG5hbWUgPSBIZWx2ZXRpY2EsIHNoYXBlID0gb3ZhbF0KICAgICAgdGFiMyBbbGFiZWwgPSAnQEAzJ10KICAgICAgbm9kZSBbZm9udG5hbWUgPSBIZWx2ZXRpY2EsIHNoYXBlID0gcmVjdGFuZ2xlXQogICAgICB0YWI0IFtsYWJlbCA9ICdAQDQnXQogICAgICB0YWI1IFtsYWJlbCA9ICdAQDUnXQogICAgICB0YWI2IFtsYWJlbCA9ICdAQDYnXQogICAgICB0YWI3IFtsYWJlbCA9ICdAQDcnXQogICAgICB0YWI4IFtsYWJlbCA9ICdAQDgnXQogICAgICB0YWI5IFtsYWJlbCA9ICdAQDknXQogICAgICB0YWIxMCBbbGFiZWwgPSAnQEAxMCddCiAgICAgIG5vZGUgW2ZvbnRuYW1lID0gSGVsdmV0aWNhLCBzaGFwZSA9IHNxdWFyZV0KICAgICAgdGFiMTEgW2xhYmVsID0gJ0BAMTEnXQogICAgICAKICAgICAgICMgc3ViZ3JvdXAgZm9yIGNITAogICAgICAgc3ViZ3JhcGggY2x1c3Rlcl8wIHsKICAgICAgICBub2RlIFtzdHlsZT1maWxsZWRdOwogICAgICAgICdAQDExJyAtPiAnQEA1JzsKICAgICAgICBsYWJlbCA9ICdDSEwnOwogICAgICAgIGNvbG9yPWJsdWU7CiAgICB9CiAgICAgIHRhYjEyIFtsYWJlbCA9ICdAQDEyJ10KICAgICAgCiAgICAgICMgc3ViZ3JvdXAgZm9yIE5MUEhMCiAgICAgIHN1YmdyYXBoIGNsdXN0ZXJfMSB7CiAgICAgICAgbm9kZSBbc3R5bGU9ZmlsbGVkXTsKICAgICAgICAnQEAxMicgLT4gJ0BANic7CiAgICAgICAgbGFiZWwgPSAnTkxQSEwnOwogICAgICAgIGNvbG9yPXJlZDsKICAgICAgfSAKICAgIAogICAgICBub2RlIFtmb250bmFtZSA9IEhlbHZldGljYSwgc2hhcGUgPSBjaXJjbGVdCiAgICAgIHRhYjEzIFtsYWJlbCA9ICdAQDEzJ10KCiAgICAgICMgZWRnZSBkZWZpbml0aW9ucyB3aXRoIHRoZSBub2RlIElEcwogICAgICBlZGdlIFthcnJvd2hlYWQ9J3ZlZScsIHBlbndpZHRoPTFdCiAgICAgIHRhYjEgLT4gdGFiMjsKICAgICAgdGFiMSAtPiB0YWIzOwogICAgICBlZGdlIFtwZW53aWR0aD0xXQogICAgICB0YWIyIC0+IHRhYjExOwogICAgICB0YWIyIC0+IHRhYjEyOwogICAgICB0YWIxMiAtPiB0YWI0OwogICAgICB0YWIxMSAtPiB0YWI0OyAjY0hMIGlzIG1hZGUgdXAgb2YgSFJTIGNlbGxzIHNvIG1hZGUgbGluZSBlcXVhbGx5IGFzIHRoaWNrIHRvIGRpZmZlcmVudGlhdGUKICAgICAgZWRnZSBbcGVud2lkdGg9MTAsIGxhYmVsID0gJzk1JSddICNjSEwgYWNjb3VudHMgZm9yIGdyZWF0ZXIgdGhhbiA5LzEwIG9mIHRoZSBITCBjYXNlcyBzbyBtYWRlIGFycm93IHRoaWNrZXIKICAgICAgdGFiNCAtPiB0YWI1OwogICAgICBlZGdlIFtwZW53aWR0aD0xLCBsYWJlbCA9ICc1JSddICNOTFBITCBhY2NvdW50cyBmb3IgbGVzcyB0aGFuIDEvMTAgY2FzZXMgc28gbWFkZSBhcnJvdyBsZXNzIHRoaWNrZXIKICAgICAgdGFiNCAtPiB0YWI2OyAKICAgICAgZWRnZSBbcGVud2lkdGg9NywgbGFiZWwgPSAnNzAlJ10gI05TQ0hMIGlzIHRoZSBtb3N0IGNvbW1vbiBjSEwgc28gdGhlIGFycm93IGlzIHRoaWNrZXN0IG9mIHRoZSA0IHN1YnR5cGVzCiAgICAgIHRhYjUgLT4gdGFiNzsKICAgICAgZWRnZSBbcGVud2lkdGg9MywgbGFiZWwgPSAnMjAtMjUlJ10gI01DQ0hMIGlzIHRoZSAybmQgbW9zdCBjb21tb24gY0hMIHNvIHRoZSBhcnJvdyBpcyAybmQgdGhpY2tlc3QgCiAgICAgIHRhYjUgLT4gdGFiODsKICAgICAgZWRnZSBbcGVud2lkdGg9MiwgbGFiZWwgPSAnNSUnXQogICAgICB0YWI1IC0+IHRhYjk7CiAgICAgIGVkZ2UgW3BlbndpZHRoPTEsIGxhYmVsID0gJ3JhcmUnXQogICAgICB0YWI1IC0+IHRhYjEwOwogICAgICBlZGdlIFtwZW53aWR0aD0xLCBsYWJlbCA9ICc3JSddCiAgICAgIHRhYjYgLT4gdGFiMTMKfQogICAgICBbMV06ICdXaGl0ZSBCbG9vZCBDZWxscycKICAgICAgWzJdOiAnQiBseW1waG9jeXRlcycKICAgICAgWzNdOiAnVCBseW1waG9jeXRlcycKICAgICAgWzRdOiAnSG9kZ2tpbiBMeW1waG9tYSAoSEwpJwogICAgICBbNV06ICdDbGFzc2ljIEhvZGdraW4gTHltcGhvbWEgKGNITCknCiAgICAgIFs2XTogJ05vZHVsYXIgbHltcGhvY3l0ZS1wcmVkb21pbmFudCBIb2Rna2luIGx5bXBob21hIChOTFBITCknCiAgICAgIFs3XTogJ05vZHVsYXIgc2NsZXJvc2lzIEhvZGdraW4gbHltcGhvbWEgKE5TQ0hMKScKICAgICAgWzhdOiAnTWl4ZWQgY2VsbHVsYXJpdHkgSG9kZ2tpbiBseW1waG9tYSAoTUNDSEwpJwogICAgICBbOV06ICdMeW1waG9jeXRlLXJpY2ggSG9kZ2tpbiBseW1waG9tYSAoTFJDSEwpJwogICAgICBbMTBdOiAnTHltcGhvY3l0ZS1kZXBsZXRlZCBIb2Rna2luIGx5bXBob21hIChMRENITCknCiAgICAgIFsxMV06ICdIb2Rna2luL1JlZWQtU3Rlcm5iZXJnIGNlbGxzJwogICAgICBbMTJdOiAnTHltcGhvY3l0ZS1wcmVkb21pbmFudCBjZWxscycKICAgICAgWzEzXTogJ05vbi1Ib2Rna2luIEx5bXBob21hJwogICAgICAiKQoKYGBgCgojIyMgRmxvd2NoYXJ0IG9mIEhMIFN0YWdpbmcgdXNpbmcgTHVnYW5vIGNsYXNzaWZpY2F0aW9uClRoZSBzdGFnaW5nIG9mIEhMIGlzIGRlcml2ZWQgZnJvbSB0aGUgQW5uIEFyYm9yIHN0YWdpbmcgc3lzdGVtIHdoaWNoIGRpdmlkZXMgcGF0aWVudHMgaW50byA0IHN0YWdlcyBhbmQgMiBzdWJjYXRlZ29yaWVzOiB0aG9zZSBleHBlcmllbmNpbmcgYW5kIG5vdCBleHBlcmllbmNpbmcgc3ltcHRvbXMuICJBIiBjYXRlcmdvcnkgbWVhbmluaW5nIHBhdGllbnQgaXMgYXN5bXB0b21hdGljIGFuZCAiQiIgY2F0ZWdvcnkgbWVhbmluZyBwYXRpZW50cyBoYXZlIGRyZW5jaGluZyBuaWdodCBzd2VhdHMsIHVuZXhwbGFpbmVkIGZldmVycyBncmVhdGVyIHRoYW4gMTAwLjQgZGVncmVlcyBGYXJhbmhlaXQsIG9yIHdlaWdodCBsb3NzIGdyZWF0ZXIgdGhhbiAxMCUgb2YgdGhlaXIgYm9keSBmYXQgd2l0aGluIDYgbW9udGhzIHByZWNlZWRpbmcgZGlhZ25vc2lzIChzb3VyY2U6IE5DQ04pLiBMdWdhbm8gY2xhc3NpZmljYWlvbiB0YWtlcyBpbnRvIGFjY291bnQgdGhlIENvdHN3b2xkcyBtb2RpZmNhdGlvbnMgb2YgdGhlIEFubiBBcmJvciBzeXN0ZW0gYW5kIGludHJvZHVjZXMgbmV3IHByb2dub3N0aWMgZWxlbWVudHMuIFN0YWdlIDEgaXMgbG9jYWxpemVkIGFuZCBtZWFucyAxIGx5bXBoIG5vZGUgb3IgZ3JvdXAgb2YgYWRqYWNlbnQgbm9kZXMgKGV4LiBjZXJ2aWNhbCkgb3Igb25lIGx5bXBob2lkIHN0cnVjdHVyZSAoZXguIHNwbGVlbikgaXMgaW52b2x2ZWQgKENhbmVsbG9zLCBhbmQgTkcgYW5kIE5DQ04pLiBTdGFnZSAyIHNpZ25pZmllcyB0aGF0IDIgb3IgbW9yZSBseW1waCBub2RlcyBvciByZWdpb25zIGFyZSBpbnZvbHZlZCBidXQgdGhleSBhcmUgb24gdGhlIHNhbWUgc2lkZSBvZiB0aGUgZGlhcGhyYWdtIChDYW5lbGxvcywgYW5kIE5HIGFuZCBOQ0NOKS4gU3RhZ2UgMyBtZWFucyBseW1waCBub2RlcyBvbiBib3RoIHNpZGVzIG9mIHRoZSBkaWFwaHJhZ20gYXJlIGludm9sdmVkIChzb3VyY2U6IHVwdG9kYXRlIGFuZCBOQ0NOKS4gU3RhZ2UgNCBoYXMgd2lkZXNwcmVhZCBseW1waCBpbnZvbHZlbWVudCBwbHVzIG9yZ2FucyBzdWNoIGFzIHNwbGVlbiwgbHVuZ3MsIGxpdmVyLCBib25lcywgYW5kIGJvbmUgbWFycm93IGFyZSBhZmZlY3RlZCB3aXRoIG9yIHdpdGhvdXQgbHlwbWggbm9kZSBpbnZvbHZlbWVudCAoQ2FuZWxsb3MsIGFuZCBORyBhbmQgTkNDTikuIENhdGVnb3JpZXMgQSBhbmQgQiB3ZXJlIGFscmVhZHkgbWVudGlvbmVkIGJ1dCB0aGVyZSBhcmUgYWxzbyBFIGFuZCBTLiBDYXRlZ29yeSBFIG1lYW5zIG9yZ2FucyBvciB0aXNzdWUgb3V0c2lkZSB0aGUgbHltcGhhdGljIHN5c3RlbSBhcmUgYWZmZWN0ZWQgYW5kIGNhdGVnb3J5IFMgbWVhbnMgdGhlIHNwbGVlbiBpcyBpbnZvbHZlZCAoSG9kZ2tpbiBMeW1waG9tYSwgTkNDTiwgdXB0b2RhdGUuY29tKS4gSW4gdGhlIEx1Z2FubyBjbGFzc2lmaWNhdGlvbiwgdGhlIGRpc2Vhc2UgaXMgYWxzbyByZWZlcnJlZCB0byBhcyAiYnVsa3kiIHdoZW4gaXQgaXMgZWl0aGVyIGEgMTAgY20gc2luZ2xlIG5vZGFsIG1hc3Mgb3IgaXQgaXMgZ3JlYXRlciBvciBlcXVhbCB0byAxLzMgb2YgdGhlIGNoZXN0IGRpYW1ldGVyIChDYW5lbGxvcywgYW5kIE5HKS4gVGhlc2Ugc3RhZ2VzIGFuZCBjYXRlZ29yaWVzIGNhbiBiZSBkaXZpZGVkIGludG8gMyBwcm9nbm9zdGljIHN1Ymdyb3VwczogZWFybHkgc3RhZ2UgZmF2b3JhYmxlLCBlYXJseSBzdGFnZSB1bmZhdm9yYWJsZSwgYW5kIGFkdmFuY2VkIHN0YWdlLiBFYXJseSBzdGFnZSBmYXZvcmFibGUgc2lnbmlmaWVzIHRoZSBkaXNlYXNlIGlzIGVpdGhlciBzdGFnZSAxIG9yIDIgd2l0aG91dCB1bmZhdm9yYWJsZSBmYWN0b3JzLiBFYXJseSBzdGFnZSB1bmZhdm9yYWJsZSBpcyBkaXNlYXNlIHN0YWdlIDEgb3IgMiB3aXRoIHVuZmF2b3JhYmxlIGZhY3RvcnMuIEJlc2lkZXMgaGF2aW5nIEIgc3ltcHRvbXMsIG90aGVyIHVuZmF2b3JhYmxlIGZhY3RvcnMgaW5jbHVkZSBoYXZpbmcgbWFzc2VzIG91dHNpZGUgb2YgdGhlIGx5bXBoIG5vZGVzIG9yIGx5bXBoYXRpYyBzeXN0ZW0sIGhhdmluZyBhICJidWxreSBkaXNlYXNlIiwgaGF2aW5nIDMgb3IgbW9yZSBseW1waCBub2RlcyBpbnZvbHZlZCwgYW5kIGhhdmluZyBlcnl0aHJvY3l0ZSBzZWRpbWVudGF0aW9uIHJhdGUgdGhhdCBpcyBncmVhdGVyIHRoYW4gb3IgZXF1YWwgdG8gNTAgbW0vaHIgKEhvZGdraW4gTHltcGhvbWEpLiBBZHZhbmNlZCBzdGFnZSBpcyBkaXNlYXNlIHRoYXQgaXMgc3RhZ2UgMyBvciA0IGFuZCBoYXMgYWR2ZXJzZSBwcm9nbm9zaXMgd2hlbiBwYXRpZW50cyBhcmUgbWFsZXMsIDQ1IHllYXJzIGFuZCBvbGRlciwgYWxidW1pbiBsZXZlbHMgNCBnL2RMLCBoZW1vZ2xvYmluIGJlbG93IDEwLjUgZy9kTCwgd2hpdGUgYmxvb2QgY2VsbCBjb3VudCBncmVhdGVyIHRoYW4gMTUsMDAwL21tXjMsIGx5bXBob2N5dGUgY291bnQgbGVzcyB0aGFuIDglIG9mIHRoZSB3aGl0ZSBibG9vZCBjZWxsIGNvdW50IGFuZC9vciBseW1waG9jeXRlIGNvdW50IGxlc3MgdGhhbiA2MDAvbW1eMyAoSG9kZ2tpbiBMeW1waG9tYSkuIApgYGB7cn0KbGlicmFyeShEaWFncmFtbWVSKQpnclZpeigiZGlncmFwaCBmbG93Y2hhcnQgewogICAgICAjIG5vZGUgZGVmaW5pdGlvbnMgd2l0aCBzdWJzdGl0dXRlZCBsYWJlbCB0ZXh0CiAgICAgIG5vZGUgW2ZvbnRuYW1lID0gVmVyYW5kYSwgc2hhcGUgPSByZWN0YW5nbGVdICAgICAgICAKICAgICAgdGFiMSBbbGFiZWwgPSAnTW9yZSB0aGFuIDEgbHltcGggbm9kZSwgcmVnaW9uIG9yIHN0cnVjdHVyZSBpbnZvbHZlZD8nXQogICAgICB0YWIyIFtsYWJlbCA9ICdTdGFnZSBJJ10KICAgICAgdGFiMyBbbGFiZWwgPSAnU2FtZSBzaWRlIG9mIHRoZSBkaWFwaHJhZ20/J10KICAgICAgdGFiNCBbbGFiZWwgPSAnU3RhZ2UgSUknXQogICAgICB0YWI1IFtsYWJlbCA9ICdFeHRlbnNpdmUgZXh0cmFub2RhbCBvcmdhbiBpbnZvbHZlbWVudCBlaXRoZXIgdy8gb3Igdy9vIGFzc29jaWF0ZWQgbHltcGggbm9kZXM/J10KICAgICAgdGFiNiBbbGFiZWwgPSAnU3RhZ2UgSUlJJ10KICAgICAgdGFiNyBbbGFiZWwgPSAnU3RhZ2UgSVYnXQogICAgICB0YWI4IFtsYWJlbCA9ICdTdGFnZSBJRSddCiAgICAgIHRhYjkgW2xhYmVsID0gJ1N0YWdlIElJRSddCiAgICAgIHRhYjEwIFtsYWJlbCA9ICdTdGFnZSBJSUlFJ10KICAgICAgdGFiMTEgW2xhYmVsID0gJ1N0YWdlIElJSVMnXQogICAgICB0YWIxMiBbbGFiZWwgPSAnU3RhZ2UgSUlJRStTJ10KICAgICAgdGFiMTMgW2xhYmVsID0gJ0xvY2FsaXplZCBleHRyYWx5bXBoYXRpYyBzaXRlL29yZ2FuIGludm9sdmVkPyddCiAgICAgIHRhYjE0IFtsYWJlbCA9ICdMb2NhbGl6ZWQgZXh0cmFseW1waGF0aWMgc2l0ZS9vcmdhbiArIHJlZ2lvbmFsIGx5bXBoIG5vZGVzIGludm9sdmVkPyddCiAgICAgIHRhYjE1IFtsYWJlbCA9ICdVbmZhdm9yYWJsZSBmYWN0b3JzPyddCiAgICAgIHRhYjE2IFtsYWJlbCA9ICdFYXJseSBTdGFnZSBVbmZhdm9yYWJsZSddCiAgICAgIHRhYjE3IFtsYWJlbCA9ICdFYXJseSBTdGFnZSBGYXZvcmFibGUnXQogICAgICB0YWIxOCBbbGFiZWwgPSAnTG9jYWxpemVkIGV4dHJhbHltcGhhdGljIG9yZ2FuL3NpdGUgYXNzb2NpYXRlZCB3LyBseW1waCBub2RlcyBpbnZvbHZlZD8nXQogICAgICB0YWIxOSBbbGFiZWwgPSAnU3BsZWVuIGFsc28gaW52b2x2ZWQ/J10KICAgICAgdGFiMjAgW2xhYmVsID0gJ0FkdmFuY2VkIFN0YWdlJ10KICAgICAgCiAgICAgICMgZWRnZSBkZWZpbml0aW9ucyB3aXRoIHRoZSBub2RlIElEcwogICAgICB7dGFiMiB0YWI0IHRhYjggdGFiOX0gLT4gdGFiMTUKICAgICAge3RhYjYgdGFiNyB0YWIxMCB0YWIxMSB0YWIxMSB0YWIxMn0gLT4gdGFiMjAKICAgICAgZWRnZSBbYXJyb3doZWFkPSdub3JtYWwnLCBwZW53aWR0aD0zLCBsYWJlbCA9ICdOTyddCiAgICAgIHRhYjEgLT4gdGFiMTMgLT4gdGFiMgogICAgICB0YWIzIC0+IHRhYjU7CiAgICAgIHRhYjUgLT4gdGFiMTg7CiAgICAgIHRhYjE0IC0+IHRhYjQ7CiAgICAgIHRhYjE1IC0+IHRhYjE3OwogICAgICB0YWIxOSAtPiB0YWIxMDsKICAgICAgZWRnZSBbYXJyb3doZWFkPSdub3JtYWwnLCBwZW53aWR0aD0zLCBsYWJlbCA9ICdZRVMnXQogICAgICB0YWIxIC0+IHRhYjM7CiAgICAgIHRhYjEzIC0+IHRhYjg7CiAgICAgIHRhYjMgLT4gdGFiMTQgLT4gdGFiOTsKICAgICAgdGFiMTUgLT4gdGFiMTY7CiAgICAgIHRhYjUgLT4gdGFiNzsKICAgICAgdGFiMTggLT4gdGFiMTkgLT4gdGFiMTI7CiAgICAgIGVkZ2UgW2Fycm93aGVhZD0nbm9ybWFsJywgcGVud2lkdGg9MywgbGFiZWwgPSAnTk8sIEpVU1QgTFlNUEggTk9ERVMnXQogICAgICB0YWIxOCAtPiB0YWI2OwogICAgICBlZGdlIFthcnJvd2hlYWQ9J25vcm1hbCcsIHBlbndpZHRoPTMsIGxhYmVsID0gJ05PLCBCVVQgVEhFIFNQTEVFTiBJUyddCiAgICAgIHRhYjE4IC0+IHRhYjExOwogICAgICB9CiAgICAgICIpCgpgYGAKCiMjIyBDbGluaWNhbCBQcmVzZW50YXRpb25zCk1hbnkgcGF0aWVudHMgYXJlIHN5bXB0b21sZXNzLiBIb3dldmVyLCB0aG9zZSB0aGF0IGRvIGhhdmUgc3ltcHRvbXMgbWF5IGV4cGVyaWVuY2UgZHJlbmNoaW5nIG5pZ2h0IHN3ZWF0cywgdW5leHBsYWluZWQgd2VpZ2h0IGxvc3MsIHVuZXhwbGFpbmVkIGZldmVycywgcGVyc2lzdGVudCBmYXRpZ3VlLCBwZXJzaXN0ZW50IGNvdWdoLCBzaG9ydG5lc3Mgb2YgYnJlYXRoLCBwcnVyaXR1cyAoaXRjaHkgc2tpbiksIHN3b2xsZW4gYWJkb21lbiwgcGFpbiBpbiB0aGUgYWJkb21lbiwgZGVjcmVhc2UgaW4gYXBwZXRpdGUsIGluY3JlYXNlZCBmZWVsaW5nIG9mIGZ1bGxuZXNzLCBseW1waGFkZW5vcGF0aHkgKHN3b2xsZW4gbHltcGggbm9kZXMpIGFuZCByYXJlbHkgcGFpbiBpbiBseW1waCBub2RlcyBhZnRlciBkcmlua2luZyBhbGNvaG9sIChIb2Rna2luIEx5bXBob21hKS4gVHlwaWNhbCBDSEwgY2xpbmljYWwgcHJlc2VudGF0aW9ucyBpbmxjdWRlOiBtZWRpYXN0aW5hbCBtYXNzIChtYXNzIG9uIHRoZSBjaGVzdCksIGx5bXBoYWRlbm9wYXRoeSBpbiBtb3JlIHRoYW4gMi8zIG9mIHRoZSBwYXRpZW50cywgYW5kICJCIHN5bXB0b21zIiAoQ2FuZWxsb3MsIGFuZCBORykuIDYwIC04MCUgb2YgY0hMIHBhdGllbnRzIGhhdmUgZW5sYXJnZWQgY2VydmljYWwgKG5lY2spIGFuZCBzdXByYWNsYXZpY2FsIChhYm92ZSB0aGUgY2xhdmljbGUpIGx5bXBoIG5vZGVzLCA1MCAtNjAlIGhhdmUgZW5sYXJnZWQgbWVkaWFzdGluYWwgKHBhcnQgb2YgY2hlc3QpIG5vZGVzLCAzMCUgaGF2ZSBlbmxhcmdlZCBheGlsaWFyeSAoYXJtcGl0KSBub2RlcywgMzAlIGhhdmUgZW5sYXJnZWQgcmV0cm9wZXJpdG9uZWFsIChiZWhpbmQgdGhlIGFiZG9tZW4pIG5vZGVzLCAxMCUgaGF2ZSBlbmxhcmdlZCBpbmd1aW5hbCAoZ3JvaW4pIG5vZGVzLCBhbmQgbGVzcyB0aGFuIDEwJSBoYXZlIGVubGFyZ2VkIGluZnJhZGlhcGhyYWdtYXRpYyAoYmVsb3cgdGhlIGRpYXBocmFnbSkgbm9kZXMgKENhbmVsbG9zLCBhbmQgTkcpLiBCIHN5bXB0b21zIHRlbmQgdG8gYWNjb21wYW55IGx5bXBoYWRlbm9wYXRoeSBhbmQgaXMgZm91bmQgaW4gYWJvdXQgMS81IG9mIGVhcmx5IHN0YWdlIHBhdGllbnRzIGFuZCAxLzIgb2YgdGhlIGxhdGUgc3RhZ2UgcGF0aWVudHMgKENhbmVsbG9zLCBhbmQgTkcpLiBGZXZlcnMgYXJlIG1vcmUgY29tbW9uIGF0IG5pZ2h0IGFuZCBjYW4gY3ljbGljYWxseSBpbmNyZWFzZSBhbmQgZGVjcmVhc2Ugb3ZlciBhIHR3byB3ZWVrIHBlcmlvZCAoQ2FuZWxsb3MsIGFuZCBORykuIFRoaXMgdHlwZSBvZiBmZXZlciBpcyBjYWxsZWQgUGVsLUVic3RlaW4gZmV2ZXIuIFBhdGllbnRzIHdpdGggbWVkaWFzdGluYWwgbWFzcyBjYW4gZWl0aGVyIGJlIGFzeW1wdG9tYXRpYyBvciBoYXZlIGNvdWdoLCBwYWluLCBhbmQvb3IgYWNjb21wYW55aW5nIHBhaW4uIExlc3MgdHlwaWNhbCBjSEwgY2xpbmljYWwgcHJlc2VudGF0aW9ucyBpbmNsdWRlOiBsaXZlciBkaXNlYXNlLCBpbnRyYS1hYmRvbWluYWwgZGlzZWFzZSwgc2tpbiBsZXNpb25zLCBib25lIG1hcnJvdyBpbnZvbHZlbWVudCwgbm9uYWRqYWNlbnQgc3ByZWFkIHRvIG11bGlwbGUgbHltcGggbm9kZXMsIGNlbnRyYWwgbmVydm91cyBzeXN0ZW0gaW52b2x2ZW1lbnQsIG5lcGhyb3RpYyBzeW5kcm9tZSBhbmQgaXNvbGF0ZWQgYWJub3JtYWwgbGFiIHJlc3VsdHMgKENhbmVsbG9zLCBhbmQgTkcpLiBBYm5vcm1hbCBsYWIgcmVzdWx0cyBpbmNsdWRlIGh5cGVyY2FsY2VtaWEsIGFuZW1pYSwgZW9zaW5vcGhpbGxpYSwgbGV1a29jeXRvc2lzLCB0aHJvbWJvY3l0b3NpcywgbHltcGhvcGVuaWEsYW5kIGh5cG9hbGJ1bWluZW1pYS4gQWx0aG91Z2ggdGhlc2UgYXR5cGljYWwgcHJlc2VudGF0aW9ucyBhcmUgbGVzcyBjb21tb24gaW4gY0hMIHBvcHVsYXRpb24gb3ZlcmFsbCwgcGF0aWVudHMgd2hvIGFyZSBhbHNvIEhJViBwb3NpdGl2ZSBvciBhbHJlYWR5IGhhdmUgYSBzdXBwcmVzc2VkIGltbXVuZSBzeXN0ZW0gYXJlIG1vcmUgbGlrZWx5IHRvIGV4cGVyaWVuY2UgdGhlc2Ugc3ltcHRvbXMgKENhbmVsbG9zLCBhbmQgTkcpLiBOTFBITCBwYXRpZW50cyB0eXBpY2FsbHkgZG8gbm90IGhhdmUgIkIgc3ltcHRvbXMiLCBidWxreSBkaXNlYXNlLCBleHRyYW5vZGFsIGludm9sdmVtZW50LCBvciBtZWRpYXN0aW5hbCBtYXNzZXMgKEhvZGdraW4gTHltcGhvbWEpLiBJbiBmYWN0LCAzLzQgb2YgdGhlIE5MUEhMIHBhdGllbnRzIGFyZSBkaWFnbm9zZWQgZHVyaW5nIHN0YWdlIDEgd2hpY2ggbWFrZXMgc2Vuc2UgYmVjYXVzZSB0aGUgZGlzZWFzZSBpcyBzbG93LWdyb3dpbmcgKEhvZGdraW4gTHltcGhvbWEpLgoKIyMjIERpYWdub3NpbmcgSEwKRmlyc3QsIGEgdGhvcm91Z2ggaGlzdG9yeSBhbmQgcGh5c2ljYWwgZXhhbWluYXRpb24gb2YgYSBwYXRpZW50IGlzIGNvbmR1Y3RlZCB0byBzZWUgaWYgdGhlcmUgYXJlIGFueSBzeW1wdG9tcywgZW5sYXJnZWQgbHltcGggbm9kZXMsIGVubGFyZ2VkIHNwbGVlbiwgZW5sYXJnZWQgbGl2ZXIsIG9yIHJlbGV2YW50IGZhbWlsaWFsIGhpc3RvcnkuIExhYm9yYXRvcnkgc3R1ZGllcyBhcmUgdGhlbiBkb25lIHRvIHRlc3QgY29tcGxldGUgYmxvb2QgY291bnQgKENCQyB3L2RpZmYpLCBlcnl0aHJvY3l0ZSBzZWRpbWVudGF0aW9uIHJhdGUgKEVTUiksIHNlcnVtIGNoZW1pc3RyaWVzIChDTVApLCBsaXZlciBmdW5jdGlvbiB0ZXN0LCByZW5hbCBmdW5jdGlvbiB0ZXN0LCBhbGJ1bWluLCBFcHN0ZWluLUJhcnIsIGFuZCBISVYuIFNjYW5zIGNhbiBiZSBkb25lIHRvIGJldHRlciBndWlkZSBiaW9wc2llcy4gVG8gcHJvcGVybHkgZGlhZ25vc2UgSEwsIGVpdGhlciBleGNpc2lvbmFsIG9yIGluY2lzaW9uYWwgdGlzc3VlIGJpb3BzaWVzIG9yIGNvcmUgbmVlZGxlIGJpb3BzaWVzIG5lZWQgdG8gYmUgZG9uZSAoQ2FuZWxsb3MsIGFuZCBORykuIEl0IGNhbiBiZSBkaWZmaWN1bHQgdG8gZGlhZ25vc2UgSEwgYmVjYXVzZSBSUyBjZWxscyBjb21wcm9taXNlIGEgc21hbGwgcG9ydGlvbiBvZiBhIGJpb3BzeSBzYW1wbGUtIHNwZWNpZmljYWxseSAwLjEgdG8gMTAlIGF0IG1vc3QtIHNvIGEgZmluZSBuZWVkbGUgYXNwaXJhdGlvbiBiaW9wc3kgKEZOQSkgd291bGQgbm90IHByb3ZpZGUgZW5vdWdoIHRpc3N1ZSB0byBnaXZlIGEgZGVmaW5pdGl2ZSBkaWFnbm9zaXMgKEhvZGdraW4gTHltcGhvbWEpLiBJbW11bm9waGVub3R5cGluZyBpcyBhbHNvIGRvbmUgdG8gZGlzY3JpbWluYXRlIGFnYWluc3QgSG9kZ2tpbiBhbmQgUmVlZC1TdGVybmJlcmcgY2VsbHMgYW5kIGNvbmZpcm0gdGhlIEhvZGdraW4gTHltcGhvbWEgZGlhZ25vc2lzLiBQRVQvQ1Qgc2NhbnMgYXJlIHVzZWQgZm9yIHN0YWdpbmcgYW5kIHJlc3RhZ2luZyBhZnRlciBhIGNlcnRhaW4gbnVtYmVyIG9mIGN5Y2xlcyBvZiB0cmVhdG1lbnQuCgojIyBUYXJnZXQgTWFya2V0CgojIyMgTWFya2V0IFNpemUKMTk2LDUwOCBBbWVyaWNhbnMgbGl2ZSB3aXRoIEhMIG9yIGFyZSBpbiByZW1pc3Npb24gKEhvZGdraW4gTHltcGhvbWEpLiBUaGUgTklIIHByb2plY3RzIDgsNDgwIG5ldyBkaWFnbm9zZXMgYW5kIDk3MCBkaXNlYXNlIHJlbGF0ZWQgZGVhdGhzIHRoaXMgeWVhciwgbWVhbmluZyBITCByZXByZXNlbnRzIG9ubHkgMC41JSBvZiBhbGwgbmV3IGNhbmNlciBjYXNlcyBpbiBBbWVyaWNhIChzb3VyY2U6IGNhbmNlci5nb3YpLiBITCBpcyBub3cgY29uc2lkZXJlZCBoaWdobHkgY3VyYWJsZSB3aXRoIGFuIGF2ZXJhZ2UgNSB5ZWFyIHN1cnZpdmFsIG9mIDg3LjQlIChzb3VyY2U6IGNhbmNlci5nb3YpLiBUaGlzIHBlcmNlbnRhZ2UgaXMgZXZlbiBncmVhdGVyICg5My45JSkgZm9yIHBhdGllbnRzIHdobyB3ZXJlIHlvdW5nZXIgdGhhbiA0NSB5ZWFycyBvbGQgd2hlbiBkaWFnbm9zZWQgKEhvZGdraW4gTHltcGhvbWEpLiBJbiBjaGlsZGhvb2QgY2FuY2VycywgSEwgbWFrZXMgdXAgYWJvdXQgNyUgb2YgYWxsIGNhbmNlcnMgYW5kIGlzIG1vcmUgY29tbW9ubHkgZm91bmQgYmV0d2VlbiAyMCAtMjQgeWVhciBvbGRzIChIb2Rna2luIEx5bXBob21hKS4KYGBge3J9CmxhYmVscyA9IGMoJzIwMjAgSEwgbmV3IGNhc2VzJywgJzIwMjAgT3RoZXIgY2FuY2VyIG5ldyBjYXNlcycpCnZhbHVlcyA9IGMoODQ4MCwgMTY5NjAwMCkKZmlnIDwtIHBsb3RfbHkodHlwZT0ncGllJywgbGFiZWxzPWxhYmVscywgdmFsdWVzPXZhbHVlcywgCiAgICAgICAgICAgICAgIHRleHRpbmZvPSdsYWJlbCtwZXJjZW50JywKICAgICAgICAgICAgICAgaW5zaWRldGV4dG9yaWVudGF0aW9uPSdyYWRpYWwnKQpmaWcKCmxhYmVscyA9IGMoJzIwMjAgSEwgZGVhdGhzJywgJzIwMjAgT3RoZXIgY2FuY2VyIGRlYXRocycpCnZhbHVlcyA9IGMoOTcwLCA0ODUwMDApCmZpZyA8LSBwbG90X2x5KHR5cGU9J3BpZScsIGxhYmVscz1sYWJlbHMsIHZhbHVlcz12YWx1ZXMsIAogICAgICAgICAgICAgICB0ZXh0aW5mbz0nbGFiZWwrcGVyY2VudCcsCiAgICAgICAgICAgICAgIGluc2lkZXRleHRvcmllbnRhdGlvbj0ncmFkaWFsJykKZmlnCgpsYWJlbHMgPSBjKCdDaGlsaG9vZCBITCBjYXNlcyBhZ2VkIDIwLTI0JywgJ0NoaWxkaG9vZCBITCBjYXNlcyBwZXIgeWVhcicpCnZhbHVlcyA9IGMoNDAsIDEwMDAwMCkKZmlnIDwtIHBsb3RfbHkodHlwZT0ncGllJywgbGFiZWxzPWxhYmVscywgdmFsdWVzPXZhbHVlcywgCiAgICAgICAgICAgICAgIHRleHRpbmZvPSdsYWJlbCtwZXJjZW50JywKICAgICAgICAgICAgICAgaW5zaWRldGV4dG9yaWVudGF0aW9uPSdyYWRpYWwnKQpmaWcKYGBgCgojIyBDb21wZXRpdGl2ZSBBbmFseXNpcwoKIyMjIEN1cnJlbnQgY29tcGV0aXRvcnMKUmFkaWF0aW9uIGFsb25lIHVzZWQgdG8gYmUgdGhlIHN0YW5kYXJkIGZvciBhbGwgZWFybHkgc3RhZ2VzIGJ1dCBub3cgaXQgaG9sZHMgdHJ1ZSBmb3Igb25seSBlYXJseSBzdGFnZSBOTFBITCAoSG9kZ2tpbiBMeW1waG9tYSkuIFRoZXJlIGFyZSB0d28gdHlwZXMgb2YgcmFkaWF0aW9uIGNvbW1vbmx5IHVzZWQ6IElTUlQgKGludm9sdmVkIHNpdGUgcmFkaWF0aW9uIHRoZXJhcHkpIGFuZCBJTlJUIChpbnZvbHZlZC1ub2RlIHJhZGlhdGlvbiB0aGVyYXB5KSB3aGVyZSBvbmx5IHRoZSBseW1waCBub2RlcyBhbmQgc3Vycm91bmRpbmcgYXJlYSB3aGVyZSB0aGUgY2FuY2VyIGJlZ2FuIGFyZSB0cmVhdGVkLiBGb3IgZWFybHkgc3RhZ2UgY0hMIHBhdGllbnRzLCBjaGVtb3RoZXJhcHkgY29tYmluYXRpb25zIGFyZSBub3cgc3RhbmRhcmQgYW5kIEFCVkQgKEFkcmlhbXljaW4gKGRveG9ydWJpY2luKSwgYmxlb215Y2luLCB2aW5ibGFzdGluZSwgZGFjYXJiYXppbmUpIGZvbGxvd2VkIGJ5IHJhZGlhdGlvbiBpcyB0aGUgZ29sZCBzdGFuZGFyZCAoSG9kZ2tpbiBMeW1waG9tYSkuIEVhcmx5IHN0YWdlIHVuZmF2b3JhYmxlIHBhdGllbnRzIGFyZSB0cmVhdGVkIHdpdGggNC02IGN5Y2xlcyBvZiBBQlZEIG9yIGRvc2UgZXNjYWxhdGVkIEJFQUNPUFAgKGJsZW9teWNpbiwgZXRvcG9zaWRlLCBBZHJpYW15Y2luIFtkb3hvcnViaWNpbl0sIGN5Y2xvcGhvc3BoYW1pZGUsIE9uY292aW4gW1ZpbmNyaXN0aW5lXSwgUHJvY2FyYmF6aW5lLCBQcmVkbmlzb25lKSBmb2xsb3dlZCBieSByYWRpYXRpb24gdGhlcmFweSAoSG9kZ2tpbiBMeW1waG9tYSkuIEFkdmFuY2VkIGNITCBzdGFnZSBpcyByYXJlbHkgdHJlYXRlZCBSVCBhbmQgaW5zdGVhZCBpcyB0cmVhdGVkIHdpdGggQUJWRCwgQStBVkQgKEFkY2V0cmlzW2JyZW50dXhpbWFiIHZlZG90aW5dLCBkb3hvcnViaWNpbiwgdmluYmxhc3RpbmUsIGFuZCBkYWNhcmJhemluZSksIG9yIGRvc2UgZXNjYWxhdGVkIEJFQUNPUFAgKEhvZGdraW4gTHltcGhvbWEpLiBBZHZhbmNlZCBOTFBITCBwYXRpZW50cyBhcmUgdHJlYXRlZCB3aXRoIEFCVkQsIENIT1AsIENWRCwgb3IgUml0dXhhbi4gUGF0aWVudHMgdGhhdCBoYXZlIHJlbGFwc2VkIGNhbiBiZSB0cmVhdGVkIHdpdGggbW9yZSBjaGVtb3RoZXJhcGllcyBzdWNoIGFzIElDRSAoaWZvc2ZhbWlkZSwgY2FyYm9wbGF0aW4sIGV0b3Bvc2lkZSksIEJJQ0UgKGJvcnRlem9taWIsaWZvc2ZhbWlkZSwgY2FyYm9wbGF0aW4sIGFuZCBldG9wb3NpZGUpLCBFU0hBUCAoZXRvcG9zaWRlLCBzb2x1LU1lZHJvbC1NZXRoeWxwcmVkbmlzb25lLCBoaWdoLWRvc2UgQXJhLUMtY3l0YXJhYmluZSwgcGxhdGlub2xbY2lzcGxhdGluXSksIG9yIEdORChnZW1jaXRhYmluZSBbR2VtemFyXSwgTmF2ZWxiaW5lIFt2aW5vcmVsYmluZV0sIERveGlsW2xpcG9zb21hbCBkb3hvcnViaWNpbl0pLiBUaGV5IGNhbiBhbHNvIGJlIHRyZWF0ZWQgd2l0aCBpbW11bm90aGVyYXBpZXMgc3VjaCBhcyBBZGNldHJpcywgT3BkaXZvLCBvciBLZXl0cnVkYSAob3IgaWYgdGhlIHBhdGllbnQgaXMgTkxQSEwsIFJpdHV4YW4pLiBMYXN0bHksIHJlbGFwc2VkIHBhdGllbnRzIGNhbiBhbHNvIHJlY2VpdmUgc3RlbSBjZWxsIHRyYW5zcGxhbnRzIChIb2Rna2luIEx5bXBob21hKS4gQ2hpbGRyZW4gYW5kIHlvdW5nIGFkdWx0cyBhcmUgdHJlYXRlZCB3aXRoIGVpdGhlciBBQlZELCBBVi1QQyAoQWRyaWFteWNpbiBbZG94b3J1YmljaW5dLCB2aW5jcmlzdGluZSBbT25jb3Zpbl0sIHByZWRuaXNvbmUsY3ljbG9waG9zcGhhbWlkZSksIEFCVkUgKEFkcmlhbXljaW4gW2RveG9ydWJpY2luXSksIGJsZW9teWNpbiwgdmluY3Jpc3RpbmUgW09uY292aW5dLCBhbmQgZXRvcG9zaWRlKSwgQUJWRS1QQyAoQWRyaWFteWNpbiBbZG94b3J1YmljaW5dLCBibGVvbXljaW4sIHZpbmNyaXN0aW5lIFtPbmNvdmluXSwgZXRvcG9zaWRlLCBwcmVkbmlzb25lLCBjeWNsb3Bob3NwaGFtaWRlKSwgQkVBQ09QUCwgT0VQQS9DT1BEYWMgKE9uY292aW4gW3ZpbmNyaXN0aW5lXSwgZXRvcG9zaWRlLCBwcmVkbmlzb25lLCBBZHJpYW15Y2luIFtkb3hvcnViaWNpbl0sIGN5Y2xvcGhvc3BoYW1pZGUsIE9uY292aW4gW3ZpbmNyaXN0aW5lXSwgcHJlZG5pc29uZSwgZGFjYXJiYXppbmUpLCBPRVBBL0NPUFAgKE9uY292aW4gW3ZpbmNyaXN0aW5lXSwgZXRvcG9zaWRlLCBwcmVkbmlzb25lLCBBZHJpYW15Y2luIFtkb3hvcnViaWNpbl0sIGN5Y2xvcGhvc3BoYW1pZGUsIE9uY292aW4gW3ZpbmNyaXN0aW5lXSwgcHJlZG5pc29uZSwgcHJvY2FyYmF6aW5lKSwgbW9ub2Nsb25hbCBhbnRpYm9kaWVzLCBzdXJnZXJ5LCByYWRpYXRpb24sIGFuZCBoaWdoIGRvc2UgY2hlbW90aGVyYXB5IHdpdGggc3RlbSBjZWxsIHRyYW5zcGxhbnQgKEhvZGdraW4gTHltcGhvbWEpLgoKIyMjIEN1cnJlbnQgQ29tcGV0aXRvciBTdHJlbmdodHMKUHJpb3IgdG8gM0QtYmFzZWQgcGxhbm5pbmcsIElGUlQgKGludm9sdmVkIGZpZWxkIFJUKSwgZXh0ZW5kZWQtZmllbGQgcmFkaWF0aW9uIChFRlJUKSwgbWFudGxlIGZpZWxkIFJULCBpbnZlcnRlcmQtWSBmaWVsZCBSVCBhbmQgdG90YWwgbm9kYWwgaXJyYWRpdGlvbiAoVE5JKSB3ZXJlIHVzZWQgdG8gdHJlYXQgdG8gSEwgKHNvdXJjZTogdXB0dG9kYXRlLmNvbSkuIFRoZXNlIFJUIHRhcmdldGVkIGx5bXBoIG5vZGUgcmVnaW9ucyBhZmZlY3RlZCBieSBkaXNlYXNlIGJ1dCByZXN1bHRlZCBpbiBncmVhdGVyIGV4cG9zdXJlIHRvIG9yZ2FucyBhdCByaXNrIChPQVJzKSBhbmQgbGF0ZSB0b3hpY2l0eSBlZmZlY3RzIHRoZXJlZm9yZSB0aGV5IGFyZSBubyBsb25nZXIgdXNlZCAoc291cmNlOiBOQ0NOIGFuZCB1cHRvZGF0ZS5jb20pLiBXaXRoIHRoZSBhZHZhbmNlbWVudCBvZiBSVCB0ZWNobmlxdWVzIGFuZCBoZWxwIG9mIENUIHNjYW5zLCByYWRpYXRpb24gdXNlZCBpcyBub3cgc3BlY2lmaWMgdG8gbHltcGggbm9kZSByZWdpb25zIHdoZXJlIGRpc2Vhc2UgYmVnYW4gYW5kIGNhbiBiZSBjb21iaW5lZCB3aXRoIGNoZW1vdGhlcmFweSB0byBhY2hpZXZlIGhpZ2hlciBjdXJlIHJhdGVzLCBsb3dlciB0b3hpY2l0eSwgYW5kIGxlc3MgcHJvYmFiaWxpdHkgb2YgZGV2ZWxvcGluZyBzZWNvbmRhcnkgY2FuY2VycyBpbiBlYXJseSBzdGFnZSBwYXRpZW50cyAoQ2FuZWxsb3MsIGFuZCBORykuIFRoZSBOTFBITCBwb3B1bGF0aW9uIGlzIGRpZmZlcmVudCBmcm9tIHRoZSBjSEwgcG9wdWxhdGlvbiBpbiB0aGF0IHRoZSBtYWpvcml0eSBhcmUgZWFybHkgc3RhZ2UgZmF2b3JhYmxlIGJ1dCBwYXRpZW50cyB3aG8gYXJlICJidWxreSIgb3IgaGF2ZSBzcGxlZW5pYyBpbnZvbHZlbWVudCBhcmUgYXQgYSBoaWdoZXIgcmlzayBvZiBkZXZlbG9waW5nIGxhcmdlIGNlbGwgbHltcGhvbWEgKHNvdXJjZTogTkNDTikuIFJldHJvc3BlY3RpdmUgc3R1ZGllcyBoYXZlIHNob3duIGVhcmx5IHN0YWdlIGZhdm9yYWJsZSBOTFBIIGhhdmUgYSA1IHllYXItcmVsYXBzZS1mcmVlIHN1cnZpdmFsIG9mIDk1JSB3aGVuIHRyZWF0ZWQgd2l0aCByYWRpYXRpb24gYWxvbmUgYW5kIGRvbid0IGRldmVsb3Agc2Vjb25kYXJ5IHR1bW9ycyB5ZWFyIGxhdGVyIChzb3VyY2U6IE5DQ04pLiBBZHZhbmNlZCBzdGFnZSBOTFBIIGhhcyBhIHdvcnNlIHByb2dub3NpcyBidXQgZXZlbiB0aGVuLCBldXJvcGVhbiBzdHVkaWVzIGhhdmUgc2hvd24gdGhhdCB0cmVhdGluZyB3aXRoIEFCVkQgb3Igc2ltaWxhciByZWdpbWVucyByZXN1bHRzIGluIGFib3V0IGEgOTAlIDggeWVhciBkaXNlYXNlLXNwZWNpZmljIHN1cnZpdmFsIGluIHN0YWdlIDMgYW5kIGFib3V0IDQwJSBpbiBzdGFnZSA0IChzb3VyY2U6IE5DQ04pLgoKT3ZlciA5MCUgb2YgZWFybHkgc3RhZ2UgY0hMIGZhdm9yYWJhbGUgcGF0aWVudHMgY2FuIGJlIGN1cmVkIHdpdGggMiBjb3Vyc2VzIG9mIEFCVkQgKEFkcmlhbXljaW4gKGRveG9ydWJpY2luKSwgYmxlb215Y2luLCB2aW5ibGFzdGluZSwgZGFjYXJiYXppbmUpIGZvbGxvd2VkIGJ5IHJlZHVjZWQgZG9zZSBvZiByYWRpYXRpb24gKEhvZGdraW4gTHltcGhvbWEpLiBBbHNvLCBjb21wYXJlZCB0byBvdGhlciBhZHVsdCBjaGVtb3RoZXJhcHkgY29tYmluYXRpb25zIGF2YWlsYWJsZSwgQUJWRCBoYXMgdGhlIGxlYXN0IGFtb3VudCBvZiByaXNrIG9mIGRldmVsb3BpbmcgbGV1a2VtaWEgb3IgaW5mZXJ0aWxpdHkgc28gaXQgcmVtYWlucyB0aGUgZ29sZCBzdGFuZGFyZCBmb3IgZWFybHkgc3RhZ2UgY0hMIGZhdm9yYWJsZSBwYXRpZW50cyAoSG9kZ2tpbiBMeW1waG9tYSkuIAoKQklDRSAoYm9ydGV6b21pYiwgaWZvc2ZhbWlkZSwgY2FyYm9wbGF0aW4sIGFuZCBldG9wb3NpZGUpIHdhcyBhIHBoYXNlIElJIHRyaWFsIGNvbXBsZXRlZCBieSBNRCBBbmRlcnNvbiBvbiBNYXkgMm5kLCAyMDE4IGFuZCBpdCBjb21wYXJlZCB0cmVhdG1lbnRzIHdpdGggQklDRSB2cyBzdGFuZGFyZCBJQ0UgaW4gcmVmcmFjdG9yeSBhbmQgcmVsYXBzZWQgY0hMIHBhdGllbnRzLiBJbiBKdW5lIDIwMTIgTUQgQW5kZXJzb24gaW4gY29sbGFib3JhdGlvbiB3aXRoIE1pbGxlbm5pdW0gUGhhcm1hY2V1dGljYWxzIGNvbXBsZXRlZCBwaGFzZSAxIG9mIFZlbGNhZGUgKHRyYWRlIG5hbWUgZm9yIEJvcnRlem9taWIpICsgSUNFIGZvciByZWxhcHNlZCBjSEwgcGF0aWVudHMuIEJvcnRlem9taWIgaXMgYSBwcm90ZW9zb21lIGluaGliaXRvciBzbyB0aGUgaWRlYSB3YXMgdGhhdCBpdCB3b3VsZCBzeW5lcmdpemUgd2l0aCBjaGVtb3RoZXJhcHkgdG8gc3RvcCB0aGUgcHJvZHVjdGlvbiBvZiBjYW5jZXIgY2VsbHMuIFRoZSByZXN1bHRzIG9mIHRoZSBwaGFzZSBJSSB0cmlhbCBzaG93ZWQgdGhhdCBwYXRpZW50cyB0cmVhdGVkIHdpdGggQklDRSBoYWQgZ3JlYXRlciBvdmVyYWxsIGFuZCBjb21wbGV0ZSByZXNwb25zZSB0aGFuIHRob3NlIHRyZWF0ZWQgd2l0aCBJQ0UuIEhvd2V2ZXIsIHBhdGllbnRzIHRyZWF0ZWQgd2l0aCBJQ0UgaGFkIGdyZWF0ZXIgcGFydGlhbCByZXNwb25zZSBhbmQgbW9yZSBzdGFibGUgZGlzZWFzZS4KClJpdHV4aW1hYiBpcyBhIG1vbm9jbG9uYWwgYW50aWJvZHkgdGhhdCB0YXJnZXRzIENEMjAgb2YgaW1tdW5lIEIgY2VsbHMuIFJpdHV4aW1hYiBkb2VzIGhhdmUgYSBiaW9zaW1pbGFyIGNhbGxlZCBUcnV4aW1hIHNvbGQgYnkgVGV2YS4gQWR2YW5jZWQgc3RhZ2Ugb3IgcmVsYXBzZWQgTkxQSEwgaXMgdHJlYXRlZCB3aXRoIFJpdHV4aW1hYiBiZWNhdXNlIHRoZXNlIGNlbGxzIGV4cHJlc3MgQ0QyMC4gVGhpcyBpcyBhIHNoaWZ0IGZyb20gaW5kaXNjcmltaW5hbnRseSBraWxsaW5nIGNlbGxzIHdpdGggY2hlbW90aGVyYXB5IGNvY2t0YWlscyBhbmQgcmFkaWF0aW9uIHRvd2FyZHMgdGFyZ2V0aW5nIG9ubHkgY2FuY2VyIGNlbGxzIG1vcmUgc3BlY2lmaWNhbGx5LgoKTml2b2x1bWFiIGlzIHRoZSBnZW5lcmljIG5hbWUgZm9yIEJyaXN0b2wgTXllcnMgU3F1aWJiJ3MgT3BkaXZvIGFuZCBpdCBpcyBhbiBpbW11bm90aGVyYXB5IHRoYXQgd2FzIGFwcHJvdmVkIG9uIE1heSAxNywgMjAxNiBhcyB0cmVhdG1lbnQgZm9yIGNITCBwYXRpZW50cyB0aGF0IGhhdmUgZWl0aGVyIHJlbGFwc2VkIG9yIHByb2dyZXNzZWQgYWZ0ZXIgcmVjZWl2aW5nIHN0ZW0gY2VsbCB0cmFuc3BsYW50IGFuZCBBZGNldHJpcy4gTml2b2x1bWFiIGJpbmRzIHRvIHRoZSBQRC0xIHJlY2VwdG9yIHRoZXJlYnkgYmxvY2tpbmcgUEQtMSBhbmQgUEQtTDEgZnJvbSBiaW5kaW5nLiBUaGlzIGlzIHNpZ25pZmljYW50IGJlY2F1c2UgSFJTIGNlbGxzIGV4cHJlc3MgUEQtTDEgc28gaWYgdGhleSBhcmUgbm90IGFibGUgdG8gYmluZCB0byB0aGUgUEQtMSByZWNlcHRvcnMgdGhleSBjYW4gbm8gbG9uZ2VyIGV2YWRlL2VzY2FwZSBpbW11bm9zdXJ2ZWlsbGVuY2UuCgpBK0FWRCBpcyBTZWF0dGxlIEdlbmV0aWMncyBBZGNldHJpcyhicmVudHV4aW1hYiB2ZWRvdGluKSBpbiBjb21iaW5hdGlvbiB3aXRoIGRveG9ydWJpY2luLCB2aW5ibGFzdGluZSwgYW5kIGRhY2FyYmF6aW5lLiBJdCB3YXMgYXBwcm92ZWQgb24gTm92ZW1iZXIgMTYsIDIwMTggZm9yIHByZXZpb3VzbHkgdW50cmVhdGVkIGFkdWx0cyB3aXRoIGFkdmFuY2VkIHN0YWdlIGNITCBhbmQgaXMgdGhlIG9ubHkgZmlyc3QtbGluZSByZWdpbWVuIHRoYXQgaGFzIGJlZW4gYXBwcm92ZWQgaW4gb3ZlciA0MCB5ZWFycyBmb3IgYWR2YW5jZWQgY0hMICgiRkRBIEFwcHJvdmVzIEJyZW50dXhpbWFiIFZlZG90aW4gRm9yIFByZXZpb3VzbHkgVW50cmVhdGVkIFNhbGNsIEFuZCBDRCIpLiBBZGNldHJpcyBpcyBhIHRhcmdldGVkIGFudGktQ0QzMCBhbnRpYm9keeKAk2RydWcgY29uanVnYXRlIHRoYXQgdGFrZXMgYWR2YW50YWdlIG9mIHRoZSBmYWN0IHRoYXQgSFJTIGNlbGxzIHR5cGljYWxseSBleHByZXNzIENEMzAgaW4gSEwgY2FzZXMgKEFicmFtc29uIGV0IGFsLikuIFRyZWF0aW5nIHdpdGggQStBVkQgYXZvaWRzIGJsZW9teWNpbiB0aGVyZWJ5IGVsaW1pbmF0ZXMgdGhlIHJpc2tzIGFzc29jaWF0ZWQgd2l0aCBibGVvbXljaW4gb2YgZGV2ZWxvcGluZyBsdW5nIHByb2JsZW1zIGFuZCB0aGUgcmlza3MgYXNzb2NpYXRlZCB3aXRoIHJhZGlhdGlvbiAoQWJyYW1zb24gZXQgYWwuKS4KCiMjIyBDdXJyZW50IENvbXBldGl0b3IgV2Vha25lc3NlcwpSYWRpYXRpb24sIGxpa2UgY2hlbW90aGVyYXB5LCByZWR1Y2VzIHRoZSBibG9vZCBjZWxsIGNvdW50cyBqZW9wYXJkaXppbmcgdGhlIGltbXVuZSBzeXN0ZW0gYW5kIG1ha2luZyBwYXRpZW50cyBtb3JlIHN1c2NlcHRpYmxlIHRvIGluZmVjdGlvbnMgc3VjaCBhcyBIZXJwZXMgKEhvZGdraW4gTHltcGhvbWEpLiBBbHNvLCBkZXBlbmRpbmcgb24gd2hhdCBib2R5IHBhcnRzIGFyZSByYWRpYXRlZCwgcGF0aWVudHMgY2FuIGV4cGVyaWVuY2Ugc2lkZSBlZmZlY3RzIHN1Y2ggYXMgZmF0aWd1ZSwgZHJ5IG1vdXRoLCBoYWlyIGxvc3MsIGx1bXAgaW4gdGhlIHRocm9hdCwgYW5kIGNoYW5nZXMgaW4gdGFzdGUuIFdoZW4gcmFkaWF0aW9uIGFsb25lIGlzIHVzZWQgYXMgYSBmaXJzdC1saW5lIHRyZWF0bWVudCwgdGhlIGNoYW5jZXMgb2YgZ2V0dGluZyBzZWNvbmRhcnkgY2FuY2VycyAobW9zdCBjb21tb25seSBicmVhc3QgYW5kIGx1bmcgY2FuY2VyKSBhcmUgaGlnaGVyLiBBZGRpdGlvbmFsbHksIHJhZGlhdGlvbiBtaXhlZCB3aXRoIGJsZW9teWN5aW4gY2FuIGRhbWFnZSB0aGUgbHVuZ3MgKEhvZGdraW4gTHltcGhvbWEpLiBXaGVuIGNvbnNpZGVyaW5nIHRyZWF0bWVudCBvcHRpb25zLCBwaHlzaWNpYW5zIGhhdmUgdG8gb3V0d2VpZ2ggdGhlIHJpc2tzIG9mIHNlY29uZGFyeSBjYW5jZXJzIGFuZCBpbmZlY3Rpb25zIHdpdGggdGhlIGJlbmVmaXRzIG9mIGhpZ2hlciBjdXJlIHJhdGVzLiBGb3IgZXhhbXBsZSwgaWYgYSB3b21hbiBpcyB1bmRlciAzMCB5ZWFycyBvbGQsIGhhcyBmYW1pbGlhbCBoaXN0b3J5IG9mIGJyZWFzdCBjYW5jZXIgYW5kIHRoZSByYWRpYXRpb24gd291bGQgcmVxdWlyZSB0cmVhdG1lbnQgb2YgYnJlYXN0IHRpc3N1ZSwgZG9pbmcgY2hlbW90aGVyYXB5IGNvbWJpbmF0aW9ucyBhbG9uZSB3b3VsZCBiZSBhIHZpYWJsZSBvcHRpb24uIFNpbWlsYXJseSwgaWYgYSBwYXRpZW50IGhhcyBhbiBleHRlbnNpdmUgaGlzdG9yeSBvZiBzbW9raW5nIG9yIGNhbm5vdCBxdWl0IHNtb2tpbmcsIHJhZGlhdGlvbiB3aXRoIGNoZW1vdGhlcmFwaWVzIGNvbnRhaW5pbmcgYWxreWxhdGluZyBhZ2VudHMgc2hvdWxkIG5vdCBiZSBnaXZlbiBiZWNhdXNlIHRoZSByaXNrIG9mIHNlY29uZGFyeSBsdW5nIGNhbmNlciBpcyAyNSB0byA0MCB0aW1lcyBncmVhdGVyIChIb2Rna2luIEx5bXBob21hKS4KCkFCVkQgaGFzIGEgZ3JlYXRlciB0aGFuIDkwJSByaXNrIG9mIGVtZXNpcyAodm9tbWl0aW5nKSAoQ2FuZWxsb3MsIGFuZCBORykuIERveG9ydWJpY2luIGlzIHRoZSBnZW5lcmljIG5hbWUgZm9yIFBmaXplcidzIEFkcmlhbXljaW4uIERveG9ydWJpY2luIGlzIGEgY3l0b3RveGljIGNoZW1vdGhlcmFweSwgYW50aHJhY3ljbGluZSBhbnRpYmlvdGljIGRydWcgdGhhdCBpcyBnaXZlbiB2aWEgYW4gSVYgaW5qZWN0aW9uIGFuZCBpcyB2ZXNpY2FudCwgbWVhbmluZyBpdCBjYXVzZXMgc2V2ZXJlIHRpc3N1ZSBkYW1hZ2UgaWYgaXQgZXNjYXBlcyB0aGUgdmVpbiAoQ2FuY2VyKS4gT25lIG9mIHRoZSBwcm9ibGVtcyB3aXRoIERveG9ydWJpY2luIGlzIHRoYXQgaXMgbG93ZXJzIHRoZSB3aGl0ZSBhbmQgcmVkIGJsb29kIGNvdW50cyBzbyBwYXRpZW50cyBhcmUgc3VzY2VwdGlibGUgdG8gaW5mZWN0aW9ucywgYW5lbWlhIGFuZC9vciBibGVlZGluZy4gQWx0aG91Z2ggdHJlYXRpbmcgcGF0aWVudHMgd2l0aCBjaGVtb3RoZXJhcHkgcmVkdWNlcyBibG9vZCBjZWxsIGNvdW50LCBlYXJseSBzdGFnZSBwYXRpZW50cyBoYXZlIGEgaGlnaCBjdXJlIHJhdGUgc28gcGF0aWVudHMgYXJlIG5vdCBkaXNjb250aW51ZWQgZnJvbSB0aGVpciB0cmVhdG1lbnRzLCByYXRoZXIgdGhleSBhcmUgc3VwcGxlbWVudGVkIHdpdGggYmxvb2QgYW5kIHBsYXRlbGV0IHRyYW5zZnVzaW9ucy4gR3JhbnVsb2N5dGUtY29sb255IHN0aW11bGF0aW5nIGZhY3RvciAoRy1DU0YpIGNhbiBiZSBnaXZlbiB0byBwYXRpZW50cyB0byBpbmNyZWFzZSB3aGl0ZSBibG9vZCBjZWxsIGNvdW50cyBhbmQgcHJldmVudCBpbmZlY3Rpb25zLCBidXQgRy1DU0YgaGFzIGEgbmVnYXRpdmUgaW50ZXJhY3Rpb24gd2l0aCBCbGVvbXljaW4gc28gaXQgY2Fu4oCZdCBiZSBnaXZlbiB0byBwYXRpZW50cyByZWNlaXZpbmcgQUJWRCBhbmQgZG9zZSBlc2NhbGF0ZWQgQkVBQ09QUC4gQmxlb215Y2luIGlzIHRoZSBnZW5lcmljIG5hbWUgZm9yIEJyaXN0b2wtTXllcnMnIEJsZW5veGFuZS4gQmxlb215Y2luIGlzIGFsc28gYSBjaGVtb3RoZXJhcHkgYW5kIGlzIGdpdmVuIHZpYSBlaXRoZXIgSVYgb3IgaW50cmFwbGV1cmFsbHkgKENhbmNlcikuIEJsZW9teWNpbiBjYXVzZXMgaGFpciBsb3NzIGFuZCBza2luIHJlYWN0aW9ucyBpbiBhYm91dCAzMCUgb2YgcGF0aWVudHMgYW5kIGx1bmcgcHJvYmxlbXMgaW4gMTAtMjklIG9mIHBhdGllbnRzIChDYW5jZXIpLiBURVZBIHNlbGxzIGEgZ2VuZXJpYyBibGVvbXljaW4uIFZpbmJsYXN0aW5lIGlzIHRoZSBnZW5lcmljIG5hbWUgZm9yIEFsa2FiYW4tQVEgYW5kIFZlbGJhbiBhbmQgaXQgaXMgYWxzbyBhIHZlc2ljYW50IHRoYXQgY2FuIGFmZmVjdCBuZXJ2ZSB0aXNzdWUgKEhvZGdraW4gTHltcGhvbWEgYW5kIENhbmNlcikuIERhY2FyYmF6aW5lIGlzIHRoZSBnZW5lcmljIG5hbWUgZm9yICBEVElDLURvbWUgYW5kIGl0IGlzIGFuIGlycml0YW50IGNoZW1vdGhlcmFweSBkcnVnLiBHcmVhdGVyIHRoYW4gMzAlIG9mIHBhdGllbnQgdGFraW5nIERhY2FyYmF6aW5lIGV4cGVyaWVuY2UgbG93IGJsb29kIGNvdW50cywgYnVybmluZyBzZW5zYXRpb24sIGVsZXZhdGVkIGxpdmVyIGVuenltZXMsIGFuZCBuYXVzZWEvdm9tbWl0aW5nIChDYW5jZXIpLiAKCkJFQUNPUFAgaGFzIEJsZW9teWNpbiBhbmQgQWRyaWFteWNpbiBsaWtlIEFCVkQsIGJ1dCBpdCBhbHNvIGFkZHMgRXRvcG9zaWRlLCBDeWNsb3Bob3NwaGFtaWRlLCBWaW5jcmlzdGluZSwgUHJvY2FyYmF6aW5lLCBhbmQgUHJlZG5pc29uZS4gRXRvcG9zaWRlIGlzIHRoZSBnZW5lcmljIG5hbWUgZm9yIFRvcG9zYXIsIFZlUGVzaWQsIGFuZCBFdG9wb3Bob3MgYW5kIGlzIGEgdG9wb2lzb21lcmFzZSBJSSBpbmhpYml0b3IgYXZhaWxhYmxlIGluIHRhYmxldCBmb3JtLiBUaGlzIGluaGliaXRvciBoYXMgYW4gaW5jcmVhc2VkIGRlbGF5ZWQgcmlzayBvZiBkZXZlbG9waW5nIGxldWtlbWlhIChDYW5jZXIpLiBDeWNsb3Bob3NwaGFtaWRlIGlzIHRoZSBnZW5lcmljIG5hbWUgZm9yIEN5dG94YW4gb3IgTmVvc2FyIGFuZCBpcyBhbiBhbGt5bGF0aW5nIGFnZW50IHRoYXQgYWxzbyBpcyBhdmFpbGFibGUgaW4gdGFibGV0IGZvcm0uIEhvd2V2ZXIsIHRoaXMgYWdlbnQgaGFzIGFuIGluY3JlYXNlZCByaXNrIG9mIGRldmVsb3BpbmcgbGV1a2VtaWEgb3IgbHVuZyBjYW5jZXIgaWYgY29tYmluZWQgd2l0aCBSVCAoQ2FuY2VyIGFuZCBIb2Rna2luIEx5bXBob21hKS4gVmluY3Jpc3RpbmUgaXMgdGhlIGdlbmVyaWMgbmFtZSBmb3IgT25jb3ZpbiBvciBWaW5jYXNhciBQZnMgYW5kIGlzIGEgdmVzaWNhbnQgdGhhdCBjYW4gcmVzdWx0IGluIGhhaXIgbG9zcywgbG93IGJsb29kIGNlbGwgY291bnRzLCBhbmQgcGVyaXBoZXJhbCBuZXVyb3BhdGh5IChDYW5jZXIpLiBUZXZhIG9mZmVycyBhIGdlbmVyaWMgY2FsbGVkIFZpbmNhc2FyIFBGUy4gUHJvY2FyYmF6aW5lIGlzIGEgZ2VuZXJpYyBuYW1lIGZvciBNYXR1bGFuZSBhbmQgaXMgYW5vdGhlciBhbGt5bGF0aW5nIGFnZW50IHRoYXQgaXMgdGFrZW4gaW4gY2FwdXN1bGUgZm9ybS4gTGlrZSBjeWNsb3Bob3NwaGFtaWRlLCBwcm9jYXJiYXppbmUgY2FycmllcyBhIHJpc2sgb2YgZGV2ZWxvcGluZyBzZWNvbmRhcnkgY2FuY2Vycy4gUHJlZG5pc29uZSBpcyBhIGdsdWNvY29ydGljb3N0ZXJvaWQgZ2VuZXJpYyBuYW1lIGZvciBEZWx0YXNvbmUsIExpcXVpZCBQcmVkLCBNZXRpY29ydGVuLCBvciBPcmFzb25lLiBUZXZhIGFsc28gb2ZmZXJzIGEgZ2VuZXJpYyBQcmVkbmlzb25lLiBQb3RlbnRpYWwgc2lkZSBlZmZlY3RzIGluY2x1ZGUgaW5jcmVhc2VkIGJsb29kIHN1Z2FyIGxldmVscywgY2F0YXJhY3RzLCBhbmQgYm9uZSB0aGlubmluZyAoQ2FuY2VyKS4gRHVlIHRvIHRoZSBpbmNyZWFzZWQgcmlza3Mgb2YgZGV2ZWxvcGluZyBzZWNvbmRhcnkgY2FuY2VycywgQkVBQ09QUCBpcyBub3QgcHJlZmVycmVkIG92ZXIgQUJWRC4gSG93ZXZlciwgQkVBQ09QUCBkb2VzIGhhdmUgb3B0aW9ucyB0byB0YWtlIHNvbWUgb2YgdGhlIGNoZW1vdGhlcmFwaWVzIG9yYWxseSB3aGljaCBtYXkgbWFrZSBpdCBwcmVmZXJhYmxlIHRvIGNlcnRhaW4gcGF0aWVudCBwb3B1bGF0aW9ucy4gCgpJQ0UgaXMgc2Vjb25kIGxpbmUgY2hlbW90aGVyYXB5IHRyZWF0bWVudCBmb3IgSEwsIG1lYW5pbmcgaXQgY2FuIGJlIHVzZWQgZm9yIHBhdGllbnRzIHdobyBoYXZlIG5vdCByZXNwb25kZWQgdG8gY3VycmVudCB0cmVhdG1lbnQgKHJlZnJhY3RpdmUpIG9yIGhhdmUgZ290dGVuIEhMIGFnYWluIChyZWxhcHNlZCkuIElmb3NmYW1pZGUgaXMgYSBnZW5lcmljIG5hbWUgZm9yIElmbGV4IGFuZCBpcyBhbiBhbGt5bGF0aW5nIGFnZW50IHRoYXQgY2FycmllcyBhIHJpc2sgb2YgZGV2ZWxvcGluZyBsZXVrZW1pYSwgYWZmZWN0aW5nIGZlcnRpbGl0eSwgYW5kIGhhdmluZyBjZW50cmFsIG5ldXJvdG94aWNpdHkgKENhbmNlcikuIENhcmJvcGxhdGluIGlzIGdlbmVyaWMgbmFtZSBmb3IgUGFyYXBsYXRpbiBhbmQgaXMgYWxzbyBhIGFsa3lsYXRpbmcgYWdlbnQgdGhhdCBjYW4gY2F1c2UgbmV1cm9wYXRoeSwgbmV1cm90b3hpY2l0eSwgY2FyZGlvdmFzY3VsYXIgZXZlbnRzLCBhbmQgbmVwaHJvdG94aWNpdHkgKENhbmNlcikuIFRldmEgaGFzIGdlbmVyaWNzIGZvciBhbGwgMyBkcnVncy4gCgpUaGUgQklDRSByZXN1bHRzIG9mIHRoZSBwaGFzZSBJSSB0cmlhbCBzaG93ZWQgdGhhdCBwYXRpZW50cyB0cmVhdGVkIHdpdGggQklDRSBoYWQgZ3JlYXRlciBkZWNyZWFzZSBpbiBuZXV0cm9waGlscywgcGxhdGVsZXQgY291bnRzLCBhbmQgZXhwZXJpZW5jZWQgbW9yZSBuZXVyb3BhdGh5IHRoYW4gdGhvc2UgdHJlYXRlZCB3aXRoIElDRS4gCgpBZGNldHJpcyBpcyBhIG5ldyBjbGFzcyBvZiB0cmVhdG1lbnQgYW5kIGFsdGhvdWdoIGl0IGlzIG1vcmUgdGFyZ2V0ZWQsIGl0IHN0aWxsIGhhcyBoaWdoZXIgdG94aWNpdHkgZWZmZWN0cyB0aGFuIEFWRCBhbG9uZSBzbyBpcyBub3QgYXBwcm9wcmlhdGUgdG8gdXNlIGluIGVhcmx5IHN0YWdlIGZhdm9yYWJsZSBwYXRpZW50cyAoQWJyYW1zb24gZXQgYWwuKS4gV2hlbiBjb21wYXJlZCB0byBwYXRlaW50cyB0cmVhdGVkIHdpdGggQUJWRCwgQStBVkQgcGF0aWVudHMgaGFkIGhpZ2hlciBwZXJpcGhlcmFsIG5ldXJvcGF0aHkgYW5kIG5ldXRyb3BlbmljIGZldmVycyAoQWJyYW1zb24gZXQgYWwuKS4gQWxzbywgaW1tdW5vdGhlcmFwaWVzIChBZGNldHJpcywgT3BkaXZvLCBSaXR1eGltYWIsIGV0Yy4pIGhhdmUgdGhlIHJpc2sgb2YgY3JlYXRpbmcgdW5jb250cm9sbGFibHkgaGlnaHRlbmVkIGltbXVuZSByZXNwb25zZXMgbGVhZGluZyB0byBjeXRva2luZSBzdG9ybXMuCgpTdGVtIGNlbGwgdHJhbnNwbGFudHMgYXJlIHZlcnkgaGlnaCByaXNrIGVzcGVjaWFsbHkgd2hlbiBjb21iaW5lZCB3aXRoIGhpZ2ggZG9zZSBjaGVtb3RoZXJhcHkgb3IgcmFkaWF0aW9uIGFuZCBwYXRpZW50cyBhcmUgcHJvbmUgdG8gaW5mZWN0aW9ucyBhbmQgbGl2ZXIgZGFtYWdlLiAKCiMjIE9uZ29pbmcgUmVzZWFyY2gKT3ZlcmFsbCBITCBpcyBhIHZlcnkgY3VyYWJsZSBkaXNlYXNlLCBlc3BlY2lhbGx5IGluIGVhcmx5IHN0YWdlcy4gVGhlIGZ1dHVyZSBvZiB0cmVhdG1lbnRzIG11c3QgdGhlbiBiZSBkaXJlY3RlZCB0byBpbmNyZWFzaW5nIHRoZSBjdXJlIHJhdGVzIGluIHRoZSBvdGhlciBzdWJwb3B1bGF0aW9ucyBzdWNoIGFzIGFkdmFuY2VkIGRpc2Vhc2UsIHVuZmF2b3JhYmxlIGRpc2Vhc2UsIHJlZnJhY3Rvcnkgb3IgcmVsYXBzZSBkaXNlYXNlLiBXaXRoIHNvIG1hbnkgdG9vbHMgKGNoZW1vdGhlcmFwaWVzLCByYWRpYXRpb24sIGltbXVub3RoZXJhcGllcywgdHJhbnNwbGFudHMpIHRoZSBtb3N0IHN1Y2Nlc3NmdWwgZHJ1Z3Mgd2lsbCBiZSB0aG9zZSB0aGF0IG1vcmUgc3BlY2lmaWNhbGx5IGRpc2NyaW1pbmF0ZSBhZ2FpbnN0IHRoZSBjYW5jZXIgY2VsbHMgYW5kIGhhdmUgdGhlIGxlYXN0IGN5dG94aWMgZWZmZWN0cyBvbiBuZWlnaGJvcmluZyBvcmdhbnMvdGlzc3VlcyBhbmQgZnVydGhlciBkZWNyZWFzZSB0aGUgcmF0ZSBvZiBkZXZlbG9waW5nIGEgc2Vjb25kYXJ5IGNhbmNlciBvciByZWxhcHNpbmcuIEFjY29yZGluZyB0byBjbGluaWNhbCB0cmlhbHMuZ292LCB0aGVyZSBhcmUgY3VycmVudGx5IDEyNSBhY3RpdmUgYnV0IG5vdCByZWNydWl0aW5nIGNsaW5pY2FsIHRyaWFscyBhbmQgMTMxIHJlY3J1aXRpbmcgb3IgZW5yb2xsaW5nIHRyaWFscy4gTWFueSBvZiB0aGVtIGFyZSB0ZXN0aW5nIHdoaWNoIHRoZXJhcGV1dGljIGNvbWJpbmF0aW9ucyB3b3JrIGJlc3QuIFRoZXJlIHNlZW1zIHRvIGJlIGEgbGFyZ2UgZm9jdXMgb24gTml2b2x1bWFiLCBCcmVudHV4aW1hYiwgYW5kIHJlbGFwc2UuIENpdHkgb2YgSG9wZSBoYXMgYSBwaGFzZSAyIG5ldyBkcnVnIGZvciByZWxhcHNlZCBjSEwgcGF0aWVudHMgdGhhdCBpcyBhbiBhbnRpYm9keSBkcnVnIGNvbmp1Z2F0ZSBkaXJlY3RlZCBhZ2FpbnN0IENEMjUuQWx0aG91Z2ggbm90IG1hbnkgUlMgY2VsbHMgZXhwcmVzcyBDRDI1LCBpdCBjYW4gYmUgZm91bmQgb24gdGhlIFQgY2VsbHMgc3Vycm91bmRpbmcgSFJTIGNlbGxzLiBOSUNFIChOaXZvbHVtYWIsIGlmb3NmYW1pZGUsIGNhcmJvcGxhdGluLCBldG9wb3NpZGUpIGlzIGN1cnJlbnRseSBhIHBoYXNlIDIgY2xpbmljYWwgdHJpYWwgc3BvbnNvcmVkIGJ5IENpdHkgb2YgSG9wZSBpbiBjb2xsYWJvcmF0aW9uIHdpdGggdGhlIE5hdGlvbmFsIENhbmNlciBJbnN0aXR1dGUgYW5kIGl0IGlzIGN1cnJlbnRseSByZWNydWl0aW5nIHBhdGllbnRzLiBJdCBpcyBleHBlY3RlZCB0byBlbnJvbGwgNjEgcGF0aWVudHMgYW5kIHdhbnRzIHRvIHRlc3QgdGhlcmFwdWV0aWMgYXMgc2Vjb25kLWxpbmUgdHJlYXRtZW50IGJ5IGFkZGluZyBhbnRpIFBELTEgYW50aWJvZHkgdG8gSUNFIGNoZW1vdGhlcmFweSBwcmlvciB0byBhdXRvbG9nb3VzIGhlbWFwb2V0aWMgc3RlbSBjZWxsIHRyYW5zcGxhbnQuIFBlcnNvbmFsbHksIEkgc2VlIHdoeSB0aGlzIHRoZXJhcHVldGljIHdvdWxkIGJlIHVzZWQgYXMgc2Vjb25kLWxpbmUgdHJlYXRtZW50IGJlY3Vhc2UgaXQgd291bGQgaW52b2x2ZSB0b28gbXVjaCBjeXRvdG94aWNpdHkgYW5kIHJpc2sgZm9yIGEgZmlyc3QgbGluZSB0cmVhdG1lbnQuIEltbXVub3RoZXJhcGllcyBjYXJyeSB0aGUgcmlzayBvZiBnZW5lcmF0aW5nIGEgY3l0b2tpbmUgc3Rvcm0sIGNoZW1vdGhlcmFwaWVzIGxvd2VyIG9yIHdlYWtlbiB0aGUgaW1tdW5lIHN5c3RlbSBhbmQgc3RlbSBjZWxsIHRyYW5zcGxhbnRzIGNhcnJ5IHJpc2sgb2YgaW5mZWN0aW9uIGFuZCBub3QgZ2V0dGluZyBjb21wbGV0ZWx5IHJpZCBvZiBjYW5jZXIgc3RlbSBjZWxscy4KCiMjIFJlZmVyZW5jZXMKCkFicmFtc29uLCBKZXJlbXkgUy4gZXQgYWwuICJCcmVudHV4aW1hYiBWZWRvdGluLCBEb3hvcnViaWNpbiwgVmluYmxhc3RpbmUsIEFuZCBEYWNhcmJhemluZSBGb3IgTm9uYnVsa3kgTGltaXRlZC1TdGFnZSBDbGFzc2ljYWwgSG9kZ2tpbiBMeW1waG9tYSIuIEJsb29kLCB2b2wgMTM0LCBuby4gNywgMjAxOSwgcHAuIDYwNi02MTMuIEFtZXJpY2FuIFNvY2lldHkgT2YgSGVtYXRvbG9neSwgZG9pOjEwLjExODIvYmxvb2QuMjAxOTAwMTI3Mi4gQWNjZXNzZWQgMzAgQXByIDIwMjAuCgoiQWR1bHQgSG9kZ2tpbiBMeW1waG9tYSBUcmVhdG1lbnQgKFBEUcKuKeKAk1BhdGllbnQgVmVyc2lvbiIuIE5hdGlvbmFsIENhbmNlciBJbnN0aXR1dGUsIDIwMjAsIGh0dHBzOi8vd3d3LmNhbmNlci5nb3YvdHlwZXMvbHltcGhvbWEvcGF0aWVudC9hZHVsdC1ob2Rna2luLXRyZWF0bWVudC1wZHEuIEFjY2Vzc2VkIDMwIEFwciAyMDIwLgoKQ2FuY2VyLCBDbGV2ZWxhbmQuICJCbGVvbXljaW4gLSBEcnVnIEluZm9ybWF0aW9uIC0gQ2hlbW9jYXJlIi4gQ2hlbW9jYXJlLkNvbSwgMjAyMCwgaHR0cDovL2NoZW1vY2FyZS5jb20vY2hlbW90aGVyYXB5L2RydWctaW5mby9ib3J0ZXpvbWliLmFzcHguIEFjY2Vzc2VkIDMwIEFwciAyMDIwLgoKQ2FuY2VyLCBDbGV2ZWxhbmQuICJCb3J0ZXpvbWliIC0gRHJ1ZyBJbmZvcm1hdGlvbiAtIENoZW1vY2FyZSIuIENoZW1vY2FyZS5Db20sIDIwMjAsIGh0dHA6Ly9jaGVtb2NhcmUuY29tL2NoZW1vdGhlcmFweS9kcnVnLWluZm8vYmxlb215Y2luLmFzcHguIEFjY2Vzc2VkIDMwIEFwciAyMDIwLgoKQ2FuY2VyLCBDbGV2ZWxhbmQuICJDYXJib3BsYXRpbiAtIENoZW1vdGhlcmFweSBEcnVncyAtIENoZW1vY2FyZSIuIENoZW1vY2FyZS5Db20sIDIwMjAsIGh0dHA6Ly9jaGVtb2NhcmUuY29tL2NoZW1vdGhlcmFweS9kcnVnLWluZm8vY2FyYm9wbGF0aW4uYXNweC4gQWNjZXNzZWQgMzAgQXByIDIwMjAuCgpDYW5jZXIsIENsZXZlbGFuZC4gIkN5Y2xvcGhvc3BoYW1pZGUgLSBEcnVnIEluZm9ybWF0aW9uIC0gQ2hlbW9jYXJlIi4gQ2hlbW9jYXJlLkNvbSwgMjAyMCwgaHR0cDovL2NoZW1vY2FyZS5jb20vY2hlbW90aGVyYXB5L2RydWctaW5mby9jeWNsb3Bob3NwaGFtaWRlLmFzcHguIEFjY2Vzc2VkIDMwIEFwciAyMDIwLgoKQ2FuY2VyLCBDbGV2ZWxhbmQuICJEYWNhcmJhemluZSAtIERydWcgSW5mb3JtYXRpb24gLSBDaGVtb2NhcmUiLiBDaGVtb2NhcmUuQ29tLCAyMDIwLCBodHRwOi8vY2hlbW9jYXJlLmNvbS9jaGVtb3RoZXJhcHkvZHJ1Zy1pbmZvL2RhY2FyYmF6aW5lLmFzcHguIEFjY2Vzc2VkIDMwIEFwciAyMDIwLgoKQ2FuY2VyLCBDbGV2ZWxhbmQuICJEb3hvcnViaWNpbiAoQWRyaWFteWNpbiwgUnViZXgpIENoZW1vdGhlcmFweSBEcnVnIEluZm9ybWF0aW9uIi4gQ2hlbW9jYXJlLkNvbSwgMjAyMCwgaHR0cDovL2NoZW1vY2FyZS5jb20vY2hlbW90aGVyYXB5L2RydWctaW5mby9kb3hvcnViaWNpbi5hc3B4LiBBY2Nlc3NlZCAzMCBBcHIgMjAyMC4KCkNhbmNlciwgQ2xldmVsYW5kLiAiRXRvcG9zaWRlIC0gQ2hlbW90aGVyYXB5IERydWdzIC0gQ2hlbW9jYXJlIi4gQ2hlbW9jYXJlLkNvbSwgMjAyMCwgaHR0cDovL2NoZW1vY2FyZS5jb20vY2hlbW90aGVyYXB5L2RydWctaW5mby9ldG9wb3NpZGUuYXNweC4gQWNjZXNzZWQgMzAgQXByIDIwMjAuCgpDYW5jZXIsIENsZXZlbGFuZC4gIklmb3NmYW1pZGUgLSBDaGVtb3RoZXJhcHkgRHJ1Z3MgLSBDaGVtb2NhcmUiLiBDaGVtb2NhcmUuQ29tLCAyMDIwLCBodHRwOi8vY2hlbW9jYXJlLmNvbS9jaGVtb3RoZXJhcHkvZHJ1Zy1pbmZvL2lmb3NmYW1pZGUuYXNweC4gQWNjZXNzZWQgMzAgQXByIDIwMjAuCgpDYW5jZXIsIENsZXZlbGFuZC4gIlByb2NhcmJhemluZSAtIENoZW1vdGhlcmFweSBEcnVncyAtIENoZW1vY2FyZSIuIENoZW1vY2FyZS5Db20sIDIwMjAsIGh0dHA6Ly9jaGVtb2NhcmUuY29tL2NoZW1vdGhlcmFweS9kcnVnLWluZm8vcHJvY2FyYmF6aW5lLmFzcHguIEFjY2Vzc2VkIDMwIEFwciAyMDIwLgoKQ2FuY2VyLCBDbGV2ZWxhbmQuICJQcmVkbmlzb25lIC0gQ2hlbW90aGVyYXB5IERydWdzIC0gQ2hlbW9jYXJlIi4gQ2hlbW9jYXJlLkNvbSwgMjAyMCwgaHR0cDovL2NoZW1vY2FyZS5jb20vY2hlbW90aGVyYXB5L2RydWctaW5mby9wcmVkbmlzb25lLmFzcHguIEFjY2Vzc2VkIDMwIEFwciAyMDIwLgoKQ2FuY2VyLCBDbGV2ZWxhbmQuICJWaW5ibGFzdGluZSAtIENoZW1vdGhlcmFweSBEcnVncyAtIENoZW1vY2FyZSIuIENoZW1vY2FyZS5Db20sIDIwMjAsIGh0dHA6Ly9jaGVtb2NhcmUuY29tL2NoZW1vdGhlcmFweS9kcnVnLWluZm8vVmluYmxhc3RpbmUuYXNweC4gQWNjZXNzZWQgMzAgQXByIDIwMjAuCgpDYW5jZXIsIENsZXZlbGFuZC4gIlZpbmNyaXN0aW5lIC0gQ2hlbW90aGVyYXB5IERydWdzIC0gQ2hlbW9jYXJlIi4gQ2hlbW9jYXJlLkNvbSwgMjAyMCwgaHR0cDovL2NoZW1vY2FyZS5jb20vY2hlbW90aGVyYXB5L2RydWctaW5mby92aW5jcmlzdGluZS5hc3B4LiBBY2Nlc3NlZCAzMCBBcHIgMjAyMC4KCkNhbmVsbG9zLCBHZW9yZ2UsIGFuZCBBbmRyZWEgTkcuICJPdmVydmlldyBPZiBUaGUgVHJlYXRtZW50IE9mIENsYXNzaWMgSG9kZ2tpbiBMeW1waG9tYSBJbiBBZHVsdHMiLiBXb2x0ZXJzIEtsdXdlciwgMjAyMCwgcHAuIDEtMjQuIFVwdG9kYXRlLCBodHRwOi8vd3d3LnVwdG9kYXRlLmNvbS9jb250ZW50cy9vdmVydmlldy1vZi10aGUtdHJlYXRtZW50LW9mLWNsYXNzaWMtaG9kZ2tpbi1seW1waG9tYS4gQWNjZXNzZWQgMzAgQXByIDIwMjAuCgoiRmFjdHMgQW5kIFN0YXRpc3RpY3MgfCBMZXVrZW1pYSBBbmQgTHltcGhvbWEgU29jaWV0eSIuIExscy5PcmcsIDIwMjAsIGh0dHBzOi8vd3d3Lmxscy5vcmcvZmFjdHMtYW5kLXN0YXRpc3RpY3MvZmFjdHMtYW5kLXN0YXRpc3RpY3Mtb3ZlcnZpZXcvZmFjdHMtYW5kLXN0YXRpc3RpY3MuIEFjY2Vzc2VkIDMwIEFwciAyMDIwLgoKIkZEQSBBcHByb3ZlcyBCcmVudHV4aW1hYiBWZWRvdGluIEZvciBQcmV2aW91c2x5IFVudHJlYXRlZCBTYWxjbCBBbmQgQ0QiLiBVLlMuIEZvb2QgQW5kIERydWcgQWRtaW5pc3RyYXRpb24sIDIwMjAsIGh0dHBzOi8vd3d3LmZkYS5nb3YvZHJ1Z3MvZmRhLWFwcHJvdmVzLWJyZW50dXhpbWFiLXZlZG90aW4tcHJldmlvdXNseS11bnRyZWF0ZWQtc2FsY2wtYW5kLWNkMzAtZXhwcmVzc2luZy1wdGNsLiBBY2Nlc3NlZCAzMCBBcHIgMjAyMC4KCkhvZGdraW4gTHltcGhvbWEuIFRoZSBMZXVrZW1pYSAmIEx5bXBob21hIFNvY2lldHksIDIwMTgsIHBwLiA0LTUxLCBodHRwczovL3d3dy5sbHMub3JnL3NpdGVzL2RlZmF1bHQvZmlsZXMvZmlsZV9hc3NldHMvUFM1N19Ib2Rna2luX0x5bXBob21hMjAxOC5wZGYuIEFjY2Vzc2VkIDMwIEFwciAyMDIwLgoKIkhvZGdraW4gTHltcGhvbWEgLSBDYW5jZXIgU3RhdCBGYWN0cyIuIFNFRVIsIDIwMjAsIGh0dHBzOi8vc2Vlci5jYW5jZXIuZ292L3N0YXRmYWN0cy9odG1sL2hvZGcuaHRtbC4gQWNjZXNzZWQgMzAgQXByIDIwMjAuCgoiTkNDTiBHdWlkZWxpbmVzIFZlcnNpb24gMi4yMDIwIEhvZGdraW4gTHltcGhvbWEiLiAyLjIwMjAsIDIwMjAsIHBwLiBNUy0yIC1NUy0yNS4sIEFjY2Vzc2VkIDMwIEFwciAyMDIwLgoKIldoYXQgSXMgSG9kZ2tpbiBMeW1waG9tYT8iLiBDYW5jZXIuT3JnLCAyMDIwLCBodHRwczovL3d3dy5jYW5jZXIub3JnL2NhbmNlci9ob2Rna2luLWx5bXBob21hL2Fib3V0L3doYXQtaXMtaG9kZ2tpbi1kaXNlYXNlLmh0bWwuIEFjY2Vzc2VkIDMwIEFwciAyMDIwLg==