System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact dc5a5d3a794e441d6fb8e745b6d25c0e9eee9592:


0000: 2f 2a 0d 0a 20 2a 20 49 6e 73 74 61 6c 6c 65 72  /*.. * Installer
0010: 2e 63 73 20 2d 2d 0d 0a 20 2a 0d 0a 20 2a 20 57  .cs --.. *.. * W
0020: 72 69 74 74 65 6e 20 62 79 20 4a 6f 65 20 4d 69  ritten by Joe Mi
0030: 73 74 61 63 68 6b 69 6e 2e 0d 0a 20 2a 20 52 65  stachkin... * Re
0040: 6c 65 61 73 65 64 20 74 6f 20 74 68 65 20 70 75  leased to the pu
0050: 62 6c 69 63 20 64 6f 6d 61 69 6e 2c 20 75 73 65  blic domain, use
0060: 20 61 74 20 79 6f 75 72 20 6f 77 6e 20 72 69 73   at your own ris
0070: 6b 21 0d 0a 20 2a 2f 0d 0a 0d 0a 75 73 69 6e 67  k!.. */....using
0080: 20 53 79 73 74 65 6d 3b 0d 0a 75 73 69 6e 67 20   System;..using 
0090: 53 79 73 74 65 6d 2e 43 6f 6c 6c 65 63 74 69 6f  System.Collectio
00a0: 6e 73 2e 47 65 6e 65 72 69 63 3b 0d 0a 75 73 69  ns.Generic;..usi
00b0: 6e 67 20 53 79 73 74 65 6d 2e 44 69 61 67 6e 6f  ng System.Diagno
00c0: 73 74 69 63 73 3b 0d 0a 75 73 69 6e 67 20 53 79  stics;..using Sy
00d0: 73 74 65 6d 2e 45 6e 74 65 72 70 72 69 73 65 53  stem.EnterpriseS
00e0: 65 72 76 69 63 65 73 2e 49 6e 74 65 72 6e 61 6c  ervices.Internal
00f0: 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e  ;..using System.
0100: 49 4f 3b 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  IO;..using Syste
0110: 6d 2e 52 65 66 6c 65 63 74 69 6f 6e 3b 0d 0a 75  m.Reflection;..u
0120: 73 69 6e 67 20 53 79 73 74 65 6d 2e 52 75 6e 74  sing System.Runt
0130: 69 6d 65 2e 43 6f 6d 70 69 6c 65 72 53 65 72 76  ime.CompilerServ
0140: 69 63 65 73 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e  ices;....#if WIN
0150: 44 4f 57 53 0d 0a 75 73 69 6e 67 20 53 79 73 74  DOWS..using Syst
0160: 65 6d 2e 52 75 6e 74 69 6d 65 2e 49 6e 74 65 72  em.Runtime.Inter
0170: 6f 70 53 65 72 76 69 63 65 73 3b 0d 0a 23 65 6e  opServices;..#en
0180: 64 69 66 0d 0a 0d 0a 75 73 69 6e 67 20 53 79 73  dif....using Sys
0190: 74 65 6d 2e 53 65 63 75 72 69 74 79 3b 0d 0a 0d  tem.Security;...
01a0: 0a 23 69 66 20 4e 45 54 5f 32 30 20 7c 7c 20 4e  .#if NET_20 || N
01b0: 45 54 5f 33 35 0d 0a 75 73 69 6e 67 20 53 79 73  ET_35..using Sys
01c0: 74 65 6d 2e 53 65 63 75 72 69 74 79 2e 50 65 72  tem.Security.Per
01d0: 6d 69 73 73 69 6f 6e 73 3b 0d 0a 23 65 6e 64 69  missions;..#endi
01e0: 66 0d 0a 0d 0a 75 73 69 6e 67 20 53 79 73 74 65  f....using Syste
01f0: 6d 2e 54 65 78 74 3b 0d 0a 75 73 69 6e 67 20 53  m.Text;..using S
0200: 79 73 74 65 6d 2e 54 68 72 65 61 64 69 6e 67 3b  ystem.Threading;
0210: 0d 0a 75 73 69 6e 67 20 53 79 73 74 65 6d 2e 57  ..using System.W
0220: 69 6e 64 6f 77 73 2e 46 6f 72 6d 73 3b 0d 0a 75  indows.Forms;..u
0230: 73 69 6e 67 20 53 79 73 74 65 6d 2e 58 6d 6c 3b  sing System.Xml;
0240: 0d 0a 75 73 69 6e 67 20 4d 69 63 72 6f 73 6f 66  ..using Microsof
0250: 74 2e 57 69 6e 33 32 3b 0d 0a 0d 0a 6e 61 6d 65  t.Win32;....name
0260: 73 70 61 63 65 20 53 79 73 74 65 6d 2e 44 61 74  space System.Dat
0270: 61 2e 53 51 4c 69 74 65 0d 0a 7b 0d 0a 20 20 20  a.SQLite..{..   
0280: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
0290: 44 65 6c 65 67 61 74 65 73 0d 0a 20 20 20 20 69  Delegates..    i
02a0: 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67 61 74 65  nternal delegate
02b0: 20 76 6f 69 64 20 54 72 61 63 65 43 61 6c 6c 62   void TraceCallb
02c0: 61 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 73 74  ack(..        st
02d0: 72 69 6e 67 20 6d 65 73 73 61 67 65 2c 20 2f 2a  ring message, /*
02e0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
02f0: 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 20  string category 
0300: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 29 3b  /* in */..    );
0310: 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f  ....    ////////
0320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0360: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 69 6e 74 65 72  ///....    inter
0370: 6e 61 6c 20 64 65 6c 65 67 61 74 65 20 62 6f 6f  nal delegate boo
0380: 6c 20 46 72 61 6d 65 77 6f 72 6b 43 6f 6e 66 69  l FrameworkConfi
0390: 67 43 61 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20  gCallback(..    
03a0: 20 20 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e      string fileN
03b0: 61 6d 65 2c 20 20 20 20 20 20 20 20 20 20 20 2f  ame,           /
03c0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
03d0: 20 73 74 72 69 6e 67 20 69 6e 76 61 72 69 61 6e   string invarian
03e0: 74 4e 61 6d 65 2c 20 20 20 20 20 20 2f 2a 20 69  tName,      /* i
03f0: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 73 74  n */..        st
0400: 72 69 6e 67 20 6e 61 6d 65 2c 20 20 20 20 20 20  ring name,      
0410: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
0420: 2f 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  /..        strin
0430: 67 20 64 65 73 63 72 69 70 74 69 6f 6e 2c 20 20  g description,  
0440: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
0450: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
0460: 79 70 65 4e 61 6d 65 2c 20 20 20 20 20 20 20 20  ypeName,        
0470: 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
0480: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 4e 61 6d       AssemblyNam
0490: 65 20 61 73 73 65 6d 62 6c 79 4e 61 6d 65 2c 20  e assemblyName, 
04a0: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
04b0: 20 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f    string directo
04c0: 72 79 2c 20 20 20 20 20 20 20 20 20 20 2f 2a 20  ry,          /* 
04d0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 6f  in */..        o
04e0: 62 6a 65 63 74 20 63 6c 69 65 6e 74 44 61 74 61  bject clientData
04f0: 2c 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20  ,         /* in 
0500: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c  */..        bool
0510: 20 70 65 72 55 73 65 72 2c 20 20 20 20 20 20 20   perUser,       
0520: 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
0530: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 6f  .        bool wo
0540: 77 36 34 2c 20 20 20 20 20 20 20 20 20 20 20 20  w64,            
0550: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
0560: 20 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77        bool throw
0570: 4f 6e 4d 69 73 73 69 6e 67 2c 20 20 20 20 20 20  OnMissing,      
0580: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
0590: 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 20     bool whatIf, 
05a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
05b0: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
05c0: 62 6f 6f 6c 20 76 65 72 62 6f 73 65 2c 20 20 20  bool verbose,   
05d0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
05e0: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 72 65 66   */..        ref
05f0: 20 62 6f 6f 6c 20 73 61 76 65 64 2c 20 20 20 20   bool saved,    
0600: 20 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a          /* out *
0610: 2f 0d 0a 20 20 20 20 20 20 20 20 72 65 66 20 73  /..        ref s
0620: 74 72 69 6e 67 20 65 72 72 6f 72 20 20 20 20 20  tring error     
0630: 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d        /* out */.
0640: 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20 2f  .    );....    /
0650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
06a0: 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65 67    internal deleg
06b0: 61 74 65 20 62 6f 6f 6c 20 46 72 61 6d 65 77 6f  ate bool Framewo
06c0: 72 6b 52 65 67 69 73 74 72 79 43 61 6c 6c 62 61  rkRegistryCallba
06d0: 63 6b 28 0d 0a 20 20 20 20 20 20 20 20 49 6e 73  ck(..        Ins
06e0: 74 61 6c 6c 65 72 2e 4d 6f 63 6b 52 65 67 69 73  taller.MockRegis
06f0: 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79 2c 20  tryKey rootKey, 
0700: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
0710: 20 20 73 74 72 69 6e 67 20 66 72 61 6d 65 77 6f    string framewo
0720: 72 6b 4e 61 6d 65 2c 20 20 20 20 20 20 20 20 20  rkName,         
0730: 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20       /* in */.. 
0740: 20 20 20 20 20 20 20 56 65 72 73 69 6f 6e 20 66         Version f
0750: 72 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e 2c  rameworkVersion,
0760: 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20            /* in 
0770: 2a 2f 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69  */..        stri
0780: 6e 67 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 2c  ng platformName,
0790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
07a0: 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20  * in */..       
07b0: 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
07c0: 79 2c 20 20 20 20 20 20 20 20 20 20 20 20 20 20  y,              
07d0: 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20      /* in */..  
07e0: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 63 6c 69        object cli
07f0: 65 6e 74 44 61 74 61 2c 20 20 20 20 20 20 20 20  entData,        
0800: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
0810: 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20  /..        bool 
0820: 70 65 72 55 73 65 72 2c 20 20 20 20 20 20 20 20  perUser,        
0830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
0840: 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20   in */..        
0850: 62 6f 6f 6c 20 77 6f 77 36 34 2c 20 20 20 20 20  bool wow64,     
0860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0870: 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20     /* in */..   
0880: 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f       bool throwO
0890: 6e 4d 69 73 73 69 6e 67 2c 20 20 20 20 20 20 20  nMissing,       
08a0: 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f          /* in */
08b0: 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77  ..        bool w
08c0: 68 61 74 49 66 2c 20 20 20 20 20 20 20 20 20 20  hatIf,          
08d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20               /* 
08e0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62  in */..        b
08f0: 6f 6f 6c 20 76 65 72 62 6f 73 65 2c 20 20 20 20  ool verbose,    
0900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0910: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
0920: 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65      ref string e
0930: 72 72 6f 72 20 20 20 20 20 20 20 20 20 20 20 20  rror            
0940: 20 20 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f         /* out */
0950: 0d 0a 20 20 20 20 29 3b 0d 0a 0d 0a 20 20 20 20  ..    );....    
0960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
09a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
09b0: 20 20 20 69 6e 74 65 72 6e 61 6c 20 64 65 6c 65     internal dele
09c0: 67 61 74 65 20 62 6f 6f 6c 20 56 69 73 75 61 6c  gate bool Visual
09d0: 53 74 75 64 69 6f 52 65 67 69 73 74 72 79 43 61  StudioRegistryCa
09e0: 6c 6c 62 61 63 6b 28 0d 0a 20 20 20 20 20 20 20  llback(..       
09f0: 20 49 6e 73 74 61 6c 6c 65 72 2e 4d 6f 63 6b 52   Installer.MockR
0a00: 65 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b  egistryKey rootK
0a10: 65 79 2c 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20  ey, /* in */..  
0a20: 20 20 20 20 20 20 56 65 72 73 69 6f 6e 20 76 73        Version vs
0a30: 56 65 72 73 69 6f 6e 2c 20 20 20 20 20 20 20 20  Version,        
0a40: 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a           /* in *
0a50: 2f 0d 0a 20 20 20 20 20 20 20 20 73 74 72 69 6e  /..        strin
0a60: 67 20 73 75 66 66 69 78 2c 20 20 20 20 20 20 20  g suffix,       
0a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a                /*
0a80: 20 69 6e 2c 20 6f 70 74 69 6f 6e 61 6c 20 2a 2f   in, optional */
0a90: 0d 0a 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c  ..        Instal
0aa0: 6c 65 72 2e 50 61 63 6b 61 67 65 20 70 61 63 6b  ler.Package pack
0ab0: 61 67 65 2c 20 20 20 20 20 20 20 20 20 2f 2a 20  age,         /* 
0ac0: 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 73  in */..        s
0ad0: 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c  tring directory,
0ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0af0: 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20    /* in */..    
0b00: 20 20 20 20 6f 62 6a 65 63 74 20 63 6c 69 65 6e      object clien
0b10: 74 44 61 74 61 2c 20 20 20 20 20 20 20 20 20 20  tData,          
0b20: 20 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d         /* in */.
0b30: 0a 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 70 65  .        bool pe
0b40: 72 55 73 65 72 2c 20 20 20 20 20 20 20 20 20 20  rUser,          
0b50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69              /* i
0b60: 6e 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f  n */..        bo
0b70: 6f 6c 20 77 6f 77 36 34 2c 20 20 20 20 20 20 20  ol wow64,       
0b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0b90: 20 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20   /* in */..     
0ba0: 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d     bool throwOnM
0bb0: 69 73 73 69 6e 67 2c 20 20 20 20 20 20 20 20 20  issing,         
0bc0: 20 20 20 20 20 20 2f 2a 20 69 6e 20 2a 2f 0d 0a        /* in */..
0bd0: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
0be0: 74 49 66 2c 20 20 20 20 20 20 20 20 20 20 20 20  tIf,            
0bf0: 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 69 6e             /* in
0c00: 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 62 6f 6f   */..        boo
0c10: 6c 20 76 65 72 62 6f 73 65 2c 20 20 20 20 20 20  l verbose,      
0c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0c30: 2f 2a 20 69 6e 20 2a 2f 0d 0a 20 20 20 20 20 20  /* in */..      
0c40: 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72    ref string err
0c50: 6f 72 20 20 20 20 20 20 20 20 20 20 20 20 20 20  or              
0c60: 20 20 20 20 20 2f 2a 20 6f 75 74 20 2a 2f 0d 0a       /* out */..
0c70: 20 20 20 20 29 3b 0d 0a 20 20 20 20 23 65 6e 64      );..    #end
0c80: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f  region....    //
0c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
0ce0: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
0cf0: 45 6e 75 6d 65 72 61 74 69 6f 6e 73 0d 0a 20 20  Enumerations..  
0d00: 20 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20 20 20    [Flags()]..   
0d10: 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 49 6e 73   public enum Ins
0d20: 74 61 6c 6c 46 6c 61 67 73 0d 0a 20 20 20 20 7b  tallFlags..    {
0d30: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
0d40: 6e 20 4e 6f 72 6d 61 6c 20 56 61 6c 75 65 73 0d  n Normal Values.
0d50: 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20  .        None = 
0d60: 30 78 30 2c 20 20 20 20 20 20 20 20 20 20 20 20  0x0,            
0d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
0d80: 20 4e 6f 20 61 63 74 69 6f 6e 73 20 73 68 6f 75   No actions shou
0d90: 6c 64 20 62 65 20 74 61 6b 65 6e 0d 0a 20 20 20  ld be taken..   
0da0: 20 20 20 20 20 43 6f 72 65 47 6c 6f 62 61 6c 41       CoreGlobalA
0db0: 73 73 65 6d 62 6c 79 43 61 63 68 65 20 3d 20 30  ssemblyCache = 0
0dc0: 78 31 2c 20 20 20 20 20 20 20 2f 2f 20 47 41 43  x1,       // GAC
0dd0: 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c   System.Data.SQL
0de0: 69 74 65 2e 64 6c 6c 0d 0a 20 20 20 20 20 20 20  ite.dll..       
0df0: 20 4c 69 6e 71 47 6c 6f 62 61 6c 41 73 73 65 6d   LinqGlobalAssem
0e00: 62 6c 79 43 61 63 68 65 20 3d 20 30 78 32 2c 20  blyCache = 0x2, 
0e10: 20 20 20 20 20 20 2f 2f 20 47 41 43 20 53 79 73        // GAC Sys
0e20: 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
0e30: 4c 69 6e 71 2e 64 6c 6c 0d 0a 20 20 20 20 20 20  Linq.dll..      
0e40: 20 20 45 66 36 47 6c 6f 62 61 6c 41 73 73 65 6d    Ef6GlobalAssem
0e50: 62 6c 79 43 61 63 68 65 20 3d 20 30 78 34 2c 20  blyCache = 0x4, 
0e60: 20 20 20 20 20 20 20 2f 2f 20 47 41 43 20 53 79         // GAC Sy
0e70: 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
0e80: 2e 45 46 36 2e 64 6c 6c 0d 0a 20 20 20 20 20 20  .EF6.dll..      
0e90: 20 20 41 73 73 65 6d 62 6c 79 46 6f 6c 64 65 72    AssemblyFolder
0ea0: 73 20 3d 20 30 78 38 2c 20 20 20 20 20 20 20 20  s = 0x8,        
0eb0: 20 20 20 20 20 20 20 2f 2f 20 52 65 67 69 73 74         // Regist
0ec0: 72 79 20 41 73 73 65 6d 62 6c 79 46 6f 6c 64 65  ry AssemblyFolde
0ed0: 72 73 5b 45 78 5d 0d 0a 20 20 20 20 20 20 20 20  rs[Ex]..        
0ee0: 44 62 50 72 6f 76 69 64 65 72 46 61 63 74 6f 72  DbProviderFactor
0ef0: 79 20 3d 20 30 78 31 30 2c 20 20 20 20 20 20 20  y = 0x10,       
0f00: 20 20 20 20 20 2f 2f 20 6d 61 63 68 69 6e 65 2e       // machine.
0f10: 63 6f 6e 66 69 67 20 64 61 74 61 20 70 72 6f 76  config data prov
0f20: 69 64 65 72 0d 0a 20 20 20 20 20 20 20 20 56 73  ider..        Vs
0f30: 50 61 63 6b 61 67 65 20 3d 20 30 78 32 30 2c 20  Package = 0x20, 
0f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0f50: 20 20 20 2f 2f 20 52 65 67 69 73 74 72 79 20 56     // Registry V
0f60: 53 20 70 61 63 6b 61 67 65 0d 0a 20 20 20 20 20  S package..     
0f70: 20 20 20 56 73 50 61 63 6b 61 67 65 47 6c 6f 62     VsPackageGlob
0f80: 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65 20  alAssemblyCache 
0f90: 3d 20 30 78 34 30 2c 20 2f 2f 20 47 41 43 20 53  = 0x40, // GAC S
0fa0: 51 4c 69 74 65 2e 44 65 73 69 67 6e 65 72 2e 64  QLite.Designer.d
0fb0: 6c 6c 0d 0a 20 20 20 20 20 20 20 20 56 73 44 61  ll..        VsDa
0fc0: 74 61 53 6f 75 72 63 65 20 3d 20 30 78 38 30 2c  taSource = 0x80,
0fd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0fe0: 20 2f 2f 20 52 65 67 69 73 74 72 79 20 56 53 20   // Registry VS 
0ff0: 64 61 74 61 20 73 6f 75 72 63 65 0d 0a 20 20 20  data source..   
1000: 20 20 20 20 20 56 73 44 61 74 61 50 72 6f 76 69       VsDataProvi
1010: 64 65 72 20 3d 20 30 78 31 30 30 2c 20 20 20 20  der = 0x100,    
1020: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 52 65 67            // Reg
1030: 69 73 74 72 79 20 56 53 20 64 61 74 61 20 70 72  istry VS data pr
1040: 6f 76 69 64 65 72 0d 0a 20 20 20 20 20 20 20 20  ovider..        
1050: 56 73 44 65 76 45 6e 76 53 65 74 75 70 20 3d 20  VsDevEnvSetup = 
1060: 30 78 32 30 30 2c 20 20 20 20 20 20 20 20 20 20  0x200,          
1070: 20 20 20 20 20 2f 2f 20 52 75 6e 73 20 56 53 20       // Runs VS 
1080: 69 6e 20 22 2f 73 65 74 75 70 22 20 6d 6f 64 65  in "/setup" mode
1090: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
10a0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
10b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1100: 20 20 20 23 72 65 67 69 6f 6e 20 43 6f 6d 70 6f     #region Compo
1110: 73 69 74 65 20 56 61 6c 75 65 73 0d 0a 20 20 20  site Values..   
1120: 20 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 47 6c       FrameworkGl
1130: 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68  obalAssemblyCach
1140: 65 20 3d 20 43 6f 72 65 47 6c 6f 62 61 6c 41 73  e = CoreGlobalAs
1150: 73 65 6d 62 6c 79 43 61 63 68 65 20 7c 0d 0a 20  semblyCache |.. 
1160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1180: 20 20 20 20 20 20 4c 69 6e 71 47 6c 6f 62 61 6c        LinqGlobal
1190: 41 73 73 65 6d 62 6c 79 43 61 63 68 65 20 7c 0d  AssemblyCache |.
11a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c0: 20 20 20 20 20 20 20 20 45 66 36 47 6c 6f 62 61          Ef6Globa
11d0: 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65 2c 0d  lAssemblyCache,.
11e0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
11f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1230: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 46 72  //....        Fr
1240: 61 6d 65 77 6f 72 6b 20 3d 20 46 72 61 6d 65 77  amework = Framew
1250: 6f 72 6b 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c  orkGlobalAssembl
1260: 79 43 61 63 68 65 20 7c 20 41 73 73 65 6d 62 6c  yCache | Assembl
1270: 79 46 6f 6c 64 65 72 73 20 7c 0d 0a 20 20 20 20  yFolders |..    
1280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1290: 44 62 50 72 6f 76 69 64 65 72 46 61 63 74 6f 72  DbProviderFactor
12a0: 79 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  y,....        //
12b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12f0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1300: 20 56 73 52 65 67 69 73 74 72 79 20 3d 20 56 73   VsRegistry = Vs
1310: 50 61 63 6b 61 67 65 20 7c 20 56 73 44 61 74 61  Package | VsData
1320: 53 6f 75 72 63 65 20 7c 20 56 73 44 61 74 61 50  Source | VsDataP
1330: 72 6f 76 69 64 65 72 2c 0d 0a 0d 0a 20 20 20 20  rovider,....    
1340: 20 20 20 20 56 73 20 3d 20 56 73 52 65 67 69 73      Vs = VsRegis
1350: 74 72 79 20 7c 20 56 73 50 61 63 6b 61 67 65 47  try | VsPackageG
1360: 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61 63  lobalAssemblyCac
1370: 68 65 20 7c 20 56 73 44 65 76 45 6e 76 53 65 74  he | VsDevEnvSet
1380: 75 70 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  up,....        /
1390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
13e0: 20 20 41 6c 6c 47 6c 6f 62 61 6c 41 73 73 65 6d    AllGlobalAssem
13f0: 62 6c 79 43 61 63 68 65 20 3d 20 46 72 61 6d 65  blyCache = Frame
1400: 77 6f 72 6b 47 6c 6f 62 61 6c 41 73 73 65 6d 62  workGlobalAssemb
1410: 6c 79 43 61 63 68 65 20 7c 0d 0a 20 20 20 20 20  lyCache |..     
1420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1430: 20 20 20 20 20 20 20 20 20 20 20 20 56 73 50 61              VsPa
1440: 63 6b 61 67 65 47 6c 6f 62 61 6c 41 73 73 65 6d  ckageGlobalAssem
1450: 62 6c 79 43 61 63 68 65 2c 0d 0a 0d 0a 20 20 20  blyCache,....   
1460: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
14b0: 20 20 20 20 20 20 20 20 41 6c 6c 52 65 67 69 73          AllRegis
14c0: 74 72 79 20 3d 20 41 73 73 65 6d 62 6c 79 46 6f  try = AssemblyFo
14d0: 6c 64 65 72 73 20 7c 20 56 73 52 65 67 69 73 74  lders | VsRegist
14e0: 72 79 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ry,....        /
14f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1530: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1540: 20 20 53 74 61 6e 64 61 72 64 20 3d 20 44 62 50    Standard = DbP
1550: 72 6f 76 69 64 65 72 46 61 63 74 6f 72 79 20 7c  roviderFactory |
1560: 20 56 73 52 65 67 69 73 74 72 79 2c 0d 0a 0d 0a   VsRegistry,....
1570: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15c0: 0a 0d 0a 20 20 20 20 20 20 20 20 41 6c 6c 20 3d  ...        All =
15d0: 20 46 72 61 6d 65 77 6f 72 6b 20 7c 20 56 73 2c   Framework | Vs,
15e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
15f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1630: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 41  ///....        A
1640: 6c 6c 45 78 63 65 70 74 47 6c 6f 62 61 6c 41 73  llExceptGlobalAs
1650: 73 65 6d 62 6c 79 43 61 63 68 65 20 3d 20 41 6c  semblyCache = Al
1660: 6c 20 26 20 7e 41 6c 6c 47 6c 6f 62 61 6c 41 73  l & ~AllGlobalAs
1670: 73 65 6d 62 6c 79 43 61 63 68 65 2c 0d 0a 20 20  semblyCache,..  
1680: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1690: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
16a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
16f0: 72 65 67 69 6f 6e 20 53 75 67 67 65 73 74 65 64  region Suggested
1700: 20 44 65 66 61 75 6c 74 20 56 61 6c 75 65 73 0d   Default Values.
1710: 0a 20 20 20 20 20 20 20 20 44 65 66 61 75 6c 74  .        Default
1720: 20 3d 20 41 6c 6c 0d 0a 20 20 20 20 20 20 20 20   = All..        
1730: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
1740: 7d 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  }....    ///////
1750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1790: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 5b 46 6c 61  ////....    [Fla
17a0: 67 73 28 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69  gs()]..    publi
17b0: 63 20 65 6e 75 6d 20 50 72 6f 76 69 64 65 72 46  c enum ProviderF
17c0: 6c 61 67 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20  lags..    {..   
17d0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 6f 72       #region Nor
17e0: 6d 61 6c 20 56 61 6c 75 65 73 0d 0a 20 20 20 20  mal Values..    
17f0: 20 20 20 20 4e 6f 6e 65 20 3d 20 30 78 30 2c 0d      None = 0x0,.
1800: 0a 20 20 20 20 20 20 20 20 53 79 73 74 65 6d 45  .        SystemE
1810: 66 36 4d 75 73 74 42 65 47 6c 6f 62 61 6c 20 3d  f6MustBeGlobal =
1820: 20 30 78 31 2c 0d 0a 20 20 20 20 20 20 20 20 44   0x1,..        D
1830: 69 64 4c 69 6e 71 46 6f 72 63 65 54 72 61 63 65  idLinqForceTrace
1840: 20 3d 20 30 78 32 2c 0d 0a 20 20 20 20 20 20 20   = 0x2,..       
1850: 20 44 69 64 45 66 36 46 6f 72 63 65 54 72 61 63   DidEf6ForceTrac
1860: 65 20 3d 20 30 78 34 2c 0d 0a 20 20 20 20 20 20  e = 0x4,..      
1870: 20 20 44 69 64 45 66 36 52 65 73 6f 6c 76 65 54    DidEf6ResolveT
1880: 72 61 63 65 20 3d 20 30 78 38 2c 0d 0a 20 20 20  race = 0x8,..   
1890: 20 20 20 20 20 46 6f 72 63 65 4c 69 6e 71 45 6e       ForceLinqEn
18a0: 61 62 6c 65 64 20 3d 20 30 78 31 30 2c 0d 0a 20  abled = 0x10,.. 
18b0: 20 20 20 20 20 20 20 46 6f 72 63 65 4c 69 6e 71         ForceLinq
18c0: 44 69 73 61 62 6c 65 64 20 3d 20 30 78 32 30 2c  Disabled = 0x20,
18d0: 0d 0a 20 20 20 20 20 20 20 20 46 6f 72 63 65 45  ..        ForceE
18e0: 66 36 45 6e 61 62 6c 65 64 20 3d 20 30 78 34 30  f6Enabled = 0x40
18f0: 2c 0d 0a 20 20 20 20 20 20 20 20 46 6f 72 63 65  ,..        Force
1900: 45 66 36 44 69 73 61 62 6c 65 64 20 3d 20 30 78  Ef6Disabled = 0x
1910: 38 30 2c 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  80,..        #en
1920: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
1930: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1970: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1980: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 75        #region Su
1990: 67 67 65 73 74 65 64 20 44 65 66 61 75 6c 74 20  ggested Default 
19a0: 56 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20 20  Values..        
19b0: 44 65 66 61 75 6c 74 20 3d 20 4e 6f 6e 65 0d 0a  Default = None..
19c0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
19d0: 6f 6e 0d 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20  on..    }....   
19e0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
19f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1a30: 20 20 20 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20      [Flags()].. 
1a40: 20 20 20 70 75 62 6c 69 63 20 65 6e 75 6d 20 54     public enum T
1a50: 72 61 63 65 50 72 69 6f 72 69 74 79 0d 0a 20 20  racePriority..  
1a60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23 72 65    {..        #re
1a70: 67 69 6f 6e 20 4e 6f 72 6d 61 6c 20 56 61 6c 75  gion Normal Valu
1a80: 65 73 0d 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65  es..        None
1a90: 20 3d 20 30 78 30 2c 0d 0a 20 20 20 20 20 20 20   = 0x0,..       
1aa0: 20 4c 6f 77 65 73 74 20 3d 20 30 78 31 2c 0d 0a   Lowest = 0x1,..
1ab0: 20 20 20 20 20 20 20 20 4c 6f 77 65 72 20 3d 20          Lower = 
1ac0: 30 78 32 2c 0d 0a 20 20 20 20 20 20 20 20 4c 6f  0x2,..        Lo
1ad0: 77 20 3d 20 30 78 34 2c 0d 0a 20 20 20 20 20 20  w = 0x4,..      
1ae0: 20 20 4d 65 64 69 75 6d 4c 6f 77 20 3d 20 30 78    MediumLow = 0x
1af0: 38 2c 0d 0a 20 20 20 20 20 20 20 20 4d 65 64 69  8,..        Medi
1b00: 75 6d 20 3d 20 30 78 31 30 2c 0d 0a 20 20 20 20  um = 0x10,..    
1b10: 20 20 20 20 4d 65 64 69 75 6d 48 69 67 68 20 3d      MediumHigh =
1b20: 20 30 78 32 30 2c 0d 0a 20 20 20 20 20 20 20 20   0x20,..        
1b30: 48 69 67 68 20 3d 20 30 78 34 30 2c 0d 0a 20 20  High = 0x40,..  
1b40: 20 20 20 20 20 20 48 69 67 68 65 72 20 3d 20 30        Higher = 0
1b50: 78 38 30 2c 0d 0a 20 20 20 20 20 20 20 20 48 69  x80,..        Hi
1b60: 67 68 65 73 74 20 3d 20 30 78 31 30 30 2c 0d 0a  ghest = 0x100,..
1b70: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
1b80: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
1b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bd0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1be0: 20 23 72 65 67 69 6f 6e 20 53 75 67 67 65 73 74   #region Suggest
1bf0: 65 64 20 44 65 66 61 75 6c 74 20 46 6c 61 67 73  ed Default Flags
1c00: 0d 0a 20 20 20 20 20 20 20 20 44 65 66 61 75 6c  ..        Defaul
1c10: 74 20 3d 20 4d 65 64 69 75 6d 0d 0a 20 20 20 20  t = Medium..    
1c20: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
1c30: 20 20 20 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72      }..    #endr
1c40: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f  egion....    ///
1c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c90: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1ca0: 23 72 65 67 69 6f 6e 20 49 6e 73 74 61 6c 6c 65  #region Installe
1cb0: 72 20 43 6c 61 73 73 0d 0a 23 69 66 20 4e 45 54  r Class..#if NET
1cc0: 5f 34 30 20 7c 7c 20 4e 45 54 5f 34 35 20 7c 7c  _40 || NET_45 ||
1cd0: 20 4e 45 54 5f 34 35 31 20 7c 7c 20 4e 45 54 5f   NET_451 || NET_
1ce0: 34 35 32 20 7c 7c 20 4e 45 54 5f 34 36 20 7c 7c  452 || NET_46 ||
1cf0: 20 4e 45 54 5f 34 36 31 20 7c 7c 20 4e 45 54 5f   NET_461 || NET_
1d00: 34 36 32 20 7c 7c 20 4e 45 54 5f 34 37 20 7c 7c  462 || NET_47 ||
1d10: 20 4e 45 54 5f 34 37 31 0d 0a 20 20 20 20 5b 53   NET_471..    [S
1d20: 65 63 75 72 69 74 79 43 72 69 74 69 63 61 6c 28  ecurityCritical(
1d30: 29 5d 0d 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b  )]..#else..    [
1d40: 53 65 63 75 72 69 74 79 50 65 72 6d 69 73 73 69  SecurityPermissi
1d50: 6f 6e 28 53 65 63 75 72 69 74 79 41 63 74 69 6f  on(SecurityActio
1d60: 6e 2e 4c 69 6e 6b 44 65 6d 61 6e 64 2c 20 55 6e  n.LinkDemand, Un
1d70: 6d 61 6e 61 67 65 64 43 6f 64 65 20 3d 20 74 72  managedCode = tr
1d80: 75 65 29 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20  ue)]..#endif..  
1d90: 20 20 69 6e 74 65 72 6e 61 6c 20 73 74 61 74 69    internal stati
1da0: 63 20 63 6c 61 73 73 20 49 6e 73 74 61 6c 6c 65  c class Installe
1db0: 72 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  r..    {..      
1dc0: 20 20 23 72 65 67 69 6f 6e 20 55 6e 73 61 66 65    #region Unsafe
1dd0: 20 4e 61 74 69 76 65 20 4d 65 74 68 6f 64 73 20   Native Methods 
1de0: 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20 5b  Class..        [
1df0: 53 75 70 70 72 65 73 73 55 6e 6d 61 6e 61 67 65  SuppressUnmanage
1e00: 64 43 6f 64 65 53 65 63 75 72 69 74 79 28 29 5d  dCodeSecurity()]
1e10: 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
1e20: 65 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 55  e sealed class U
1e30: 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
1e40: 64 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23  ds..        {..#
1e50: 69 66 20 57 49 4e 44 4f 57 53 0d 0a 20 20 20 20  if WINDOWS..    
1e60: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
1e70: 4e 61 74 69 76 65 20 57 69 6e 33 32 20 43 6f 6e  Native Win32 Con
1e80: 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20 20  stants..        
1e90: 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
1ea0: 74 20 69 6e 74 20 4d 41 58 5f 50 41 54 48 20 3d  t int MAX_PATH =
1eb0: 20 32 36 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   260;....       
1ec0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f00: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1f10: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1f20: 63 6f 6e 73 74 20 69 6e 74 20 43 53 49 44 4c 5f  const int CSIDL_
1f30: 53 59 53 54 45 4d 58 38 36 20 3d 20 30 78 30 30  SYSTEMX86 = 0x00
1f40: 32 39 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  29;....         
1f50: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
1f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1f90: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1fa0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
1fb0: 6e 73 74 20 69 6e 74 20 53 48 47 46 50 5f 54 59  nst int SHGFP_TY
1fc0: 50 45 5f 43 55 52 52 45 4e 54 20 3d 20 30 3b 0d  PE_CURRENT = 0;.
1fd0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
1fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2020: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2030: 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
2040: 69 6e 74 20 53 5f 4f 4b 20 3d 20 30 3b 20 2f 2a  int S_OK = 0; /*
2050: 20 48 52 45 53 55 4c 54 20 2a 2f 0d 0a 20 20 20   HRESULT */..   
2060: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
2070: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
2080: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
20c0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
20d0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61        #region Na
20e0: 74 69 76 65 20 57 69 6e 64 6f 77 73 20 4d 65 74  tive Windows Met
20f0: 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20  hods..          
2100: 20 20 5b 44 6c 6c 49 6d 70 6f 72 74 28 22 73 68    [DllImport("sh
2110: 66 6f 6c 64 65 72 2e 64 6c 6c 22 2c 0d 0a 20 20  folder.dll",..  
2120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 61                Ca
2130: 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20  llingConvention 
2140: 3d 20 43 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74  = CallingConvent
2150: 69 6f 6e 2e 57 69 6e 61 70 69 2c 0d 0a 20 20 20  ion.Winapi,..   
2160: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 61               Cha
2170: 72 53 65 74 20 3d 20 43 68 61 72 53 65 74 2e 41  rSet = CharSet.A
2180: 75 74 6f 2c 20 42 65 73 74 46 69 74 4d 61 70 70  uto, BestFitMapp
2190: 69 6e 67 20 3d 20 66 61 6c 73 65 2c 0d 0a 20 20  ing = false,..  
21a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 68                Th
21b0: 72 6f 77 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43  rowOnUnmappableC
21c0: 68 61 72 20 3d 20 74 72 75 65 2c 20 53 65 74 4c  har = true, SetL
21d0: 61 73 74 45 72 72 6f 72 20 3d 20 74 72 75 65 29  astError = true)
21e0: 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ]..            p
21f0: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 65 78  rivate static ex
2200: 74 65 72 6e 20 69 6e 74 20 53 48 47 65 74 46 6f  tern int SHGetFo
2210: 6c 64 65 72 50 61 74 68 28 0d 0a 20 20 20 20 20  lderPath(..     
2220: 20 20 20 20 20 20 20 20 20 20 20 49 6e 74 50 74             IntPt
2230: 72 20 68 57 6e 64 4f 77 6e 65 72 2c 20 69 6e 74  r hWndOwner, int
2240: 20 6e 46 6f 6c 64 65 72 2c 20 49 6e 74 50 74 72   nFolder, IntPtr
2250: 20 68 54 6f 6b 65 6e 2c 20 75 69 6e 74 20 66 6c   hToken, uint fl
2260: 61 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ags,..          
2270: 20 20 20 20 20 20 49 6e 74 50 74 72 20 62 75 66        IntPtr buf
2280: 66 65 72 20 2f 2a 20 3e 3d 20 4d 41 58 5f 50 41  fer /* >= MAX_PA
2290: 54 48 20 2a 2f 29 3b 0d 0a 20 20 20 20 20 20 20  TH */);..       
22a0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
22b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
22c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
22f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2300: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2310: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
2320: 20 57 72 61 70 70 65 72 20 4d 65 74 68 6f 64 73   Wrapper Methods
2330: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2340: 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
2350: 6e 67 20 47 65 74 53 79 73 74 65 6d 44 69 72 65  ng GetSystemDire
2360: 63 74 6f 72 79 28 29 0d 0a 20 20 20 20 20 20 20  ctory()..       
2370: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2380: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 62          IntPtr b
2390: 75 66 66 65 72 20 3d 20 49 6e 74 50 74 72 2e 5a  uffer = IntPtr.Z
23a0: 65 72 6f 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ero;....        
23b0: 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
23c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
23d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e0: 20 20 20 20 62 75 66 66 65 72 20 3d 20 4d 61 72      buffer = Mar
23f0: 73 68 61 6c 2e 41 6c 6c 6f 63 43 6f 54 61 73 6b  shal.AllocCoTask
2400: 4d 65 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Mem(..          
2410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 69                si
2420: 7a 65 6f 66 28 63 68 61 72 29 20 2a 20 28 4d 41  zeof(char) * (MA
2430: 58 5f 50 41 54 48 20 2b 20 31 29 29 3b 0d 0a 0d  X_PATH + 1));...
2440: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2450: 20 20 20 20 20 69 66 20 28 62 75 66 66 65 72 20       if (buffer 
2460: 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d  != IntPtr.Zero).
2470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2480: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a0: 69 66 20 28 53 48 47 65 74 46 6f 6c 64 65 72 50  if (SHGetFolderP
24b0: 61 74 68 28 49 6e 74 50 74 72 2e 5a 65 72 6f 2c  ath(IntPtr.Zero,
24c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e0: 20 20 43 53 49 44 4c 5f 53 59 53 54 45 4d 58 38    CSIDL_SYSTEMX8
24f0: 36 2c 20 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d  6, IntPtr.Zero,.
2500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2510: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2520: 20 53 48 47 46 50 5f 54 59 50 45 5f 43 55 52 52   SHGFP_TYPE_CURR
2530: 45 4e 54 2c 20 62 75 66 66 65 72 29 20 3d 3d 20  ENT, buffer) == 
2540: 53 5f 4f 4b 29 0d 0a 20 20 20 20 20 20 20 20 20  S_OK)..         
2550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2560: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2570: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2580: 74 75 72 6e 20 4d 61 72 73 68 61 6c 2e 50 74 72  turn Marshal.Ptr
2590: 54 6f 53 74 72 69 6e 67 41 75 74 6f 28 62 75 66  ToStringAuto(buf
25a0: 66 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  fer);..         
25b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
25c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25d0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
25e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
25f0: 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2600: 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d  h (Exception e).
2610: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2620: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2630: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2650: 2f 2f 20 54 4f 44 4f 3a 20 49 73 20 74 68 69 73  // TODO: Is this
2660: 20 74 68 65 20 72 69 67 68 74 20 65 72 72 6f 72   the right error
2670: 20 68 61 6e 64 6c 69 6e 67 20 73 6f 6c 75 74 69   handling soluti
2680: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  on..            
2690: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
26a0: 20 74 6f 20 75 73 65 20 61 74 20 74 68 69 73 20   to use at this 
26b0: 70 6f 69 6e 74 3f 0d 0a 20 20 20 20 20 20 20 20  point?..        
26c0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
26d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e0: 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62      TraceOps.Deb
26f0: 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65  ugAndTrace(Trace
2700: 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 48  Priority.MediumH
2710: 69 67 68 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  igh,..          
2720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
2730: 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
2740: 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
2750: 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
2760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2770: 20 20 20 20 22 43 6f 75 6c 64 20 6e 6f 74 20 67      "Could not g
2780: 65 74 20 73 79 73 74 65 6d 20 64 69 72 65 63 74  et system direct
2790: 6f 72 79 3a 20 7b 30 7d 22 2c 20 65 29 2c 0d 0a  ory: {0}", e),..
27a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27b0: 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
27c0: 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
27d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
27e0: 68 72 6f 77 3b 0d 0a 20 20 20 20 20 20 20 20 20  hrow;..         
27f0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2800: 20 20 20 20 20 20 20 20 20 20 66 69 6e 61 6c 6c            finall
2810: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
2820: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2830: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 62 75            if (bu
2840: 66 66 65 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a  ffer != IntPtr.Z
2850: 65 72 6f 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ero)..          
2860: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2880: 20 20 20 20 20 4d 61 72 73 68 61 6c 2e 46 72 65       Marshal.Fre
2890: 65 43 6f 54 61 73 6b 4d 65 6d 28 62 75 66 66 65  eCoTaskMem(buffe
28a0: 72 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  r);..           
28b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 66               buf
28c0: 66 65 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72  fer = IntPtr.Zer
28d0: 6f 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  o;..            
28e0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
28f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2910: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
2920: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2930: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
2940: 69 6f 6e 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20  ion..#endif..   
2950: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2960: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
2970: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
29c0: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
29d0: 20 50 72 69 76 61 74 65 20 48 65 6c 70 65 72 20   Private Helper 
29e0: 43 6c 61 73 73 65 73 0d 0a 20 20 20 20 20 20 20  Classes..       
29f0: 20 23 72 65 67 69 6f 6e 20 4f 62 6a 65 63 74 48   #region ObjectH
2a00: 65 6c 70 65 72 20 43 6c 61 73 73 0d 0a 20 20 20  elper Class..   
2a10: 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
2a20: 74 69 63 20 63 6c 61 73 73 20 4f 62 6a 65 63 74  tic class Object
2a30: 48 65 6c 70 65 72 0d 0a 20 20 20 20 20 20 20 20  Helper..        
2a40: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  {..            p
2a50: 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f  ublic static boo
2a60: 6c 20 41 72 65 45 71 75 61 6c 28 0d 0a 20 20 20  l AreEqual(..   
2a70: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a               obj
2a80: 65 63 74 20 76 61 6c 75 65 31 2c 0d 0a 20 20 20  ect value1,..   
2a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a               obj
2aa0: 65 63 74 20 76 61 6c 75 65 32 0d 0a 20 20 20 20  ect value2..    
2ab0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2ac0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2ae0: 20 28 28 76 61 6c 75 65 31 20 3d 3d 20 6e 75 6c   ((value1 == nul
2af0: 6c 29 20 7c 7c 20 28 76 61 6c 75 65 32 20 3d 3d  l) || (value2 ==
2b00: 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
2b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2b20: 75 72 6e 20 28 28 76 61 6c 75 65 31 20 3d 3d 20  urn ((value1 == 
2b30: 6e 75 6c 6c 29 20 26 26 20 28 76 61 6c 75 65 32  null) && (value2
2b40: 20 3d 3d 20 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a 20   == null));.... 
2b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2b60: 66 20 28 4f 62 6a 65 63 74 2e 52 65 66 65 72 65  f (Object.Refere
2b70: 6e 63 65 45 71 75 61 6c 73 28 76 61 6c 75 65 31  nceEquals(value1
2b80: 2c 20 76 61 6c 75 65 32 29 29 0d 0a 20 20 20 20  , value2))..    
2b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba0: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a  return true;....
2bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc0: 72 65 74 75 72 6e 20 76 61 6c 75 65 31 2e 45 71  return value1.Eq
2bd0: 75 61 6c 73 28 76 61 6c 75 65 32 29 3b 0d 0a 20  uals(value2);.. 
2be0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2bf0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2c00: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
2c10: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
2c20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2c60: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
2c70: 6e 20 41 6e 79 50 61 69 72 20 43 6c 61 73 73 0d  n AnyPair Class.
2c80: 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
2c90: 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 41 6e   sealed class An
2ca0: 79 50 61 69 72 3c 54 31 2c 20 54 32 3e 20 3a 0d  yPair<T1, T2> :.
2cb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 49 43 6f  .            ICo
2cc0: 6d 70 61 72 65 72 3c 41 6e 79 50 61 69 72 3c 54  mparer<AnyPair<T
2cd0: 31 2c 20 54 32 3e 3e 2c 0d 0a 20 20 20 20 20 20  1, T2>>,..      
2ce0: 20 20 20 20 20 20 49 43 6f 6d 70 61 72 61 62 6c        IComparabl
2cf0: 65 3c 41 6e 79 50 61 69 72 3c 54 31 2c 20 54 32  e<AnyPair<T1, T2
2d00: 3e 3e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  >>,..           
2d10: 20 49 43 6f 6d 70 61 72 61 62 6c 65 2c 0d 0a 20   IComparable,.. 
2d20: 20 20 20 20 20 20 20 20 20 20 20 49 45 71 75 61             IEqua
2d30: 74 61 62 6c 65 3c 41 6e 79 50 61 69 72 3c 54 31  table<AnyPair<T1
2d40: 2c 20 54 32 3e 3e 2c 0d 0a 20 20 20 20 20 20 20  , T2>>,..       
2d50: 20 20 20 20 20 49 45 71 75 61 6c 69 74 79 43 6f       IEqualityCo
2d60: 6d 70 61 72 65 72 3c 41 6e 79 50 61 69 72 3c 54  mparer<AnyPair<T
2d70: 31 2c 20 54 32 3e 3e 2c 0d 0a 20 20 20 20 20 20  1, T2>>,..      
2d80: 20 20 20 20 20 20 49 43 6c 6f 6e 65 61 62 6c 65        ICloneable
2d90: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
2da0: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
2db0: 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
2dc0: 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  tors..          
2dd0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2de0: 20 20 2f 2f 20 57 41 52 4e 49 4e 47 3a 20 54 68    // WARNING: Th
2df0: 69 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 20 70  is constructor p
2e00: 72 6f 64 75 63 65 73 20 61 6e 20 69 6d 6d 75 74  roduces an immut
2e10: 61 62 6c 65 20 22 65 6d 70 74 79 22 20 70 61 69  able "empty" pai
2e20: 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  r..            /
2e30: 2f 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63  /          objec
2e40: 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t...            
2e50: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2e60: 70 75 62 6c 69 63 20 41 6e 79 50 61 69 72 28 29  public AnyPair()
2e70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e80: 20 20 3a 20 62 61 73 65 28 29 0d 0a 20 20 20 20    : base()..    
2e90: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ea0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
2eb0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
2ec0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2ed0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2f20: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2f30: 63 20 41 6e 79 50 61 69 72 28 54 31 20 78 29 0d  c AnyPair(T1 x).
2f40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f50: 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
2f60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2f70: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 78            this.x
2f80: 20 3d 20 78 3b 0d 0a 20 20 20 20 20 20 20 20 20   = x;..         
2f90: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2fa0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fe0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2ff0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 41 6e         public An
3000: 79 50 61 69 72 28 54 31 20 78 2c 20 54 32 20 79  yPair(T1 x, T2 y
3010: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3020: 20 20 20 3a 20 74 68 69 73 28 78 29 0d 0a 20 20     : this(x)..  
3030: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
3040: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
3050: 73 2e 79 20 3d 20 79 3b 0d 0a 20 20 20 20 20 20  s.y = y;..      
3060: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
3070: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
3080: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
3090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
30e0: 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
30f0: 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20   Properties..   
3100: 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
3110: 20 54 31 20 78 3b 0d 0a 20 20 20 20 20 20 20 20   T1 x;..        
3120: 20 20 20 20 70 75 62 6c 69 63 20 54 31 20 58 0d      public T1 X.
3130: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
3140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3150: 67 65 74 20 7b 20 72 65 74 75 72 6e 20 78 3b 20  get { return x; 
3160: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
3170: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
31d0: 20 20 20 70 72 69 76 61 74 65 20 54 32 20 79 3b     private T2 y;
31e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
31f0: 62 6c 69 63 20 54 32 20 59 0d 0a 20 20 20 20 20  blic T2 Y..     
3200: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3210: 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
3220: 72 65 74 75 72 6e 20 79 3b 20 7d 0d 0a 20 20 20  return y; }..   
3230: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
3240: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
3250: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
3260: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
3270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
32b0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 79 73       #region Sys
32c0: 74 65 6d 2e 4f 62 6a 65 63 74 20 4f 76 65 72 72  tem.Object Overr
32d0: 69 64 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ides..          
32e0: 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
32f0: 65 20 62 6f 6f 6c 20 45 71 75 61 6c 73 28 0d 0a  e bool Equals(..
3300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3310: 6f 62 6a 65 63 74 20 6f 62 6a 0d 0a 20 20 20 20  object obj..    
3320: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
3330: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 6e                An
3350: 79 50 61 69 72 3c 54 31 2c 20 54 32 3e 20 61 6e  yPair<T1, T2> an
3360: 79 50 61 69 72 20 3d 20 6f 62 6a 20 61 73 20 41  yPair = obj as A
3370: 6e 79 50 61 69 72 3c 54 31 2c 20 54 32 3e 3b 0d  nyPair<T1, T2>;.
3380: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
3390: 20 20 20 69 66 20 28 61 6e 79 50 61 69 72 20 21     if (anyPair !
33a0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
33b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
33c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33d0: 69 66 20 28 21 4f 62 6a 65 63 74 48 65 6c 70 65  if (!ObjectHelpe
33e0: 72 2e 41 72 65 45 71 75 61 6c 28 58 2c 20 61 6e  r.AreEqual(X, an
33f0: 79 50 61 69 72 2e 58 29 29 0d 0a 20 20 20 20 20  yPair.X))..     
3400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3410: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
3420: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3430: 20 20 20 20 20 20 20 20 69 66 20 28 21 4f 62 6a          if (!Obj
3440: 65 63 74 48 65 6c 70 65 72 2e 41 72 65 45 71 75  ectHelper.AreEqu
3450: 61 6c 28 59 2c 20 61 6e 79 50 61 69 72 2e 59 29  al(Y, anyPair.Y)
3460: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3470: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3480: 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
3490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34a0: 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20  return true;..  
34b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
34c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
34d0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
34e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
34f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
3500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3540: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
3550: 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64    public overrid
3560: 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69 6e  e string ToStrin
3570: 67 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g()..           
3580: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3590: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
35a0: 20 20 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a          // TODO:
35b0: 20 54 68 65 20 64 65 6c 69 6d 69 74 65 72 20 68   The delimiter h
35c0: 65 72 65 20 69 73 20 68 61 72 64 2d 63 6f 64 65  ere is hard-code
35d0: 64 20 74 6f 20 61 20 73 70 61 63 65 2e 20 20 54  d to a space.  T
35e0: 68 69 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  his..           
35f0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 61       //       ma
3600: 79 20 6e 65 65 64 20 74 6f 20 62 65 20 63 68 61  y need to be cha
3610: 6e 67 65 64 2c 20 65 2e 67 2e 20 69 66 20 74 68  nged, e.g. if th
3620: 65 20 75 73 65 2d 63 61 73 65 73 20 66 6f 72 0d  e use-cases for.
3630: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3640: 20 2f 2f 20 20 20 20 20 20 20 74 68 69 73 20 63   //       this c
3650: 6c 61 73 73 20 63 68 61 6e 67 65 2e 0d 0a 20 20  lass change...  
3660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
3670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3680: 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e    return String.
3690: 46 6f 72 6d 61 74 28 22 7b 30 7d 20 7b 31 7d 22  Format("{0} {1}"
36a0: 2c 20 58 2c 20 59 29 3b 0d 0a 20 20 20 20 20 20  , X, Y);..      
36b0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
36c0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
36d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
3710: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
3720: 20 6f 76 65 72 72 69 64 65 20 69 6e 74 20 47 65   override int Ge
3730: 74 48 61 73 68 43 6f 64 65 28 29 0d 0a 20 20 20  tHashCode()..   
3740: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3750: 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
3760: 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 20 20 20  result = 0;..   
3770: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 31 20               T1 
3780: 78 20 3d 20 58 3b 0d 0a 0d 0a 20 20 20 20 20 20  x = X;....      
3790: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 78 20            if (x 
37a0: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
37b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
37c0: 73 75 6c 74 20 5e 3d 20 78 2e 47 65 74 48 61 73  sult ^= x.GetHas
37d0: 68 43 6f 64 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  hCode();....    
37e0: 20 20 20 20 20 20 20 20 20 20 20 20 54 32 20 79              T2 y
37f0: 20 3d 20 59 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   = Y;....       
3800: 20 20 20 20 20 20 20 20 20 69 66 20 28 79 20 21           if (y !
3810: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
3820: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
3830: 75 6c 74 20 5e 3d 20 79 2e 47 65 74 48 61 73 68  ult ^= y.GetHash
3840: 43 6f 64 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Code();....     
3850: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
3860: 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
3870: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
3880: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
3890: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
38a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38e0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
38f0: 20 20 20 23 72 65 67 69 6f 6e 20 49 43 6f 6d 70     #region IComp
3900: 61 72 65 72 3c 41 6e 79 50 61 69 72 3c 54 31 2c  arer<AnyPair<T1,
3910: 54 32 3e 3e 20 4d 65 6d 62 65 72 73 0d 0a 20 20  T2>> Members..  
3920: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
3930: 20 69 6e 74 20 43 6f 6d 70 61 72 65 28 0d 0a 20   int Compare(.. 
3940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                 A
3950: 6e 79 50 61 69 72 3c 54 31 2c 20 54 32 3e 20 78  nyPair<T1, T2> x
3960: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
3970: 20 20 20 41 6e 79 50 61 69 72 3c 54 31 2c 20 54     AnyPair<T1, T
3980: 32 3e 20 79 0d 0a 20 20 20 20 20 20 20 20 20 20  2> y..          
3990: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
39a0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
39b0: 20 20 20 20 20 20 20 20 69 66 20 28 28 78 20 3d          if ((x =
39c0: 3d 20 6e 75 6c 6c 29 20 26 26 20 28 79 20 3d 3d  = null) && (y ==
39d0: 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
39e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
39f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a00: 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20  return 0;..     
3a10: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
3a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
3a30: 73 65 20 69 66 20 28 78 20 3d 3d 20 6e 75 6c 6c  se if (x == null
3a40: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
3a50: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3a60: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
3a70: 20 2d 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20   -1;..          
3a80: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
3a90: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
3aa0: 20 28 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20   (y == null)..  
3ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
3ac0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
3ad0: 20 20 20 20 20 72 65 74 75 72 6e 20 31 3b 0d 0a       return 1;..
3ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3af0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
3b00: 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
3b10: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3b30: 69 6e 74 20 72 65 73 75 6c 74 20 3d 20 43 6f 6d  int result = Com
3b40: 70 61 72 65 72 3c 54 31 3e 2e 44 65 66 61 75 6c  parer<T1>.Defaul
3b50: 74 2e 43 6f 6d 70 61 72 65 28 78 2e 58 2c 20 79  t.Compare(x.X, y
3b60: 2e 58 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  .X);....        
3b70: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3b80: 72 65 73 75 6c 74 20 21 3d 20 30 29 0d 0a 20 20  result != 0)..  
3b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ba0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73        return res
3bb0: 75 6c 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ult;....        
3bc0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
3bd0: 72 6e 20 43 6f 6d 70 61 72 65 72 3c 54 32 3e 2e  rn Comparer<T2>.
3be0: 44 65 66 61 75 6c 74 2e 43 6f 6d 70 61 72 65 28  Default.Compare(
3bf0: 78 2e 59 2c 20 79 2e 59 29 3b 0d 0a 20 20 20 20  x.Y, y.Y);..    
3c00: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
3c10: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
3c20: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
3c30: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
3c40: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
3c50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3c80: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
3c90: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
3ca0: 43 6f 6d 70 61 72 61 62 6c 65 3c 41 6e 79 50 61  Comparable<AnyPa
3cb0: 69 72 3c 54 31 2c 54 32 3e 3e 20 4d 65 6d 62 65  ir<T1,T2>> Membe
3cc0: 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rs..            
3cd0: 70 75 62 6c 69 63 20 69 6e 74 20 43 6f 6d 70 61  public int Compa
3ce0: 72 65 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20  reTo(..         
3cf0: 20 20 20 20 20 20 20 41 6e 79 50 61 69 72 3c 54         AnyPair<T
3d00: 31 2c 20 54 32 3e 20 6f 74 68 65 72 0d 0a 20 20  1, T2> other..  
3d10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
3d20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
3d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3d40: 72 65 74 75 72 6e 20 43 6f 6d 70 61 72 65 28 74  return Compare(t
3d50: 68 69 73 2c 20 6f 74 68 65 72 29 3b 0d 0a 20 20  his, other);..  
3d60: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3d70: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
3d80: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
3d90: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3dd0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3de0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 43        #region IC
3df0: 6f 6d 70 61 72 61 62 6c 65 20 4d 65 6d 62 65 72  omparable Member
3e00: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
3e10: 75 62 6c 69 63 20 69 6e 74 20 43 6f 6d 70 61 72  ublic int Compar
3e20: 65 54 6f 28 0d 0a 20 20 20 20 20 20 20 20 20 20  eTo(..          
3e30: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 6f 62 6a        object obj
3e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3e50: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
3e60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
3e70: 20 20 20 20 41 6e 79 50 61 69 72 3c 54 31 2c 20      AnyPair<T1, 
3e80: 54 32 3e 20 61 6e 79 50 61 69 72 20 3d 20 6f 62  T2> anyPair = ob
3e90: 6a 20 61 73 20 41 6e 79 50 61 69 72 3c 54 31 2c  j as AnyPair<T1,
3ea0: 20 54 32 3e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20   T2>;....       
3eb0: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6e 79           if (any
3ec0: 50 61 69 72 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Pair == null).. 
3ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ee0: 20 20 20 74 68 72 6f 77 20 6e 65 77 20 41 72 67     throw new Arg
3ef0: 75 6d 65 6e 74 45 78 63 65 70 74 69 6f 6e 28 29  umentException()
3f00: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
3f10: 20 20 20 20 20 72 65 74 75 72 6e 20 43 6f 6d 70       return Comp
3f20: 61 72 65 54 6f 28 61 6e 79 50 61 69 72 29 3b 0d  areTo(anyPair);.
3f30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
3f40: 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
3f50: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
3f60: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
3f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
3fb0: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
3fc0: 20 49 45 71 75 61 74 61 62 6c 65 3c 41 6e 79 50   IEquatable<AnyP
3fd0: 61 69 72 3c 54 31 2c 54 32 3e 3e 20 4d 65 6d 62  air<T1,T2>> Memb
3fe0: 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ers..           
3ff0: 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 45 71 75   public bool Equ
4000: 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  als(..          
4010: 20 20 20 20 20 20 41 6e 79 50 61 69 72 3c 54 31        AnyPair<T1
4020: 2c 20 54 32 3e 20 6f 74 68 65 72 0d 0a 20 20 20  , T2> other..   
4030: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
4040: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
4050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
4060: 65 74 75 72 6e 20 43 6f 6d 70 61 72 65 54 6f 28  eturn CompareTo(
4070: 6f 74 68 65 72 29 20 3d 3d 20 30 3b 0d 0a 20 20  other) == 0;..  
4080: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
4090: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
40a0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
40b0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
40c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
4100: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 45        #region IE
4110: 71 75 61 6c 69 74 79 43 6f 6d 70 61 72 65 72 3c  qualityComparer<
4120: 41 6e 79 50 61 69 72 3c 54 31 2c 54 32 3e 3e 20  AnyPair<T1,T2>> 
4130: 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
4140: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
4150: 20 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20   Equals(..      
4160: 20 20 20 20 20 20 20 20 20 20 41 6e 79 50 61 69            AnyPai
4170: 72 3c 54 31 2c 20 54 32 3e 20 78 2c 0d 0a 20 20  r<T1, T2> x,..  
4180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41 6e                An
4190: 79 50 61 69 72 3c 54 31 2c 20 54 32 3e 20 79 0d  yPair<T1, T2> y.
41a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
41b0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
41c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
41d0: 20 20 20 72 65 74 75 72 6e 20 4f 62 6a 65 63 74     return Object
41e0: 48 65 6c 70 65 72 2e 41 72 65 45 71 75 61 6c 28  Helper.AreEqual(
41f0: 78 2c 20 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  x, y);..        
4200: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
4210: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
4220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4250: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
4260: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 69          public i
4270: 6e 74 20 47 65 74 48 61 73 68 43 6f 64 65 28 0d  nt GetHashCode(.
4280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4290: 20 41 6e 79 50 61 69 72 3c 54 31 2c 20 54 32 3e   AnyPair<T1, T2>
42a0: 20 6f 62 6a 0d 0a 20 20 20 20 20 20 20 20 20 20   obj..          
42b0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
42c0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
42d0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
42e0: 6f 62 6a 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6f  obj != null) ? o
42f0: 62 6a 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29  bj.GetHashCode()
4300: 20 3a 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20   : 0;..         
4310: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
4320: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
4330: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
4340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
4380: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
4390: 72 65 67 69 6f 6e 20 49 43 6c 6f 6e 65 61 62 6c  region ICloneabl
43a0: 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20  e Members..     
43b0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62         public ob
43c0: 6a 65 63 74 20 43 6c 6f 6e 65 28 29 0d 0a 20 20  ject Clone()..  
43d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
43e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
43f0: 75 72 6e 20 6e 65 77 20 41 6e 79 50 61 69 72 3c  urn new AnyPair<
4400: 54 31 2c 20 54 32 3e 28 58 2c 20 59 29 3b 0d 0a  T1, T2>(X, Y);..
4410: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
4420: 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
4430: 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d  egion..        }
4440: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
4450: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
4460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
44a0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
44b0: 20 20 20 23 72 65 67 69 6f 6e 20 54 72 61 63 65     #region Trace
44c0: 4f 70 73 20 43 6c 61 73 73 0d 0a 20 20 20 20 20  Ops Class..     
44d0: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
44e0: 63 20 63 6c 61 73 73 20 54 72 61 63 65 4f 70 73  c class TraceOps
44f0: 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
4500: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
4510: 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e   Private Constan
4520: 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ts..            
4530: 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
4540: 72 69 6e 67 20 44 65 66 61 75 6c 74 44 65 62 75  ring DefaultDebu
4550: 67 46 6f 72 6d 61 74 20 3d 20 22 23 7b 30 3a 30  gFormat = "#{0:0
4560: 30 30 7d 20 40 20 7b 31 7d 3a 20 7b 32 7d 22 3b  00} @ {1}: {2}";
4570: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
4580: 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
4590: 6e 67 20 44 65 66 61 75 6c 74 54 72 61 63 65 46  ng DefaultTraceF
45a0: 6f 72 6d 61 74 20 3d 20 22 23 7b 30 3a 30 30 30  ormat = "#{0:000
45b0: 7d 20 40 20 7b 31 7d 3a 20 7b 32 7d 22 3b 0d 0a  } @ {1}: {2}";..
45c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
45d0: 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
45e0: 6e 67 20 49 73 6f 38 36 30 31 44 61 74 65 54 69  ng Iso8601DateTi
45f0: 6d 65 4f 75 74 70 75 74 46 6f 72 6d 61 74 20 3d  meOutputFormat =
4600: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4610: 20 20 22 79 79 79 79 2e 4d 4d 2e 64 64 54 48 48    "yyyy.MM.ddTHH
4620: 3a 6d 6d 3a 73 73 2e 66 66 66 66 66 66 66 22 3b  :mm:ss.fffffff";
4630: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
4640: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
4650: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
4660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
46a0: 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
46b0: 6f 6e 20 50 72 69 76 61 74 65 20 53 74 61 74 69  on Private Stati
46c0: 63 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20  c Data..        
46d0: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
46e0: 69 63 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f  ic object syncRo
46f0: 6f 74 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28  ot = new object(
4700: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
4710: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 6c  private static l
4720: 6f 6e 67 20 6e 65 78 74 44 65 62 75 67 49 64 3b  ong nextDebugId;
4730: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
4740: 69 76 61 74 65 20 73 74 61 74 69 63 20 6c 6f 6e  ivate static lon
4750: 67 20 6e 65 78 74 54 72 61 63 65 49 64 3b 0d 0a  g nextTraceId;..
4760: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
4770: 61 74 65 20 73 74 61 74 69 63 20 49 4c 69 73 74  ate static IList
4780: 3c 54 72 61 63 65 4c 69 73 74 65 6e 65 72 3e 20  <TraceListener> 
4790: 64 65 62 75 67 4c 69 73 74 65 6e 65 72 73 3b 0d  debugListeners;.
47a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
47b0: 76 61 74 65 20 73 74 61 74 69 63 20 54 72 61 63  vate static Trac
47c0: 65 50 72 69 6f 72 69 74 79 20 64 65 62 75 67 50  ePriority debugP
47d0: 72 69 6f 72 69 74 79 20 3d 20 54 72 61 63 65 50  riority = TraceP
47e0: 72 69 6f 72 69 74 79 2e 44 65 66 61 75 6c 74 3b  riority.Default;
47f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
4800: 69 76 61 74 65 20 73 74 61 74 69 63 20 54 72 61  ivate static Tra
4810: 63 65 50 72 69 6f 72 69 74 79 20 74 72 61 63 65  cePriority trace
4820: 50 72 69 6f 72 69 74 79 20 3d 20 54 72 61 63 65  Priority = Trace
4830: 50 72 69 6f 72 69 74 79 2e 44 65 66 61 75 6c 74  Priority.Default
4840: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
4850: 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
4860: 72 69 6e 67 20 64 65 62 75 67 46 6f 72 6d 61 74  ring debugFormat
4870: 20 3d 20 44 65 66 61 75 6c 74 44 65 62 75 67 46   = DefaultDebugF
4880: 6f 72 6d 61 74 3b 0d 0a 20 20 20 20 20 20 20 20  ormat;..        
4890: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
48a0: 69 63 20 73 74 72 69 6e 67 20 74 72 61 63 65 46  ic string traceF
48b0: 6f 72 6d 61 74 20 3d 20 44 65 66 61 75 6c 74 54  ormat = DefaultT
48c0: 72 61 63 65 46 6f 72 6d 61 74 3b 0d 0a 20 20 20  raceFormat;..   
48d0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
48e0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
48f0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4930: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
4940: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
4950: 62 6c 69 63 20 53 74 61 74 69 63 20 50 72 6f 70  blic Static Prop
4960: 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20  erties..        
4970: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
4980: 63 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20  c TracePriority 
4990: 44 65 62 75 67 50 72 69 6f 72 69 74 79 0d 0a 20  DebugPriority.. 
49a0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
49b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
49c0: 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f  t { lock (syncRo
49d0: 6f 74 29 20 7b 20 72 65 74 75 72 6e 20 64 65 62  ot) { return deb
49e0: 75 67 50 72 69 6f 72 69 74 79 3b 20 7d 20 7d 0d  ugPriority; } }.
49f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4a00: 20 73 65 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e   set { lock (syn
4a10: 63 52 6f 6f 74 29 20 7b 20 64 65 62 75 67 50 72  cRoot) { debugPr
4a20: 69 6f 72 69 74 79 20 3d 20 76 61 6c 75 65 3b 20  iority = value; 
4a30: 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  } }..           
4a40: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
4a50: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
4a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4a90: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
4aa0: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
4ab0: 69 63 20 54 72 61 63 65 50 72 69 6f 72 69 74 79  ic TracePriority
4ac0: 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 0d 0a   TracePriority..
4ad0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
4ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
4af0: 65 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52  et { lock (syncR
4b00: 6f 6f 74 29 20 7b 20 72 65 74 75 72 6e 20 74 72  oot) { return tr
4b10: 61 63 65 50 72 69 6f 72 69 74 79 3b 20 7d 20 7d  acePriority; } }
4b20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4b30: 20 20 73 65 74 20 7b 20 6c 6f 63 6b 20 28 73 79    set { lock (sy
4b40: 6e 63 52 6f 6f 74 29 20 7b 20 74 72 61 63 65 50  ncRoot) { traceP
4b50: 72 69 6f 72 69 74 79 20 3d 20 76 61 6c 75 65 3b  riority = value;
4b60: 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20   } }..          
4b70: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
4b80: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bc0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
4bd0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
4be0: 74 69 63 20 73 74 72 69 6e 67 20 44 65 62 75 67  tic string Debug
4bf0: 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20 20 20  Format..        
4c00: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
4c10: 20 20 20 20 20 20 20 67 65 74 20 7b 20 6c 6f 63         get { loc
4c20: 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 7b 20 72  k (syncRoot) { r
4c30: 65 74 75 72 6e 20 64 65 62 75 67 46 6f 72 6d 61  eturn debugForma
4c40: 74 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20  t; } }..        
4c50: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6c 6f          set { lo
4c60: 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 7b 20  ck (syncRoot) { 
4c70: 64 65 62 75 67 46 6f 72 6d 61 74 20 3d 20 76 61  debugFormat = va
4c80: 6c 75 65 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20  lue; } }..      
4c90: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
4ca0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
4cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
4cf0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
4d00: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 54   static string T
4d10: 72 61 63 65 46 6f 72 6d 61 74 0d 0a 20 20 20 20  raceFormat..    
4d20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4d30: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
4d40: 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
4d50: 20 7b 20 72 65 74 75 72 6e 20 74 72 61 63 65 46   { return traceF
4d60: 6f 72 6d 61 74 3b 20 7d 20 7d 0d 0a 20 20 20 20  ormat; } }..    
4d70: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
4d80: 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74  { lock (syncRoot
4d90: 29 20 7b 20 74 72 61 63 65 46 6f 72 6d 61 74 20  ) { traceFormat 
4da0: 3d 20 76 61 6c 75 65 3b 20 7d 20 7d 0d 0a 20 20  = value; } }..  
4db0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
4dc0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
4dd0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
4de0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
4df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
4e30: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e        #region In
4e40: 74 65 72 61 63 74 69 76 65 20 53 75 70 70 6f 72  teractive Suppor
4e50: 74 20 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20  t Methods..     
4e60: 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d         [MethodIm
4e70: 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74  pl(MethodImplOpt
4e80: 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29  ions.NoInlining)
4e90: 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ]..            p
4ea0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 44 69 61  ublic static Dia
4eb0: 6c 6f 67 52 65 73 75 6c 74 20 53 68 6f 77 4d 65  logResult ShowMe
4ec0: 73 73 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20  ssage(..        
4ed0: 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
4ee0: 6f 72 69 74 79 20 74 72 61 63 65 50 72 69 6f 72  ority tracePrior
4ef0: 69 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ity,..          
4f00: 20 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62        TraceCallb
4f10: 61 63 6b 20 64 65 62 75 67 43 61 6c 6c 62 61 63  ack debugCallbac
4f20: 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
4f30: 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63      TraceCallbac
4f40: 6b 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c  k traceCallback,
4f50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4f60: 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d    Assembly assem
4f70: 62 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  bly,..          
4f80: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65 73        string mes
4f90: 73 61 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  sage,..         
4fa0: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 61         string ca
4fb0: 74 65 67 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20  tegory,..       
4fc0: 20 20 20 20 20 20 20 20 20 4d 65 73 73 61 67 65           Message
4fd0: 42 6f 78 42 75 74 74 6f 6e 73 20 62 75 74 74 6f  BoxButtons butto
4fe0: 6e 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ns,..           
4ff0: 20 20 20 20 20 4d 65 73 73 61 67 65 42 6f 78 49       MessageBoxI
5000: 63 6f 6e 20 69 63 6f 6e 0d 0a 20 20 20 20 20 20  con icon..      
5010: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
5020: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
5030: 20 20 20 20 20 20 20 20 20 20 20 20 44 69 61 6c              Dial
5040: 6f 67 52 65 73 75 6c 74 20 72 65 73 75 6c 74 20  ogResult result 
5050: 3d 20 44 69 61 6c 6f 67 52 65 73 75 6c 74 2e 4f  = DialogResult.O
5060: 4b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  K;....          
5070: 20 20 20 20 20 20 44 65 62 75 67 41 6e 64 54 72        DebugAndTr
5080: 61 63 65 28 74 72 61 63 65 50 72 69 6f 72 69 74  ace(tracePriorit
5090: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
50a0: 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
50b0: 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
50c0: 62 61 63 6b 2c 20 6d 65 73 73 61 67 65 2c 20 63  back, message, c
50d0: 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
50e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
50f0: 28 53 79 73 74 65 6d 49 6e 66 6f 72 6d 61 74 69  (SystemInformati
5100: 6f 6e 2e 55 73 65 72 49 6e 74 65 72 61 63 74 69  on.UserInteracti
5110: 76 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ve)..           
5120: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5130: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
5140: 6e 67 20 74 69 74 6c 65 20 3d 20 47 65 74 41 73  ng title = GetAs
5150: 73 65 6d 62 6c 79 54 69 74 6c 65 28 61 73 73 65  semblyTitle(asse
5160: 6d 62 6c 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  mbly);....      
5170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
5180: 20 28 74 69 74 6c 65 20 3d 3d 20 6e 75 6c 6c 29   (title == null)
5190: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
51a0: 20 20 20 20 20 20 20 20 20 20 74 69 74 6c 65 20            title 
51b0: 3d 20 41 70 70 6c 69 63 61 74 69 6f 6e 2e 50 72  = Application.Pr
51c0: 6f 64 75 63 74 4e 61 6d 65 3b 0d 0a 0d 0a 20 20  oductName;....  
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
51e0: 20 20 72 65 73 75 6c 74 20 3d 20 4d 65 73 73 61    result = Messa
51f0: 67 65 42 6f 78 2e 53 68 6f 77 28 6d 65 73 73 61  geBox.Show(messa
5200: 67 65 2c 20 74 69 74 6c 65 2c 20 62 75 74 74 6f  ge, title, butto
5210: 6e 73 2c 20 69 63 6f 6e 29 3b 0d 0a 0d 0a 20 20  ns, icon);....  
5220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5230: 20 20 44 65 62 75 67 41 6e 64 54 72 61 63 65 28    DebugAndTrace(
5240: 74 72 61 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a  tracePriority,..
5250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5260: 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
5270: 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
5280: 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
5290: 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
52a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 55                "U
52b0: 73 65 72 20 63 68 6f 69 63 65 20 6f 66 20 7b 30  ser choice of {0
52c0: 7d 2e 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  }.", ForDisplay(
52d0: 72 65 73 75 6c 74 29 29 2c 0d 0a 20 20 20 20 20  result)),..     
52e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
52f0: 20 20 20 63 61 74 65 67 6f 72 79 29 3b 0d 0a 0d     category);...
5300: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5310: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
5320: 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lt;..           
5330: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5340: 20 20 20 20 20 20 20 20 20 20 44 65 62 75 67 41            DebugA
5350: 6e 64 54 72 61 63 65 28 74 72 61 63 65 50 72 69  ndTrace(tracePri
5360: 6f 72 69 74 79 2c 0d 0a 20 20 20 20 20 20 20 20  ority,..        
5370: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
5380: 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65  gCallback, trace
5390: 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
53a0: 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
53b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 44                "D
53c0: 65 66 61 75 6c 74 20 63 68 6f 69 63 65 20 6f 66  efault choice of
53d0: 20 7b 30 7d 2e 22 2c 20 46 6f 72 44 69 73 70 6c   {0}.", ForDispl
53e0: 61 79 28 72 65 73 75 6c 74 29 29 2c 0d 0a 20 20  ay(result)),..  
53f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5400: 20 20 63 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a    category);....
5410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5420: 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a  return result;..
5430: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
5440: 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
5450: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
5460: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
5470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
54a0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
54b0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
54c0: 54 72 61 63 69 6e 67 20 53 75 70 70 6f 72 74 20  Tracing Support 
54d0: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
54e0: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
54f0: 69 63 20 76 6f 69 64 20 53 65 74 75 70 44 65 62  ic void SetupDeb
5500: 75 67 4c 69 73 74 65 6e 65 72 73 28 29 0d 0a 20  ugListeners().. 
5510: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
5530: 20 28 64 65 62 75 67 4c 69 73 74 65 6e 65 72 73   (debugListeners
5540: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
5550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
5560: 65 62 75 67 4c 69 73 74 65 6e 65 72 73 20 3d 20  ebugListeners = 
5570: 6e 65 77 20 4c 69 73 74 3c 54 72 61 63 65 4c 69  new List<TraceLi
5580: 73 74 65 6e 65 72 3e 28 29 3b 0d 0a 0d 0a 20 20  stener>();....  
5590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
55a0: 62 75 67 4c 69 73 74 65 6e 65 72 73 2e 41 64 64  bugListeners.Add
55b0: 28 6e 65 77 20 43 6f 6e 73 6f 6c 65 54 72 61 63  (new ConsoleTrac
55c0: 65 4c 69 73 74 65 6e 65 72 28 29 29 3b 0d 0a 20  eListener());.. 
55d0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
55e0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
55f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5600: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5610: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
5630: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
5640: 75 62 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e  ublic static lon
5650: 67 20 4e 65 78 74 44 65 62 75 67 49 64 28 29 0d  g NextDebugId().
5660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
5670: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5680: 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b  return Interlock
5690: 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66  ed.Increment(ref
56a0: 20 6e 65 78 74 44 65 62 75 67 49 64 29 3b 0d 0a   nextDebugId);..
56b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
56c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
56d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
56f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5710: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
5720: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 6c 6f  public static lo
5730: 6e 67 20 4e 65 78 74 54 72 61 63 65 49 64 28 29  ng NextTraceId()
5740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
5750: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5760: 20 72 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63   return Interloc
5770: 6b 65 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65  ked.Increment(re
5780: 66 20 6e 65 78 74 54 72 61 63 65 49 64 29 3b 0d  f nextTraceId);.
5790: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
57a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
57b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
57f0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
5800: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
5810: 74 72 69 6e 67 20 54 69 6d 65 53 74 61 6d 70 28  tring TimeStamp(
5820: 44 61 74 65 54 69 6d 65 20 64 61 74 65 54 69 6d  DateTime dateTim
5830: 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
5840: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
5850: 20 20 20 72 65 74 75 72 6e 20 64 61 74 65 54 69     return dateTi
5860: 6d 65 2e 54 6f 53 74 72 69 6e 67 28 49 73 6f 38  me.ToString(Iso8
5870: 36 30 31 44 61 74 65 54 69 6d 65 4f 75 74 70 75  601DateTimeOutpu
5880: 74 46 6f 72 6d 61 74 29 3b 0d 0a 20 20 20 20 20  tFormat);..     
5890: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
58a0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
58b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
58e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
58f0: 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68             [Meth
5900: 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70  odImpl(MethodImp
5910: 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e  lOptions.NoInlin
5920: 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20  ing)]..         
5930: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
5940: 20 73 74 72 69 6e 67 20 47 65 74 4d 65 74 68 6f   string GetMetho
5950: 64 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  dName(..        
5960: 20 20 20 20 20 20 20 20 53 74 61 63 6b 54 72 61          StackTra
5970: 63 65 20 73 74 61 63 6b 54 72 61 63 65 2c 0d 0a  ce stackTrace,..
5980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5990: 69 6e 74 20 6c 65 76 65 6c 0d 0a 20 20 20 20 20  int level..     
59a0: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
59b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
59c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
59d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
59e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
59f0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
5a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5a10: 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 61 20 76   // NOTE: If a v
5a20: 61 6c 69 64 20 73 74 61 63 6b 20 74 72 61 63 65  alid stack trace
5a30: 20 77 61 73 20 6e 6f 74 20 73 75 70 70 6c 69 65   was not supplie
5a40: 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20  d by the..      
5a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
5a60: 20 20 20 20 20 20 20 63 61 6c 6c 65 72 2c 20 63         caller, c
5a70: 72 65 61 74 65 20 6f 6e 65 20 6e 6f 77 20 62 61  reate one now ba
5a80: 73 65 64 20 6f 6e 20 74 68 65 20 63 75 72 72 65  sed on the curre
5a90: 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  nt..            
5aa0: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
5ab0: 20 65 78 65 63 75 74 69 6f 6e 20 73 74 61 63 6b   execution stack
5ac0: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
5ad0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
5af0: 66 20 28 73 74 61 63 6b 54 72 61 63 65 20 3d 3d  f (stackTrace ==
5b00: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
5b10: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
5b20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b30: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b50: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 47 72 61 62     // NOTE: Grab
5b60: 20 74 68 65 20 63 75 72 72 65 6e 74 20 65 78 65   the current exe
5b70: 63 75 74 69 6f 6e 20 73 74 61 63 6b 2e 0d 0a 20  cution stack... 
5b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b90: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
5ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5bb0: 20 20 20 73 74 61 63 6b 54 72 61 63 65 20 3d 20     stackTrace = 
5bc0: 6e 65 77 20 53 74 61 63 6b 54 72 61 63 65 28 29  new StackTrace()
5bd0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
5be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
5bf0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5c00: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
5c10: 3a 20 41 6c 77 61 79 73 20 73 6b 69 70 20 74 68  : Always skip th
5c20: 69 73 20 63 61 6c 6c 20 66 72 61 6d 65 20 77 68  is call frame wh
5c30: 65 6e 20 77 65 20 63 61 70 74 75 72 65 0d 0a 20  en we capture.. 
5c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c50: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
5c60: 74 68 65 20 73 74 61 63 6b 20 74 72 61 63 65 2e  the stack trace.
5c70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5c80: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
5c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ca0: 20 20 20 20 20 20 6c 65 76 65 6c 2b 2b 3b 0d 0a        level++;..
5cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5cc0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
5cd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
5ce0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5cf0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 47 65       // NOTE: Ge
5d00: 74 20 74 68 65 20 73 70 65 63 69 66 69 65 64 20  t the specified 
5d10: 73 74 61 63 6b 20 66 72 61 6d 65 20 28 61 6c 77  stack frame (alw
5d20: 61 79 73 20 61 64 64 20 6f 6e 65 20 74 6f 0d 0a  ays add one to..
5d30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5d40: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73 6b 69      //       ski
5d50: 70 20 74 68 69 73 20 6d 65 74 68 6f 64 29 2e 0d  p this method)..
5d60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
5d70: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5d80: 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74 61               Sta
5d90: 63 6b 46 72 61 6d 65 20 73 74 61 63 6b 46 72 61  ckFrame stackFra
5da0: 6d 65 20 3d 20 73 74 61 63 6b 54 72 61 63 65 2e  me = stackTrace.
5db0: 47 65 74 46 72 61 6d 65 28 6c 65 76 65 6c 29 3b  GetFrame(level);
5dc0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
5dd0: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5df0: 2f 2f 20 4e 4f 54 45 3a 20 47 65 74 20 74 68 65  // NOTE: Get the
5e00: 20 6d 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20   method for the 
5e10: 73 74 61 63 6b 20 66 72 61 6d 65 2e 0d 0a 20 20  stack frame...  
5e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e30: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
5e40: 20 20 20 20 20 20 20 20 20 20 4d 65 74 68 6f 64            Method
5e50: 42 61 73 65 20 6d 65 74 68 6f 64 42 61 73 65 20  Base methodBase 
5e60: 3d 20 73 74 61 63 6b 46 72 61 6d 65 2e 47 65 74  = stackFrame.Get
5e70: 4d 65 74 68 6f 64 28 29 3b 0d 0a 0d 0a 20 20 20  Method();....   
5e80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5e90: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
5ea0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
5eb0: 3a 20 47 65 74 20 74 68 65 20 74 79 70 65 20 66  : Get the type f
5ec0: 6f 72 20 74 68 65 20 6d 65 74 68 6f 64 2e 0d 0a  or the method...
5ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ee0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 54 79 70 65              Type
5f00: 20 74 79 70 65 20 3d 20 6d 65 74 68 6f 64 42 61   type = methodBa
5f10: 73 65 2e 44 65 63 6c 61 72 69 6e 67 54 79 70 65  se.DeclaringType
5f20: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
5f30: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
5f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5f50: 20 2f 2f 20 4e 4f 54 45 3a 20 47 65 74 20 74 68   // NOTE: Get th
5f60: 65 20 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 65  e name of the me
5f70: 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
5f80: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
5f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5fa0: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d     string name =
5fb0: 20 6d 65 74 68 6f 64 42 61 73 65 2e 4e 61 6d 65   methodBase.Name
5fc0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
5fd0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
5fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5ff0: 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e   // NOTE: Return
6000: 20 74 68 65 20 70 72 6f 70 65 72 6c 79 20 66 6f   the properly fo
6010: 72 6d 61 74 74 65 64 20 72 65 73 75 6c 74 2e 0d  rmatted result..
6020: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6030: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
6040: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
6050: 75 72 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  urn String.Forma
6060: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
6070: 20 20 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d              "{0}
6080: 7b 31 7d 7b 32 7d 22 2c 20 74 79 70 65 2e 4e 61  {1}{2}", type.Na
6090: 6d 65 2c 20 54 79 70 65 2e 44 65 6c 69 6d 69 74  me, Type.Delimit
60a0: 65 72 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20  er, name);..    
60b0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
60c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
60d0: 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20  atch..          
60e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
60f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
6100: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
6110: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
6120: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6130: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
6140: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
6150: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
6160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
61a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
61b0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
61c0: 69 64 20 44 65 62 75 67 43 6f 72 65 28 0d 0a 20  id DebugCore(.. 
61d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
61e0: 74 72 69 6e 67 20 6d 65 73 73 61 67 65 2c 0d 0a  tring message,..
61f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6200: 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 0d  string category.
6210: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6220: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
6230: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6240: 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
6250: 74 29 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f  t) /* TRANSACTIO
6260: 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  NAL */..        
6270: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
6290: 66 20 28 64 65 62 75 67 4c 69 73 74 65 6e 65 72  f (debugListener
62a0: 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  s != null)..    
62b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
62c0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
62d0: 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61             forea
62e0: 63 68 20 28 54 72 61 63 65 4c 69 73 74 65 6e 65  ch (TraceListene
62f0: 72 20 6c 69 73 74 65 6e 65 72 20 69 6e 20 64 65  r listener in de
6300: 62 75 67 4c 69 73 74 65 6e 65 72 73 29 0d 0a 20  bugListeners).. 
6310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6320: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6340: 20 20 20 20 20 20 6c 69 73 74 65 6e 65 72 2e 57        listener.W
6350: 72 69 74 65 4c 69 6e 65 28 6d 65 73 73 61 67 65  riteLine(message
6360: 2c 20 63 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20  , category);..  
6370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6380: 20 20 20 20 20 20 20 20 20 20 6c 69 73 74 65 6e            listen
6390: 65 72 2e 46 6c 75 73 68 28 29 3b 0d 0a 20 20 20  er.Flush();..   
63a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
63b0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
63c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
63d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
63e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
63f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
6400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6420: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6430: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6440: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
6450: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
6460: 76 6f 69 64 20 54 72 61 63 65 43 6f 72 65 28 0d  void TraceCore(.
6470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6480: 20 73 74 72 69 6e 67 20 6d 65 73 73 61 67 65 2c   string message,
6490: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
64a0: 20 20 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72    string categor
64b0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
64c0: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
64d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
64e0: 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
64f0: 6f 6f 74 29 20 2f 2a 20 54 52 41 4e 53 41 43 54  oot) /* TRANSACT
6500: 49 4f 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20  IONAL */..      
6510: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
6520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6530: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
6540: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
6550: 3a 20 57 72 69 74 65 20 74 68 65 20 6d 65 73 73  : Write the mess
6560: 61 67 65 20 74 6f 20 61 6c 6c 20 74 68 65 20 61  age to all the a
6570: 63 74 69 76 65 20 74 72 61 63 65 0d 0a 20 20 20  ctive trace..   
6580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6590: 20 2f 2f 20 20 20 20 20 20 20 6c 69 73 74 65 6e   //       listen
65a0: 65 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ers...          
65b0: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
65c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
65d0: 20 20 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e    Trace.WriteLin
65e0: 65 28 6d 65 73 73 61 67 65 2c 20 63 61 74 65 67  e(message, categ
65f0: 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ory);..         
6600: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
6610: 2e 46 6c 75 73 68 28 29 3b 0d 0a 20 20 20 20 20  .Flush();..     
6620: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
6630: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
6640: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
6650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6690: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d  ..            [M
66a0: 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64  ethodImpl(Method
66b0: 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e  ImplOptions.NoIn
66c0: 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20  lining)]..      
66d0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
66e0: 74 69 63 20 73 74 72 69 6e 67 20 44 65 62 75 67  tic string Debug
66f0: 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
6700: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
6710: 50 72 69 6f 72 69 74 79 20 74 72 61 63 65 50 72  Priority tracePr
6720: 69 6f 72 69 74 79 2c 0d 0a 20 20 20 20 20 20 20  iority,..       
6730: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 43 61           TraceCa
6740: 6c 6c 62 61 63 6b 20 64 65 62 75 67 43 61 6c 6c  llback debugCall
6750: 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
6760: 20 20 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c         TraceCall
6770: 62 61 63 6b 20 74 72 61 63 65 43 61 6c 6c 62 61  back traceCallba
6780: 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
6790: 20 20 20 20 20 45 78 63 65 70 74 69 6f 6e 20 65       Exception e
67a0: 78 63 65 70 74 69 6f 6e 2c 0d 0a 20 20 20 20 20  xception,..     
67b0: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
67c0: 67 20 63 61 74 65 67 6f 72 79 0d 0a 20 20 20 20  g category..    
67d0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
67e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
67f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
6800: 20 28 65 78 63 65 70 74 69 6f 6e 20 21 3d 20 6e   (exception != n
6810: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
6820: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
6830: 20 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 74   DebugAndTrace(t
6840: 72 61 63 65 50 72 69 6f 72 69 74 79 2c 20 64 65  racePriority, de
6850: 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
6860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6870: 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
6880: 61 63 6b 2c 20 6e 65 77 20 53 74 61 63 6b 54 72  ack, new StackTr
6890: 61 63 65 28 65 78 63 65 70 74 69 6f 6e 2c 20 74  ace(exception, t
68a0: 72 75 65 29 2c 20 30 2c 0d 0a 20 20 20 20 20 20  rue), 0,..      
68b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68c0: 20 20 65 78 63 65 70 74 69 6f 6e 2e 54 6f 53 74    exception.ToSt
68d0: 72 69 6e 67 28 29 2c 20 63 61 74 65 67 6f 72 79  ring(), category
68e0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
68f0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
6900: 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
6910: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6920: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6960: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6970: 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28      [MethodImpl(
6980: 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e  MethodImplOption
6990: 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a  s.NoInlining)]..
69a0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
69b0: 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  ic static string
69c0: 20 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d   DebugAndTrace(.
69d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
69e0: 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 74   TracePriority t
69f0: 72 61 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20  racePriority,.. 
6a00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
6a10: 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 64 65 62  raceCallback deb
6a20: 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ugCallback,..   
6a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
6a40: 63 65 43 61 6c 6c 62 61 63 6b 20 74 72 61 63 65  ceCallback trace
6a50: 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
6a60: 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
6a70: 67 20 6d 65 73 73 61 67 65 2c 0d 0a 20 20 20 20  g message,..    
6a80: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
6a90: 6e 67 20 63 61 74 65 67 6f 72 79 0d 0a 20 20 20  ng category..   
6aa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
6ab0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
6ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
6ad0: 65 74 75 72 6e 20 44 65 62 75 67 41 6e 64 54 72  eturn DebugAndTr
6ae0: 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
6af0: 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 50            traceP
6b00: 72 69 6f 72 69 74 79 2c 20 64 65 62 75 67 43 61  riority, debugCa
6b10: 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c  llback, traceCal
6b20: 6c 62 61 63 6b 2c 20 6e 75 6c 6c 2c 20 31 2c 0d  lback, null, 1,.
6b30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6b40: 20 20 20 20 20 6d 65 73 73 61 67 65 2c 20 63 61       message, ca
6b50: 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20  tegory);..      
6b60: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
6b70: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
6b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
6bc0: 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f            [Metho
6bd0: 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c  dImpl(MethodImpl
6be0: 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69  Options.NoInlini
6bf0: 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20  ng)]..          
6c00: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
6c10: 20 73 74 72 69 6e 67 20 44 65 62 75 67 41 6e 64   string DebugAnd
6c20: 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
6c30: 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
6c40: 6f 72 69 74 79 20 74 72 61 63 65 50 72 69 6f 72  ority tracePrior
6c50: 69 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ity,..          
6c60: 20 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62        TraceCallb
6c70: 61 63 6b 20 64 65 62 75 67 43 61 6c 6c 62 61 63  ack debugCallbac
6c80: 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
6c90: 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63      TraceCallbac
6ca0: 6b 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c  k traceCallback,
6cb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6cc0: 20 20 53 74 61 63 6b 54 72 61 63 65 20 73 74 61    StackTrace sta
6cd0: 63 6b 54 72 61 63 65 2c 0d 0a 20 20 20 20 20 20  ckTrace,..      
6ce0: 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65            int le
6cf0: 76 65 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  vel,..          
6d00: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65 73        string mes
6d10: 73 61 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  sage,..         
6d20: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 61         string ca
6d30: 74 65 67 6f 72 79 0d 0a 20 20 20 20 20 20 20 20  tegory..        
6d40: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
6d50: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6d60: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
6d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
6d80: 20 4e 4f 54 45 3a 20 41 6c 77 61 79 73 20 73 6b   NOTE: Always sk
6d90: 69 70 20 74 68 69 73 20 63 61 6c 6c 20 66 72 61  ip this call fra
6da0: 6d 65 20 69 66 20 74 68 65 20 73 74 61 63 6b 20  me if the stack 
6db0: 74 72 61 63 65 20 69 73 0d 0a 20 20 20 20 20 20  trace is..      
6dc0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
6dd0: 20 20 20 67 6f 69 6e 67 20 74 6f 20 62 65 20 63     going to be c
6de0: 61 70 74 75 72 65 64 20 62 79 20 47 65 74 4d 65  aptured by GetMe
6df0: 74 68 6f 64 4e 61 6d 65 2e 0d 0a 20 20 20 20 20  thodName...     
6e00: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
6e10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
6e20: 66 20 28 73 74 61 63 6b 54 72 61 63 65 20 3d 3d  f (stackTrace ==
6e30: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
6e40: 20 20 20 20 20 20 20 20 20 20 20 20 6c 65 76 65              leve
6e50: 6c 2b 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  l++;....        
6e60: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
6e70: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
6e80: 4f 54 45 3a 20 46 6f 72 6d 61 74 20 74 68 65 20  OTE: Format the 
6e90: 6d 65 73 73 61 67 65 20 66 6f 72 20 64 69 73 70  message for disp
6ea0: 6c 61 79 20 28 6f 6e 63 65 29 2e 0d 0a 20 20 20  lay (once)...   
6eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
6ec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6ed0: 20 73 74 72 69 6e 67 20 66 6f 72 6d 61 74 74 65   string formatte
6ee0: 64 20 3d 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  d = String.Forma
6ef0: 74 28 22 7b 30 7d 3a 20 7b 31 7d 22 2c 0d 0a 20  t("{0}: {1}",.. 
6f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6f10: 20 20 20 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65     GetMethodName
6f20: 28 73 74 61 63 6b 54 72 61 63 65 2c 20 6c 65 76  (stackTrace, lev
6f30: 65 6c 29 2c 20 6d 65 73 73 61 67 65 29 3b 0d 0a  el), message);..
6f40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6f50: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
6f60: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
6f70: 66 20 74 68 65 20 64 65 62 75 67 20 63 61 6c 6c  f the debug call
6f80: 62 61 63 6b 20 69 73 20 69 6e 76 61 6c 69 64 20  back is invalid 
6f90: 6f 72 20 74 68 65 20 74 72 61 63 65 20 70 72 69  or the trace pri
6fa0: 6f 72 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20  ority..         
6fb0: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
6fc0: 6f 66 20 74 68 69 73 20 6d 65 73 73 61 67 65 20  of this message 
6fd0: 69 73 20 6c 65 73 73 20 74 68 61 6e 20 77 68 61  is less than wha
6fe0: 74 20 77 65 20 63 75 72 72 65 6e 74 6c 79 20 77  t we currently w
6ff0: 61 6e 74 20 74 6f 0d 0a 20 20 20 20 20 20 20 20  ant to..        
7000: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
7010: 20 64 65 62 75 67 2c 20 73 6b 69 70 20 69 74 2e   debug, skip it.
7020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7030: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
7040: 20 20 20 20 20 20 69 66 20 28 28 64 65 62 75 67        if ((debug
7050: 43 61 6c 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c  Callback != null
7060: 29 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  ) &&..          
7070: 20 20 20 20 20 20 20 20 20 20 28 74 72 61 63 65            (trace
7080: 50 72 69 6f 72 69 74 79 20 3e 3d 20 44 65 62 75  Priority >= Debu
7090: 67 50 72 69 6f 72 69 74 79 29 29 0d 0a 20 20 20  gPriority))..   
70a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
70b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
70c0: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
70d0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
70e0: 4f 54 45 3a 20 49 6e 76 6f 6b 65 20 74 68 65 20  OTE: Invoke the 
70f0: 64 65 62 75 67 20 63 61 6c 6c 62 61 63 6b 20 77  debug callback w
7100: 69 74 68 20 74 68 65 20 66 6f 72 6d 61 74 74 65  ith the formatte
7110: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
7120: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
7130: 6d 65 73 73 61 67 65 20 61 6e 64 20 74 68 65 20  message and the 
7140: 63 61 74 65 67 6f 72 79 20 73 70 65 63 69 66 69  category specifi
7150: 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20  ed by the..     
7160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
7170: 2f 20 20 20 20 20 20 20 63 61 6c 6c 65 72 2e 0d  /       caller..
7180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7190: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
71a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
71b0: 75 67 43 61 6c 6c 62 61 63 6b 28 66 6f 72 6d 61  ugCallback(forma
71c0: 74 74 65 64 2c 20 63 61 74 65 67 6f 72 79 29 3b  tted, category);
71d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
71e0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
71f0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
7200: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
7210: 54 45 3a 20 49 66 20 74 68 65 20 74 72 61 63 65  TE: If the trace
7220: 20 63 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76   callback is inv
7230: 61 6c 69 64 20 6f 72 20 74 68 65 20 74 72 61 63  alid or the trac
7240: 65 20 70 72 69 6f 72 69 74 79 0d 0a 20 20 20 20  e priority..    
7250: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
7260: 20 20 20 20 20 6f 66 20 74 68 69 73 20 6d 65 73       of this mes
7270: 73 61 67 65 20 69 73 20 6c 65 73 73 20 74 68 61  sage is less tha
7280: 6e 20 77 68 61 74 20 77 65 20 63 75 72 72 65 6e  n what we curren
7290: 74 6c 79 20 77 61 6e 74 20 74 6f 0d 0a 20 20 20  tly want to..   
72a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
72b0: 20 20 20 20 20 20 74 72 61 63 65 2c 20 73 6b 69        trace, ski
72c0: 70 20 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20  p it...         
72d0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
72e0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
72f0: 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 20 21 3d  traceCallback !=
7300: 20 6e 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20   null) &&..     
7310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
7320: 74 72 61 63 65 50 72 69 6f 72 69 74 79 20 3e 3d  tracePriority >=
7330: 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 29 29   TracePriority))
7340: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7350: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7360: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
7370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7380: 20 2f 2f 20 4e 4f 54 45 3a 20 49 6e 76 6f 6b 65   // NOTE: Invoke
7390: 20 74 68 65 20 74 72 61 63 65 20 63 61 6c 6c 62   the trace callb
73a0: 61 63 6b 20 77 69 74 68 20 74 68 65 20 66 6f 72  ack with the for
73b0: 6d 61 74 74 65 64 0d 0a 20 20 20 20 20 20 20 20  matted..        
73c0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
73d0: 20 20 20 20 20 6d 65 73 73 61 67 65 20 61 6e 64       message and
73e0: 20 74 68 65 20 63 61 74 65 67 6f 72 79 20 73 70   the category sp
73f0: 65 63 69 66 69 65 64 20 62 79 20 74 68 65 0d 0a  ecified by the..
7400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7410: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 61 6c      //       cal
7420: 6c 65 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ler...          
7430: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
7440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7450: 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
7460: 66 6f 72 6d 61 74 74 65 64 2c 20 63 61 74 65 67  formatted, categ
7470: 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ory);..         
7480: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
7490: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
74a0: 72 6e 20 6d 65 73 73 61 67 65 3b 0d 0a 20 20 20  rn message;..   
74b0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
74c0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
74d0: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  on..        }.. 
74e0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
74f0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
7500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7540: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
7550: 23 72 65 67 69 6f 6e 20 4d 6f 63 6b 52 65 67 69  #region MockRegi
7560: 73 74 72 79 20 43 6c 61 73 73 0d 0a 20 20 20 20  stry Class..    
7570: 20 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c      private seal
7580: 65 64 20 63 6c 61 73 73 20 4d 6f 63 6b 52 65 67  ed class MockReg
7590: 69 73 74 72 79 20 3a 20 49 44 69 73 70 6f 73 61  istry : IDisposa
75a0: 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ble..        {..
75b0: 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
75c0: 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74  ion Public Const
75d0: 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20  ructors..       
75e0: 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b       public Mock
75f0: 52 65 67 69 73 74 72 79 28 29 0d 0a 20 20 20 20  Registry()..    
7600: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7610: 20 20 20 20 20 20 20 20 20 20 20 77 68 61 74 49             whatI
7620: 66 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  f = true;..     
7630: 20 20 20 20 20 20 20 20 20 20 20 72 65 61 64 4f             readO
7640: 6e 6c 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  nly = true;..   
7650: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 61 66               saf
7660: 65 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  e = true;..     
7670: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
7680: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
76c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
76d0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
76e0: 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 28 0d  c MockRegistry(.
76f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7700: 20 62 6f 6f 6c 20 77 68 61 74 49 66 0d 0a 20 20   bool whatIf..  
7710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
7720: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7730: 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20   : this()..     
7740: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
7750: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 77            this.w
7760: 68 61 74 49 66 20 3d 20 77 68 61 74 49 66 3b 0d  hatIf = whatIf;.
7770: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
7780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
7790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
77d0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
77e0: 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69   public MockRegi
77f0: 73 74 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20  stry(..         
7800: 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74         bool what
7810: 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If,..           
7820: 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e       bool readOn
7830: 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ly..            
7840: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
7850: 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 77 68         : this(wh
7860: 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20  atIf)..         
7870: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
7880: 20 20 20 20 20 20 74 68 69 73 2e 72 65 61 64 4f        this.readO
7890: 6e 6c 79 20 3d 20 72 65 61 64 4f 6e 6c 79 3b 0d  nly = readOnly;.
78a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
78b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
78c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
78f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7900: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
7910: 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69   public MockRegi
7920: 73 74 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20  stry(..         
7930: 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74         bool what
7940: 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If,..           
7950: 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e       bool readOn
7960: 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ly,..           
7970: 20 20 20 20 20 62 6f 6f 6c 20 73 61 66 65 0d 0a       bool safe..
7980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7990: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
79a0: 20 20 20 3a 20 74 68 69 73 28 77 68 61 74 49 66     : this(whatIf
79b0: 2c 20 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20 20  , readOnly)..   
79c0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
79d0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
79e0: 2e 73 61 66 65 20 3d 20 73 61 66 65 3b 0d 0a 20  .safe = safe;.. 
79f0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
7a00: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
7a10: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
7a20: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7a60: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
7a70: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
7a80: 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73  ublic Properties
7a90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
7aa0: 69 76 61 74 65 20 62 6f 6f 6c 20 77 68 61 74 49  ivate bool whatI
7ab0: 66 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f;..            
7ac0: 70 75 62 6c 69 63 20 62 6f 6f 6c 20 57 68 61 74  public bool What
7ad0: 49 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  If..            
7ae0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
7af0: 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
7b00: 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
7b10: 20 77 68 61 74 49 66 3b 20 7d 0d 0a 20 20 20 20   whatIf; }..    
7b20: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
7b30: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
7b40: 29 3b 20 77 68 61 74 49 66 20 3d 20 76 61 6c 75  ); whatIf = valu
7b50: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
7b60: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
7b70: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7bb0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
7bc0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
7bd0: 6f 6c 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20 20  ol readOnly;..  
7be0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
7bf0: 20 62 6f 6f 6c 20 52 65 61 64 4f 6e 6c 79 0d 0a   bool ReadOnly..
7c00: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
7c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
7c20: 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
7c30: 65 64 28 29 3b 20 72 65 74 75 72 6e 20 72 65 61  ed(); return rea
7c40: 64 4f 6e 6c 79 3b 20 7d 0d 0a 20 20 20 20 20 20  dOnly; }..      
7c50: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
7c60: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
7c70: 20 72 65 61 64 4f 6e 6c 79 20 3d 20 76 61 6c 75   readOnly = valu
7c80: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
7c90: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
7ca0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ce0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
7cf0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
7d00: 6f 6c 20 73 61 66 65 3b 0d 0a 20 20 20 20 20 20  ol safe;..      
7d10: 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
7d20: 6c 20 53 61 66 65 0d 0a 20 20 20 20 20 20 20 20  l Safe..        
7d30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7d40: 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65         get { Che
7d50: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
7d60: 74 75 72 6e 20 73 61 66 65 3b 20 7d 0d 0a 20 20  turn safe; }..  
7d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
7d80: 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
7d90: 64 28 29 3b 20 73 61 66 65 20 3d 20 76 61 6c 75  d(); safe = valu
7da0: 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
7db0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
7dc0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
7dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e00: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
7e10: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f        private Mo
7e20: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 63 6c  ckRegistryKey cl
7e30: 61 73 73 65 73 52 6f 6f 74 3b 0d 0a 20 20 20 20  assesRoot;..    
7e40: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d          public M
7e50: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 43  ockRegistryKey C
7e60: 6c 61 73 73 65 73 52 6f 6f 74 0d 0a 20 20 20 20  lassesRoot..    
7e70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
7e80: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
7e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ea0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
7eb0: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
7ec0: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
7ed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
7ee0: 66 20 28 63 6c 61 73 73 65 73 52 6f 6f 74 20 3d  f (classesRoot =
7ef0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
7f00: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
7f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f20: 20 20 20 20 20 20 20 20 63 6c 61 73 73 65 73 52          classesR
7f30: 6f 6f 74 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65  oot = new MockRe
7f40: 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20  gistryKey(..    
7f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f60: 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79          Registry
7f70: 2e 43 6c 61 73 73 65 73 52 6f 6f 74 2c 20 77 68  .ClassesRoot, wh
7f80: 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20  atIf, readOnly, 
7f90: 73 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  safe);..        
7fa0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
7fb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7fc0: 20 20 20 20 20 72 65 74 75 72 6e 20 63 6c 61 73       return clas
7fd0: 73 65 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20  sesRoot;..      
7fe0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
7ff0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
8000: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
8010: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8020: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
8060: 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73 74 72  vate MockRegistr
8070: 79 4b 65 79 20 63 75 72 72 65 6e 74 43 6f 6e 66  yKey currentConf
8080: 69 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ig;..           
8090: 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69   public MockRegi
80a0: 73 74 72 79 4b 65 79 20 43 75 72 72 65 6e 74 43  stryKey CurrentC
80b0: 6f 6e 66 69 67 0d 0a 20 20 20 20 20 20 20 20 20  onfig..         
80c0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
80d0: 20 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20        get..     
80e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
80f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8100: 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28    CheckDisposed(
8110: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
8120: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75            if (cu
8130: 72 72 65 6e 74 43 6f 6e 66 69 67 20 3d 3d 20 6e  rrentConfig == n
8140: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
8150: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
8160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8170: 20 20 20 20 20 63 75 72 72 65 6e 74 43 6f 6e 66       currentConf
8180: 69 67 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67  ig = new MockReg
8190: 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20  istryKey(..     
81a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81b0: 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79 2e         Registry.
81c0: 43 75 72 72 65 6e 74 43 6f 6e 66 69 67 2c 20 77  CurrentConfig, w
81d0: 68 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c  hatIf, readOnly,
81e0: 20 73 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20   safe);..       
81f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
8200: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8210: 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 75 72        return cur
8220: 72 65 6e 74 43 6f 6e 66 69 67 3b 0d 0a 20 20 20  rentConfig;..   
8230: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
8240: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
8250: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
8260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
82a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
82b0: 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69  private MockRegi
82c0: 73 74 72 79 4b 65 79 20 63 75 72 72 65 6e 74 55  stryKey currentU
82d0: 73 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ser;..          
82e0: 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67    public MockReg
82f0: 69 73 74 72 79 4b 65 79 20 43 75 72 72 65 6e 74  istryKey Current
8300: 55 73 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20  User..          
8310: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8320: 20 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20       get..      
8330: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
8340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8350: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
8360: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
8370: 20 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72           if (cur
8380: 72 65 6e 74 55 73 65 72 20 3d 3d 20 6e 75 6c 6c  rentUser == null
8390: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
83a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
83b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83c0: 20 20 63 75 72 72 65 6e 74 55 73 65 72 20 3d 20    currentUser = 
83d0: 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  new MockRegistry
83e0: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
83f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8400: 20 20 52 65 67 69 73 74 72 79 2e 43 75 72 72 65    Registry.Curre
8410: 6e 74 55 73 65 72 2c 20 77 68 61 74 49 66 2c 20  ntUser, whatIf, 
8420: 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b  readOnly, safe);
8430: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8440: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
8450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
8460: 65 74 75 72 6e 20 63 75 72 72 65 6e 74 55 73 65  eturn currentUse
8470: 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
8480: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
8490: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
84a0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
84b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
84e0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
84f0: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 4d         private M
8500: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 64  ockRegistryKey d
8510: 79 6e 44 61 74 61 3b 0d 0a 20 20 20 20 20 20 20  ynData;..       
8520: 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b       public Mock
8530: 52 65 67 69 73 74 72 79 4b 65 79 20 44 79 6e 44  RegistryKey DynD
8540: 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ata..           
8550: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
8560: 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
8570: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8590: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
85a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
85b0: 20 20 20 20 20 20 20 20 69 66 20 28 64 79 6e 44          if (dynD
85c0: 61 74 61 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ata == null)..  
85d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
85f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 79 6e               dyn
8600: 44 61 74 61 20 3d 20 6e 65 77 20 4d 6f 63 6b 52  Data = new MockR
8610: 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20  egistryKey(..   
8620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8630: 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72           Registr
8640: 79 2e 44 79 6e 44 61 74 61 2c 20 77 68 61 74 49  y.DynData, whatI
8650: 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66  f, readOnly, saf
8660: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
8670: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
8680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8690: 20 20 72 65 74 75 72 6e 20 64 79 6e 44 61 74 61    return dynData
86a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
86b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
86c0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
86d0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
86e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8710: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
8720: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f        private Mo
8730: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6c 6f  ckRegistryKey lo
8740: 63 61 6c 4d 61 63 68 69 6e 65 3b 0d 0a 20 20 20  calMachine;..   
8750: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
8760: 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
8770: 4c 6f 63 61 6c 4d 61 63 68 69 6e 65 0d 0a 20 20  LocalMachine..  
8780: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
8790: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
87a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
87b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
87c0: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
87d0: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
87e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
87f0: 20 69 66 20 28 6c 6f 63 61 6c 4d 61 63 68 69 6e   if (localMachin
8800: 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
8810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8820: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
8830: 20 20 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c             local
8840: 4d 61 63 68 69 6e 65 20 3d 20 6e 65 77 20 4d 6f  Machine = new Mo
8850: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a  ckRegistryKey(..
8860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8870: 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67 69              Regi
8880: 73 74 72 79 2e 4c 6f 63 61 6c 4d 61 63 68 69 6e  stry.LocalMachin
8890: 65 2c 20 77 68 61 74 49 66 2c 20 72 65 61 64 4f  e, whatIf, readO
88a0: 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20  nly, safe);..   
88b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
88c0: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
88d0: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
88e0: 20 6c 6f 63 61 6c 4d 61 63 68 69 6e 65 3b 0d 0a   localMachine;..
88f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8900: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
8910: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
8920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8960: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
8970: 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52     private MockR
8980: 65 67 69 73 74 72 79 4b 65 79 20 70 65 72 66 6f  egistryKey perfo
8990: 72 6d 61 6e 63 65 44 61 74 61 3b 0d 0a 20 20 20  rmanceData;..   
89a0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
89b0: 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
89c0: 50 65 72 66 6f 72 6d 61 6e 63 65 44 61 74 61 0d  PerformanceData.
89d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
89e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
89f0: 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  get..           
8a00: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8a10: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
8a20: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
8a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a40: 20 20 20 20 69 66 20 28 70 65 72 66 6f 72 6d 61      if (performa
8a50: 6e 63 65 44 61 74 61 20 3d 3d 20 6e 75 6c 6c 29  nceData == null)
8a60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8a70: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8a90: 20 70 65 72 66 6f 72 6d 61 6e 63 65 44 61 74 61   performanceData
8aa0: 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73   = new MockRegis
8ab0: 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20  tryKey(..       
8ac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8ad0: 20 20 20 20 20 52 65 67 69 73 74 72 79 2e 50 65       Registry.Pe
8ae0: 72 66 6f 72 6d 61 6e 63 65 44 61 74 61 2c 20 77  rformanceData, w
8af0: 68 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c  hatIf, readOnly,
8b00: 20 73 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20   safe);..       
8b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
8b20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8b30: 20 20 20 20 20 20 72 65 74 75 72 6e 20 70 65 72        return per
8b40: 66 6f 72 6d 61 6e 63 65 44 61 74 61 3b 0d 0a 20  formanceData;.. 
8b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
8b60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
8b70: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
8b80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8b90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8ba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8bb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8bc0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
8bd0: 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65    private MockRe
8be0: 67 69 73 74 72 79 4b 65 79 20 75 73 65 72 73 3b  gistryKey users;
8bf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
8c00: 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
8c10: 79 4b 65 79 20 55 73 65 72 73 0d 0a 20 20 20 20  yKey Users..    
8c20: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8c30: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
8c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c50: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
8c60: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
8c70: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
8c80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
8c90: 66 20 28 75 73 65 72 73 20 3d 3d 20 6e 75 6c 6c  f (users == null
8ca0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8cb0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8cc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8cd0: 20 20 75 73 65 72 73 20 3d 20 6e 65 77 20 4d 6f    users = new Mo
8ce0: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a  ckRegistryKey(..
8cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d00: 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67 69              Regi
8d10: 73 74 72 79 2e 55 73 65 72 73 2c 20 77 68 61 74  stry.Users, what
8d20: 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61  If, readOnly, sa
8d30: 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  fe);..          
8d40: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
8d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8d60: 20 20 20 72 65 74 75 72 6e 20 75 73 65 72 73 3b     return users;
8d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8d80: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
8d90: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
8da0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
8db0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
8dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8dd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8e00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
8e10: 67 69 6f 6e 20 50 75 62 6c 69 63 20 22 52 65 67  gion Public "Reg
8e20: 69 73 74 72 79 22 20 4d 65 74 68 6f 64 73 0d 0a  istry" Methods..
8e30: 23 69 66 20 66 61 6c 73 65 0d 0a 20 20 20 20 20  #if false..     
8e40: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62         public ob
8e50: 6a 65 63 74 20 47 65 74 56 61 6c 75 65 28 0d 0a  ject GetValue(..
8e60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8e70: 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65 2c 0d  string keyName,.
8e80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8e90: 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d   string valueNam
8ea0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
8eb0: 20 20 20 20 6f 62 6a 65 63 74 20 64 65 66 61 75      object defau
8ec0: 6c 74 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  ltValue..       
8ed0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
8ee0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
8ef0: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
8f00: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
8f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
8f20: 65 74 75 72 6e 20 52 65 67 69 73 74 72 79 2e 47  eturn Registry.G
8f30: 65 74 56 61 6c 75 65 28 6b 65 79 4e 61 6d 65 2c  etValue(keyName,
8f40: 20 76 61 6c 75 65 4e 61 6d 65 2c 20 64 65 66 61   valueName, defa
8f50: 75 6c 74 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20  ultValue);..    
8f60: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
8f70: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
8f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8fa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
8fc0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
8fd0: 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65  ic void SetValue
8fe0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
8ff0: 20 20 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d     string keyNam
9000: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
9010: 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
9020: 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
9030: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
9040: 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lue..           
9050: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
9060: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9070: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
9080: 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  osed();..       
9090: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 52 65           CheckRe
90a0: 61 64 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20  adOnly();....   
90b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
90c0: 28 21 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20  (!whatIf)..     
90d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52                 R
90e0: 65 67 69 73 74 72 79 2e 53 65 74 56 61 6c 75 65  egistry.SetValue
90f0: 28 6b 65 79 4e 61 6d 65 2c 20 76 61 6c 75 65 4e  (keyName, valueN
9100: 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20  ame, value);..  
9110: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
9120: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
9130: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9140: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
9180: 62 6c 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c  blic void SetVal
9190: 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue(..           
91a0: 20 20 20 20 20 73 74 72 69 6e 67 20 6b 65 79 4e       string keyN
91b0: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
91c0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c        string val
91d0: 75 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  ueName,..       
91e0: 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20           object 
91f0: 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20  value,..        
9200: 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79          Registry
9210: 56 61 6c 75 65 4b 69 6e 64 20 76 61 6c 75 65 4b  ValueKind valueK
9220: 69 6e 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ind..           
9230: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
9240: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
9250: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
9260: 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  osed();..       
9270: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 52 65           CheckRe
9280: 61 64 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20  adOnly();....   
9290: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
92a0: 28 21 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20  (!whatIf)..     
92b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52                 R
92c0: 65 67 69 73 74 72 79 2e 53 65 74 56 61 6c 75 65  egistry.SetValue
92d0: 28 6b 65 79 4e 61 6d 65 2c 20 76 61 6c 75 65 4e  (keyName, valueN
92e0: 61 6d 65 2c 20 76 61 6c 75 65 2c 20 76 61 6c 75  ame, value, valu
92f0: 65 4b 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20  eKind);..       
9300: 20 20 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a       }..#endif..
9310: 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
9320: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
9330: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
9380: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
9390: 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73   Private Methods
93a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
93b0: 69 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b  ivate void Check
93c0: 52 65 61 64 4f 6e 6c 79 28 29 0d 0a 20 20 20 20  ReadOnly()..    
93d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
93e0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
93f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
9400: 2f 20 4e 4f 54 45 3a 20 49 6e 20 22 72 65 61 64  / NOTE: In "read
9410: 2d 6f 6e 6c 79 22 20 6d 6f 64 65 2c 20 77 65 20  -only" mode, we 
9420: 64 69 73 61 6c 6c 6f 77 20 61 6c 6c 20 77 72 69  disallow all wri
9430: 74 65 20 61 63 63 65 73 73 2e 0d 0a 20 20 20 20  te access...    
9440: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
9450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9460: 69 66 20 28 21 72 65 61 64 4f 6e 6c 79 29 0d 0a  if (!readOnly)..
9470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9480: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
9490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
94a0: 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64  hrow new Invalid
94b0: 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69  OperationExcepti
94c0: 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  on();..         
94d0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
94e0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
94f0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
9500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9530: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
9540: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
9550: 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
9560: 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d  le "Pattern" Mem
9570: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  bers..          
9580: 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64    private bool d
9590: 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20  isposed;..      
95a0: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 76 6f        private vo
95b0: 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64  id CheckDisposed
95c0: 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  () /* throw */..
95d0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
95e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
95f0: 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20  f (!disposed).. 
9600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9610: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
9620: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
9630: 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69  row new ObjectDi
9640: 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28  sposedException(
9650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9660: 20 20 20 20 20 20 74 79 70 65 6f 66 28 4d 6f 63        typeof(Moc
9670: 6b 52 65 67 69 73 74 72 79 29 2e 4e 61 6d 65 29  kRegistry).Name)
9680: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
9690: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
96a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
96e0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
96f0: 20 20 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72     private /* pr
9700: 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
9710: 2a 2f 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  */ void Dispose(
9720: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9730: 20 20 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67    bool disposing
9740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9750: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
9760: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9770: 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65      if (!dispose
9780: 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
9790: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
97a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
97b0: 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
97c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
97d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
97f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
9810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9820: 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f          // dispo
9830: 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
9840: 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
9850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9860: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
9890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98a0: 20 20 20 20 20 20 69 66 20 28 63 6c 61 73 73 65        if (classe
98b0: 73 52 6f 6f 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a  sRoot != null)..
98c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98d0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
98e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
98f0: 20 20 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f         classesRo
9900: 6f 74 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20  ot.Close();..   
9910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9920: 20 20 20 20 20 20 20 20 20 63 6c 61 73 73 65 73           classes
9930: 52 6f 6f 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  Root = null;..  
9940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9950: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9970: 20 20 20 69 66 20 28 63 75 72 72 65 6e 74 43 6f     if (currentCo
9980: 6e 66 69 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  nfig != null).. 
9990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99a0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
99b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99c0: 20 20 20 20 20 20 63 75 72 72 65 6e 74 43 6f 6e        currentCon
99d0: 66 69 67 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20  fig.Close();..  
99e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
99f0: 20 20 20 20 20 20 20 20 20 20 63 75 72 72 65 6e            curren
9a00: 74 43 6f 6e 66 69 67 20 3d 20 6e 75 6c 6c 3b 0d  tConfig = null;.
9a10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9a20: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
9a30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a40: 20 20 20 20 20 20 69 66 20 28 63 75 72 72 65 6e        if (curren
9a50: 74 55 73 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a  tUser != null)..
9a60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a70: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
9a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a90: 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 55 73         currentUs
9aa0: 65 72 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20  er.Close();..   
9ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ac0: 20 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74           current
9ad0: 55 73 65 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20  User = null;..  
9ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9af0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
9b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b10: 20 20 20 69 66 20 28 64 79 6e 44 61 74 61 20 21     if (dynData !
9b20: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
9b30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
9b50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9b60: 64 79 6e 44 61 74 61 2e 43 6c 6f 73 65 28 29 3b  dynData.Close();
9b70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 79                dy
9b90: 6e 44 61 74 61 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  nData = null;.. 
9ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9bb0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9bd0: 20 20 20 20 69 66 20 28 6c 6f 63 61 6c 4d 61 63      if (localMac
9be0: 68 69 6e 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  hine != null).. 
9bf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c00: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
9c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c20: 20 20 20 20 20 20 6c 6f 63 61 6c 4d 61 63 68 69        localMachi
9c30: 6e 65 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20  ne.Close();..   
9c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c50: 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 4d 61           localMa
9c60: 63 68 69 6e 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  chine = null;.. 
9c70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9c80: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
9c90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ca0: 20 20 20 20 69 66 20 28 70 65 72 66 6f 72 6d 61      if (performa
9cb0: 6e 63 65 44 61 74 61 20 21 3d 20 6e 75 6c 6c 29  nceData != null)
9cc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9cd0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9ce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9cf0: 20 20 20 20 20 20 20 20 20 70 65 72 66 6f 72 6d           perform
9d00: 61 6e 63 65 44 61 74 61 2e 43 6c 6f 73 65 28 29  anceData.Close()
9d10: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
9d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
9d30: 65 72 66 6f 72 6d 61 6e 63 65 44 61 74 61 20 3d  erformanceData =
9d40: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
9d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d60: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
9d70: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
9d80: 28 75 73 65 72 73 20 21 3d 20 6e 75 6c 6c 29 0d  (users != null).
9d90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9da0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
9db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9dc0: 20 20 20 20 20 20 20 20 75 73 65 72 73 2e 43 6c          users.Cl
9dd0: 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ose();..        
9de0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9df0: 20 20 20 20 75 73 65 72 73 20 3d 20 6e 75 6c 6c      users = null
9e00: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
9e10: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
9e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9e30: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
9e40: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
9e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9e70: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
9e80: 20 20 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73         // releas
9e90: 65 20 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f  e unmanaged reso
9ea0: 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20  urces here..... 
9eb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ec0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
9ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ee0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
9ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f00: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
9f10: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
9f20: 3a 20 54 68 69 73 20 6f 62 6a 65 63 74 20 69 73  : This object is
9f30: 20 6e 6f 77 20 64 69 73 70 6f 73 65 64 2e 0d 0a   now disposed...
9f40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f50: 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
9f60: 20 20 20 20 20 20 20 20 20 20 20 20 64 69 73 70              disp
9f70: 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20  osed = true;..  
9f80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
9f90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
9fa0: 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
9fb0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
9fc0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9fe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
a010: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
a020: 20 49 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d   IDisposable Mem
a030: 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  bers..          
a040: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69    public void Di
a050: 73 70 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20  spose()..       
a060: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a070: 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
a080: 74 72 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  true);..        
a090: 20 20 20 20 20 20 20 20 47 43 2e 53 75 70 70 72          GC.Suppr
a0a0: 65 73 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73  essFinalize(this
a0b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a0c0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
a0d0: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
a0e0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
a0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
a130: 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
a140: 69 6f 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a  ion Destructor..
a150: 20 20 20 20 20 20 20 20 20 20 20 20 7e 4d 6f 63              ~Moc
a160: 6b 52 65 67 69 73 74 72 79 28 29 0d 0a 20 20 20  kRegistry()..   
a170: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
a180: 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
a190: 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
a1a0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
a1b0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
a1c0: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  on..        }.. 
a1d0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
a1e0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
a1f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a230: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a240: 23 72 65 67 69 6f 6e 20 4d 6f 63 6b 52 65 67 69  #region MockRegi
a250: 73 74 72 79 4b 65 79 20 43 6c 61 73 73 0d 0a 20  stryKey Class.. 
a260: 20 20 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20         internal 
a270: 73 65 61 6c 65 64 20 63 6c 61 73 73 20 4d 6f 63  sealed class Moc
a280: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 3a 20 49  kRegistryKey : I
a290: 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20  Disposable..    
a2a0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a2b0: 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
a2c0: 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  te Constructors.
a2d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
a2e0: 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73 74 72  vate MockRegistr
a2f0: 79 4b 65 79 28 29 0d 0a 20 20 20 20 20 20 20 20  yKey()..        
a300: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
a310: 20 20 20 20 20 20 20 77 68 61 74 49 66 20 3d 20         whatIf = 
a320: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
a330: 20 20 20 20 20 20 20 72 65 61 64 4f 6e 6c 79 20         readOnly 
a340: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
a350: 20 20 20 20 20 20 20 20 20 73 61 66 65 20 3d 20           safe = 
a360: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
a370: 20 20 20 20 20 20 20 6e 6f 43 6c 6f 73 65 20 3d         noClose =
a380: 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
a390: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
a3a0: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
a3b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
a3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a400: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
a410: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
a420: 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
a430: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
a440: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
a450: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
a460: 20 20 20 52 65 67 69 73 74 72 79 4b 65 79 20 6b     RegistryKey k
a470: 65 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ey..            
a480: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
a490: 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 29 0d         : this().
a4a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
a4b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a4c0: 74 68 69 73 2e 6b 65 79 20 3d 20 6b 65 79 3b 0d  this.key = key;.
a4d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
a4e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
a4f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a500: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a510: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a520: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a530: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
a540: 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69   public MockRegi
a550: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
a560: 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
a570: 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20  ryKey key,..    
a580: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
a590: 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 0d 0a 20  ng subKeyName.. 
a5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
a5b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a5c0: 20 20 3a 20 74 68 69 73 28 6b 65 79 29 0d 0a 20    : this(key).. 
a5d0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
a5e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
a5f0: 69 73 2e 73 75 62 4b 65 79 4e 61 6d 65 20 3d 20  is.subKeyName = 
a600: 73 75 62 4b 65 79 4e 61 6d 65 3b 0d 0a 20 20 20  subKeyName;..   
a610: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
a620: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
a630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
a670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
a680: 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
a690: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
a6a0: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65        RegistryKe
a6b0: 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
a6c0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
a6d0: 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20 20 20  ubKeyName,..    
a6e0: 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
a6f0: 20 77 68 61 74 49 66 0d 0a 20 20 20 20 20 20 20   whatIf..       
a700: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
a710: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
a720: 69 73 28 6b 65 79 2c 20 73 75 62 4b 65 79 4e 61  is(key, subKeyNa
a730: 6d 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me)..           
a740: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
a750: 20 20 20 20 74 68 69 73 2e 77 68 61 74 49 66 20      this.whatIf 
a760: 3d 20 77 68 61 74 49 66 3b 0d 0a 20 20 20 20 20  = whatIf;..     
a770: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
a780: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
a790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
a7d0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
a7e0: 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  c MockRegistryKe
a7f0: 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
a800: 20 20 20 20 52 65 67 69 73 74 72 79 4b 65 79 20      RegistryKey 
a810: 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  key,..          
a820: 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 75 62        string sub
a830: 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  KeyName,..      
a840: 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77            bool w
a850: 68 61 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20  hatIf,..        
a860: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 72 65 61          bool rea
a870: 64 4f 6e 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  dOnly..         
a880: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
a890: 20 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73            : this
a8a0: 28 6b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65  (key, subKeyName
a8b0: 2c 20 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20  , whatIf)..     
a8c0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
a8d0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 72            this.r
a8e0: 65 61 64 4f 6e 6c 79 20 3d 20 72 65 61 64 4f 6e  eadOnly = readOn
a8f0: 6c 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ly;..           
a900: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
a910: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
a920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a950: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
a960: 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b       public Mock
a970: 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20  RegistryKey(..  
a980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65                Re
a990: 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a  gistryKey key,..
a9a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a9b0: 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d  string subKeyNam
a9c0: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
a9d0: 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c      bool whatIf,
a9e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a9f0: 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79 2c    bool readOnly,
aa00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aa10: 20 20 62 6f 6f 6c 20 73 61 66 65 0d 0a 20 20 20    bool safe..   
aa20: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
aa30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aa40: 3a 20 74 68 69 73 28 6b 65 79 2c 20 73 75 62 4b  : this(key, subK
aa50: 65 79 4e 61 6d 65 2c 20 77 68 61 74 49 66 2c 20  eyName, whatIf, 
aa60: 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20 20 20 20  readOnly)..     
aa70: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
aa80: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73            this.s
aa90: 61 66 65 20 3d 20 73 61 66 65 3b 0d 0a 20 20 20  afe = safe;..   
aaa0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
aab0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
aac0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
aaf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
ab00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
ab10: 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
ab20: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
ab30: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65        RegistryKe
ab40: 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
ab50: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
ab60: 74 49 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tIf..           
ab70: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
ab80: 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6b          : this(k
ab90: 65 79 2c 20 6e 75 6c 6c 2c 20 77 68 61 74 49 66  ey, null, whatIf
aba0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
abb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
abc0: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
abd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
abe0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
abf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ac30: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
ac40: 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67    public MockReg
ac50: 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20  istryKey(..     
ac60: 20 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73             Regis
ac70: 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20  tryKey key,..   
ac80: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
ac90: 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20  l whatIf,..     
aca0: 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
acb0: 72 65 61 64 4f 6e 6c 79 0d 0a 20 20 20 20 20 20  readOnly..      
acc0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
acd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74               : t
ace0: 68 69 73 28 6b 65 79 2c 20 6e 75 6c 6c 2c 20 77  his(key, null, w
acf0: 68 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 29  hatIf, readOnly)
ad00: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
ad10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ad20: 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
ad30: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
ad40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
ad50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ad90: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
ada0: 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69   public MockRegi
adb0: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
adc0: 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
add0: 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20  ryKey key,..    
ade0: 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
adf0: 20 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20 20   whatIf,..      
ae00: 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 72            bool r
ae10: 65 61 64 4f 6e 6c 79 2c 0d 0a 20 20 20 20 20 20  eadOnly,..      
ae20: 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73            bool s
ae30: 61 66 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  afe..           
ae40: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
ae50: 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6b          : this(k
ae60: 65 79 2c 20 6e 75 6c 6c 2c 20 77 68 61 74 49 66  ey, null, whatIf
ae70: 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65  , readOnly, safe
ae80: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
ae90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
aea0: 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
aeb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
aec0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
aed0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
aee0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
aef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
af30: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
af40: 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64 73  n Public Methods
af50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
af60: 62 6c 69 63 20 76 6f 69 64 20 43 6c 6f 73 65 28  blic void Close(
af70: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
af80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
af90: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
afa0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 4e        // NOTE: N
afb0: 6f 20 64 69 73 70 6f 73 65 64 20 63 68 65 63 6b  o disposed check
afc0: 20 68 65 72 65 20 62 65 63 61 75 73 65 20 63 61   here because ca
afd0: 6c 6c 69 6e 67 20 74 68 69 73 20 6d 65 74 68 6f  lling this metho
afe0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
aff0: 20 20 20 2f 2f 20 20 20 20 20 20 20 73 68 6f 75     //       shou
b000: 6c 64 20 62 65 20 6a 75 73 74 20 6c 69 6b 65 20  ld be just like 
b010: 63 61 6c 6c 69 6e 67 20 44 69 73 70 6f 73 65 2e  calling Dispose.
b020: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b030: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
b040: 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
b050: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
b060: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
b070: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
b080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b0b0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
b0c0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
b0d0: 64 20 44 69 73 61 62 6c 65 43 6c 6f 73 65 28 29  d DisableClose()
b0e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
b0f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b100: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
b110: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
b120: 20 20 20 20 20 6e 6f 43 6c 6f 73 65 20 3d 20 74       noClose = t
b130: 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
b140: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
b150: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
b160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b180: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b190: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
b1a0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
b1b0: 64 20 52 65 73 65 74 53 75 62 4b 65 79 4e 61 6d  d ResetSubKeyNam
b1c0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
b1d0: 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65      string subKe
b1e0: 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  yName..         
b1f0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
b200: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b210: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
b220: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
b230: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
b240: 73 2e 73 75 62 4b 65 79 4e 61 6d 65 20 3d 20 73  s.subKeyName = s
b250: 75 62 4b 65 79 4e 61 6d 65 3b 0d 0a 20 20 20 20  ubKeyName;..    
b260: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
b270: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
b280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
b2c0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
b2d0: 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
b2e0: 65 79 20 43 6c 6f 6e 65 28 0d 0a 20 20 20 20 20  ey Clone(..     
b2f0: 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
b300: 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20 20 20  whatIf,..       
b310: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 72 65           bool re
b320: 61 64 4f 6e 6c 79 2c 0d 0a 20 20 20 20 20 20 20  adOnly,..       
b330: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 73 61           bool sa
b340: 66 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  fe..            
b350: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
b360: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b370: 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
b380: 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
b390: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
b3a0: 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72   new MockRegistr
b3b0: 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  yKey(..         
b3c0: 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2c 20             key, 
b3d0: 73 75 62 4b 65 79 4e 61 6d 65 2c 20 74 68 69 73  subKeyName, this
b3e0: 2e 77 68 61 74 49 66 20 7c 7c 20 77 68 61 74 49  .whatIf || whatI
b3f0: 66 2c 20 74 68 69 73 2e 72 65 61 64 4f 6e 6c 79  f, this.readOnly
b400: 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
b410: 20 20 20 20 20 20 20 20 20 72 65 61 64 4f 6e 6c           readOnl
b420: 79 2c 20 74 68 69 73 2e 73 61 66 65 20 7c 7c 20  y, this.safe || 
b430: 73 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  safe);..        
b440: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
b450: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
b460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b490: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
b4a0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d          public M
b4b0: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 43  ockRegistryKey C
b4c0: 72 65 61 74 65 53 75 62 4b 65 79 28 0d 0a 20 20  reateSubKey(..  
b4d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
b4e0: 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 0d  ring subKeyName.
b4f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b500: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
b510: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b520: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
b530: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
b540: 20 20 20 20 20 43 68 65 63 6b 52 65 61 64 4f 6e       CheckReadOn
b550: 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly();....       
b560: 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
b570: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
b580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
b590: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
b5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
b5b0: 66 20 28 77 68 61 74 49 66 29 0d 0a 20 20 20 20  f (whatIf)..    
b5c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b5d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b5e0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
b5f0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 48 41             // HA
b600: 43 4b 3a 20 41 74 74 65 6d 70 74 20 74 6f 20 6f  CK: Attempt to o
b610: 70 65 6e 20 74 68 65 20 73 70 65 63 69 66 69 65  pen the specifie
b620: 64 20 73 75 62 2d 6b 65 79 2e 20 20 49 66 20 74  d sub-key.  If t
b630: 68 69 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  his..           
b640: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
b650: 20 20 66 61 69 6c 73 2c 20 77 65 27 6c 6c 20 73    fails, we'll s
b660: 69 6d 70 6c 79 20 72 65 74 75 72 6e 20 74 68 65  imply return the
b670: 20 77 72 61 70 70 65 64 20 72 6f 6f 74 20 6b 65   wrapped root ke
b680: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
b690: 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
b6a0: 69 74 73 65 6c 66 20 73 69 6e 63 65 20 6e 6f 20  itself since no 
b6b0: 77 72 69 74 65 73 20 61 72 65 20 61 6c 6c 6f 77  writes are allow
b6c0: 65 64 20 69 6e 20 22 77 68 61 74 2d 69 66 22 0d  ed in "what-if".
b6d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b6e0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 6f       //       mo
b6f0: 64 65 20 61 6e 79 68 6f 77 2e 0d 0a 20 20 20 20  de anyhow...    
b700: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b710: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
b720: 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79          Registry
b730: 4b 65 79 20 73 75 62 4b 65 79 20 3d 20 6b 65 79  Key subKey = key
b740: 2e 4f 70 65 6e 53 75 62 4b 65 79 28 73 75 62 4b  .OpenSubKey(subK
b750: 65 79 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  eyName);....    
b760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b770: 69 66 20 28 73 75 62 4b 65 79 20 21 3d 20 6e 75  if (subKey != nu
b780: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
b790: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b7b0: 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 4d      return new M
b7c0: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d  ockRegistryKey(.
b7d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 62               sub
b7f0: 4b 65 79 2c 20 77 68 61 74 49 66 2c 20 72 65 61  Key, whatIf, rea
b800: 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20  dOnly, safe);.. 
b810: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b820: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
b830: 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a            else..
b840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b850: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
b860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
b870: 65 74 75 72 6e 20 6e 65 77 20 4d 6f 63 6b 52 65  eturn new MockRe
b880: 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20  gistryKey(..    
b890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b8a0: 20 20 20 20 20 20 20 20 6b 65 79 2c 20 73 75 62          key, sub
b8b0: 4b 65 79 4e 61 6d 65 2c 20 77 68 61 74 49 66 2c  KeyName, whatIf,
b8c0: 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29   readOnly, safe)
b8d0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
b8e0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b8f0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
b900: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
b910: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
b920: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
b930: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
b940: 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72   new MockRegistr
b950: 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  yKey(..         
b960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
b970: 65 79 2e 43 72 65 61 74 65 53 75 62 4b 65 79 28  ey.CreateSubKey(
b980: 73 75 62 4b 65 79 4e 61 6d 65 29 2c 20 77 68 61  subKeyName), wha
b990: 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73  tIf, readOnly, s
b9a0: 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  afe);..         
b9b0: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
b9c0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
b9d0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
b9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ba10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
ba20: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
ba30: 20 76 6f 69 64 20 44 65 6c 65 74 65 53 75 62 4b   void DeleteSubK
ba40: 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey(..           
ba50: 20 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b       string subK
ba60: 65 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  eyName,..       
ba70: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 68           bool th
ba80: 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 0d 0a 20 20  rowOnMissing..  
ba90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
baa0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
bab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bac0: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
bad0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bae0: 20 20 43 68 65 63 6b 52 65 61 64 4f 6e 6c 79 28    CheckReadOnly(
baf0: 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
bb00: 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d 3d        if (key ==
bb10: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
bb20: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
bb30: 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rn;....         
bb40: 20 20 20 20 20 20 20 69 66 20 28 21 77 68 61 74         if (!what
bb50: 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If)..           
bb60: 20 20 20 20 20 20 20 20 20 6b 65 79 2e 44 65 6c           key.Del
bb70: 65 74 65 53 75 62 4b 65 79 28 73 75 62 4b 65 79  eteSubKey(subKey
bb80: 4e 61 6d 65 2c 20 74 68 72 6f 77 4f 6e 4d 69 73  Name, throwOnMis
bb90: 73 69 6e 67 29 3b 0d 0a 20 20 20 20 20 20 20 20  sing);..        
bba0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
bbb0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
bbc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bbf0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
bc00: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
bc10: 6f 69 64 20 44 65 6c 65 74 65 53 75 62 4b 65 79  oid DeleteSubKey
bc20: 54 72 65 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Tree(..         
bc30: 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73 75         string su
bc40: 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20  bKeyName..      
bc50: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
bc60: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
bc70: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
bc80: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
bc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
bca0: 65 63 6b 52 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a  eckReadOnly();..
bcb0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bcc0: 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c    if (key == nul
bcd0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
bce0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
bcf0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
bd00: 20 20 20 69 66 20 28 21 77 68 61 74 49 66 29 0d     if (!whatIf).
bd10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bd20: 20 20 20 20 20 6b 65 79 2e 44 65 6c 65 74 65 53       key.DeleteS
bd30: 75 62 4b 65 79 54 72 65 65 28 73 75 62 4b 65 79  ubKeyTree(subKey
bd40: 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
bd50: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
bd60: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
bd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bd90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bda0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
bdb0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
bdc0: 6f 69 64 20 44 65 6c 65 74 65 56 61 6c 75 65 28  oid DeleteValue(
bdd0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
bde0: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a    string name,..
bdf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
be00: 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69 73 73  bool throwOnMiss
be10: 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ing..           
be20: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
be30: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
be40: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
be50: 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20  osed();..       
be60: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 52 65           CheckRe
be70: 61 64 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20  adOnly();....   
be80: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
be90: 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  (key == null).. 
bea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
beb0: 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20     return;....  
bec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
bed0: 20 28 21 77 68 61 74 49 66 29 0d 0a 20 20 20 20   (!whatIf)..    
bee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bef0: 6b 65 79 2e 44 65 6c 65 74 65 56 61 6c 75 65 28  key.DeleteValue(
bf00: 6e 61 6d 65 2c 20 74 68 72 6f 77 4f 6e 4d 69 73  name, throwOnMis
bf10: 73 69 6e 67 29 3b 0d 0a 20 20 20 20 20 20 20 20  sing);..        
bf20: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
bf30: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
bf40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bf70: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
bf80: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
bf90: 74 72 69 6e 67 5b 5d 20 47 65 74 53 75 62 4b 65  tring[] GetSubKe
bfa0: 79 4e 61 6d 65 73 28 29 0d 0a 20 20 20 20 20 20  yNames()..      
bfb0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
bfc0: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
bfd0: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
bfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
bff0: 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  (key == null).. 
c000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c010: 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
c020: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c030: 20 20 20 72 65 74 75 72 6e 20 6b 65 79 2e 47 65     return key.Ge
c040: 74 53 75 62 4b 65 79 4e 61 6d 65 73 28 29 3b 0d  tSubKeyNames();.
c050: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
c060: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
c070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c0b0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
c0c0: 20 70 75 62 6c 69 63 20 6f 62 6a 65 63 74 20 47   public object G
c0d0: 65 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  etValue(..      
c0e0: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
c0f0: 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20   name,..        
c100: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 64          object d
c110: 65 66 61 75 6c 74 56 61 6c 75 65 0d 0a 20 20 20  efaultValue..   
c120: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
c130: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
c150: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
c160: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c170: 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75     if (key == nu
c180: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
c190: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c1a0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
c1b0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c1c0: 6b 65 79 2e 47 65 74 56 61 6c 75 65 28 6e 61 6d  key.GetValue(nam
c1d0: 65 2c 20 64 65 66 61 75 6c 74 56 61 6c 75 65 29  e, defaultValue)
c1e0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
c1f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c240: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
c250: 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
c260: 5b 5d 20 47 65 74 56 61 6c 75 65 4e 61 6d 65 73  [] GetValueNames
c270: 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
c280: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c290: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
c2a0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
c2b0: 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d         if (key =
c2c0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
c2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
c2e0: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
c2f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
c300: 75 72 6e 20 6b 65 79 2e 47 65 74 56 61 6c 75 65  urn key.GetValue
c310: 4e 61 6d 65 73 28 29 3b 0d 0a 20 20 20 20 20 20  Names();..      
c320: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
c330: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
c340: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
c380: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
c390: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
c3a0: 20 4f 70 65 6e 53 75 62 4b 65 79 28 0d 0a 20 20   OpenSubKey(..  
c3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
c3c0: 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 0d  ring subKeyName.
c3d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c3e0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
c3f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c400: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
c410: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
c420: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4f 70         return Op
c430: 65 6e 53 75 62 4b 65 79 28 73 75 62 4b 65 79 4e  enSubKey(subKeyN
c440: 61 6d 65 2c 20 66 61 6c 73 65 29 3b 0d 0a 20 20  ame, false);..  
c450: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
c460: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
c470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
c4b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
c4c0: 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
c4d0: 79 4b 65 79 20 4f 70 65 6e 53 75 62 4b 65 79 28  yKey OpenSubKey(
c4e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c4f0: 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e    string subKeyN
c500: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
c510: 20 20 20 20 20 20 62 6f 6f 6c 20 77 72 69 74 61        bool writa
c520: 62 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ble..           
c530: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
c540: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c550: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
c560: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
c570: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 77             if (w
c580: 72 69 74 61 62 6c 65 29 0d 0a 20 20 20 20 20 20  ritable)..      
c590: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
c5a0: 65 63 6b 52 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a  eckReadOnly();..
c5b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c5c0: 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c    if (key == nul
c5d0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
c5e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
c5f0: 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
c600: 20 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79          Registry
c610: 4b 65 79 20 73 75 62 4b 65 79 20 3d 20 6b 65 79  Key subKey = key
c620: 2e 4f 70 65 6e 53 75 62 4b 65 79 28 0d 0a 20 20  .OpenSubKey(..  
c630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c640: 20 20 73 75 62 4b 65 79 4e 61 6d 65 2c 20 77 68    subKeyName, wh
c650: 61 74 49 66 20 3f 20 66 61 6c 73 65 20 3a 20 77  atIf ? false : w
c660: 72 69 74 61 62 6c 65 29 3b 0d 0a 0d 0a 20 20 20  ritable);....   
c670: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
c680: 28 73 75 62 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29  (subKey == null)
c690: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c6a0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c        return nul
c6b0: 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  l;....          
c6c0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
c6d0: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
c6e0: 28 73 75 62 4b 65 79 2c 20 77 68 61 74 49 66 2c  (subKey, whatIf,
c6f0: 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29   readOnly, safe)
c700: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
c710: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c760: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
c770: 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 53     public void S
c780: 65 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20 20  etValue(..      
c790: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
c7a0: 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20   name,..        
c7b0: 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
c7c0: 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20  alue..          
c7d0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
c7e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
c7f0: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
c800: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
c810: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 52            CheckR
c820: 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  eadOnly();....  
c830: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
c840: 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (key == null)..
c850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c860: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
c870: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
c880: 66 20 28 21 77 68 61 74 49 66 29 0d 0a 20 20 20  f (!whatIf)..   
c890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8a0: 20 6b 65 79 2e 53 65 74 56 61 6c 75 65 28 6e 61   key.SetValue(na
c8b0: 6d 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20  me, value);..   
c8c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
c8d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
c8e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
c8f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
c900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c930: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
c940: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
c950: 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a  lic Properties..
c960: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
c970: 69 63 20 73 74 72 69 6e 67 20 4e 61 6d 65 0d 0a  ic string Name..
c980: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
c9a0: 65 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  et..            
c9b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
c9c0: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
c9d0: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
c9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9f0: 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75     if (key == nu
ca00: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
ca10: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
ca20: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20  urn null;....   
ca30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca40: 20 72 65 74 75 72 6e 20 21 53 74 72 69 6e 67 2e   return !String.
ca50: 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 73 75  IsNullOrEmpty(su
ca60: 62 4b 65 79 4e 61 6d 65 29 20 3f 0d 0a 20 20 20  bKeyName) ?..   
ca70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ca80: 20 20 20 20 20 52 65 67 69 73 74 72 79 48 65 6c       RegistryHel
ca90: 70 65 72 2e 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73  per.JoinKeyNames
caa0: 28 6b 65 79 2e 4e 61 6d 65 2c 20 73 75 62 4b 65  (key.Name, subKe
cab0: 79 4e 61 6d 65 29 20 3a 0d 0a 20 20 20 20 20 20  yName) :..      
cac0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cad0: 20 20 6b 65 79 2e 4e 61 6d 65 3b 0d 0a 20 20 20    key.Name;..   
cae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
caf0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
cb00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
cb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cb50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cb60: 70 72 69 76 61 74 65 20 52 65 67 69 73 74 72 79  private Registry
cb70: 4b 65 79 20 6b 65 79 3b 0d 0a 20 20 20 20 20 20  Key key;..      
cb80: 20 20 20 20 20 20 70 75 62 6c 69 63 20 52 65 67        public Reg
cb90: 69 73 74 72 79 4b 65 79 20 4b 65 79 0d 0a 20 20  istryKey Key..  
cba0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
cbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
cbc0: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
cbd0: 28 29 3b 20 43 68 65 63 6b 53 61 66 65 28 29 3b  (); CheckSafe();
cbe0: 20 72 65 74 75 72 6e 20 6b 65 79 3b 20 7d 0d 0a   return key; }..
cbf0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
cc00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
cc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cc50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cc60: 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 73  private string s
cc70: 75 62 4b 65 79 4e 61 6d 65 3b 0d 0a 20 20 20 20  ubKeyName;..    
cc80: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
cc90: 74 72 69 6e 67 20 53 75 62 4b 65 79 4e 61 6d 65  tring SubKeyName
cca0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
ccb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ccc0: 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
ccd0: 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 73  osed(); return s
cce0: 75 62 4b 65 79 4e 61 6d 65 3b 20 7d 0d 0a 20 20  ubKeyName; }..  
ccf0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
cd00: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
cd10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
cd50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
cd60: 69 76 61 74 65 20 62 6f 6f 6c 20 77 68 61 74 49  ivate bool whatI
cd70: 66 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f;..            
cd80: 70 75 62 6c 69 63 20 62 6f 6f 6c 20 57 68 61 74  public bool What
cd90: 49 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  If..            
cda0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
cdb0: 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69     get { CheckDi
cdc0: 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e  sposed(); return
cdd0: 20 77 68 61 74 49 66 3b 20 7d 0d 0a 20 20 20 20   whatIf; }..    
cde0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
cdf0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
ce00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ce30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
ce40: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
ce50: 61 74 65 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c  ate bool readOnl
ce60: 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
ce70: 70 75 62 6c 69 63 20 62 6f 6f 6c 20 52 65 61 64  public bool Read
ce80: 4f 6e 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  Only..          
ce90: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
cea0: 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
ceb0: 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
cec0: 72 6e 20 72 65 61 64 4f 6e 6c 79 3b 20 7d 0d 0a  rn readOnly; }..
ced0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
cee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
cef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cf30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
cf40: 70 75 62 6c 69 63 20 62 6f 6f 6c 20 73 61 66 65  public bool safe
cf50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
cf60: 75 62 6c 69 63 20 62 6f 6f 6c 20 53 61 66 65 0d  ublic bool Safe.
cf70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
cf80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf90: 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f  get { CheckDispo
cfa0: 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 73 61  sed(); return sa
cfb0: 66 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  fe; }..         
cfc0: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
cfd0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
cfe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
cff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d010: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
d020: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
d030: 6f 6c 20 6e 6f 43 6c 6f 73 65 3b 0d 0a 20 20 20  ol noClose;..   
d040: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
d050: 62 6f 6f 6c 20 4e 6f 43 6c 6f 73 65 0d 0a 20 20  bool NoClose..  
d060: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
d070: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
d080: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
d090: 28 29 3b 20 72 65 74 75 72 6e 20 6e 6f 43 6c 6f  (); return noClo
d0a0: 73 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  se; }..         
d0b0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
d0c0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
d0d0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
d0e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d0f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
d120: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
d130: 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d  region Private M
d140: 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
d150: 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
d160: 20 43 68 65 63 6b 52 65 61 64 4f 6e 6c 79 28 29   CheckReadOnly()
d170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
d180: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d190: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
d1a0: 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 6e       // NOTE: In
d1b0: 20 22 72 65 61 64 2d 6f 6e 6c 79 22 20 6d 6f 64   "read-only" mod
d1c0: 65 2c 20 77 65 20 64 69 73 61 6c 6c 6f 77 20 61  e, we disallow a
d1d0: 6c 6c 20 77 72 69 74 65 20 61 63 63 65 73 73 2e  ll write access.
d1e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d1f0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
d200: 20 20 20 20 20 20 69 66 20 28 21 72 65 61 64 4f        if (!readO
d210: 6e 6c 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20  nly)..          
d220: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
d230: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d240: 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 49       throw new I
d250: 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45  nvalidOperationE
d260: 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 20 20 20  xception();..   
d270: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
d280: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
d290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
d2d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
d2e0: 76 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 53  vate void CheckS
d2f0: 61 66 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  afe()..         
d300: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d310: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
d320: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
d330: 45 3a 20 49 6e 20 22 73 61 66 65 22 20 6d 6f 64  E: In "safe" mod
d340: 65 2c 20 77 65 20 64 69 73 61 6c 6c 6f 77 20 61  e, we disallow a
d350: 6c 6c 20 64 69 72 65 63 74 20 61 63 63 65 73 73  ll direct access
d360: 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
d370: 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
d380: 20 20 63 6f 6e 74 61 69 6e 65 64 20 72 65 67 69    contained regi
d390: 73 74 72 79 20 6b 65 79 2e 0d 0a 20 20 20 20 20  stry key...     
d3a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
d3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
d3c0: 66 20 28 21 73 61 66 65 29 0d 0a 20 20 20 20 20  f (!safe)..     
d3d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
d3e0: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
d3f0: 20 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20            throw 
d400: 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70 65 72 61  new InvalidOpera
d410: 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e 28 29 3b  tionException();
d420: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
d430: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
d440: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
d450: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
d460: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
d4a0: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
d4b0: 6e 20 53 79 73 74 65 6d 2e 4f 62 6a 65 63 74 20  n System.Object 
d4c0: 4f 76 65 72 72 69 64 65 73 0d 0a 20 20 20 20 20  Overrides..     
d4d0: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76         public ov
d4e0: 65 72 72 69 64 65 20 73 74 72 69 6e 67 20 54 6f  erride string To
d4f0: 53 74 72 69 6e 67 28 29 0d 0a 20 20 20 20 20 20  String()..      
d500: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d510: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
d520: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
d530: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d540: 75 72 6e 20 74 68 69 73 2e 4e 61 6d 65 3b 0d 0a  urn this.Name;..
d550: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
d560: 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
d570: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
d580: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
d590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d5c0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
d5d0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
d5e0: 50 75 62 6c 69 63 20 53 74 61 74 69 63 20 4d 65  Public Static Me
d5f0: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20  thods..         
d600: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
d610: 20 62 6f 6f 6c 20 4e 61 6d 65 45 71 75 61 6c 73   bool NameEquals
d620: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d630: 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 31 2c     string name1,
d640: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d650: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 32 0d 0a    string name2..
d660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d670: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d680: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d690: 20 20 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e    return String.
d6a0: 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20  Equals(..       
d6b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d               nam
d6c0: 65 31 2c 20 6e 61 6d 65 32 2c 20 53 74 72 69 6e  e1, name2, Strin
d6d0: 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69  gComparison.Ordi
d6e0: 6e 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 3b 0d  nalIgnoreCase);.
d6f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
d700: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
d710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d750: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
d760: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62   public static b
d770: 6f 6f 6c 20 56 61 6c 75 65 45 71 75 61 6c 73 28  ool ValueEquals(
d780: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d790: 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 31 2c    object value1,
d7a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d7b0: 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 32 0d    object value2.
d7c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d7d0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
d7e0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
d7f0: 20 20 20 69 66 20 28 28 76 61 6c 75 65 31 20 3d     if ((value1 =
d800: 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 76 61 6c 75  = null) || (valu
d810: 65 32 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20  e2 == null))..  
d820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d830: 20 20 72 65 74 75 72 6e 20 28 28 76 61 6c 75 65    return ((value
d840: 31 20 3d 3d 20 6e 75 6c 6c 29 20 26 26 20 28 76  1 == null) && (v
d850: 61 6c 75 65 32 20 3d 3d 20 6e 75 6c 6c 29 29 3b  alue2 == null));
d860: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d870: 20 20 20 20 69 66 20 28 4f 62 6a 65 63 74 2e 52      if (Object.R
d880: 65 66 65 72 65 6e 63 65 45 71 75 61 6c 73 28 76  eferenceEquals(v
d890: 61 6c 75 65 31 2c 20 76 61 6c 75 65 32 29 29 0d  alue1, value2)).
d8a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d8b0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
d8c0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d8d0: 20 20 20 20 20 54 79 70 65 20 74 79 70 65 31 20       Type type1 
d8e0: 3d 20 76 61 6c 75 65 31 2e 47 65 74 54 79 70 65  = value1.GetType
d8f0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
d900: 20 20 20 20 20 54 79 70 65 20 74 79 70 65 32 20       Type type2 
d910: 3d 20 76 61 6c 75 65 32 2e 47 65 74 54 79 70 65  = value2.GetType
d920: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
d930: 20 20 20 20 20 20 20 69 66 20 28 21 4f 62 6a 65         if (!Obje
d940: 63 74 2e 52 65 66 65 72 65 6e 63 65 45 71 75 61  ct.ReferenceEqua
d950: 6c 73 28 74 79 70 65 31 2c 20 74 79 70 65 32 29  ls(type1, type2)
d960: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
d970: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
d980: 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
d990: 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65          if (type
d9a0: 31 20 3d 3d 20 74 79 70 65 6f 66 28 69 6e 74 29  1 == typeof(int)
d9b0: 29 20 2f 2f 20 44 57 6f 72 64 0d 0a 20 20 20 20  ) // DWord..    
d9c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
d9d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d9e0: 20 20 20 72 65 74 75 72 6e 20 28 28 69 6e 74 29     return ((int)
d9f0: 76 61 6c 75 65 31 20 3d 3d 20 28 69 6e 74 29 76  value1 == (int)v
da00: 61 6c 75 65 32 29 3b 0d 0a 20 20 20 20 20 20 20  alue2);..       
da10: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
da20: 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
da30: 20 69 66 20 28 74 79 70 65 31 20 3d 3d 20 74 79   if (type1 == ty
da40: 70 65 6f 66 28 6c 6f 6e 67 29 29 20 2f 2f 20 51  peof(long)) // Q
da50: 57 6f 72 64 0d 0a 20 20 20 20 20 20 20 20 20 20  Word..          
da60: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
da70: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
da80: 75 72 6e 20 28 28 6c 6f 6e 67 29 76 61 6c 75 65  urn ((long)value
da90: 31 20 3d 3d 20 28 6c 6f 6e 67 29 76 61 6c 75 65  1 == (long)value
daa0: 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  2);..           
dab0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
dac0: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
dad0: 28 74 79 70 65 31 20 3d 3d 20 74 79 70 65 6f 66  (type1 == typeof
dae0: 28 73 74 72 69 6e 67 29 29 20 2f 2f 20 53 74 72  (string)) // Str
daf0: 69 6e 67 20 2f 20 45 78 70 61 6e 64 53 74 72 69  ing / ExpandStri
db00: 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ng..            
db10: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
db20: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
db30: 6e 20 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28  n String.Equals(
db40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
db50: 20 20 20 20 20 20 20 20 20 20 28 73 74 72 69 6e            (strin
db60: 67 29 76 61 6c 75 65 31 2c 20 28 73 74 72 69 6e  g)value1, (strin
db70: 67 29 76 61 6c 75 65 32 2c 0d 0a 20 20 20 20 20  g)value2,..     
db80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db90: 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69     StringCompari
dba0: 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 3b 0d 0a 20  son.Ordinal);.. 
dbb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
dbc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dbd0: 20 20 65 6c 73 65 20 69 66 20 28 74 79 70 65 31    else if (type1
dbe0: 20 3d 3d 20 74 79 70 65 6f 66 28 73 74 72 69 6e   == typeof(strin
dbf0: 67 5b 5d 29 29 20 2f 2f 20 4d 75 6c 74 69 53 74  g[])) // MultiSt
dc00: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  ring..          
dc10: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
dc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
dc30: 69 6e 67 5b 5d 20 61 72 72 61 79 31 20 3d 20 28  ing[] array1 = (
dc40: 73 74 72 69 6e 67 5b 5d 29 76 61 6c 75 65 31 3b  string[])value1;
dc50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
dc60: 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 61        string[] a
dc70: 72 72 61 79 32 20 3d 20 28 73 74 72 69 6e 67 5b  rray2 = (string[
dc80: 5d 29 76 61 6c 75 65 32 3b 0d 0a 0d 0a 20 20 20  ])value2;....   
dc90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dca0: 20 69 6e 74 20 6c 65 6e 67 74 68 31 20 3d 20 61   int length1 = a
dcb0: 72 72 61 79 31 2e 4c 65 6e 67 74 68 3b 0d 0a 0d  rray1.Length;...
dcc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
dcd0: 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74 68 31       if (length1
dce0: 20 21 3d 20 61 72 72 61 79 32 2e 4c 65 6e 67 74   != array2.Lengt
dcf0: 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  h)..            
dd00: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
dd10: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
dd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd30: 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 31   for (int index1
dd40: 20 3d 20 30 3b 20 69 6e 64 65 78 31 20 3c 20 6c   = 0; index1 < l
dd50: 65 6e 67 74 68 31 3b 20 69 6e 64 65 78 31 2b 2b  ength1; index1++
dd60: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
dd70: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
dd80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd90: 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 45 71    if (!String.Eq
dda0: 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
ddb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ddc0: 20 20 20 20 20 20 20 61 72 72 61 79 31 5b 69 6e         array1[in
ddd0: 64 65 78 31 5d 2c 20 61 72 72 61 79 32 5b 69 6e  dex1], array2[in
dde0: 64 65 78 31 5d 2c 0d 0a 20 20 20 20 20 20 20 20  dex1],..        
ddf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de00: 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43 6f          StringCo
de10: 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c  mparison.Ordinal
de20: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
de30: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
de40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de50: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
de60: 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
de70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de80: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
de90: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
dea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
deb0: 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
dec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ded0: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
dee0: 20 20 20 65 6c 73 65 20 69 66 20 28 74 79 70 65     else if (type
def0: 31 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74 65  1 == typeof(byte
df00: 5b 5d 29 29 20 2f 2f 20 42 69 6e 61 72 79 0d 0a  [])) // Binary..
df10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df20: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
df30: 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 61 72         byte[] ar
df40: 72 61 79 31 20 3d 20 28 62 79 74 65 5b 5d 29 76  ray1 = (byte[])v
df50: 61 6c 75 65 31 3b 0d 0a 20 20 20 20 20 20 20 20  alue1;..        
df60: 20 20 20 20 20 20 20 20 20 20 20 20 62 79 74 65              byte
df70: 5b 5d 20 61 72 72 61 79 32 20 3d 20 28 62 79 74  [] array2 = (byt
df80: 65 5b 5d 29 76 61 6c 75 65 32 3b 0d 0a 0d 0a 20  e[])value2;.... 
df90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfa0: 20 20 20 69 6e 74 20 6c 65 6e 67 74 68 31 20 3d     int length1 =
dfb0: 20 61 72 72 61 79 31 2e 4c 65 6e 67 74 68 3b 0d   array1.Length;.
dfc0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dfd0: 20 20 20 20 20 20 20 69 66 20 28 6c 65 6e 67 74         if (lengt
dfe0: 68 31 20 21 3d 20 61 72 72 61 79 32 2e 4c 65 6e  h1 != array2.Len
dff0: 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20  gth)..          
e000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
e010: 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
e020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e030: 20 20 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65     for (int inde
e040: 78 31 20 3d 20 30 3b 20 69 6e 64 65 78 31 20 3c  x1 = 0; index1 <
e050: 20 6c 65 6e 67 74 68 31 3b 20 69 6e 64 65 78 31   length1; index1
e060: 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
e070: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
e080: 28 61 72 72 61 79 31 5b 69 6e 64 65 78 31 5d 20  (array1[index1] 
e090: 21 3d 20 61 72 72 61 79 32 5b 69 6e 64 65 78 31  != array2[index1
e0a0: 5d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ])..            
e0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e0c0: 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
e0d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e0e0: 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
e0f0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e100: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
e110: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
e120: 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
e130: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
e140: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
e150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e180: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
e190: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
e1a0: 61 74 69 63 20 69 6e 74 20 56 61 6c 75 65 48 61  atic int ValueHa
e1b0: 73 68 43 6f 64 65 28 0d 0a 20 20 20 20 20 20 20  shCode(..       
e1c0: 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20           object 
e1d0: 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  value..         
e1e0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
e1f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
e200: 20 20 20 20 20 20 20 20 20 69 6e 74 20 72 65 73           int res
e210: 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  ult = 0;....    
e220: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
e230: 76 61 6c 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a  value != null)..
e240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e250: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
e260: 20 20 20 20 20 20 20 54 79 70 65 20 74 79 70 65         Type type
e270: 20 3d 20 76 61 6c 75 65 2e 47 65 74 54 79 70 65   = value.GetType
e280: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
e290: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
e2a0: 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 69  type == typeof(i
e2b0: 6e 74 29 29 20 7c 7c 20 2f 2f 20 44 57 6f 72 64  nt)) || // DWord
e2c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e2d0: 20 20 20 20 20 20 20 20 20 20 28 74 79 70 65 20            (type 
e2e0: 3d 3d 20 74 79 70 65 6f 66 28 6c 6f 6e 67 29 29  == typeof(long))
e2f0: 20 7c 7c 20 2f 2f 20 51 57 6f 72 64 0d 0a 20 20   || // QWord..  
e300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e310: 20 20 20 20 20 20 28 74 79 70 65 20 3d 3d 20 74        (type == t
e320: 79 70 65 6f 66 28 73 74 72 69 6e 67 29 29 29 20  ypeof(string))) 
e330: 2f 2f 20 53 74 72 69 6e 67 20 2f 20 45 78 70 61  // String / Expa
e340: 6e 64 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  ndString..      
e350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
e360: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e370: 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
e380: 3d 20 76 61 6c 75 65 2e 47 65 74 48 61 73 68 43  = value.GetHashC
e390: 6f 64 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ode();..        
e3a0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
e3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e3c0: 20 20 20 65 6c 73 65 20 69 66 20 28 28 74 79 70     else if ((typ
e3d0: 65 20 3d 3d 20 74 79 70 65 6f 66 28 73 74 72 69  e == typeof(stri
e3e0: 6e 67 5b 5d 29 29 20 7c 7c 20 2f 2f 20 4d 75 6c  ng[])) || // Mul
e3f0: 74 69 53 74 72 69 6e 67 0d 0a 20 20 20 20 20 20  tiString..      
e400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e410: 20 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f    (type == typeo
e420: 66 28 62 79 74 65 5b 5d 29 29 29 20 2f 2f 20 42  f(byte[]))) // B
e430: 69 6e 61 72 79 0d 0a 20 20 20 20 20 20 20 20 20  inary..         
e440: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
e450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e460: 20 20 20 20 20 20 41 72 72 61 79 20 61 72 72 61        Array arra
e470: 79 20 3d 20 28 41 72 72 61 79 29 76 61 6c 75 65  y = (Array)value
e480: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
e490: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
e4a0: 65 6e 67 74 68 20 3d 20 61 72 72 61 79 2e 4c 65  ength = array.Le
e4b0: 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ngth;....       
e4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e4d0: 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 20   for (int index 
e4e0: 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20 6c 65 6e  = 0; index < len
e4f0: 67 74 68 3b 20 69 6e 64 65 78 2b 2b 29 0d 0a 20  gth; index++).. 
e500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e510: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
e520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e530: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 65 6c 65        object ele
e540: 6d 65 6e 74 20 3d 20 61 72 72 61 79 2e 47 65 74  ment = array.Get
e550: 56 61 6c 75 65 28 69 6e 64 65 78 29 3b 0d 0a 0d  Value(index);...
e560: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e570: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
e580: 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c  (element == null
e590: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
e5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e5b0: 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a     continue;....
e5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e5d0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
e5e0: 6c 74 20 5e 3d 20 65 6c 65 6d 65 6e 74 2e 47 65  lt ^= element.Ge
e5f0: 74 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 20 20  tHashCode();..  
e600: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e610: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
e620: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
e630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e640: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
e650: 20 20 20 20 20 72 65 74 75 72 6e 20 72 65 73 75       return resu
e660: 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lt;..           
e670: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
e680: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
e690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e6c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
e6d0: 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
e6e0: 69 63 20 73 74 72 69 6e 67 20 56 61 6c 75 65 54  ic string ValueT
e6f0: 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20 20 20 20  oString(..      
e700: 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
e710: 20 76 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20   value,..       
e720: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
e730: 64 65 6c 69 6d 69 74 65 72 2c 0d 0a 20 20 20 20  delimiter,..    
e740: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
e750: 6e 67 20 6e 75 6c 6c 56 61 6c 75 65 0d 0a 20 20  ng nullValue..  
e760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
e770: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
e780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e790: 73 74 72 69 6e 67 20 72 65 73 75 6c 74 20 3d 20  string result = 
e7a0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
e7b0: 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
e7c0: 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue != null)..   
e7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
e7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e7f0: 20 20 20 20 54 79 70 65 20 74 79 70 65 20 3d 20      Type type = 
e800: 76 61 6c 75 65 2e 47 65 74 54 79 70 65 28 29 3b  value.GetType();
e810: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e820: 20 20 20 20 20 20 20 20 69 66 20 28 28 74 79 70          if ((typ
e830: 65 20 3d 3d 20 74 79 70 65 6f 66 28 69 6e 74 29  e == typeof(int)
e840: 29 20 7c 7c 20 2f 2f 20 44 57 6f 72 64 0d 0a 20  ) || // DWord.. 
e850: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e860: 20 20 20 20 20 20 20 28 74 79 70 65 20 3d 3d 20         (type == 
e870: 74 79 70 65 6f 66 28 6c 6f 6e 67 29 29 20 7c 7c  typeof(long)) ||
e880: 20 2f 2f 20 51 57 6f 72 64 0d 0a 20 20 20 20 20   // QWord..     
e890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e8a0: 20 20 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65     (type == type
e8b0: 6f 66 28 73 74 72 69 6e 67 29 29 29 20 2f 2f 20  of(string))) // 
e8c0: 53 74 72 69 6e 67 20 2f 20 45 78 70 61 6e 64 53  String / ExpandS
e8d0: 74 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20  tring..         
e8e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
e8f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e900: 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 76        result = v
e910: 61 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b  alue.ToString();
e920: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
e930: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
e940: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
e950: 65 20 69 66 20 28 28 74 79 70 65 20 3d 3d 20 74  e if ((type == t
e960: 79 70 65 6f 66 28 73 74 72 69 6e 67 5b 5d 29 29  ypeof(string[]))
e970: 20 7c 7c 20 2f 2f 20 4d 75 6c 74 69 53 74 72 69   || // MultiStri
e980: 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ng..            
e990: 20 20 20 20 20 20 20 20 20 20 20 20 28 74 79 70              (typ
e9a0: 65 20 3d 3d 20 74 79 70 65 6f 66 28 62 79 74 65  e == typeof(byte
e9b0: 5b 5d 29 29 29 20 2f 2f 20 42 69 6e 61 72 79 0d  []))) // Binary.
e9c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e9d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
e9f0: 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 62 75  StringBuilder bu
ea00: 69 6c 64 65 72 20 3d 20 6e 65 77 20 53 74 72 69  ilder = new Stri
ea10: 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 20 20  ngBuilder();..  
ea20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ea30: 20 20 20 20 20 20 41 72 72 61 79 20 61 72 72 61        Array arra
ea40: 79 20 3d 20 28 41 72 72 61 79 29 76 61 6c 75 65  y = (Array)value
ea50: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
ea60: 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
ea70: 65 6e 67 74 68 20 3d 20 61 72 72 61 79 2e 4c 65  ength = array.Le
ea80: 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ngth;....       
ea90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eaa0: 20 66 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 20   for (int index 
eab0: 3d 20 30 3b 20 69 6e 64 65 78 20 3c 20 6c 65 6e  = 0; index < len
eac0: 67 74 68 3b 20 69 6e 64 65 78 2b 2b 29 0d 0a 20  gth; index++).. 
ead0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eae0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
eaf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb00: 20 20 20 20 20 20 69 66 20 28 28 69 6e 64 65 78        if ((index
eb10: 20 3e 20 30 29 20 26 26 20 28 64 65 6c 69 6d 69   > 0) && (delimi
eb20: 74 65 72 20 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20  ter != null)).. 
eb30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
eb50: 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 64 65  uilder.Append(de
eb60: 6c 69 6d 69 74 65 72 29 3b 0d 0a 0d 0a 20 20 20  limiter);....   
eb70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eb80: 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20           object 
eb90: 65 6c 65 6d 65 6e 74 20 3d 20 61 72 72 61 79 2e  element = array.
eba0: 47 65 74 56 61 6c 75 65 28 69 6e 64 65 78 29 3b  GetValue(index);
ebb0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ebc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ebd0: 69 66 20 28 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e  if (element == n
ebe0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
ebf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec00: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
ec10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec20: 20 20 20 20 20 69 66 20 28 6e 75 6c 6c 56 61 6c       if (nullVal
ec30: 75 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue != null)..   
ec40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec60: 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28   builder.Append(
ec70: 6e 75 6c 6c 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20  nullValue);.... 
ec80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ec90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
eca0: 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
ecb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ecc0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
ecd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ece0: 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41         builder.A
ecf0: 70 70 65 6e 64 28 65 6c 65 6d 65 6e 74 2e 54 6f  ppend(element.To
ed00: 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20  String());..    
ed10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed20: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
ed30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed40: 20 72 65 73 75 6c 74 20 3d 20 62 75 69 6c 64 65   result = builde
ed50: 72 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20  r.ToString();.. 
ed60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ed70: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
ed80: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
ed90: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
eda0: 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
edb0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
edc0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
edd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ede0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
edf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
ee10: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
ee20: 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 45 71  c static bool Eq
ee30: 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
ee40: 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73         MockRegis
ee50: 74 72 79 4b 65 79 20 6b 65 79 31 2c 0d 0a 20 20  tryKey key1,..  
ee60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
ee70: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65  ckRegistryKey ke
ee80: 79 32 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y2..            
ee90: 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
eea0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
eeb0: 20 20 20 20 20 20 69 66 20 28 28 6b 65 79 31 20        if ((key1 
eec0: 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 6b 65 79  == null) || (key
eed0: 32 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20  2 == null))..   
eee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
eef0: 20 72 65 74 75 72 6e 20 28 28 6b 65 79 31 20 3d   return ((key1 =
ef00: 3d 20 6e 75 6c 6c 29 20 26 26 20 28 6b 65 79 32  = null) && (key2
ef10: 20 3d 3d 20 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a 20   == null));.... 
ef20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
ef30: 66 20 28 4f 62 6a 65 63 74 2e 52 65 66 65 72 65  f (Object.Refere
ef40: 6e 63 65 45 71 75 61 6c 73 28 6b 65 79 31 2c 20  nceEquals(key1, 
ef50: 6b 65 79 32 29 29 0d 0a 20 20 20 20 20 20 20 20  key2))..        
ef60: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
ef70: 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20 20  rn true;....    
ef80: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
ef90: 72 6e 20 4e 61 6d 65 45 71 75 61 6c 73 28 6b 65  rn NameEquals(ke
efa0: 79 31 2e 4e 61 6d 65 2c 20 6b 65 79 32 2e 4e 61  y1.Name, key2.Na
efb0: 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  me);..          
efc0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
efd0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
efe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
eff0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f000: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f010: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
f020: 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
f030: 74 69 63 20 69 6e 74 20 47 65 74 48 61 73 68 43  tic int GetHashC
f040: 6f 64 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ode(..          
f050: 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74        MockRegist
f060: 72 79 4b 65 79 20 6b 65 79 0d 0a 20 20 20 20 20  ryKey key..     
f070: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
f080: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f090: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
f0a0: 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  (key != null).. 
f0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
f0c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f0d0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
f0e0: 65 20 3d 20 6b 65 79 2e 4e 61 6d 65 3b 0d 0a 0d  e = key.Name;...
f0f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f100: 20 20 20 20 20 69 66 20 28 6e 61 6d 65 20 21 3d       if (name !=
f110: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
f120: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f130: 72 65 74 75 72 6e 20 6e 61 6d 65 2e 47 65 74 48  return name.GetH
f140: 61 73 68 43 6f 64 65 28 29 3b 0d 0a 20 20 20 20  ashCode();..    
f150: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
f160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f170: 20 72 65 74 75 72 6e 20 30 3b 0d 0a 20 20 20 20   return 0;..    
f180: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
f190: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
f1a0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
f1b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f1f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
f200: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6d 70 6c      #region Impl
f210: 69 63 69 74 20 43 6f 6e 76 65 72 73 69 6f 6e 20  icit Conversion 
f220: 4f 70 65 72 61 74 6f 72 73 0d 0a 20 20 20 20 20  Operators..     
f230: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
f240: 20 20 20 20 20 20 20 2f 2f 20 42 55 47 42 55 47         // BUGBUG
f250: 3a 20 52 65 6d 6f 76 65 20 6d 65 3f 20 20 54 68  : Remove me?  Th
f260: 69 73 20 73 68 6f 75 6c 64 20 62 65 20 73 61 66  is should be saf
f270: 65 20 62 65 63 61 75 73 65 20 69 6e 20 22 77 68  e because in "wh
f280: 61 74 2d 69 66 22 0d 0a 20 20 20 20 20 20 20 20  at-if"..        
f290: 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 6d      //         m
f2a0: 6f 64 65 20 61 6c 6c 20 6b 65 79 73 20 61 72 65  ode all keys are
f2b0: 20 6f 70 65 6e 65 64 20 72 65 61 64 2d 6f 6e 6c   opened read-onl
f2c0: 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y...            
f2d0: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
f2e0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 69 6d  public static im
f2f0: 70 6c 69 63 69 74 20 6f 70 65 72 61 74 6f 72 20  plicit operator 
f300: 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20  RegistryKey(..  
f310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
f320: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65  ckRegistryKey ke
f330: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
f340: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
f350: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f360: 20 20 20 20 20 72 65 74 75 72 6e 20 28 6b 65 79       return (key
f370: 20 21 3d 20 6e 75 6c 6c 29 20 3f 20 6b 65 79 2e   != null) ? key.
f380: 4b 65 79 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20  Key : null;..   
f390: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
f3a0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
f3b0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
f3c0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
f3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f400: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
f410: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
f420: 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72  sposable "Patter
f430: 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  n" Members..    
f440: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
f450: 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a  bool disposed;..
f460: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
f470: 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
f480: 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
f490: 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
f4a0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f4b0: 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
f4c0: 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
f4d0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
f4e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f4f0: 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62      throw new Ob
f500: 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65  jectDisposedExce
f510: 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
f520: 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
f530: 6f 66 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  of(MockRegistryK
f540: 65 79 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20 20 20  ey).Name);..    
f550: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
f560: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
f570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
f5b0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
f5c0: 61 74 65 20 2f 2a 20 70 72 6f 74 65 63 74 65 64  ate /* protected
f5d0: 20 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f 69 64   virtual */ void
f5e0: 20 44 69 73 70 6f 73 65 28 0d 0a 20 20 20 20 20   Dispose(..     
f5f0: 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
f600: 64 69 73 70 6f 73 69 6e 67 0d 0a 20 20 20 20 20  disposing..     
f610: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
f620: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
f630: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
f640: 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20  (!disposed)..   
f650: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f670: 20 20 20 20 69 66 20 28 64 69 73 70 6f 73 69 6e      if (disposin
f680: 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g)..            
f690: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
f6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6b0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
f6c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f6d0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
f6e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6f0: 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61 6e 61   // dispose mana
f700: 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68 65  ged resources he
f710: 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20  re.....         
f720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
f730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f740: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f750: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
f760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
f770: 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 0d  f (key != null).
f780: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f790: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f7a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7b0: 20 20 20 20 20 20 20 20 69 66 20 28 21 6e 6f 43          if (!noC
f7c0: 6c 6f 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20  lose)..         
f7d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f7e0: 20 20 20 20 20 20 20 6b 65 79 2e 43 6c 6f 73 65         key.Close
f7f0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
f800: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f810: 20 20 20 6b 65 79 20 3d 20 6e 75 6c 6c 3b 0d 0a     key = null;..
f820: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f830: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
f840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
f850: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f860: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
f870: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
f890: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8a0: 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20 75      // release u
f8b0: 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63  nmanaged resourc
f8c0: 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
f8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f8f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f900: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
f910: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
f920: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f930: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
f940: 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20 6e 6f  his object is no
f950: 77 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20 20  w disposed...   
f960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f970: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
f980: 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73 65           dispose
f990: 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  d = true;..     
f9a0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
f9b0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
f9c0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
f9d0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
f9e0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
f9f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa20: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
fa30: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44        #region ID
fa40: 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65 72  isposable Member
fa50: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
fa60: 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70 6f  ublic void Dispo
fa70: 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  se()..          
fa80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
fa90: 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72 75       Dispose(tru
faa0: 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
fab0: 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73 73       GC.Suppress
fac0: 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b 0d  Finalize(this);.
fad0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
fae0: 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
faf0: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
fb00: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
fb10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
fb50: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
fb60: 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20 20   Destructor..   
fb70: 20 20 20 20 20 20 20 20 20 7e 4d 6f 63 6b 52 65           ~MockRe
fb80: 67 69 73 74 72 79 4b 65 79 28 29 0d 0a 20 20 20  gistryKey()..   
fb90: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
fba0: 20 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70              Disp
fbb0: 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20  ose(false);..   
fbc0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
fbd0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
fbe0: 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20  on..        }.. 
fbf0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
fc00: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
fc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fc50: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
fc60: 23 72 65 67 69 6f 6e 20 52 65 67 69 73 74 72 79  #region Registry
fc70: 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 20 43 6c 61  RootKeyNames Cla
fc80: 73 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ss..        priv
fc90: 61 74 65 20 73 74 61 74 69 63 20 63 6c 61 73 73  ate static class
fca0: 20 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79   RegistryRootKey
fcb0: 4e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 7b  Names..        {
fcc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
fcd0: 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e  blic const strin
fce0: 67 20 48 4b 45 59 5f 43 4c 41 53 53 45 53 5f 52  g HKEY_CLASSES_R
fcf0: 4f 4f 54 20 3d 20 22 48 4b 45 59 5f 43 4c 41 53  OOT = "HKEY_CLAS
fd00: 53 45 53 5f 52 4f 4f 54 22 3b 0d 0a 20 20 20 20  SES_ROOT";..    
fd10: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 63          public c
fd20: 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 43 52  onst string HKCR
fd30: 20 3d 20 22 48 4b 43 52 22 3b 0d 0a 0d 0a 20 20   = "HKCR";....  
fd40: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
fd50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fd80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
fd90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
fda0: 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  lic const string
fdb0: 20 48 4b 45 59 5f 43 55 52 52 45 4e 54 5f 43 4f   HKEY_CURRENT_CO
fdc0: 4e 46 49 47 20 3d 20 22 48 4b 45 59 5f 43 55 52  NFIG = "HKEY_CUR
fdd0: 52 45 4e 54 5f 43 4f 4e 46 49 47 22 3b 0d 0a 20  RENT_CONFIG";.. 
fde0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
fdf0: 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48  c const string H
fe00: 4b 43 43 20 3d 20 22 48 4b 43 43 22 3b 0d 0a 0d  KCC = "HKCC";...
fe10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
fe20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fe60: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fe70: 70 75 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72  public const str
fe80: 69 6e 67 20 48 4b 45 59 5f 43 55 52 52 45 4e 54  ing HKEY_CURRENT
fe90: 5f 55 53 45 52 20 3d 20 22 48 4b 45 59 5f 43 55  _USER = "HKEY_CU
fea0: 52 52 45 4e 54 5f 55 53 45 52 22 3b 0d 0a 20 20  RRENT_USER";..  
feb0: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
fec0: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b   const string HK
fed0: 43 55 20 3d 20 22 48 4b 43 55 22 3b 0d 0a 0d 0a  CU = "HKCU";....
fee0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
fef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ff20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ff30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
ff40: 75 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69  ublic const stri
ff50: 6e 67 20 48 4b 45 59 5f 44 59 4e 5f 44 41 54 41  ng HKEY_DYN_DATA
ff60: 20 3d 20 22 48 4b 45 59 5f 44 59 4e 5f 44 41 54   = "HKEY_DYN_DAT
ff70: 41 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  A";..           
ff80: 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20 73 74   public const st
ff90: 72 69 6e 67 20 48 4b 44 44 20 3d 20 22 48 4b 44  ring HKDD = "HKD
ffa0: 44 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  D";....         
ffb0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
ffc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ffe0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fff0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
10000 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e        public con
10010 73 74 20 73 74 72 69 6e 67 20 48 4b 45 59 5f 4c  st string HKEY_L
10020 4f 43 41 4c 5f 4d 41 43 48 49 4e 45 20 3d 20 22  OCAL_MACHINE = "
10030 48 4b 45 59 5f 4c 4f 43 41 4c 5f 4d 41 43 48 49  HKEY_LOCAL_MACHI
10040 4e 45 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  NE";..          
10050 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20 73    public const s
10060 74 72 69 6e 67 20 48 4b 4c 4d 20 3d 20 22 48 4b  tring HKLM = "HK
10070 4c 4d 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  LM";....        
10080 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
100c0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
100d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f         public co
100e0 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 45 59 5f  nst string HKEY_
100f0 50 45 52 46 4f 52 4d 41 4e 43 45 5f 44 41 54 41  PERFORMANCE_DATA
10100 20 3d 20 22 48 4b 45 59 5f 50 45 52 46 4f 52 4d   = "HKEY_PERFORM
10110 41 4e 43 45 5f 44 41 54 41 22 3b 0d 0a 20 20 20  ANCE_DATA";..   
10120 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
10130 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 50  const string HKP
10140 44 20 3d 20 22 48 4b 50 44 22 3b 0d 0a 0d 0a 20  D = "HKPD";.... 
10150 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
10160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
101a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
101b0 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e  blic const strin
101c0 67 20 48 4b 45 59 5f 55 53 45 52 53 20 3d 20 22  g HKEY_USERS = "
101d0 48 4b 45 59 5f 55 53 45 52 53 22 3b 0d 0a 20 20  HKEY_USERS";..  
101e0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
101f0 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b   const string HK
10200 55 20 3d 20 22 48 4b 55 22 3b 0d 0a 20 20 20 20  U = "HKU";..    
10210 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
10220 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
10230 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
10240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
10280 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
10290 52 65 67 69 73 74 72 79 48 65 6c 70 65 72 20 43  RegistryHelper C
102a0 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20 23 72  lass..        #r
102b0 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 43 6f  egion Private Co
102c0 6e 73 74 61 6e 74 73 0d 0a 20 20 20 20 20 20 20  nstants..       
102d0 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 63   private const c
102e0 68 61 72 20 4b 65 79 4e 61 6d 65 53 65 70 61 72  har KeyNameSepar
102f0 61 74 6f 72 20 3d 20 27 5c 5c 27 3b 0d 0a 0d 0a  ator = '\\';....
10300 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
10310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
10350 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ...        priva
10360 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f 6e  te static readon
10370 6c 79 20 63 68 61 72 5b 5d 20 4b 65 79 4e 61 6d  ly char[] KeyNam
10380 65 53 65 70 61 72 61 74 6f 72 73 20 3d 20 7b 0d  eSeparators = {.
10390 0a 20 20 20 20 20 20 20 20 20 20 20 20 4b 65 79  .            Key
103a0 4e 61 6d 65 53 65 70 61 72 61 74 6f 72 0d 0a 20  NameSeparator.. 
103b0 20 20 20 20 20 20 20 7d 3b 0d 0a 20 20 20 20 20         };..     
103c0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
103d0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
103e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
103f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10420 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
10430 61 74 65 20 73 74 61 74 69 63 20 63 6c 61 73 73  ate static class
10440 20 52 65 67 69 73 74 72 79 48 65 6c 70 65 72 0d   RegistryHelper.
10450 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
10460 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
10470 50 72 69 76 61 74 65 20 44 61 74 61 0d 0a 20 20  Private Data..  
10480 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
10490 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
104a0 45 3a 20 54 68 69 73 20 69 73 20 75 73 65 64 20  E: This is used 
104b0 74 6f 20 73 79 6e 63 68 72 6f 6e 69 7a 65 20 61  to synchronize a
104c0 63 63 65 73 73 20 74 6f 20 74 68 65 20 6c 69 73  ccess to the lis
104d0 74 20 6f 66 20 6c 6f 67 67 65 64 0d 0a 20 20 20  t of logged..   
104e0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
104f0 20 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f    write operatio
10500 6e 73 20 28 6a 75 73 74 20 62 65 6c 6f 77 29 2e  ns (just below).
10510 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
10520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
10530 69 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a  ivate static obj
10540 65 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e  ect syncRoot = n
10550 65 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a  ew object();....
10560 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
10570 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
10580 4f 54 45 3a 20 54 68 69 73 20 69 73 20 74 68 65  OTE: This is the
10590 20 6c 69 73 74 20 6f 66 20 72 65 67 69 73 74 72   list of registr
105a0 79 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f  y write operatio
105b0 6e 73 20 77 68 65 6e 20 69 74 20 69 73 0d 0a 20  ns when it is.. 
105c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
105d0 20 20 20 20 73 65 74 20 74 6f 20 6e 6f 6e 2d 6e      set to non-n
105e0 75 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ull...          
105f0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
10600 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
10610 20 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69   RegistryOperati
10620 6f 6e 4c 69 73 74 20 6f 70 65 72 61 74 69 6f 6e  onList operation
10630 4c 69 73 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  List;..         
10640 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
10650 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
10660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
106b0 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 53  #region Public S
106c0 74 61 74 69 63 20 50 72 6f 70 65 72 74 69 65 73  tatic Properties
106d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
106e0 69 76 61 74 65 20 73 74 61 74 69 63 20 4d 6f 63  ivate static Moc
106f0 6b 52 65 67 69 73 74 72 79 20 72 65 61 64 4f 6e  kRegistry readOn
10700 6c 79 52 65 67 69 73 74 72 79 3b 0d 0a 20 20 20  lyRegistry;..   
10710 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
10720 73 74 61 74 69 63 20 4d 6f 63 6b 52 65 67 69 73  static MockRegis
10730 74 72 79 20 52 65 61 64 4f 6e 6c 79 52 65 67 69  try ReadOnlyRegi
10740 73 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20  stry..          
10750 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10760 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
10770 6e 20 72 65 61 64 4f 6e 6c 79 52 65 67 69 73 74  n readOnlyRegist
10780 72 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ry; }..         
10790 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
107a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
107b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
107e0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
107f0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
10800 74 61 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  tatic MockRegist
10810 72 79 20 72 65 61 64 57 72 69 74 65 52 65 67 69  ry readWriteRegi
10820 73 74 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  stry;..         
10830 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
10840 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 20 52 65   MockRegistry Re
10850 61 64 57 72 69 74 65 52 65 67 69 73 74 72 79 0d  adWriteRegistry.
10860 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
10870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10880 67 65 74 20 7b 20 72 65 74 75 72 6e 20 72 65 61  get { return rea
10890 64 57 72 69 74 65 52 65 67 69 73 74 72 79 3b 20  dWriteRegistry; 
108a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
108b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
108c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
108f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10900 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
10910 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
10920 63 20 69 6e 74 20 73 75 62 4b 65 79 73 43 72 65  c int subKeysCre
10930 61 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  ated;..         
10940 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
10950 20 69 6e 74 20 53 75 62 4b 65 79 73 43 72 65 61   int SubKeysCrea
10960 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
10970 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10980 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
10990 20 73 75 62 4b 65 79 73 43 72 65 61 74 65 64 3b   subKeysCreated;
109a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
109b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
109c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
109d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
109f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
10a10 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
10a20 69 63 20 69 6e 74 20 73 75 62 4b 65 79 73 44 65  ic int subKeysDe
10a30 6c 65 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  leted;..        
10a40 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
10a50 63 20 69 6e 74 20 53 75 62 4b 65 79 73 44 65 6c  c int SubKeysDel
10a60 65 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  eted..          
10a70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10a80 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
10a90 6e 20 73 75 62 4b 65 79 73 44 65 6c 65 74 65 64  n subKeysDeleted
10aa0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
10ab0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
10ac0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
10ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10b00 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
10b10 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
10b20 74 69 63 20 69 6e 74 20 6b 65 79 56 61 6c 75 65  tic int keyValue
10b30 73 52 65 61 64 3b 0d 0a 20 20 20 20 20 20 20 20  sRead;..        
10b40 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
10b50 63 20 69 6e 74 20 4b 65 79 56 61 6c 75 65 73 52  c int KeyValuesR
10b60 65 61 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ead..           
10b70 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10b80 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
10b90 20 6b 65 79 56 61 6c 75 65 73 52 65 61 64 3b 20   keyValuesRead; 
10ba0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
10bb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c00 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
10c10 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
10c20 63 20 69 6e 74 20 6b 65 79 56 61 6c 75 65 73 57  c int keyValuesW
10c30 72 69 74 74 65 6e 3b 0d 0a 20 20 20 20 20 20 20  ritten;..       
10c40 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
10c50 69 63 20 69 6e 74 20 4b 65 79 56 61 6c 75 65 73  ic int KeyValues
10c60 57 72 69 74 74 65 6e 0d 0a 20 20 20 20 20 20 20  Written..       
10c70 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10c80 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
10c90 74 75 72 6e 20 6b 65 79 56 61 6c 75 65 73 57 72  turn keyValuesWr
10ca0 69 74 74 65 6e 3b 20 7d 0d 0a 20 20 20 20 20 20  itten; }..      
10cb0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
10cc0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
10cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
10d10 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
10d20 65 20 73 74 61 74 69 63 20 69 6e 74 20 6b 65 79  e static int key
10d30 56 61 6c 75 65 73 44 65 6c 65 74 65 64 3b 0d 0a  ValuesDeleted;..
10d40 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
10d50 69 63 20 73 74 61 74 69 63 20 69 6e 74 20 4b 65  ic static int Ke
10d60 79 56 61 6c 75 65 73 44 65 6c 65 74 65 64 0d 0a  yValuesDeleted..
10d70 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
10d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
10d90 65 74 20 7b 20 72 65 74 75 72 6e 20 6b 65 79 56  et { return keyV
10da0 61 6c 75 65 73 44 65 6c 65 74 65 64 3b 20 7d 0d  aluesDeleted; }.
10db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
10dc0 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
10dd0 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
10de0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
10df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
10e30 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
10e40 20 50 75 62 6c 69 63 20 53 74 61 74 69 63 20 4d   Public Static M
10e50 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
10e60 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
10e70 63 20 76 6f 69 64 20 45 6e 61 62 6c 65 4f 72 44  c void EnableOrD
10e80 69 73 61 62 6c 65 4f 70 65 72 61 74 69 6f 6e 4c  isableOperationL
10e90 69 73 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ist(..          
10ea0 20 20 20 20 20 20 62 6f 6f 6c 20 65 6e 61 62 6c        bool enabl
10eb0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
10ec0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
10ed0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10ee0 20 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52       lock (syncR
10ef0 6f 6f 74 29 20 2f 2a 20 54 52 41 4e 53 41 43 54  oot) /* TRANSACT
10f00 49 4f 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20  IONAL */..      
10f10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
10f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f30 20 69 66 20 28 65 6e 61 62 6c 65 29 0d 0a 20 20   if (enable)..  
10f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f50 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
10f60 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
10f70 28 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d  (operationList =
10f80 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
10f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10fa0 20 20 20 20 20 6f 70 65 72 61 74 69 6f 6e 4c 69       operationLi
10fb0 73 74 20 3d 20 6e 65 77 20 52 65 67 69 73 74 72  st = new Registr
10fc0 79 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28 29  yOperationList()
10fd0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
10fe0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
10ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
11000 73 65 20 69 66 20 28 6f 70 65 72 61 74 69 6f 6e  se if (operation
11010 4c 69 73 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  List != null).. 
11020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11030 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70                op
11050 65 72 61 74 69 6f 6e 4c 69 73 74 2e 44 69 73 70  erationList.Disp
11060 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ose();..        
11070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11080 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d 20  operationList = 
11090 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
110a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
110b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
110c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
110d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
110e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
110f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11120 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
11130 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76   public static v
11140 6f 69 64 20 52 65 69 6e 69 74 69 61 6c 69 7a 65  oid Reinitialize
11150 44 65 66 61 75 6c 74 52 65 67 69 73 74 72 69 65  DefaultRegistrie
11160 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
11170 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c      bool whatIf,
11180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11190 20 20 62 6f 6f 6c 20 73 61 66 65 0d 0a 20 20 20    bool safe..   
111a0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
111b0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
111c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
111d0 66 20 28 72 65 61 64 4f 6e 6c 79 52 65 67 69 73  f (readOnlyRegis
111e0 74 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  try != null)..  
111f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
11200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11210 20 20 20 20 20 72 65 61 64 4f 6e 6c 79 52 65 67       readOnlyReg
11220 69 73 74 72 79 2e 44 69 73 70 6f 73 65 28 29 3b  istry.Dispose();
11230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11240 20 20 20 20 20 20 72 65 61 64 4f 6e 6c 79 52 65        readOnlyRe
11250 67 69 73 74 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a  gistry = null;..
11260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11270 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
11280 20 20 20 20 20 69 66 20 28 72 65 61 64 57 72 69       if (readWri
11290 74 65 52 65 67 69 73 74 72 79 20 21 3d 20 6e 75  teRegistry != nu
112a0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
112b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
112c0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61 64              read
112d0 57 72 69 74 65 52 65 67 69 73 74 72 79 2e 44 69  WriteRegistry.Di
112e0 73 70 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20  spose();..      
112f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11300 61 64 57 72 69 74 65 52 65 67 69 73 74 72 79 20  adWriteRegistry 
11310 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  = null;..       
11320 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
11330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
11340 61 64 4f 6e 6c 79 52 65 67 69 73 74 72 79 20 3d  adOnlyRegistry =
11350 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72   new MockRegistr
11360 79 28 77 68 61 74 49 66 2c 20 74 72 75 65 2c 20  y(whatIf, true, 
11370 73 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  safe);..        
11380 20 20 20 20 20 20 20 20 72 65 61 64 57 72 69 74          readWrit
11390 65 52 65 67 69 73 74 72 79 20 3d 20 6e 65 77 20  eRegistry = new 
113a0 4d 6f 63 6b 52 65 67 69 73 74 72 79 28 77 68 61  MockRegistry(wha
113b0 74 49 66 2c 20 66 61 6c 73 65 2c 20 73 61 66 65  tIf, false, safe
113c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
113d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
113e0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
113f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11420 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
11430 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
11440 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  c MockRegistryKe
11450 79 20 47 65 74 52 65 61 64 4f 6e 6c 79 52 6f 6f  y GetReadOnlyRoo
11460 74 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  tKey(..         
11470 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
11480 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  me..            
11490 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
114a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
114b0 20 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74        return Get
114c0 52 6f 6f 74 4b 65 79 28 72 65 61 64 4f 6e 6c 79  RootKey(readOnly
114d0 52 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 29 3b  Registry, name);
114e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
114f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
11500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11540 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
11550 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
11560 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
11570 47 65 74 52 65 61 64 57 72 69 74 65 52 6f 6f 74  GetReadWriteRoot
11580 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
11590 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
115a0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
115b0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
115c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
115d0 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 52       return GetR
115e0 6f 6f 74 4b 65 79 28 72 65 61 64 57 72 69 74 65  ootKey(readWrite
115f0 52 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 29 3b  Registry, name);
11600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
11610 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
11620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11660 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
11670 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
11680 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
11690 47 65 74 52 6f 6f 74 4b 65 79 28 0d 0a 20 20 20  GetRootKey(..   
116a0 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63               Moc
116b0 6b 52 65 67 69 73 74 72 79 20 72 65 67 69 73 74  kRegistry regist
116c0 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry,..           
116d0 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
116e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
116f0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
11700 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
11710 20 20 20 20 69 66 20 28 72 65 67 69 73 74 72 79      if (registry
11720 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
11730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
11740 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
11750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
11760 66 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  f (MockRegistryK
11770 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a  ey.NameEquals(..
11780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11790 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65          name, Re
117a0 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d  gistryRootKeyNam
117b0 65 73 2e 48 4b 45 59 5f 43 4c 41 53 53 45 53 5f  es.HKEY_CLASSES_
117c0 52 4f 4f 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20  ROOT) ||..      
117d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
117e0 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61  ckRegistryKey.Na
117f0 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  meEquals(..     
11800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11810 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72     name, Registr
11820 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b  yRootKeyNames.HK
11830 43 52 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  CR))..          
11840 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
11850 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11860 75 72 6e 20 72 65 67 69 73 74 72 79 2e 43 6c 61  urn registry.Cla
11870 73 73 65 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20  ssesRoot;..     
11880 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
11890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
118a0 73 65 20 69 66 20 28 4d 6f 63 6b 52 65 67 69 73  se if (MockRegis
118b0 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c  tryKey.NameEqual
118c0 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
118d0 20 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65              name
118e0 2c 20 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65  , RegistryRootKe
118f0 79 4e 61 6d 65 73 2e 48 4b 45 59 5f 43 55 52 52  yNames.HKEY_CURR
11900 45 4e 54 5f 43 4f 4e 46 49 47 29 20 7c 7c 0d 0a  ENT_CONFIG) ||..
11910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11920 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
11930 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d  Key.NameEquals(.
11940 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11950 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52           name, R
11960 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61  egistryRootKeyNa
11970 6d 65 73 2e 48 4b 43 43 29 29 0d 0a 20 20 20 20  mes.HKCC))..    
11980 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
11990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
119a0 20 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74     return regist
119b0 72 79 2e 43 75 72 72 65 6e 74 43 6f 6e 66 69 67  ry.CurrentConfig
119c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
119d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
119e0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
119f0 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e  ockRegistryKey.N
11a00 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ameEquals(..    
11a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74      name, Regist
11a30 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48  ryRootKeyNames.H
11a40 4b 45 59 5f 43 55 52 52 45 4e 54 5f 55 53 45 52  KEY_CURRENT_USER
11a50 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
11a60 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
11a70 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71  gistryKey.NameEq
11a80 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
11a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
11aa0 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f  ame, RegistryRoo
11ab0 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 43 55 29 29  tKeyNames.HKCU))
11ac0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11ad0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11ae0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11af0 72 65 67 69 73 74 72 79 2e 43 75 72 72 65 6e 74  registry.Current
11b00 55 73 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20  User;..         
11b10 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11b20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
11b30 66 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  f (MockRegistryK
11b40 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a  ey.NameEquals(..
11b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b60 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65          name, Re
11b70 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d  gistryRootKeyNam
11b80 65 73 2e 48 4b 45 59 5f 44 59 4e 5f 44 41 54 41  es.HKEY_DYN_DATA
11b90 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
11ba0 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
11bb0 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71  gistryKey.NameEq
11bc0 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
11bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
11be0 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f  ame, RegistryRoo
11bf0 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 44 44 29 29  tKeyNames.HKDD))
11c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11c10 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
11c20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11c30 72 65 67 69 73 74 72 79 2e 44 79 6e 44 61 74 61  registry.DynData
11c40 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
11c50 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
11c60 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
11c70 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e  ockRegistryKey.N
11c80 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20  ameEquals(..    
11c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ca0 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74      name, Regist
11cb0 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48  ryRootKeyNames.H
11cc0 4b 45 59 5f 4c 4f 43 41 4c 5f 4d 41 43 48 49 4e  KEY_LOCAL_MACHIN
11cd0 45 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  E) ||..         
11ce0 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52             MockR
11cf0 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45  egistryKey.NameE
11d00 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
11d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f  name, RegistryRo
11d30 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 4c 4d 29  otKeyNames.HKLM)
11d40 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
11d50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11d60 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11d70 20 72 65 67 69 73 74 72 79 2e 4c 6f 63 61 6c 4d   registry.LocalM
11d80 61 63 68 69 6e 65 3b 0d 0a 20 20 20 20 20 20 20  achine;..       
11d90 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
11da0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
11db0 20 69 66 20 28 4d 6f 63 6b 52 65 67 69 73 74 72   if (MockRegistr
11dc0 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28  yKey.NameEquals(
11dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11de0 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20            name, 
11df0 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e  RegistryRootKeyN
11e00 61 6d 65 73 2e 48 4b 45 59 5f 50 45 52 46 4f 52  ames.HKEY_PERFOR
11e10 4d 41 4e 43 45 5f 44 41 54 41 29 20 7c 7c 0d 0a  MANCE_DATA) ||..
11e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11e30 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
11e40 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d  Key.NameEquals(.
11e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11e60 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52           name, R
11e70 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61  egistryRootKeyNa
11e80 6d 65 73 2e 48 4b 50 44 29 29 0d 0a 20 20 20 20  mes.HKPD))..    
11e90 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
11ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11eb0 20 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74     return regist
11ec0 72 79 2e 50 65 72 66 6f 72 6d 61 6e 63 65 44 61  ry.PerformanceDa
11ed0 74 61 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ta;..           
11ee0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
11ef0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
11f00 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79  (MockRegistryKey
11f10 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20  .NameEquals(..  
11f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f30 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69        name, Regi
11f40 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73  stryRootKeyNames
11f50 2e 48 4b 45 59 5f 55 53 45 52 53 29 20 7c 7c 0d  .HKEY_USERS) ||.
11f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11f70 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72       MockRegistr
11f80 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28  yKey.NameEquals(
11f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11fa0 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20            name, 
11fb0 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e  RegistryRootKeyN
11fc0 61 6d 65 73 2e 48 4b 55 29 29 0d 0a 20 20 20 20  ames.HKU))..    
11fd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
11fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11ff0 20 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74     return regist
12000 72 79 2e 55 73 65 72 73 3b 0d 0a 20 20 20 20 20  ry.Users;..     
12010 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
12020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12030 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
12040 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12050 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
12060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
120a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
120b0 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
120c0 6e 67 20 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28  ng JoinKeyNames(
120d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
120e0 20 20 70 61 72 61 6d 73 20 73 74 72 69 6e 67 5b    params string[
120f0 5d 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20  ] names..       
12100 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
12110 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12120 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28             if ((
12130 6e 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c  names == null) |
12140 7c 20 28 6e 61 6d 65 73 2e 4c 65 6e 67 74 68 20  | (names.Length 
12150 3d 3d 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20  == 0))..        
12160 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12170 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20  rn null;....    
12180 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
12190 6e 67 42 75 69 6c 64 65 72 20 62 75 69 6c 64 65  ngBuilder builde
121a0 72 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75  r = new StringBu
121b0 69 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20  ilder();....    
121c0 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65              fore
121d0 61 63 68 20 28 73 74 72 69 6e 67 20 6e 61 6d 65  ach (string name
121e0 20 69 6e 20 6e 61 6d 65 73 29 0d 0a 20 20 20 20   in names)..    
121f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12210 20 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e     if (name == n
12220 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
12230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
12240 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20  ntinue;....     
12250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
12260 74 72 69 6e 67 20 6e 65 77 4e 61 6d 65 20 3d 20  tring newName = 
12270 6e 61 6d 65 2e 54 72 69 6d 28 4b 65 79 4e 61 6d  name.Trim(KeyNam
12280 65 53 65 70 61 72 61 74 6f 72 29 3b 0d 0a 0d 0a  eSeparator);....
12290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122a0 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
122b0 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 6e 65 77  sNullOrEmpty(new
122c0 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
122d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
122e0 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20  continue;....   
122f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12300 20 69 66 20 28 62 75 69 6c 64 65 72 2e 4c 65 6e   if (builder.Len
12310 67 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20  gth > 0)..      
12320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12330 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64    builder.Append
12340 28 4b 65 79 4e 61 6d 65 53 65 70 61 72 61 74 6f  (KeyNameSeparato
12350 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
12360 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64             build
12370 65 72 2e 41 70 70 65 6e 64 28 6e 65 77 4e 61 6d  er.Append(newNam
12380 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
12390 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
123a0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
123b0 20 62 75 69 6c 64 65 72 2e 54 6f 53 74 72 69 6e   builder.ToStrin
123c0 67 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  g();..          
123d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
123e0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
123f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12420 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
12430 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
12440 74 69 63 20 73 74 72 69 6e 67 20 4a 6f 69 6e 4b  tic string JoinK
12450 65 79 4e 61 6d 65 73 28 0d 0a 20 20 20 20 20 20  eyNames(..      
12460 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
12470 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a  gistryKey key,..
12480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12490 70 61 72 61 6d 73 20 73 74 72 69 6e 67 5b 5d 20  params string[] 
124a0 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20  names..         
124b0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
124c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
124d0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
124e0 72 65 73 75 6c 74 20 3d 20 4a 6f 69 6e 4b 65 79  result = JoinKey
124f0 4e 61 6d 65 73 28 6e 61 6d 65 73 29 3b 0d 0a 0d  Names(names);...
12500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12510 20 69 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c   if (key != null
12520 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
12530 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20         result = 
12540 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 6b 65 79  JoinKeyNames(key
12550 2e 4e 61 6d 65 2c 20 72 65 73 75 6c 74 29 3b 0d  .Name, result);.
12560 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
12570 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
12580 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
12590 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
125a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
125e0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
125f0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
12600 20 73 74 72 69 6e 67 5b 5d 20 53 70 6c 69 74 4b   string[] SplitK
12610 65 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  eyName(..       
12620 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
12630 6b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  keyName..       
12640 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
12650 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
12660 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b             if (k
12670 65 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d  eyName == null).
12680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12690 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
126a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
126b0 20 20 20 20 20 72 65 74 75 72 6e 20 6b 65 79 4e       return keyN
126c0 61 6d 65 2e 53 70 6c 69 74 28 0d 0a 20 20 20 20  ame.Split(..    
126d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
126e0 4b 65 79 4e 61 6d 65 53 65 70 61 72 61 74 6f 72  KeyNameSeparator
126f0 73 2c 20 53 74 72 69 6e 67 53 70 6c 69 74 4f 70  s, StringSplitOp
12700 74 69 6f 6e 73 2e 52 65 6d 6f 76 65 45 6d 70 74  tions.RemoveEmpt
12710 79 45 6e 74 72 69 65 73 29 3b 0d 0a 20 20 20 20  yEntries);..    
12720 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12730 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
12740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
12780 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
12790 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67  ic static string
127a0 20 4c 61 73 74 53 75 62 4b 65 79 4e 61 6d 65 28   LastSubKeyName(
127b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
127c0 20 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65    string keyName
127d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
127e0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
127f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
12800 20 20 20 20 73 74 72 69 6e 67 5b 5d 20 73 75 62      string[] sub
12810 4b 65 79 4e 61 6d 65 73 20 3d 20 53 70 6c 69 74  KeyNames = Split
12820 4b 65 79 4e 61 6d 65 28 6b 65 79 4e 61 6d 65 29  KeyName(keyName)
12830 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
12840 20 20 20 20 20 69 66 20 28 28 73 75 62 4b 65 79       if ((subKey
12850 4e 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c  Names == null) |
12860 7c 20 28 73 75 62 4b 65 79 4e 61 6d 65 73 2e 4c  | (subKeyNames.L
12870 65 6e 67 74 68 20 3d 3d 20 30 29 29 0d 0a 20 20  ength == 0))..  
12880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12890 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
128a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
128b0 20 20 72 65 74 75 72 6e 20 73 75 62 4b 65 79 4e    return subKeyN
128c0 61 6d 65 73 5b 73 75 62 4b 65 79 4e 61 6d 65 73  ames[subKeyNames
128d0 2e 4c 65 6e 67 74 68 20 2d 20 31 5d 3b 0d 0a 20  .Length - 1];.. 
128e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
128f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
12900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12910 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12920 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
12940 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  ...            [
12950 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f  MethodImpl(Metho
12960 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49  dImplOptions.NoI
12970 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20  nlining)]..     
12980 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
12990 61 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  atic MockRegistr
129a0 79 4b 65 79 20 4f 70 65 6e 53 75 62 4b 65 79 28  yKey OpenSubKey(
129b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
129c0 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
129d0 79 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20 20 20  y rootKey,..    
129e0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
129f0 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a  ng subKeyName,..
12a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a10 62 6f 6f 6c 20 77 72 69 74 61 62 6c 65 2c 0d 0a  bool writable,..
12a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a30 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20  bool whatIf,..  
12a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
12a50 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20  ol verbose..    
12a60 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
12a70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
12a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
12a90 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20   (verbose)..    
12aa0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ac0 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75     TraceOps.Debu
12ad0 67 41 6e 64 54 72 61 63 65 28 77 72 69 74 61 62  gAndTrace(writab
12ae0 6c 65 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  le ?..          
12af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
12b00 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68  acePriority.High
12b10 65 73 74 20 3a 20 54 72 61 63 65 50 72 69 6f 72  est : TracePrior
12b20 69 74 79 2e 48 69 67 68 65 72 2c 0d 0a 20 20 20  ity.Higher,..   
12b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12b40 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
12b50 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
12b60 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
12b70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
12b80 20 20 20 20 20 20 20 20 20 20 20 22 72 6f 6f 74             "root
12b90 4b 65 79 20 3d 20 7b 30 7d 2c 20 73 75 62 4b 65  Key = {0}, subKe
12ba0 79 4e 61 6d 65 20 3d 20 7b 31 7d 2c 20 77 72 69  yName = {1}, wri
12bb0 74 61 62 6c 65 20 3d 20 7b 32 7d 22 2c 0d 0a 20  table = {2}",.. 
12bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12bd0 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
12be0 79 28 72 6f 6f 74 4b 65 79 29 2c 20 46 6f 72 44  y(rootKey), ForD
12bf0 69 73 70 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d  isplay(subKeyNam
12c00 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
12c10 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
12c20 44 69 73 70 6c 61 79 28 77 72 69 74 61 62 6c 65  Display(writable
12c30 29 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72  )), traceCategor
12c40 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
12c50 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
12c60 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 6f            if (ro
12c70 6f 74 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  otKey == null)..
12c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12c90 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
12ca0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12cb0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
12cc0 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a          // HACK:
12cd0 20 41 6c 77 61 79 73 20 66 6f 72 62 69 64 20 77   Always forbid w
12ce0 72 69 74 61 62 6c 65 20 61 63 63 65 73 73 20 77  ritable access w
12cf0 68 65 6e 20 6f 70 65 72 61 74 69 6e 67 20 69 6e  hen operating in
12d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12d10 20 20 2f 2f 20 20 20 20 20 20 20 22 77 68 61 74    //       "what
12d20 2d 69 66 22 20 6d 6f 64 65 2e 0d 0a 20 20 20 20  -if" mode...    
12d30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
12d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12d50 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
12d60 6b 65 79 20 3d 20 72 6f 6f 74 4b 65 79 2e 4f 70  key = rootKey.Op
12d70 65 6e 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20  enSubKey(..     
12d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
12d90 75 62 4b 65 79 4e 61 6d 65 2c 20 77 68 61 74 49  ubKeyName, whatI
12da0 66 20 3f 20 66 61 6c 73 65 20 3a 20 77 72 69 74  f ? false : writ
12db0 61 62 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  able);....      
12dc0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
12dd0 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 20 3f   (key != null) ?
12de0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12df0 20 20 20 20 20 20 6e 65 77 20 4d 6f 63 6b 52 65        new MockRe
12e00 67 69 73 74 72 79 4b 65 79 28 6b 65 79 2c 20 77  gistryKey(key, w
12e10 68 61 74 49 66 2c 20 66 61 6c 73 65 2c 20 66 61  hatIf, false, fa
12e20 6c 73 65 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20  lse) : null;..  
12e30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
12e40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
12e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
12e90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d  ..            [M
12ea0 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64  ethodImpl(Method
12eb0 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e  ImplOptions.NoIn
12ec0 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20  lining)]..      
12ed0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
12ee0 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  tic MockRegistry
12ef0 4b 65 79 20 43 72 65 61 74 65 53 75 62 4b 65 79  Key CreateSubKey
12f00 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
12f10 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
12f20 65 79 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20 20  ey rootKey,..   
12f30 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
12f40 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d  ing subKeyName,.
12f50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12f60 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20   bool whatIf,.. 
12f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
12f80 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20  ool verbose..   
12f90 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
12fa0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
12fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
12fc0 66 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20  f (verbose)..   
12fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
12fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ff0 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62      TraceOps.Deb
13000 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65  ugAndTrace(Trace
13010 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74  Priority.Highest
13020 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
13030 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
13040 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
13050 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
13060 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
13070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13080 20 22 72 6f 6f 74 4b 65 79 20 3d 20 7b 30 7d 2c   "rootKey = {0},
13090 20 73 75 62 4b 65 79 4e 61 6d 65 20 3d 20 7b 31   subKeyName = {1
130a0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
130b0 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
130c0 44 69 73 70 6c 61 79 28 72 6f 6f 74 4b 65 79 29  Display(rootKey)
130d0 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 73 75 62  , ForDisplay(sub
130e0 4b 65 79 4e 61 6d 65 29 29 2c 0d 0a 20 20 20 20  KeyName)),..    
130f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13100 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
13110 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
13120 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
13130 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72 6f            if (ro
13140 6f 74 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  otKey == null)..
13150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13160 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
13170 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13180 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
13190 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
131a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
131b0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
131c0 20 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a          // HACK:
131d0 20 41 6c 77 61 79 73 20 6f 70 65 6e 20 61 20 6b   Always open a k
131e0 65 79 2c 20 72 61 74 68 65 72 20 74 68 61 6e 20  ey, rather than 
131f0 63 72 65 61 74 69 6e 67 20 6f 6e 65 20 77 68 65  creating one whe
13200 6e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  n..             
13210 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
13220 6f 70 65 72 61 74 69 6e 67 20 69 6e 20 22 77 68  operating in "wh
13230 61 74 2d 69 66 22 20 6d 6f 64 65 2e 0d 0a 20 20  at-if" mode...  
13240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13250 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
13260 20 20 20 20 20 20 20 20 20 20 69 66 20 28 77 68            if (wh
13270 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20  atIf)..         
13280 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132a0 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
132b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
132c0 20 20 2f 2f 20 48 41 43 4b 3a 20 41 74 74 65 6d    // HACK: Attem
132d0 70 74 20 74 6f 20 6f 70 65 6e 20 74 68 65 20 73  pt to open the s
132e0 70 65 63 69 66 69 65 64 20 73 75 62 2d 6b 65 79  pecified sub-key
132f0 2e 20 20 49 66 0d 0a 20 20 20 20 20 20 20 20 20  .  If..         
13300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13310 2f 20 20 20 20 20 20 20 74 68 69 73 20 66 61 69  /       this fai
13320 6c 73 2c 20 77 65 20 77 69 6c 6c 20 73 69 6d 70  ls, we will simp
13330 6c 79 20 72 65 74 75 72 6e 20 74 68 65 20 72 6f  ly return the ro
13340 6f 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ot..            
13350 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
13360 20 20 20 20 20 6b 65 79 20 69 74 73 65 6c 66 20       key itself 
13370 73 69 6e 63 65 20 6e 6f 20 77 72 69 74 65 73 20  since no writes 
13380 61 72 65 20 61 6c 6c 6f 77 65 64 20 69 6e 0d 0a  are allowed in..
13390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
133a0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
133b0 20 22 77 68 61 74 2d 69 66 22 20 6d 6f 64 65 20   "what-if" mode 
133c0 61 6e 79 68 6f 77 2e 0d 0a 20 20 20 20 20 20 20  anyhow...       
133d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
133e0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
133f0 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63               Moc
13400 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79  kRegistryKey key
13410 20 3d 20 72 6f 6f 74 4b 65 79 2e 4f 70 65 6e 53   = rootKey.OpenS
13420 75 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65  ubKey(subKeyName
13430 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
13440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
13450 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a   (key != null)..
13460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13470 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
13480 72 6e 20 6b 65 79 3b 0d 0a 0d 0a 20 20 20 20 20  rn key;....     
13490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
134a0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
134b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
134c0 2f 20 42 55 47 46 49 58 3a 20 54 68 65 20 72 65  / BUGFIX: The re
134d0 67 69 73 74 72 79 20 6b 65 79 20 77 65 20 61 72  gistry key we ar
134e0 65 20 73 75 70 70 6f 73 65 64 20 74 6f 20 63 72  e supposed to cr
134f0 65 61 74 65 0d 0a 20 20 20 20 20 20 20 20 20 20  eate..          
13500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
13510 20 20 20 20 20 20 20 20 20 64 6f 65 73 20 6e 6f           does no
13520 74 20 65 78 69 73 74 20 61 6e 64 20 77 65 20 63  t exist and we c
13530 61 6e 6e 6f 74 20 63 72 65 61 74 65 20 69 74 20  annot create it 
13540 73 69 6e 63 65 0d 0a 20 20 20 20 20 20 20 20 20  since..         
13550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13560 2f 20 20 20 20 20 20 20 20 20 74 68 69 73 20 69  /         this i
13570 73 20 22 77 68 61 74 2d 69 66 22 20 6d 6f 64 65  s "what-if" mode
13580 2e 20 20 54 68 65 20 70 72 6f 62 6c 65 6d 20 68  .  The problem h
13590 65 72 65 20 69 73 0d 0a 20 20 20 20 20 20 20 20  ere is..        
135a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
135b0 2f 2f 20 20 20 20 20 20 20 20 20 74 68 69 73 20  //         this 
135c0 77 69 6c 6c 20 68 61 76 65 20 61 20 22 73 69 64  will have a "sid
135d0 65 2d 65 66 66 65 63 74 22 20 6f 66 20 64 69 73  e-effect" of dis
135e0 63 61 72 64 69 6e 67 0d 0a 20 20 20 20 20 20 20  carding..       
135f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13600 20 2f 2f 20 20 20 20 20 20 20 20 20 61 6e 79 20   //         any 
13610 73 75 62 2d 6b 65 79 20 6e 61 6d 65 20 76 61 6c  sub-key name val
13620 75 65 20 66 72 6f 6d 20 77 69 74 68 69 6e 20 74  ue from within t
13630 68 65 20 72 6f 6f 74 0d 0a 20 20 20 20 20 20 20  he root..       
13640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13650 20 2f 2f 20 20 20 20 20 20 20 20 20 6b 65 79 20   //         key 
13660 73 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65  specified by the
13670 20 63 61 6c 6c 65 72 20 28 61 6e 64 20 74 68 65   caller (and the
13680 6e 20 70 61 73 73 65 64 0d 0a 20 20 20 20 20 20  n passed..      
13690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136a0 20 20 2f 2f 20 20 20 20 20 20 20 20 20 74 6f 20    //         to 
136b0 74 68 65 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  the MockRegistry
136c0 4b 65 79 20 63 6f 6e 73 74 72 75 63 74 6f 72 29  Key constructor)
136d0 2e 20 20 53 69 6e 63 65 0d 0a 20 20 20 20 20 20  .  Since..      
136e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136f0 20 20 2f 2f 20 20 20 20 20 20 20 20 20 77 65 20    //         we 
13700 73 74 69 6c 6c 20 77 61 6e 74 20 74 6f 20 75 73  still want to us
13710 65 20 74 68 61 74 20 72 65 67 69 73 74 72 79 20  e that registry 
13720 6b 65 79 2c 20 77 65 0d 0a 20 20 20 20 20 20 20  key, we..       
13730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13740 20 2f 2f 20 20 20 20 20 20 20 20 20 6e 65 65 64   //         need
13750 20 74 6f 20 6d 69 67 72 61 74 65 20 74 68 61 74   to migrate that
13760 20 73 75 62 2d 6b 65 79 20 6e 61 6d 65 20 66 72   sub-key name fr
13770 6f 6d 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  om the..        
13780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13790 2f 2f 20 20 20 20 20 20 20 20 20 72 6f 6f 74 20  //         root 
137a0 6b 65 79 2c 20 62 79 20 63 6f 6d 62 69 6e 69 6e  key, by combinin
137b0 67 20 69 74 20 77 69 74 68 20 74 68 65 20 73 75  g it with the su
137c0 62 2d 6b 65 79 0d 0a 20 20 20 20 20 20 20 20 20  b-key..         
137d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
137e0 2f 20 20 20 20 20 20 20 20 20 6e 61 6d 65 20 73  /         name s
137f0 70 65 63 69 66 69 65 64 20 62 79 20 74 68 65 20  pecified by the 
13800 63 61 6c 6c 65 72 20 61 6e 64 20 75 73 65 20 74  caller and use t
13810 68 65 20 6e 65 77 0d 0a 20 20 20 20 20 20 20 20  he new..        
13820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13830 2f 2f 20 20 20 20 20 20 20 20 20 63 6f 6d 62 69  //         combi
13840 6e 65 64 20 73 75 62 2d 6b 65 79 20 6e 61 6d 65  ned sub-key name
13850 20 66 6f 72 20 74 68 65 20 63 6f 6e 73 74 72 75   for the constru
13860 63 74 6f 72 2e 0d 0a 20 20 20 20 20 20 20 20 20  ctor...         
13870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
13880 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
13890 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
138a0 67 20 6e 65 77 53 75 62 4b 65 79 4e 61 6d 65 20  g newSubKeyName 
138b0 3d 20 73 75 62 4b 65 79 4e 61 6d 65 3b 0d 0a 0d  = subKeyName;...
138c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
138d0 20 20 20 20 20 20 20 20 20 41 64 6a 75 73 74 53           AdjustS
138e0 75 62 4b 65 79 4e 61 6d 65 46 6f 72 57 68 61 74  ubKeyNameForWhat
138f0 49 66 28 72 6f 6f 74 4b 65 79 2c 20 72 65 66 20  If(rootKey, ref 
13900 6e 65 77 53 75 62 4b 65 79 4e 61 6d 65 29 3b 0d  newSubKeyName);.
13910 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
13920 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
13930 6e 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74  n new MockRegist
13940 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20  ryKey(..        
13950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13960 20 20 20 20 72 6f 6f 74 4b 65 79 2c 20 6e 65 77      rootKey, new
13970 53 75 62 4b 65 79 4e 61 6d 65 2c 20 77 68 61 74  SubKeyName, what
13980 49 66 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65  If, false, false
13990 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
139a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
139b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
139c0 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  lse..           
139d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
139e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
139f0 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77 20 4d      return new M
13a00 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d  ockRegistryKey(.
13a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13a20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f               roo
13a30 74 4b 65 79 2e 43 72 65 61 74 65 53 75 62 4b 65  tKey.CreateSubKe
13a40 79 28 73 75 62 4b 65 79 4e 61 6d 65 29 2c 20 77  y(subKeyName), w
13a50 68 61 74 49 66 2c 20 66 61 6c 73 65 2c 0d 0a 20  hatIf, false,.. 
13a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a70 20 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65             false
13a80 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
13a90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
13aa0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
13ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66 69                fi
13ac0 6e 61 6c 6c 79 0d 0a 20 20 20 20 20 20 20 20 20  nally..         
13ad0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61                Ma
13af0 79 62 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28  ybeLogOperation(
13b00 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 29 2c  GetMethodName(),
13b10 20 72 6f 6f 74 4b 65 79 2c 20 73 75 62 4b 65 79   rootKey, subKey
13b20 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
13b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75                su
13b40 62 4b 65 79 73 43 72 65 61 74 65 64 2b 2b 3b 0d  bKeysCreated++;.
13b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13b60 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
13b70 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
13b80 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
13b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13bc0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
13bd0 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28      [MethodImpl(
13be0 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e  MethodImplOption
13bf0 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a  s.NoInlining)]..
13c00 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
13c10 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20 44  ic static void D
13c20 65 6c 65 74 65 53 75 62 4b 65 79 28 0d 0a 20 20  eleteSubKey(..  
13c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
13c40 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 72 6f  ckRegistryKey ro
13c50 6f 74 4b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  otKey,..        
13c60 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
13c70 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20 20 20  ubKeyName,..    
13c80 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
13c90 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 2c   throwOnMissing,
13ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13cb0 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a    bool whatIf,..
13cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13cd0 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20  bool verbose..  
13ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
13cf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
13d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13d10 69 66 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20  if (verbose)..  
13d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
13d30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13d40 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65       TraceOps.De
13d50 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63  bugAndTrace(Trac
13d60 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73  ePriority.Highes
13d70 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
13d80 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
13d90 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65  gCallback, trace
13da0 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
13db0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
13dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13dd0 20 20 22 72 6f 6f 74 4b 65 79 20 3d 20 7b 30 7d    "rootKey = {0}
13de0 2c 20 73 75 62 4b 65 79 4e 61 6d 65 20 3d 20 7b  , subKeyName = {
13df0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
13e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
13e10 72 44 69 73 70 6c 61 79 28 72 6f 6f 74 4b 65 79  rDisplay(rootKey
13e20 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 73 75  ), ForDisplay(su
13e30 62 4b 65 79 4e 61 6d 65 29 29 2c 0d 0a 20 20 20  bKeyName)),..   
13e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13e50 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
13e60 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry);..          
13e70 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
13e80 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
13e90 6f 6f 74 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ootKey == null).
13ea0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13eb0 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
13ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ed0 69 66 20 28 21 77 68 61 74 49 66 29 0d 0a 20 20  if (!whatIf)..  
13ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ef0 20 20 72 6f 6f 74 4b 65 79 2e 44 65 6c 65 74 65    rootKey.Delete
13f00 53 75 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d  SubKey(subKeyNam
13f10 65 2c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e  e, throwOnMissin
13f20 67 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  g);....         
13f30 20 20 20 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f         MaybeLogO
13f40 70 65 72 61 74 69 6f 6e 28 47 65 74 4d 65 74 68  peration(GetMeth
13f50 6f 64 4e 61 6d 65 28 29 2c 20 72 6f 6f 74 4b 65  odName(), rootKe
13f60 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 29 3b 0d  y, subKeyName);.
13f70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
13f80 20 20 20 73 75 62 4b 65 79 73 44 65 6c 65 74 65     subKeysDelete
13f90 64 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d++;..          
13fa0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13fb0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
13fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ff0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
14000 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70        [MethodImp
14010 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69  l(MethodImplOpti
14020 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d  ons.NoInlining)]
14030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
14040 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
14050 20 44 65 6c 65 74 65 53 75 62 4b 65 79 54 72 65   DeleteSubKeyTre
14060 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
14070 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
14080 4b 65 79 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20  Key rootKey,..  
14090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
140a0 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c  ring subKeyName,
140b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
140c0 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a    bool whatIf,..
140d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
140e0 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20  bool verbose..  
140f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
14100 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
14110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14120 69 66 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20  if (verbose)..  
14130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
14140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14150 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65       TraceOps.De
14160 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63  bugAndTrace(Trac
14170 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73  ePriority.Highes
14180 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
14190 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
141a0 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65  gCallback, trace
141b0 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
141c0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
141d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
141e0 20 20 22 72 6f 6f 74 4b 65 79 20 3d 20 7b 30 7d    "rootKey = {0}
141f0 2c 20 73 75 62 4b 65 79 4e 61 6d 65 20 3d 20 7b  , subKeyName = {
14200 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
14210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
14220 72 44 69 73 70 6c 61 79 28 72 6f 6f 74 4b 65 79  rDisplay(rootKey
14230 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 73 75  ), ForDisplay(su
14240 62 4b 65 79 4e 61 6d 65 29 29 2c 0d 0a 20 20 20  bKeyName)),..   
14250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14260 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
14270 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry);..          
14280 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
14290 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 72             if (r
142a0 6f 6f 74 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d  ootKey == null).
142b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
142c0 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
142d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
142e0 69 66 20 28 21 77 68 61 74 49 66 29 0d 0a 20 20  if (!whatIf)..  
142f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14300 20 20 72 6f 6f 74 4b 65 79 2e 44 65 6c 65 74 65    rootKey.Delete
14310 53 75 62 4b 65 79 54 72 65 65 28 73 75 62 4b 65  SubKeyTree(subKe
14320 79 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  yName);....     
14330 20 20 20 20 20 20 20 20 20 20 20 4d 61 79 62 65             Maybe
14340 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28 47 65 74  LogOperation(Get
14350 4d 65 74 68 6f 64 4e 61 6d 65 28 29 2c 20 72 6f  MethodName(), ro
14360 6f 74 4b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d  otKey, subKeyNam
14370 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
14380 20 20 20 20 20 20 20 73 75 62 4b 65 79 73 44 65         subKeysDe
14390 6c 65 74 65 64 2b 2b 3b 0d 0a 20 20 20 20 20 20  leted++;..      
143a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
143b0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
143c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
143f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
14400 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f            [Metho
14410 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c  dImpl(MethodImpl
14420 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69  Options.NoInlini
14430 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20  ng)]..          
14440 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
14450 73 74 72 69 6e 67 5b 5d 20 47 65 74 53 75 62 4b  string[] GetSubK
14460 65 79 4e 61 6d 65 73 28 0d 0a 20 20 20 20 20 20  eyNames(..      
14470 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
14480 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a  gistryKey key,..
14490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
144a0 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20  bool whatIf,..  
144b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
144c0 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20  ol verbose..    
144d0 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
144e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
144f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
14500 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20   (verbose)..    
14510 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
14520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14530 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75     TraceOps.Debu
14540 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50  gAndTrace(TraceP
14550 72 69 6f 72 69 74 79 2e 48 69 67 68 2c 0d 0a 20  riority.High,.. 
14560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14570 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c         debugCall
14580 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
14590 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
145a0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
145b0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6b 65               "ke
145c0 79 20 3d 20 7b 30 7d 22 2c 20 46 6f 72 44 69 73  y = {0}", ForDis
145d0 70 6c 61 79 28 6b 65 79 29 29 2c 20 74 72 61 63  play(key)), trac
145e0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20  eCategory);..   
145f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
14600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14610 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c    if (key == nul
14620 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
14630 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
14640 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
14650 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6b          return k
14660 65 79 2e 47 65 74 53 75 62 4b 65 79 4e 61 6d 65  ey.GetSubKeyName
14670 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  s();..          
14680 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
14690 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
146a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
146d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
146e0 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70        [MethodImp
146f0 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69  l(MethodImplOpti
14700 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d  ons.NoInlining)]
14710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
14720 62 6c 69 63 20 73 74 61 74 69 63 20 6f 62 6a 65  blic static obje
14730 63 74 20 47 65 74 56 61 6c 75 65 28 0d 0a 20 20  ct GetValue(..  
14740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
14750 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65  ckRegistryKey ke
14760 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
14770 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c      string name,
14780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14790 20 20 6f 62 6a 65 63 74 20 64 65 66 61 75 6c 74    object default
147a0 56 61 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20  Value,..        
147b0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
147c0 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
147d0 20 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f        bool verbo
147e0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
147f0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
14800 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
14810 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
14820 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
14830 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
14840 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
14850 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
14860 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
14870 48 69 67 68 2c 0d 0a 20 20 20 20 20 20 20 20 20  High,..         
14880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
14890 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72  ebugCallback, tr
148a0 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
148b0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
148c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
148d0 20 20 20 20 20 22 6b 65 79 20 3d 20 7b 30 7d 2c       "key = {0},
148e0 20 6e 61 6d 65 20 3d 20 7b 31 7d 2c 20 64 65 66   name = {1}, def
148f0 61 75 6c 74 56 61 6c 75 65 20 3d 20 7b 32 7d 22  aultValue = {2}"
14900 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
14910 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
14920 73 70 6c 61 79 28 6b 65 79 29 2c 20 46 6f 72 44  splay(key), ForD
14930 69 73 70 6c 61 79 28 6e 61 6d 65 29 2c 0d 0a 20  isplay(name),.. 
14940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14950 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
14960 79 28 64 65 66 61 75 6c 74 56 61 6c 75 65 29 29  y(defaultValue))
14970 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
14980 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
14990 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
149a0 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20          if (key 
149b0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
149c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
149d0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
149e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
149f0 6a 65 63 74 20 76 61 6c 75 65 20 3d 20 6b 65 79  ject value = key
14a00 2e 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20  .GetValue(name, 
14a10 64 65 66 61 75 6c 74 56 61 6c 75 65 29 3b 0d 0a  defaultValue);..
14a20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14a30 20 20 6b 65 79 56 61 6c 75 65 73 52 65 61 64 2b    keyValuesRead+
14a40 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  +;....          
14a50 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
14a60 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
14a70 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
14a80 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
14a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ac0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
14ad0 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c       [MethodImpl
14ae0 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f  (MethodImplOptio
14af0 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d  ns.NoInlining)].
14b00 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
14b10 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64 20  lic static void 
14b20 53 65 74 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  SetValue(..     
14b30 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52             MockR
14b40 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d  egistryKey key,.
14b50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14b60 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20   string name,.. 
14b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
14b80 62 6a 65 63 74 20 76 61 6c 75 65 2c 0d 0a 20 20  bject value,..  
14b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
14ba0 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20 20  ol whatIf,..    
14bb0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
14bc0 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20 20 20   verbose..      
14bd0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
14be0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
14bf0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
14c00 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20 20  verbose)..      
14c10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
14c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c30 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
14c40 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
14c50 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a  ority.Highest,..
14c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c70 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
14c80 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
14c90 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
14ca0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
14cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 6b                "k
14cc0 65 79 20 3d 20 7b 30 7d 2c 20 6e 61 6d 65 20 3d  ey = {0}, name =
14cd0 20 7b 31 7d 2c 20 76 61 6c 75 65 20 3d 20 7b 32   {1}, value = {2
14ce0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
14cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
14d00 44 69 73 70 6c 61 79 28 6b 65 79 29 2c 20 46 6f  Display(key), Fo
14d10 72 44 69 73 70 6c 61 79 28 6e 61 6d 65 29 2c 20  rDisplay(name), 
14d20 46 6f 72 44 69 73 70 6c 61 79 28 76 61 6c 75 65  ForDisplay(value
14d30 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
14d40 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
14d50 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20  ceCategory);..  
14d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
14d70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14d80 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75     if (key == nu
14d90 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
14da0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
14db0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14dc0 20 20 20 20 69 66 20 28 21 77 68 61 74 49 66 29      if (!whatIf)
14dd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14de0 20 20 20 20 20 20 6b 65 79 2e 53 65 74 56 61 6c        key.SetVal
14df0 75 65 28 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b  ue(name, value);
14e00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
14e10 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72      MaybeLogOper
14e20 61 74 69 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e  ation(GetMethodN
14e30 61 6d 65 28 29 2c 20 6b 65 79 2c 20 6e 61 6d 65  ame(), key, name
14e40 2c 20 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20  , value);....   
14e50 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79               key
14e60 56 61 6c 75 65 73 57 72 69 74 74 65 6e 2b 2b 3b  ValuesWritten++;
14e70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
14e80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
14e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ed0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
14ee0 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65    [MethodImpl(Me
14ef0 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e  thodImplOptions.
14f00 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20  NoInlining)]..  
14f10 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
14f20 20 73 74 61 74 69 63 20 76 6f 69 64 20 44 65 6c   static void Del
14f30 65 74 65 56 61 6c 75 65 28 0d 0a 20 20 20 20 20  eteValue(..     
14f40 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52             MockR
14f50 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d  egistryKey key,.
14f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14f70 20 73 74 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20   string name,.. 
14f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
14f90 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69  ool throwOnMissi
14fa0 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng,..           
14fb0 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66       bool whatIf
14fc0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
14fd0 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d     bool verbose.
14fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14ff0 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
15000 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
15010 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 29 0d     if (verbose).
15020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15030 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15040 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73          TraceOps
15050 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54  .DebugAndTrace(T
15060 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67  racePriority.Hig
15070 68 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  hest,..         
15080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
15090 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72  ebugCallback, tr
150a0 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
150b0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
150c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
150d0 20 20 20 20 20 22 6b 65 79 20 3d 20 7b 30 7d 2c       "key = {0},
150e0 20 6e 61 6d 65 20 3d 20 7b 31 7d 22 2c 20 46 6f   name = {1}", Fo
150f0 72 44 69 73 70 6c 61 79 28 6b 65 79 29 2c 0d 0a  rDisplay(key),..
15100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15110 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
15120 61 79 28 6e 61 6d 65 29 29 2c 20 74 72 61 63 65  ay(name)), trace
15130 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  Category);..    
15140 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
15150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15160 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c   if (key == null
15170 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15180 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a         return;..
15190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
151a0 20 20 69 66 20 28 21 77 68 61 74 49 66 29 0d 0a    if (!whatIf)..
151b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
151c0 20 20 20 20 6b 65 79 2e 44 65 6c 65 74 65 56 61      key.DeleteVa
151d0 6c 75 65 28 6e 61 6d 65 2c 20 74 68 72 6f 77 4f  lue(name, throwO
151e0 6e 4d 69 73 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20  nMissing);....  
151f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61                Ma
15200 79 62 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28  ybeLogOperation(
15210 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 29 2c  GetMethodName(),
15220 20 6b 65 79 2c 20 6e 61 6d 65 2c 20 6e 75 6c 6c   key, name, null
15230 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
15240 20 20 20 20 20 20 6b 65 79 56 61 6c 75 65 73 44        keyValuesD
15250 65 6c 65 74 65 64 2b 2b 3b 0d 0a 20 20 20 20 20  eleted++;..     
15260 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
15270 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
15280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
152c0 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68             [Meth
152d0 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70  odImpl(MethodImp
152e0 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e  lOptions.NoInlin
152f0 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20  ing)]..         
15300 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
15310 20 69 6e 74 20 57 72 69 74 65 4f 70 65 72 61 74   int WriteOperat
15320 69 6f 6e 4c 69 73 74 28 0d 0a 20 20 20 20 20 20  ionList(..      
15330 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
15340 20 66 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20   fileName,..    
15350 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
15360 20 68 65 61 64 65 72 2c 0d 0a 20 20 20 20 20 20   header,..      
15370 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76            bool v
15380 65 72 62 6f 73 65 0d 0a 20 20 20 20 20 20 20 20  erbose..        
15390 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
153a0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
153b0 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63 6f            int co
153c0 75 6e 74 20 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20  unt = 0;....    
153d0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
153e0 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
153f0 6d 70 74 79 28 66 69 6c 65 4e 61 6d 65 29 29 0d  mpty(fileName)).
15400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15410 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
15420 20 20 20 20 20 20 20 20 69 66 20 28 76 65 72 62          if (verb
15430 6f 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ose)..          
15440 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15460 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65       TraceOps.De
15470 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63  bugAndTrace(Trac
15480 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73  ePriority.Highes
15490 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
154a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
154b0 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74  debugCallback, t
154c0 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  raceCallback,.. 
154d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
154e0 20 20 20 20 20 20 20 20 20 20 20 22 4f 70 65 72             "Oper
154f0 61 74 69 6f 6e 20 6c 6f 67 20 66 69 6c 65 20 6e  ation log file n
15500 61 6d 65 20 6e 6f 74 20 73 65 74 2e 22 2c 0d 0a  ame not set.",..
15510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15520 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
15530 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20  eCategory);..   
15540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15550 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
15560 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
15570 20 63 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20   count;..       
15580 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
15590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 6f                lo
155a0 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 2f 2a  ck (syncRoot) /*
155b0 20 54 52 41 4e 53 41 43 54 49 4f 4e 41 4c 20 2a   TRANSACTIONAL *
155c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
155d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
155e0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f 70            if (op
155f0 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d 3d 20 6e  erationList == n
15600 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
15610 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15630 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73 65       if (verbose
15640 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15650 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
15660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15670 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
15680 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
15690 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48  (TracePriority.H
156a0 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20 20  ighest,..       
156b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
156c0 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61           debugCa
156d0 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c  llback, traceCal
156e0 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
156f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15700 20 20 20 20 20 20 20 20 22 4f 70 65 72 61 74 69          "Operati
15710 6f 6e 20 6c 69 73 74 20 69 73 20 69 6e 76 61 6c  on list is inval
15720 69 64 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  id.",..         
15730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15740 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
15750 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  gory);..        
15760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15770 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
15780 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
15790 75 72 6e 20 63 6f 75 6e 74 3b 0d 0a 20 20 20 20  urn count;..    
157a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
157b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
157c0 20 20 20 20 20 20 20 20 20 75 73 69 6e 67 20 28           using (
157d0 53 74 72 65 61 6d 57 72 69 74 65 72 20 73 74 72  StreamWriter str
157e0 65 61 6d 57 72 69 74 65 72 20 3d 20 6e 65 77 20  eamWriter = new 
157f0 53 74 72 65 61 6d 57 72 69 74 65 72 28 0d 0a 20  StreamWriter(.. 
15800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15810 20 20 20 20 20 20 20 20 20 20 20 66 69 6c 65 4e             fileN
15820 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
15830 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
15840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15850 20 20 20 20 20 20 69 66 20 28 68 65 61 64 65 72        if (header
15860 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15870 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
15880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15890 20 20 20 20 20 20 20 20 20 20 73 74 72 65 61 6d            stream
158a0 57 72 69 74 65 72 2e 57 72 69 74 65 4c 69 6e 65  Writer.WriteLine
158b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
158c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
158d0 20 20 20 52 65 67 69 73 74 72 79 4f 70 65 72 61     RegistryOpera
158e0 74 69 6f 6e 2e 47 65 74 48 65 61 64 65 72 4c 69  tion.GetHeaderLi
158f0 6e 65 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ne());..        
15900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15910 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
15920 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
15930 65 61 63 68 20 28 52 65 67 69 73 74 72 79 4f 70  each (RegistryOp
15940 65 72 61 74 69 6f 6e 20 6f 70 65 72 61 74 69 6f  eration operatio
15950 6e 20 69 6e 20 6f 70 65 72 61 74 69 6f 6e 4c 69  n in operationLi
15960 73 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  st)..           
15970 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
15980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15990 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
159a0 6f 70 65 72 61 74 69 6f 6e 20 3d 3d 20 6e 75 6c  operation == nul
159b0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
159c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
159d0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d      continue;...
159e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
159f0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
15a00 65 61 6d 57 72 69 74 65 72 2e 57 72 69 74 65 4c  eamWriter.WriteL
15a10 69 6e 65 28 6f 70 65 72 61 74 69 6f 6e 2e 54 6f  ine(operation.To
15a20 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20 20 20 20  String());..    
15a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a40 20 20 20 20 20 20 20 20 63 6f 75 6e 74 2b 2b 3b          count++;
15a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15a60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
15a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15a80 20 20 20 20 20 20 20 73 74 72 65 61 6d 57 72 69         streamWri
15a90 74 65 72 2e 46 6c 75 73 68 28 29 3b 0d 0a 20 20  ter.Flush();..  
15aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15ab0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
15ac0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
15ad0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 65            if (ve
15ae0 72 62 6f 73 65 29 0d 0a 20 20 20 20 20 20 20 20  rbose)..        
15af0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
15b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
15b10 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
15b20 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72  Trace(TracePrior
15b30 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20  ity.Highest,..  
15b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15b50 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
15b60 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
15b70 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
15b80 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
15b90 20 20 20 20 20 20 20 20 20 20 20 20 22 57 72 6f              "Wro
15ba0 74 65 20 7b 30 7d 20 6f 70 65 72 61 74 69 6f 6e  te {0} operation
15bb0 73 20 74 6f 20 6c 6f 67 20 66 69 6c 65 2e 22 2c  s to log file.",
15bc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15bd0 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74 29            count)
15be0 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
15bf0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
15c00 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
15c10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
15c20 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ount;..         
15c30 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
15c40 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
15c50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
15c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
15ca0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
15cb0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53  region Private S
15cc0 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20  tatic Methods.. 
15cd0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
15ce0 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 41  te static void A
15cf0 64 6a 75 73 74 53 75 62 4b 65 79 4e 61 6d 65 46  djustSubKeyNameF
15d00 6f 72 57 68 61 74 49 66 28 0d 0a 20 20 20 20 20  orWhatIf(..     
15d10 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52             MockR
15d20 65 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b  egistryKey rootK
15d30 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey,..           
15d40 20 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20       ref string 
15d50 73 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20  subKeyName..    
15d60 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
15d70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
15d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
15d90 20 28 72 6f 6f 74 4b 65 79 20 3d 3d 20 6e 75 6c   (rootKey == nul
15da0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
15db0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
15dc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
15dd0 20 20 20 73 74 72 69 6e 67 20 72 6f 6f 74 4b 65     string rootKe
15de0 79 53 75 62 4b 65 79 4e 61 6d 65 20 3d 20 72 6f  ySubKeyName = ro
15df0 6f 74 4b 65 79 2e 53 75 62 4b 65 79 4e 61 6d 65  otKey.SubKeyName
15e00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
15e10 20 20 20 20 20 69 66 20 28 72 6f 6f 74 4b 65 79       if (rootKey
15e20 53 75 62 4b 65 79 4e 61 6d 65 20 3d 3d 20 6e 75  SubKeyName == nu
15e30 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
15e40 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
15e50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
15e60 20 20 20 20 73 75 62 4b 65 79 4e 61 6d 65 20 3d      subKeyName =
15e70 20 28 73 75 62 4b 65 79 4e 61 6d 65 20 21 3d 20   (subKeyName != 
15e80 6e 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20  null) ?..       
15e90 20 20 20 20 20 20 20 20 20 20 20 20 20 4a 6f 69               Joi
15ea0 6e 4b 65 79 4e 61 6d 65 73 28 72 6f 6f 74 4b 65  nKeyNames(rootKe
15eb0 79 53 75 62 4b 65 79 4e 61 6d 65 2c 20 73 75 62  ySubKeyName, sub
15ec0 4b 65 79 4e 61 6d 65 29 20 3a 0d 0a 20 20 20 20  KeyName) :..    
15ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15ee0 72 6f 6f 74 4b 65 79 53 75 62 4b 65 79 4e 61 6d  rootKeySubKeyNam
15ef0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
15f00 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
15f10 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
15f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15f50 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
15f60 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28      [MethodImpl(
15f70 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e  MethodImplOption
15f80 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a  s.NoInlining)]..
15f90 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
15fa0 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69 6e  ate static strin
15fb0 67 20 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28  g GetMethodName(
15fc0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
15fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15fe0 20 20 72 65 74 75 72 6e 20 54 72 61 63 65 4f 70    return TraceOp
15ff0 73 2e 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28  s.GetMethodName(
16000 6e 75 6c 6c 2c 20 31 29 3b 0d 0a 20 20 20 20 20  null, 1);..     
16010 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
16020 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
16030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
16070 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
16080 74 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 4d  te static void M
16090 61 79 62 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e  aybeLogOperation
160a0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
160b0 20 20 20 73 74 72 69 6e 67 20 6d 65 74 68 6f 64     string method
160c0 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
160d0 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73         MockRegis
160e0 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20  tryKey key,..   
160f0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
16100 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 0d 0a  ing subKeyName..
16110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16120 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
16130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16140 20 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72 61 74    MaybeLogOperat
16150 69 6f 6e 28 6d 65 74 68 6f 64 4e 61 6d 65 2c 20  ion(methodName, 
16160 6b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 2c  key, subKeyName,
16170 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 29 3b 0d 0a 20   null, null);.. 
16180 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
16190 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
161a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
161d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
161e0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
161f0 72 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f  rivate static vo
16200 69 64 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72 61  id MaybeLogOpera
16210 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
16220 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65         string me
16230 74 68 6f 64 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  thodName,..     
16240 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52             MockR
16250 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d  egistryKey key,.
16260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16270 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d   string valueNam
16280 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
16290 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
162a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
162b0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
162c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
162d0 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72      MaybeLogOper
162e0 61 74 69 6f 6e 28 6d 65 74 68 6f 64 4e 61 6d 65  ation(methodName
162f0 2c 20 6b 65 79 2c 20 6e 75 6c 6c 2c 20 76 61 6c  , key, null, val
16300 75 65 4e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d  ueName, value);.
16310 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
16320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
16330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16370 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
16380 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
16390 76 6f 69 64 20 4d 61 79 62 65 4c 6f 67 4f 70 65  void MaybeLogOpe
163a0 72 61 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ration(..       
163b0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
163c0 6d 65 74 68 6f 64 4e 61 6d 65 2c 0d 0a 20 20 20  methodName,..   
163d0 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63               Moc
163e0 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79  kRegistryKey key
163f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
16400 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79     string subKey
16410 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
16420 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 61         string va
16430 6c 75 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20  lueName,..      
16440 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74            object
16450 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20   value..        
16460 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
16470 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
16480 20 20 20 20 20 20 20 20 20 20 6c 6f 63 6b 20 28            lock (
16490 73 79 6e 63 52 6f 6f 74 29 20 2f 2a 20 54 52 41  syncRoot) /* TRA
164a0 4e 53 41 43 54 49 4f 4e 41 4c 20 2a 2f 0d 0a 20  NSACTIONAL */.. 
164b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
164c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
164d0 20 20 20 20 20 20 69 66 20 28 6f 70 65 72 61 74        if (operat
164e0 69 6f 6e 4c 69 73 74 20 3d 3d 20 6e 75 6c 6c 29  ionList == null)
164f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16500 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
16510 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
16520 20 20 20 20 20 20 20 20 20 69 66 20 28 6d 65 74           if (met
16530 68 6f 64 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29  hodName != null)
16540 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16550 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16570 20 73 74 72 69 6e 67 20 74 79 70 65 50 72 65 66   string typePref
16580 69 78 20 3d 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ix = String.Form
16590 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
165a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
165b0 20 22 7b 30 7d 7b 31 7d 22 2c 20 74 79 70 65 6f   "{0}{1}", typeo
165c0 66 28 52 65 67 69 73 74 72 79 48 65 6c 70 65 72  f(RegistryHelper
165d0 29 2e 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  ).Name,..       
165e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
165f0 20 20 20 20 20 54 79 70 65 2e 44 65 6c 69 6d 69       Type.Delimi
16600 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
16610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16620 20 69 66 20 28 6d 65 74 68 6f 64 4e 61 6d 65 2e   if (methodName.
16630 53 74 61 72 74 73 57 69 74 68 28 0d 0a 20 20 20  StartsWith(..   
16640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16650 20 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70               typ
16660 65 50 72 65 66 69 78 2c 20 53 74 72 69 6e 67 43  ePrefix, StringC
16670 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61  omparison.Ordina
16680 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l))..           
16690 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
166a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
166b0 20 20 20 20 20 20 20 20 20 20 20 20 6d 65 74 68              meth
166c0 6f 64 4e 61 6d 65 20 3d 20 6d 65 74 68 6f 64 4e  odName = methodN
166d0 61 6d 65 2e 53 75 62 73 74 72 69 6e 67 28 0d 0a  ame.Substring(..
166e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
166f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16700 74 79 70 65 50 72 65 66 69 78 2e 4c 65 6e 67 74  typePrefix.Lengt
16710 68 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  h);..           
16720 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
16730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16740 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
16750 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65               ope
16760 72 61 74 69 6f 6e 4c 69 73 74 2e 41 64 64 28 6e  rationList.Add(n
16770 65 77 20 52 65 67 69 73 74 72 79 4f 70 65 72 61  ew RegistryOpera
16780 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
16790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6d                 m
167a0 65 74 68 6f 64 4e 61 6d 65 2c 20 6b 65 79 2c 20  ethodName, key, 
167b0 73 75 62 4b 65 79 4e 61 6d 65 2c 20 76 61 6c 75  subKeyName, valu
167c0 65 4e 61 6d 65 2c 20 76 61 6c 75 65 29 29 3b 0d  eName, value));.
167d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
167e0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
167f0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
16800 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20  endregion..     
16810 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
16820 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
16830 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
16880 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 52         #region R
16890 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e  egistryOperation
168a0 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20 20 20 20  List Class..    
168b0 20 20 20 20 5b 53 65 72 69 61 6c 69 7a 61 62 6c      [Serializabl
168c0 65 28 29 5d 0d 0a 20 20 20 20 20 20 20 20 70 72  e()]..        pr
168d0 69 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61  ivate sealed cla
168e0 73 73 20 52 65 67 69 73 74 72 79 4f 70 65 72 61  ss RegistryOpera
168f0 74 69 6f 6e 4c 69 73 74 20 3a 0d 0a 20 20 20 20  tionList :..    
16900 20 20 20 20 20 20 20 20 4c 69 73 74 3c 52 65 67          List<Reg
16910 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 3e 2c  istryOperation>,
16920 20 49 44 69 73 70 6f 73 61 62 6c 65 0d 0a 20 20   IDisposable..  
16930 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
16940 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
16950 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73  lic Constructors
16960 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
16970 62 6c 69 63 20 52 65 67 69 73 74 72 79 4f 70 65  blic RegistryOpe
16980 72 61 74 69 6f 6e 4c 69 73 74 28 29 0d 0a 20 20  rationList()..  
16990 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
169a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
169b0 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
169c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
169d0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
169e0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
169f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16a30 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
16a40 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
16a50 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72  sposable "Patter
16a60 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  n" Members..    
16a70 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
16a80 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a  bool disposed;..
16a90 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
16aa0 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
16ab0 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
16ac0 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
16ad0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
16ae0 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
16af0 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
16b00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
16b10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16b20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62      throw new Ob
16b30 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65  jectDisposedExce
16b40 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
16b50 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
16b60 6f 66 28 52 65 67 69 73 74 72 79 4f 70 65 72 61  of(RegistryOpera
16b70 74 69 6f 6e 4c 69 73 74 29 2e 4e 61 6d 65 29 3b  tionList).Name);
16b80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
16b90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
16ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16be0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
16bf0 20 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f    private /* pro
16c00 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a  tected virtual *
16c10 2f 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 0d  / void Dispose(.
16c20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16c30 20 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 0d   bool disposing.
16c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16c50 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
16c60 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
16c70 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64     if (!disposed
16c80 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
16c90 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
16ca0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69            if (di
16cb0 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20  sposing)..      
16cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
16cd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16ce0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
16cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20  /////////////.. 
16d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d20 20 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f 73         // dispos
16d30 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  e managed resour
16d40 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
16d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16d60 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
16d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
16d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16da0 20 20 20 20 20 66 6f 72 65 61 63 68 20 28 52 65       foreach (Re
16db0 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 20  gistryOperation 
16dc0 6f 70 65 72 61 74 69 6f 6e 20 69 6e 20 74 68 69  operation in thi
16dd0 73 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s)..            
16de0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
16df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16e00 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
16e10 70 65 72 61 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c  peration == null
16e20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
16e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16e40 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a     continue;....
16e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16e60 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65 72              oper
16e70 61 74 69 6f 6e 2e 44 69 73 70 6f 73 65 28 29 3b  ation.Dispose();
16e80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16e90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
16ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16eb0 20 20 20 20 20 20 20 43 6c 65 61 72 28 29 3b 0d         Clear();.
16ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16ed0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
16ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
16ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f10 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
16f20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c            // rel
16f30 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72  ease unmanaged r
16f40 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
16f50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16f60 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
16f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
16f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16fa0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
16fb0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
16fc0 4f 54 45 3a 20 54 68 69 73 20 6f 62 6a 65 63 74  OTE: This object
16fd0 20 69 73 20 6e 6f 77 20 64 69 73 70 6f 73 65 64   is now disposed
16fe0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16ff0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
17000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
17010 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  isposed = true;.
17020 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17030 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
17040 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
17050 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
17060 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
17070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
170b0 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
170c0 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
170d0 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
170e0 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
170f0 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
17100 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
17110 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
17120 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  se(true);..     
17130 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75             GC.Su
17140 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
17150 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  his);..         
17160 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
17170 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
17180 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
17190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
171c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
171d0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
171e0 72 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f  region Destructo
171f0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7e  r..            ~
17200 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f  RegistryOperatio
17210 6e 4c 69 73 74 28 29 0d 0a 20 20 20 20 20 20 20  nList()..       
17220 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
17230 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
17240 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
17250 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
17260 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
17270 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
17280 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
17290 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
172a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
172e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
172f0 69 6f 6e 20 52 65 67 69 73 74 72 79 4f 70 65 72  ion RegistryOper
17300 61 74 69 6f 6e 20 43 6c 61 73 73 0d 0a 20 20 20  ation Class..   
17310 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65 61       private sea
17320 6c 65 64 20 63 6c 61 73 73 20 52 65 67 69 73 74  led class Regist
17330 72 79 4f 70 65 72 61 74 69 6f 6e 0d 0a 20 20 20  ryOperation..   
17340 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
17350 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
17360 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a 20  ate Constants.. 
17370 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
17380 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20 46 69  te const char Fi
17390 65 6c 64 44 65 6c 69 6d 69 74 65 72 20 3d 20 27  eldDelimiter = '
173a0 5c 74 27 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  \t';..          
173b0 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20    private const 
173c0 73 74 72 69 6e 67 20 4c 69 73 74 45 6c 65 6d 65  string ListEleme
173d0 6e 74 44 65 6c 69 6d 69 74 65 72 20 3d 20 22 2c  ntDelimiter = ",
173e0 20 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ";..           
173f0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
17400 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
17410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
17450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
17460 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e  egion Public Con
17470 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20  structors..     
17480 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 52 65         public Re
17490 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 28  gistryOperation(
174a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
174b0 20 20 73 74 72 69 6e 67 20 6d 65 74 68 6f 64 4e    string methodN
174c0 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
174d0 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74        MockRegist
174e0 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20  ryKey key,..    
174f0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
17500 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a  ng subKeyName,..
17510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17520 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d 65  string valueName
17530 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
17540 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d     object value.
17550 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17560 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
17570 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
17580 20 20 20 74 68 69 73 2e 6d 65 74 68 6f 64 4e 61     this.methodNa
17590 6d 65 20 3d 20 6d 65 74 68 6f 64 4e 61 6d 65 3b  me = methodName;
175a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
175b0 20 20 74 68 69 73 2e 73 75 62 4b 65 79 4e 61 6d    this.subKeyNam
175c0 65 20 3d 20 73 75 62 4b 65 79 4e 61 6d 65 3b 0d  e = subKeyName;.
175d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
175e0 20 74 68 69 73 2e 76 61 6c 75 65 4e 61 6d 65 20   this.valueName 
175f0 3d 20 76 61 6c 75 65 4e 61 6d 65 3b 0d 0a 20 20  = valueName;..  
17600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
17610 69 73 2e 76 61 6c 75 65 20 3d 20 76 61 6c 75 65  is.value = value
17620 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
17630 20 20 20 20 20 53 65 74 4b 65 79 28 6b 65 79 29       SetKey(key)
17640 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
17650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
17660 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
17670 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
17680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
176c0 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
176d0 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
176e0 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ds..            
176f0 70 72 69 76 61 74 65 20 76 6f 69 64 20 53 65 74  private void Set
17700 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
17710 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74        MockRegist
17720 72 79 4b 65 79 20 6b 65 79 0d 0a 20 20 20 20 20  ryKey key..     
17730 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
17740 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
17750 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
17760 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  (key != null).. 
17770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
17780 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17790 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
177a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
177b0 20 4e 4f 54 45 3a 20 4d 61 6b 65 20 73 75 72 65   NOTE: Make sure
177c0 20 74 68 69 73 20 63 6f 70 79 20 6f 66 20 74 68   this copy of th
177d0 65 20 72 6f 6f 74 20 72 65 67 69 73 74 72 79 20  e root registry 
177e0 6b 65 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  key..           
177f0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
17800 20 20 63 61 6e 6e 6f 74 20 62 65 20 75 73 65 64    cannot be used
17810 20 74 6f 20 61 63 63 69 64 65 6e 74 61 6c 6c 79   to accidentally
17820 20 6d 61 6b 65 20 72 65 67 69 73 74 72 79 0d 0a   make registry..
17830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17840 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 68 61      //       cha
17850 6e 67 65 73 2e 20 20 41 6c 73 6f 2c 20 70 72 65  nges.  Also, pre
17860 76 65 6e 74 20 74 68 69 73 20 4d 6f 63 6b 52 65  vent this MockRe
17870 67 69 73 74 72 79 4b 65 79 0d 0a 20 20 20 20 20  gistryKey..     
17880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
17890 2f 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 66  /       object f
178a0 72 6f 6d 20 63 6c 6f 73 69 6e 67 20 69 74 73 20  rom closing its 
178b0 75 6e 64 65 72 6c 79 69 6e 67 20 72 65 67 69 73  underlying regis
178c0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
178d0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
178e0 20 20 6b 65 79 20 61 73 20 77 65 20 77 69 6c 6c    key as we will
178f0 20 6e 65 65 64 20 69 74 20 6c 61 74 65 72 2e 20   need it later. 
17900 20 54 68 69 73 20 69 6e 73 74 61 6e 63 65 0d 0a   This instance..
17910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17920 20 20 20 20 2f 2f 20 20 20 20 20 20 20 77 69 6c      //       wil
17930 6c 20 63 6c 6f 73 65 20 69 74 2e 0d 0a 20 20 20  l close it...   
17940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17950 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
17960 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6b 65           this.ke
17970 79 20 3d 20 6b 65 79 2e 43 6c 6f 6e 65 28 74 72  y = key.Clone(tr
17980 75 65 2c 20 74 72 75 65 2c 20 74 72 75 65 29 3b  ue, true, true);
17990 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
179a0 20 20 20 20 20 20 20 20 6b 65 79 2e 44 69 73 61          key.Disa
179b0 62 6c 65 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20  bleClose();..   
179c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
179d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
179e0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
179f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17a00 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
17a10 73 2e 6b 65 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  s.key = null;.. 
17a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
17a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
17a40 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
17a50 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
17a60 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
17a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17ab0 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
17ac0 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74  n Public Propert
17ad0 69 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ies..           
17ae0 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20   private string 
17af0 6d 65 74 68 6f 64 4e 61 6d 65 3b 0d 0a 20 20 20  methodName;..   
17b00 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
17b10 73 74 72 69 6e 67 20 4d 65 74 68 6f 64 4e 61 6d  string MethodNam
17b20 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  e..            {
17b30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
17b40 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73    get { CheckDis
17b50 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20  posed(); return 
17b60 6d 65 74 68 6f 64 4e 61 6d 65 3b 20 7d 0d 0a 20  methodName; }.. 
17b70 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
17b80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
17b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
17bd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
17be0 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73  rivate MockRegis
17bf0 74 72 79 4b 65 79 20 6b 65 79 3b 0d 0a 20 20 20  tryKey key;..   
17c00 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
17c10 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
17c20 4b 65 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  Key..           
17c30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
17c40 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b 44      get { CheckD
17c50 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75 72  isposed(); retur
17c60 6e 20 6b 65 79 3b 20 7d 0d 0a 20 20 20 20 20 20  n key; }..      
17c70 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
17c80 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
17c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17cd0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
17ce0 65 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e  e string subKeyN
17cf0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
17d00 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
17d10 53 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20  SubKeyName..    
17d20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
17d30 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
17d40 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
17d50 3b 20 72 65 74 75 72 6e 20 73 75 62 4b 65 79 4e  ; return subKeyN
17d60 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ame; }..        
17d70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
17d80 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17dc0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
17dd0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
17de0 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d 65  string valueName
17df0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
17e00 75 62 6c 69 63 20 73 74 72 69 6e 67 20 56 61 6c  ublic string Val
17e10 75 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  ueName..        
17e20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
17e30 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65         get { Che
17e40 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
17e50 74 75 72 6e 20 76 61 6c 75 65 4e 61 6d 65 3b 20  turn valueName; 
17e60 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
17e70 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ec0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
17ed0 20 20 20 70 72 69 76 61 74 65 20 6f 62 6a 65 63     private objec
17ee0 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  t value;..      
17ef0 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62 6a        public obj
17f00 65 63 74 20 56 61 6c 75 65 0d 0a 20 20 20 20 20  ect Value..     
17f10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
17f20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
17f30 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
17f40 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 20 7d   return value; }
17f50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
17f60 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
17f70 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
17f80 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
17f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17fd0 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
17fe0 6e 20 50 75 62 6c 69 63 20 53 74 61 74 69 63 20  n Public Static 
17ff0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
18000 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
18010 69 63 20 73 74 72 69 6e 67 20 47 65 74 48 65 61  ic string GetHea
18020 64 65 72 4c 69 6e 65 28 29 0d 0a 20 20 20 20 20  derLine()..     
18030 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18040 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67            String
18050 42 75 69 6c 64 65 72 20 62 75 69 6c 64 65 72 20  Builder builder 
18060 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75 69 6c  = new StringBuil
18070 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  der();....      
18080 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65            builde
18090 72 2e 41 70 70 65 6e 64 28 22 4d 65 74 68 6f 64  r.Append("Method
180a0 4e 61 6d 65 22 29 3b 0d 0a 20 20 20 20 20 20 20  Name");..       
180b0 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72           builder
180c0 2e 41 70 70 65 6e 64 28 46 69 65 6c 64 44 65 6c  .Append(FieldDel
180d0 69 6d 69 74 65 72 29 3b 0d 0a 20 20 20 20 20 20  imiter);..      
180e0 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65            builde
180f0 72 2e 41 70 70 65 6e 64 28 22 4b 65 79 22 29 3b  r.Append("Key");
18100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18110 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64    builder.Append
18120 28 46 69 65 6c 64 44 65 6c 69 6d 69 74 65 72 29  (FieldDelimiter)
18130 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
18140 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e     builder.Appen
18150 64 28 22 53 75 62 4b 65 79 4e 61 6d 65 22 29 3b  d("SubKeyName");
18160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18170 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64    builder.Append
18180 28 46 69 65 6c 64 44 65 6c 69 6d 69 74 65 72 29  (FieldDelimiter)
18190 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
181a0 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e     builder.Appen
181b0 64 28 22 56 61 6c 75 65 4e 61 6d 65 22 29 3b 0d  d("ValueName");.
181c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
181d0 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28   builder.Append(
181e0 46 69 65 6c 64 44 65 6c 69 6d 69 74 65 72 29 3b  FieldDelimiter);
181f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18200 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64    builder.Append
18210 28 22 56 61 6c 75 65 22 29 3b 0d 0a 0d 0a 20 20  ("Value");....  
18220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
18230 74 75 72 6e 20 62 75 69 6c 64 65 72 2e 54 6f 53  turn builder.ToS
18240 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20 20  tring();..      
18250 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
18260 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
18270 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
18280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
182c0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
182d0 20 20 23 72 65 67 69 6f 6e 20 53 79 73 74 65 6d    #region System
182e0 2e 4f 62 6a 65 63 74 20 4f 76 65 72 72 69 64 65  .Object Override
182f0 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
18300 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65 20 73  ublic override s
18310 74 72 69 6e 67 20 54 6f 53 74 72 69 6e 67 28 29  tring ToString()
18320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
18330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18340 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
18350 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
18360 20 20 20 20 20 53 74 72 69 6e 67 42 75 69 6c 64       StringBuild
18370 65 72 20 62 75 69 6c 64 65 72 20 3d 20 6e 65 77  er builder = new
18380 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 28 29   StringBuilder()
18390 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
183a0 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70       builder.App
183b0 65 6e 64 28 46 6f 72 44 69 73 70 6c 61 79 28 6d  end(ForDisplay(m
183c0 65 74 68 6f 64 4e 61 6d 65 29 29 3b 0d 0a 20 20  ethodName));..  
183d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75                bu
183e0 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 46 69 65  ilder.Append(Fie
183f0 6c 64 44 65 6c 69 6d 69 74 65 72 29 3b 0d 0a 20  ldDelimiter);.. 
18400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
18410 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 46 6f  uilder.Append(Fo
18420 72 44 69 73 70 6c 61 79 28 6b 65 79 29 29 3b 0d  rDisplay(key));.
18430 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18440 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28   builder.Append(
18450 46 69 65 6c 64 44 65 6c 69 6d 69 74 65 72 29 3b  FieldDelimiter);
18460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18470 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64    builder.Append
18480 28 46 6f 72 44 69 73 70 6c 61 79 28 73 75 62 4b  (ForDisplay(subK
18490 65 79 4e 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20  eyName));..     
184a0 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64             build
184b0 65 72 2e 41 70 70 65 6e 64 28 46 69 65 6c 64 44  er.Append(FieldD
184c0 65 6c 69 6d 69 74 65 72 29 3b 0d 0a 20 20 20 20  elimiter);..    
184d0 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c              buil
184e0 64 65 72 2e 41 70 70 65 6e 64 28 46 6f 72 44 69  der.Append(ForDi
184f0 73 70 6c 61 79 28 76 61 6c 75 65 4e 61 6d 65 29  splay(valueName)
18500 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
18510 20 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65      builder.Appe
18520 6e 64 28 46 69 65 6c 64 44 65 6c 69 6d 69 74 65  nd(FieldDelimite
18530 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  r);....         
18540 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41         builder.A
18550 70 70 65 6e 64 28 46 6f 72 44 69 73 70 6c 61 79  ppend(ForDisplay
18560 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79  (MockRegistryKey
18570 2e 56 61 6c 75 65 54 6f 53 74 72 69 6e 67 28 0d  .ValueToString(.
18580 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18590 20 20 20 20 20 76 61 6c 75 65 2c 20 4c 69 73 74       value, List
185a0 45 6c 65 6d 65 6e 74 44 65 6c 69 6d 69 74 65 72  ElementDelimiter
185b0 2c 20 44 69 73 70 6c 61 79 4e 75 6c 6c 29 29 29  , DisplayNull)))
185c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
185d0 20 20 20 20 20 72 65 74 75 72 6e 20 62 75 69 6c       return buil
185e0 64 65 72 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  der.ToString();.
185f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
18600 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
18610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18650 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
18660 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69 64 65   public override
18670 20 62 6f 6f 6c 20 45 71 75 61 6c 73 28 0d 0a 20   bool Equals(.. 
18680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
18690 62 6a 65 63 74 20 6f 62 6a 0d 0a 20 20 20 20 20  bject obj..     
186a0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
186b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
186c0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
186d0 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
186e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
186f0 20 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69   RegistryOperati
18700 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 20 3d 20 6f  on operation = o
18710 62 6a 20 61 73 20 52 65 67 69 73 74 72 79 4f 70  bj as RegistryOp
18720 65 72 61 74 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20  eration;....    
18730 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
18740 6f 70 65 72 61 74 69 6f 6e 20 3d 3d 20 6e 75 6c  operation == nul
18750 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
18760 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
18770 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
18780 20 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74           if (!St
18790 72 69 6e 67 2e 45 71 75 61 6c 73 28 6f 70 65 72  ring.Equals(oper
187a0 61 74 69 6f 6e 2e 6d 65 74 68 6f 64 4e 61 6d 65  ation.methodName
187b0 2c 20 6d 65 74 68 6f 64 4e 61 6d 65 29 29 0d 0a  , methodName))..
187c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
187d0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
187e0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
187f0 20 20 20 20 20 69 66 20 28 21 4d 6f 63 6b 52 65       if (!MockRe
18800 67 69 73 74 72 79 4b 65 79 2e 45 71 75 61 6c 73  gistryKey.Equals
18810 28 6f 70 65 72 61 74 69 6f 6e 2e 6b 65 79 2c 20  (operation.key, 
18820 6b 65 79 29 29 0d 0a 20 20 20 20 20 20 20 20 20  key))..         
18830 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
18840 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
18850 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
18860 21 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79  !MockRegistryKey
18870 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20  .NameEquals(..  
18880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18890 20 20 20 20 20 20 6f 70 65 72 61 74 69 6f 6e 2e        operation.
188a0 73 75 62 4b 65 79 4e 61 6d 65 2c 20 73 75 62 4b  subKeyName, subK
188b0 65 79 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  eyName))..      
188c0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
188d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
188e0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
188f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18900 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
18910 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e 67       if (!String
18920 2e 45 71 75 61 6c 73 28 6f 70 65 72 61 74 69 6f  .Equals(operatio
18930 6e 2e 76 61 6c 75 65 4e 61 6d 65 2c 20 76 61 6c  n.valueName, val
18940 75 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  ueName))..      
18950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
18960 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
18970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
18980 66 20 28 21 4d 6f 63 6b 52 65 67 69 73 74 72 79  f (!MockRegistry
18990 4b 65 79 2e 56 61 6c 75 65 45 71 75 61 6c 73 28  Key.ValueEquals(
189a0 6f 70 65 72 61 74 69 6f 6e 2e 76 61 6c 75 65 2c  operation.value,
189b0 20 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20   value))..      
189c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
189d0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
189e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
189f0 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
18a00 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
18a10 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
18a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
18a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
18a70 6c 69 63 20 6f 76 65 72 72 69 64 65 20 69 6e 74  lic override int
18a80 20 47 65 74 48 61 73 68 43 6f 64 65 28 29 0d 0a   GetHashCode()..
18a90 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
18aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
18ab0 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
18ac0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
18ad0 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20 3d 20     int result = 
18ae0 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
18af0 20 20 20 20 20 20 69 66 20 28 6d 65 74 68 6f 64        if (method
18b00 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  Name != null).. 
18b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18b20 20 20 20 72 65 73 75 6c 74 20 5e 3d 20 6d 65 74     result ^= met
18b30 68 6f 64 4e 61 6d 65 2e 47 65 74 48 61 73 68 43  hodName.GetHashC
18b40 6f 64 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ode();....      
18b50 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
18b60 20 5e 3d 20 4d 6f 63 6b 52 65 67 69 73 74 72 79   ^= MockRegistry
18b70 4b 65 79 2e 47 65 74 48 61 73 68 43 6f 64 65 28  Key.GetHashCode(
18b80 6b 65 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  key);....       
18b90 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62           if (sub
18ba0 4b 65 79 4e 61 6d 65 20 21 3d 20 6e 75 6c 6c 29  KeyName != null)
18bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18bc0 20 20 20 20 20 20 72 65 73 75 6c 74 20 5e 3d 20        result ^= 
18bd0 73 75 62 4b 65 79 4e 61 6d 65 2e 47 65 74 48 61  subKeyName.GetHa
18be0 73 68 43 6f 64 65 28 29 3b 0d 0a 0d 0a 20 20 20  shCode();....   
18bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
18c00 28 76 61 6c 75 65 4e 61 6d 65 20 21 3d 20 6e 75  (valueName != nu
18c10 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
18c20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20           result 
18c30 5e 3d 20 76 61 6c 75 65 4e 61 6d 65 2e 47 65 74  ^= valueName.Get
18c40 48 61 73 68 43 6f 64 65 28 29 3b 0d 0a 0d 0a 20  HashCode();.... 
18c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
18c60 65 73 75 6c 74 20 5e 3d 20 4d 6f 63 6b 52 65 67  esult ^= MockReg
18c70 69 73 74 72 79 4b 65 79 2e 56 61 6c 75 65 48 61  istryKey.ValueHa
18c80 73 68 43 6f 64 65 28 76 61 6c 75 65 29 3b 0d 0a  shCode(value);..
18c90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18ca0 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
18cb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
18cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
18cd0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
18ce0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
18cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
18d30 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
18d40 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50  n IDisposable "P
18d50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d  attern" Members.
18d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
18d70 76 61 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73  vate bool dispos
18d80 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed;..           
18d90 20 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68   private void Ch
18da0 65 63 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a  eckDisposed() /*
18db0 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
18dc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
18dd0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64            if (!d
18de0 69 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20  isposed)..      
18df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
18e00 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  turn;....       
18e10 20 20 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e           throw n
18e20 65 77 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65  ew ObjectDispose
18e30 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20  dException(..   
18e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
18e50 20 74 79 70 65 6f 66 28 52 65 67 69 73 74 72 79   typeof(Registry
18e60 4f 70 65 72 61 74 69 6f 6e 29 2e 4e 61 6d 65 29  Operation).Name)
18e70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
18e80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
18e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ed0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
18ee0 20 20 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72     private /* pr
18ef0 6f 74 65 63 74 65 64 20 76 69 72 74 75 61 6c 20  otected virtual 
18f00 2a 2f 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28  */ void Dispose(
18f10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18f20 20 20 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67    bool disposing
18f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18f40 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
18f50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
18f60 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73 65      if (!dispose
18f70 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d)..            
18f80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
18f90 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 64             if (d
18fa0 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20  isposing)..     
18fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
18fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18fd0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
18fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
19000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19010 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f          // dispo
19020 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75  se managed resou
19030 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20  rces here.....  
19040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19050 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
19060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
19080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19090 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 21 3d        if (key !=
190a0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
190b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
190c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
190d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
190e0 65 79 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20  ey.Close();..   
190f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19100 20 20 20 20 20 20 20 20 20 6b 65 79 20 3d 20 6e           key = n
19110 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
19120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
19130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19140 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
19150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
19160 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19180 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  ////..          
19190 20 20 20 20 20 20 20 20 20 20 2f 2f 20 72 65 6c            // rel
191a0 65 61 73 65 20 75 6e 6d 61 6e 61 67 65 64 20 72  ease unmanaged r
191b0 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e  esources here...
191c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
191d0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
191e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
191f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19210 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
19220 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
19230 4f 54 45 3a 20 54 68 69 73 20 6f 62 6a 65 63 74  OTE: This object
19240 20 69 73 20 6e 6f 77 20 64 69 73 70 6f 73 65 64   is now disposed
19250 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
19260 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
19270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
19280 69 73 70 6f 73 65 64 20 3d 20 74 72 75 65 3b 0d  isposed = true;.
19290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
192a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
192b0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
192c0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
192d0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
192e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
192f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19320 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
19330 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65 20  ion IDisposable 
19340 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20  Members..       
19350 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64       public void
19360 20 44 69 73 70 6f 73 65 28 29 0d 0a 20 20 20 20   Dispose()..    
19370 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19380 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
19390 73 65 28 74 72 75 65 29 3b 0d 0a 20 20 20 20 20  se(true);..     
193a0 20 20 20 20 20 20 20 20 20 20 20 47 43 2e 53 75             GC.Su
193b0 70 70 72 65 73 73 46 69 6e 61 6c 69 7a 65 28 74  ppressFinalize(t
193c0 68 69 73 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  his);..         
193d0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
193e0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
193f0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
19400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19440 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
19450 72 65 67 69 6f 6e 20 44 65 73 74 72 75 63 74 6f  region Destructo
19460 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7e  r..            ~
19470 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f  RegistryOperatio
19480 6e 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n()..           
19490 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
194a0 20 20 20 20 44 69 73 70 6f 73 65 28 66 61 6c 73      Dispose(fals
194b0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
194c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
194d0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20  #endregion..    
194e0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
194f0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
19500 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
19510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
19550 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
19560 53 74 72 69 6e 67 4c 69 73 74 20 43 6c 61 73 73  StringList Class
19570 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
19580 65 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53  e sealed class S
19590 74 72 69 6e 67 4c 69 73 74 20 3a 20 4c 69 73 74  tringList : List
195a0 3c 73 74 72 69 6e 67 3e 0d 0a 20 20 20 20 20 20  <string>..      
195b0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
195c0 20 70 75 62 6c 69 63 20 53 74 72 69 6e 67 4c 69   public StringLi
195d0 73 74 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  st()..          
195e0 20 20 20 20 20 20 3a 20 62 61 73 65 28 29 0d 0a        : base()..
195f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
19600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
19610 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
19620 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
19630 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
19640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
19680 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
19690 75 62 6c 69 63 20 53 74 72 69 6e 67 4c 69 73 74  ublic StringList
196a0 28 49 45 6e 75 6d 65 72 61 62 6c 65 3c 73 74 72  (IEnumerable<str
196b0 69 6e 67 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e 29  ing> collection)
196c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
196d0 20 20 3a 20 62 61 73 65 28 63 6f 6c 6c 65 63 74    : base(collect
196e0 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ion)..          
196f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
19700 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69       // do nothi
19710 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ng...           
19720 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20   }..        }.. 
19730 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
19740 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f  n....        ///
19750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19790 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
197a0 23 72 65 67 69 6f 6e 20 53 74 72 69 6e 67 44 69  #region StringDi
197b0 63 74 69 6f 6e 61 72 79 20 43 6c 61 73 73 0d 0a  ctionary Class..
197c0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
197d0 73 65 61 6c 65 64 20 63 6c 61 73 73 20 53 74 72  sealed class Str
197e0 69 6e 67 44 69 63 74 69 6f 6e 61 72 79 20 3a 20  ingDictionary : 
197f0 44 69 63 74 69 6f 6e 61 72 79 3c 73 74 72 69 6e  Dictionary<strin
19800 67 2c 20 73 74 72 69 6e 67 3e 0d 0a 20 20 20 20  g, string>..    
19810 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
19820 20 20 20 70 75 62 6c 69 63 20 53 74 72 69 6e 67     public String
19830 44 69 63 74 69 6f 6e 61 72 79 28 29 0d 0a 20 20  Dictionary()..  
19840 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
19850 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
19860 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
19870 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
19880 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
19890 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
198a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
198b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
198e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
198f0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
19900 56 65 72 73 69 6f 6e 4c 69 73 74 20 43 6c 61 73  VersionList Clas
19910 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  s..        priva
19920 74 65 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20  te sealed class 
19930 56 65 72 73 69 6f 6e 4c 69 73 74 20 3a 20 4c 69  VersionList : Li
19940 73 74 3c 56 65 72 73 69 6f 6e 3e 0d 0a 20 20 20  st<Version>..   
19950 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
19960 20 20 20 20 70 75 62 6c 69 63 20 56 65 72 73 69      public Versi
19970 6f 6e 4c 69 73 74 28 29 0d 0a 20 20 20 20 20 20  onList()..      
19980 20 20 20 20 20 20 20 20 20 20 3a 20 62 61 73 65            : base
19990 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ()..            
199a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
199b0 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67     // do nothing
199c0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ...            }
199d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
199e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
199f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a20 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
19a30 20 20 20 70 75 62 6c 69 63 20 56 65 72 73 69 6f     public Versio
19a40 6e 4c 69 73 74 28 49 45 6e 75 6d 65 72 61 62 6c  nList(IEnumerabl
19a50 65 3c 56 65 72 73 69 6f 6e 3e 20 63 6f 6c 6c 65  e<Version> colle
19a60 63 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20  ction)..        
19a70 20 20 20 20 20 20 20 20 3a 20 62 61 73 65 28 63          : base(c
19a80 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20 20 20 20  ollection)..    
19a90 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19aa0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
19ab0 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
19ac0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
19ad0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
19ae0 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
19af0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
19b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
19b40 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 56 65        #region Ve
19b50 72 73 69 6f 6e 4d 61 70 20 43 6c 61 73 73 0d 0a  rsionMap Class..
19b60 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
19b70 73 65 61 6c 65 64 20 63 6c 61 73 73 20 56 65 72  sealed class Ver
19b80 73 69 6f 6e 4d 61 70 20 3a 20 44 69 63 74 69 6f  sionMap : Dictio
19b90 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 56 65 72  nary<string, Ver
19ba0 73 69 6f 6e 4c 69 73 74 3e 0d 0a 20 20 20 20 20  sionList>..     
19bb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
19bc0 20 20 70 75 62 6c 69 63 20 56 65 72 73 69 6f 6e    public Version
19bd0 4d 61 70 28 29 0d 0a 20 20 20 20 20 20 20 20 20  Map()..         
19be0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
19bf0 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
19c00 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
19c10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
19c20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
19c30 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
19c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19c80 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19c90 20 23 72 65 67 69 6f 6e 20 50 61 63 6b 61 67 65   #region Package
19ca0 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20   Class..        
19cb0 69 6e 74 65 72 6e 61 6c 20 73 65 61 6c 65 64 20  internal sealed 
19cc0 63 6c 61 73 73 20 50 61 63 6b 61 67 65 0d 0a 20  class Package.. 
19cd0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
19ce0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
19cf0 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72  blic Constructor
19d00 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
19d10 75 62 6c 69 63 20 50 61 63 6b 61 67 65 28 29 0d  ublic Package().
19d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
19d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19d40 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
19d50 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
19d60 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
19d70 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
19d80 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
19d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19dc0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
19dd0 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
19de0 50 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65  Public Propertie
19df0 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
19e00 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 70 72  rivate string pr
19e10 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e  oviderInvariantN
19e20 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
19e30 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
19e40 50 72 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e  ProviderInvarian
19e50 74 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  tName..         
19e60 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
19e70 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
19e80 72 6e 20 70 72 6f 76 69 64 65 72 49 6e 76 61 72  rn providerInvar
19e90 69 61 6e 74 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20  iantName; }..   
19ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
19eb0 20 7b 20 70 72 6f 76 69 64 65 72 49 6e 76 61 72   { providerInvar
19ec0 69 61 6e 74 4e 61 6d 65 20 3d 20 76 61 6c 75 65  iantName = value
19ed0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
19ee0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
19ef0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
19f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19f30 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
19f40 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72       private str
19f50 69 6e 67 20 66 61 63 74 6f 72 79 54 79 70 65 4e  ing factoryTypeN
19f60 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
19f70 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
19f80 46 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 0d  FactoryTypeName.
19f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
19fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19fb0 67 65 74 20 7b 20 72 65 74 75 72 6e 20 66 61 63  get { return fac
19fc0 74 6f 72 79 54 79 70 65 4e 61 6d 65 3b 20 7d 0d  toryTypeName; }.
19fd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19fe0 20 73 65 74 20 7b 20 66 61 63 74 6f 72 79 54 79   set { factoryTy
19ff0 70 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20  peName = value; 
1a000 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
1a010 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1a020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a060 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1a070 20 20 20 70 72 69 76 61 74 65 20 41 73 73 65 6d     private Assem
1a080 62 6c 79 4e 61 6d 65 20 70 72 6f 76 69 64 65 72  blyName provider
1a090 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20  AssemblyName;.. 
1a0a0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
1a0b0 63 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 50  c AssemblyName P
1a0c0 72 6f 76 69 64 65 72 41 73 73 65 6d 62 6c 79 4e  roviderAssemblyN
1a0d0 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ame..           
1a0e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1a0f0 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
1a100 20 70 72 6f 76 69 64 65 72 41 73 73 65 6d 62 6c   providerAssembl
1a110 79 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20  yName; }..      
1a120 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
1a130 70 72 6f 76 69 64 65 72 41 73 73 65 6d 62 6c 79  providerAssembly
1a140 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  Name = value; }.
1a150 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1a160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
1a170 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a1b0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
1a1c0 20 70 72 69 76 61 74 65 20 41 73 73 65 6d 62 6c   private Assembl
1a1d0 79 4e 61 6d 65 20 64 65 73 69 67 6e 65 72 41 73  yName designerAs
1a1e0 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20  semblyName;..   
1a1f0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
1a200 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 44 65 73  AssemblyName Des
1a210 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d  ignerAssemblyNam
1a220 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  e..            {
1a230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a240 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 64    get { return d
1a250 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e  esignerAssemblyN
1a260 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ame; }..        
1a270 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 64 65          set { de
1a280 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61  signerAssemblyNa
1a290 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  me = value; }.. 
1a2a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1a2b0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
1a2c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a2f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1a300 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
1a310 72 69 76 61 74 65 20 62 6f 6f 6c 20 67 6c 6f 62  rivate bool glob
1a320 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65 3b  alAssemblyCache;
1a330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
1a340 62 6c 69 63 20 62 6f 6f 6c 20 47 6c 6f 62 61 6c  blic bool Global
1a350 41 73 73 65 6d 62 6c 79 43 61 63 68 65 0d 0a 20  AssemblyCache.. 
1a360 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1a370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
1a380 74 20 7b 20 72 65 74 75 72 6e 20 67 6c 6f 62 61  t { return globa
1a390 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65 3b 20  lAssemblyCache; 
1a3a0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1a3b0 20 20 20 73 65 74 20 7b 20 67 6c 6f 62 61 6c 41     set { globalA
1a3c0 73 73 65 6d 62 6c 79 43 61 63 68 65 20 3d 20 76  ssemblyCache = v
1a3d0 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
1a3e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1a3f0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1a400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a430 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1a440 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
1a450 20 47 75 69 64 20 70 61 63 6b 61 67 65 49 64 3b   Guid packageId;
1a460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
1a470 62 6c 69 63 20 47 75 69 64 20 50 61 63 6b 61 67  blic Guid Packag
1a480 65 49 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  eId..           
1a490 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1a4a0 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
1a4b0 20 70 61 63 6b 61 67 65 49 64 3b 20 7d 0d 0a 20   packageId; }.. 
1a4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1a4d0 65 74 20 7b 20 70 61 63 6b 61 67 65 49 64 20 3d  et { packageId =
1a4e0 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
1a4f0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1a500 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1a510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1a550 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
1a560 74 65 20 47 75 69 64 20 73 65 72 76 69 63 65 49  te Guid serviceI
1a570 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d;..            
1a580 70 75 62 6c 69 63 20 47 75 69 64 20 53 65 72 76  public Guid Serv
1a590 69 63 65 49 64 0d 0a 20 20 20 20 20 20 20 20 20  iceId..         
1a5a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1a5b0 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
1a5c0 72 6e 20 73 65 72 76 69 63 65 49 64 3b 20 7d 0d  rn serviceId; }.
1a5d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a5e0 20 73 65 74 20 7b 20 73 65 72 76 69 63 65 49 64   set { serviceId
1a5f0 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
1a600 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1a610 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
1a620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
1a660 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
1a670 76 61 74 65 20 47 75 69 64 20 64 61 74 61 53 6f  vate Guid dataSo
1a680 75 72 63 65 49 64 3b 0d 0a 20 20 20 20 20 20 20  urceId;..       
1a690 20 20 20 20 20 70 75 62 6c 69 63 20 47 75 69 64       public Guid
1a6a0 20 44 61 74 61 53 6f 75 72 63 65 49 64 0d 0a 20   DataSourceId.. 
1a6b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1a6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
1a6d0 74 20 7b 20 72 65 74 75 72 6e 20 64 61 74 61 53  t { return dataS
1a6e0 6f 75 72 63 65 49 64 3b 20 7d 0d 0a 20 20 20 20  ourceId; }..    
1a6f0 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
1a700 7b 20 64 61 74 61 53 6f 75 72 63 65 49 64 20 3d  { dataSourceId =
1a710 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
1a720 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
1a730 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
1a740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1a780 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
1a790 74 65 20 47 75 69 64 20 64 61 74 61 50 72 6f 76  te Guid dataProv
1a7a0 69 64 65 72 49 64 3b 0d 0a 20 20 20 20 20 20 20  iderId;..       
1a7b0 20 20 20 20 20 70 75 62 6c 69 63 20 47 75 69 64       public Guid
1a7c0 20 44 61 74 61 50 72 6f 76 69 64 65 72 49 64 0d   DataProviderId.
1a7d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1a7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a7f0 67 65 74 20 7b 20 72 65 74 75 72 6e 20 64 61 74  get { return dat
1a800 61 50 72 6f 76 69 64 65 72 49 64 3b 20 7d 0d 0a  aProviderId; }..
1a810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a820 73 65 74 20 7b 20 64 61 74 61 50 72 6f 76 69 64  set { dataProvid
1a830 65 72 49 64 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  erId = value; }.
1a840 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1a850 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
1a860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a8a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
1a8b0 20 70 72 69 76 61 74 65 20 47 75 69 64 20 61 64   private Guid ad
1a8c0 6f 4e 65 74 54 65 63 68 6e 6f 6c 6f 67 79 49 64  oNetTechnologyId
1a8d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
1a8e0 75 62 6c 69 63 20 47 75 69 64 20 41 64 6f 4e 65  ublic Guid AdoNe
1a8f0 74 54 65 63 68 6e 6f 6c 6f 67 79 49 64 0d 0a 20  tTechnologyId.. 
1a900 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1a910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
1a920 74 20 7b 20 72 65 74 75 72 6e 20 61 64 6f 4e 65  t { return adoNe
1a930 74 54 65 63 68 6e 6f 6c 6f 67 79 49 64 3b 20 7d  tTechnologyId; }
1a940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a950 20 20 73 65 74 20 7b 20 61 64 6f 4e 65 74 54 65    set { adoNetTe
1a960 63 68 6e 6f 6c 6f 67 79 49 64 20 3d 20 76 61 6c  chnologyId = val
1a970 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
1a980 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1a990 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
1a9a0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1a9b0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
1a9c0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1a9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
1aa10 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1aa20 6e 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  n Configuration 
1aa30 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20 70  Class..        p
1aa40 72 69 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c  rivate sealed cl
1aa50 61 73 73 20 43 6f 6e 66 69 67 75 72 61 74 69 6f  ass Configuratio
1aa60 6e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  n..        {..  
1aa70 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
1aa80 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
1aa90 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nts..           
1aaa0 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 63   private const c
1aab0 68 61 72 20 53 77 69 74 63 68 20 3d 20 27 2d 27  har Switch = '-'
1aac0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
1aad0 72 69 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61  rivate const cha
1aae0 72 20 41 6c 74 53 77 69 74 63 68 20 3d 20 27 2f  r AltSwitch = '/
1aaf0 27 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ';....          
1ab00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1ab10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab40 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1ab50 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
1ab60 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 63 68 61  tic readonly cha
1ab70 72 5b 5d 20 53 77 69 74 63 68 43 68 61 72 73 20  r[] SwitchChars 
1ab80 3d 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  = {..           
1ab90 20 20 20 20 20 53 77 69 74 63 68 2c 20 41 6c 74       Switch, Alt
1aba0 53 77 69 74 63 68 0d 0a 20 20 20 20 20 20 20 20  Switch..        
1abb0 20 20 20 20 7d 3b 0d 0a 0d 0a 20 20 20 20 20 20      };....      
1abc0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
1abd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1abf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ac00 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1ac10 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
1ac20 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 49 6e   const string In
1ac30 76 61 72 69 61 6e 74 4e 61 6d 65 20 3d 20 22 53  variantName = "S
1ac40 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74  ystem.Data.SQLit
1ac50 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e";..           
1ac60 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
1ac70 74 72 69 6e 67 20 45 66 36 49 6e 76 61 72 69 61  tring Ef6Invaria
1ac80 6e 74 4e 61 6d 65 20 3d 20 22 53 79 73 74 65 6d  ntName = "System
1ac90 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 45 46 36  .Data.SQLite.EF6
1aca0 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ";....          
1acb0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1acc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ace0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1acf0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1ad00 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
1ad10 73 74 20 73 74 72 69 6e 67 20 46 61 63 74 6f 72  st string Factor
1ad20 79 54 79 70 65 4e 61 6d 65 20 3d 0d 0a 20 20 20  yTypeName =..   
1ad30 20 20 20 20 20 20 20 20 20 20 20 20 20 22 53 79               "Sy
1ad40 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
1ad50 2e 53 51 4c 69 74 65 46 61 63 74 6f 72 79 22 3b  .SQLiteFactory";
1ad60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ad70 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
1ad80 72 69 6e 67 20 45 66 36 46 61 63 74 6f 72 79 54  ring Ef6FactoryT
1ad90 79 70 65 4e 61 6d 65 20 3d 0d 0a 20 20 20 20 20  ypeName =..     
1ada0 20 20 20 20 20 20 20 20 20 20 20 22 53 79 73 74             "Syst
1adb0 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 45  em.Data.SQLite.E
1adc0 46 36 2e 53 51 4c 69 74 65 50 72 6f 76 69 64 65  F6.SQLiteProvide
1add0 72 46 61 63 74 6f 72 79 22 3b 0d 0a 20 20 20 20  rFactory";..    
1ade0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
1adf0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
1ae00 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1ae10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae40 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1ae50 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
1ae60 76 61 74 65 20 53 74 61 74 69 63 20 44 61 74 61  vate Static Data
1ae70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
1ae80 69 76 61 74 65 20 73 74 61 74 69 63 20 41 73 73  ivate static Ass
1ae90 65 6d 62 6c 79 20 73 79 73 74 65 6d 45 66 36 41  embly systemEf6A
1aea0 73 73 65 6d 62 6c 79 3b 0d 0a 20 20 20 20 20 20  ssembly;..      
1aeb0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1aec0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1aed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1aef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1af10 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1af20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61     #region Priva
1af30 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20 20  te Data..       
1af40 20 20 20 20 20 70 72 69 76 61 74 65 20 41 73 73       private Ass
1af50 65 6d 62 6c 79 4e 61 6d 65 20 63 6f 72 65 41 73  emblyName coreAs
1af60 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20  semblyName;..   
1af70 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
1af80 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 6c 69   AssemblyName li
1af90 6e 71 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d  nqAssemblyName;.
1afa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
1afb0 76 61 74 65 20 41 73 73 65 6d 62 6c 79 4e 61 6d  vate AssemblyNam
1afc0 65 20 65 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d  e ef6AssemblyNam
1afd0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1afe0 70 72 69 76 61 74 65 20 41 73 73 65 6d 62 6c 79  private Assembly
1aff0 4e 61 6d 65 20 64 65 73 69 67 6e 65 72 41 73 73  Name designerAss
1b000 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20  emblyName;..    
1b010 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
1b020 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
1b030 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1b040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b070 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1b080 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
1b090 76 61 74 65 20 43 6f 6e 73 74 72 75 63 74 6f 72  vate Constructor
1b0a0 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
1b0b0 72 69 76 61 74 65 20 43 6f 6e 66 69 67 75 72 61  rivate Configura
1b0c0 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
1b0d0 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20         Assembly 
1b0e0 61 73 73 65 6d 62 6c 79 2c 0d 0a 20 20 20 20 20  assembly,..     
1b0f0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
1b100 67 20 6c 6f 67 46 69 6c 65 4e 61 6d 65 2c 0d 0a  g logFileName,..
1b110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b120 73 74 72 69 6e 67 20 72 65 67 69 73 74 72 79 4c  string registryL
1b130 6f 67 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20  ogFileName,..   
1b140 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
1b150 69 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a  ing directory,..
1b160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b170 73 74 72 69 6e 67 20 63 6f 72 65 46 69 6c 65 4e  string coreFileN
1b180 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
1b190 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c 69 6e        string lin
1b1a0 71 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20  qFileName,..    
1b1b0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1b1c0 6e 67 20 65 66 36 46 69 6c 65 4e 61 6d 65 2c 0d  ng ef6FileName,.
1b1d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b1e0 20 73 74 72 69 6e 67 20 64 65 73 69 67 6e 65 72   string designer
1b1f0 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  FileName,..     
1b200 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
1b210 67 20 72 65 67 69 73 74 72 79 56 65 72 73 69 6f  g registryVersio
1b220 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n,..            
1b230 20 20 20 20 73 74 72 69 6e 67 20 63 6f 6e 66 69      string confi
1b240 67 56 65 72 73 69 6f 6e 2c 0d 0a 20 20 20 20 20  gVersion,..     
1b250 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
1b260 67 20 76 73 56 65 72 73 69 6f 6e 53 75 66 66 69  g vsVersionSuffi
1b270 78 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x,..            
1b280 20 20 20 20 73 74 72 69 6e 67 20 64 65 62 75 67      string debug
1b290 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
1b2a0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1b2b0 74 72 61 63 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  traceFormat,..  
1b2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e                In
1b2d0 73 74 61 6c 6c 46 6c 61 67 73 20 69 6e 73 74 61  stallFlags insta
1b2e0 6c 6c 46 6c 61 67 73 2c 0d 0a 20 20 20 20 20 20  llFlags,..      
1b2f0 20 20 20 20 20 20 20 20 20 20 50 72 6f 76 69 64            Provid
1b300 65 72 46 6c 61 67 73 20 70 72 6f 76 69 64 65 72  erFlags provider
1b310 46 6c 61 67 73 2c 0d 0a 20 20 20 20 20 20 20 20  Flags,..        
1b320 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
1b330 6f 72 69 74 79 20 64 65 62 75 67 50 72 69 6f 72  ority debugPrior
1b340 69 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ity,..          
1b350 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
1b360 69 74 79 20 74 72 61 63 65 50 72 69 6f 72 69 74  ity tracePriorit
1b370 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
1b380 20 20 20 20 62 6f 6f 6c 20 70 65 72 55 73 65 72      bool perUser
1b390 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1b3a0 20 20 20 62 6f 6f 6c 20 69 6e 73 74 61 6c 6c 2c     bool install,
1b3b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b3c0 20 20 62 6f 6f 6c 20 77 6f 77 36 34 2c 0d 0a 20    bool wow64,.. 
1b3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1b3e0 6f 6f 6c 20 6e 6f 52 75 6e 74 69 6d 65 56 65 72  ool noRuntimeVer
1b3f0 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20  sion,..         
1b400 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 44 65         bool noDe
1b410 73 6b 74 6f 70 2c 0d 0a 20 20 20 20 20 20 20 20  sktop,..        
1b420 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 43          bool noC
1b430 6f 6d 70 61 63 74 2c 0d 0a 20 20 20 20 20 20 20  ompact,..       
1b440 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
1b450 4e 65 74 46 78 32 30 2c 0d 0a 20 20 20 20 20 20  NetFx20,..      
1b460 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e            bool n
1b470 6f 4e 65 74 46 78 33 35 2c 0d 0a 20 20 20 20 20  oNetFx35,..     
1b480 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
1b490 6e 6f 4e 65 74 46 78 34 30 2c 0d 0a 20 20 20 20  noNetFx40,..    
1b4a0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
1b4b0 20 6e 6f 4e 65 74 46 78 34 35 2c 0d 0a 20 20 20   noNetFx45,..   
1b4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
1b4d0 6c 20 6e 6f 4e 65 74 46 78 34 35 31 2c 0d 0a 20  l noNetFx451,.. 
1b4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1b4f0 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 35 32 2c 0d  ool noNetFx452,.
1b500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b510 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 36 2c   bool noNetFx46,
1b520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b530 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 36    bool noNetFx46
1b540 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1,..            
1b550 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78      bool noNetFx
1b560 34 36 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  462,..          
1b570 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74        bool noNet
1b580 46 78 34 37 2c 0d 0a 20 20 20 20 20 20 20 20 20  Fx47,..         
1b590 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65         bool noNe
1b5a0 74 46 78 34 37 31 2c 0d 0a 20 20 20 20 20 20 20  tFx471,..       
1b5b0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
1b5c0 56 73 32 30 30 35 2c 0d 0a 20 20 20 20 20 20 20  Vs2005,..       
1b5d0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
1b5e0 56 73 32 30 30 38 2c 0d 0a 20 20 20 20 20 20 20  Vs2008,..       
1b5f0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
1b600 56 73 32 30 31 30 2c 0d 0a 20 20 20 20 20 20 20  Vs2010,..       
1b610 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
1b620 56 73 32 30 31 32 2c 0d 0a 20 20 20 20 20 20 20  Vs2012,..       
1b630 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
1b640 56 73 32 30 31 33 2c 0d 0a 20 20 20 20 20 20 20  Vs2013,..       
1b650 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
1b660 56 73 32 30 31 35 2c 0d 0a 20 20 20 20 20 20 20  Vs2015,..       
1b670 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
1b680 56 73 32 30 31 37 2c 0d 0a 20 20 20 20 20 20 20  Vs2017,..       
1b690 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
1b6a0 54 72 61 63 65 2c 0d 0a 20 20 20 20 20 20 20 20  Trace,..        
1b6b0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 43          bool noC
1b6c0 6f 6e 73 6f 6c 65 2c 0d 0a 20 20 20 20 20 20 20  onsole,..       
1b6d0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f           bool no
1b6e0 4c 6f 67 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Log,..          
1b6f0 20 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77        bool throw
1b700 4f 6e 4d 69 73 73 69 6e 67 2c 0d 0a 20 20 20 20  OnMissing,..    
1b710 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
1b720 20 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20 20   whatIf,..      
1b730 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 64            bool d
1b740 65 62 75 67 2c 0d 0a 20 20 20 20 20 20 20 20 20  ebug,..         
1b750 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62         bool verb
1b760 6f 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ose,..          
1b770 20 20 20 20 20 20 62 6f 6f 6c 20 63 6f 6e 66 69        bool confi
1b780 72 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rm..            
1b790 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
1b7a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1b7b0 20 20 20 20 20 20 74 68 69 73 2e 61 73 73 65 6d        this.assem
1b7c0 62 6c 79 20 3d 20 61 73 73 65 6d 62 6c 79 3b 0d  bly = assembly;.
1b7d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b7e0 20 74 68 69 73 2e 6c 6f 67 46 69 6c 65 4e 61 6d   this.logFileNam
1b7f0 65 20 3d 20 6c 6f 67 46 69 6c 65 4e 61 6d 65 3b  e = logFileName;
1b800 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b810 20 20 74 68 69 73 2e 72 65 67 69 73 74 72 79 4c    this.registryL
1b820 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20 72 65 67  ogFileName = reg
1b830 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65  istryLogFileName
1b840 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1b850 20 20 20 74 68 69 73 2e 64 69 72 65 63 74 6f 72     this.director
1b860 79 20 3d 20 64 69 72 65 63 74 6f 72 79 3b 0d 0a  y = directory;..
1b870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b880 74 68 69 73 2e 63 6f 72 65 46 69 6c 65 4e 61 6d  this.coreFileNam
1b890 65 20 3d 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65  e = coreFileName
1b8a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1b8b0 20 20 20 74 68 69 73 2e 6c 69 6e 71 46 69 6c 65     this.linqFile
1b8c0 4e 61 6d 65 20 3d 20 6c 69 6e 71 46 69 6c 65 4e  Name = linqFileN
1b8d0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
1b8e0 20 20 20 20 20 20 74 68 69 73 2e 65 66 36 46 69        this.ef6Fi
1b8f0 6c 65 4e 61 6d 65 20 3d 20 65 66 36 46 69 6c 65  leName = ef6File
1b900 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
1b910 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 73 69         this.desi
1b920 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 64  gnerFileName = d
1b930 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 3b  esignerFileName;
1b940 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b950 20 20 74 68 69 73 2e 72 65 67 69 73 74 72 79 56    this.registryV
1b960 65 72 73 69 6f 6e 20 3d 20 72 65 67 69 73 74 72  ersion = registr
1b970 79 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20  yVersion;..     
1b980 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1b990 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e 20 3d 20  configVersion = 
1b9a0 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e 3b 0d 0a  configVersion;..
1b9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b9c0 74 68 69 73 2e 76 73 56 65 72 73 69 6f 6e 53 75  this.vsVersionSu
1b9d0 66 66 69 78 20 3d 20 76 73 56 65 72 73 69 6f 6e  ffix = vsVersion
1b9e0 53 75 66 66 69 78 3b 0d 0a 20 20 20 20 20 20 20  Suffix;..       
1b9f0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 65           this.de
1ba00 62 75 67 46 6f 72 6d 61 74 20 3d 20 64 65 62 75  bugFormat = debu
1ba10 67 46 6f 72 6d 61 74 3b 0d 0a 20 20 20 20 20 20  gFormat;..      
1ba20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74            this.t
1ba30 72 61 63 65 46 6f 72 6d 61 74 20 3d 20 74 72 61  raceFormat = tra
1ba40 63 65 46 6f 72 6d 61 74 3b 0d 0a 20 20 20 20 20  ceFormat;..     
1ba50 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1ba60 69 6e 73 74 61 6c 6c 46 6c 61 67 73 20 3d 20 69  installFlags = i
1ba70 6e 73 74 61 6c 6c 46 6c 61 67 73 3b 0d 0a 20 20  nstallFlags;..  
1ba80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1ba90 69 73 2e 70 72 6f 76 69 64 65 72 46 6c 61 67 73  is.providerFlags
1baa0 20 3d 20 70 72 6f 76 69 64 65 72 46 6c 61 67 73   = providerFlags
1bab0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1bac0 20 20 20 74 68 69 73 2e 64 65 62 75 67 50 72 69     this.debugPri
1bad0 6f 72 69 74 79 20 3d 20 64 65 62 75 67 50 72 69  ority = debugPri
1bae0 6f 72 69 74 79 3b 0d 0a 20 20 20 20 20 20 20 20  ority;..        
1baf0 20 20 20 20 20 20 20 20 74 68 69 73 2e 74 72 61          this.tra
1bb00 63 65 50 72 69 6f 72 69 74 79 20 3d 20 74 72 61  cePriority = tra
1bb10 63 65 50 72 69 6f 72 69 74 79 3b 0d 0a 20 20 20  cePriority;..   
1bb20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
1bb30 73 2e 70 65 72 55 73 65 72 20 3d 20 70 65 72 55  s.perUser = perU
1bb40 73 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ser;..          
1bb50 20 20 20 20 20 20 74 68 69 73 2e 69 6e 73 74 61        this.insta
1bb60 6c 6c 20 3d 20 69 6e 73 74 61 6c 6c 3b 0d 0a 20  ll = install;.. 
1bb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1bb80 68 69 73 2e 77 6f 77 36 34 20 3d 20 77 6f 77 36  his.wow64 = wow6
1bb90 34 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  4;..            
1bba0 20 20 20 20 74 68 69 73 2e 6e 6f 52 75 6e 74 69      this.noRunti
1bbb0 6d 65 56 65 72 73 69 6f 6e 20 3d 20 6e 6f 52 75  meVersion = noRu
1bbc0 6e 74 69 6d 65 56 65 72 73 69 6f 6e 3b 0d 0a 20  ntimeVersion;.. 
1bbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1bbe0 68 69 73 2e 6e 6f 44 65 73 6b 74 6f 70 20 3d 20  his.noDesktop = 
1bbf0 6e 6f 44 65 73 6b 74 6f 70 3b 0d 0a 20 20 20 20  noDesktop;..    
1bc00 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1bc10 2e 6e 6f 43 6f 6d 70 61 63 74 20 3d 20 6e 6f 43  .noCompact = noC
1bc20 6f 6d 70 61 63 74 3b 0d 0a 20 20 20 20 20 20 20  ompact;..       
1bc30 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f           this.no
1bc40 4e 65 74 46 78 32 30 20 3d 20 6e 6f 4e 65 74 46  NetFx20 = noNetF
1bc50 78 32 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  x20;..          
1bc60 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74        this.noNet
1bc70 46 78 33 35 20 3d 20 6e 6f 4e 65 74 46 78 33 35  Fx35 = noNetFx35
1bc80 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1bc90 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34     this.noNetFx4
1bca0 30 20 3d 20 6e 6f 4e 65 74 46 78 34 30 3b 0d 0a  0 = noNetFx40;..
1bcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bcc0 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34 35 20 3d  this.noNetFx45 =
1bcd0 20 6e 6f 4e 65 74 46 78 34 35 3b 0d 0a 20 20 20   noNetFx45;..   
1bce0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
1bcf0 73 2e 6e 6f 4e 65 74 46 78 34 35 31 20 3d 20 6e  s.noNetFx451 = n
1bd00 6f 4e 65 74 46 78 34 35 31 3b 0d 0a 20 20 20 20  oNetFx451;..    
1bd10 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1bd20 2e 6e 6f 4e 65 74 46 78 34 35 32 20 3d 20 6e 6f  .noNetFx452 = no
1bd30 4e 65 74 46 78 34 35 32 3b 0d 0a 20 20 20 20 20  NetFx452;..     
1bd40 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
1bd50 6e 6f 4e 65 74 46 78 34 36 20 3d 20 6e 6f 4e 65  noNetFx46 = noNe
1bd60 74 46 78 34 36 3b 0d 0a 20 20 20 20 20 20 20 20  tFx46;..        
1bd70 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e          this.noN
1bd80 65 74 46 78 34 36 31 20 3d 20 6e 6f 4e 65 74 46  etFx461 = noNetF
1bd90 78 34 36 31 3b 0d 0a 20 20 20 20 20 20 20 20 20  x461;..         
1bda0 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65         this.noNe
1bdb0 74 46 78 34 36 32 20 3d 20 6e 6f 4e 65 74 46 78  tFx462 = noNetFx
1bdc0 34 36 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  462;..          
1bdd0 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74        this.noNet
1bde0 46 78 34 37 20 3d 20 6e 6f 4e 65 74 46 78 34 37  Fx47 = noNetFx47
1bdf0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1be00 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34     this.noNetFx4
1be10 37 31 20 3d 20 6e 6f 4e 65 74 46 78 34 37 31 3b  71 = noNetFx471;
1be20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1be30 20 20 74 68 69 73 2e 6e 6f 56 73 32 30 30 35 20    this.noVs2005 
1be40 3d 20 6e 6f 56 73 32 30 30 35 3b 0d 0a 20 20 20  = noVs2005;..   
1be50 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
1be60 73 2e 6e 6f 56 73 32 30 30 38 20 3d 20 6e 6f 56  s.noVs2008 = noV
1be70 73 32 30 30 38 3b 0d 0a 20 20 20 20 20 20 20 20  s2008;..        
1be80 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 56          this.noV
1be90 73 32 30 31 30 20 3d 20 6e 6f 56 73 32 30 31 30  s2010 = noVs2010
1bea0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1beb0 20 20 20 74 68 69 73 2e 6e 6f 56 73 32 30 31 32     this.noVs2012
1bec0 20 3d 20 6e 6f 56 73 32 30 31 32 3b 0d 0a 20 20   = noVs2012;..  
1bed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
1bee0 69 73 2e 6e 6f 56 73 32 30 31 33 20 3d 20 6e 6f  is.noVs2013 = no
1bef0 56 73 32 30 31 33 3b 0d 0a 20 20 20 20 20 20 20  Vs2013;..       
1bf00 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f           this.no
1bf10 56 73 32 30 31 35 20 3d 20 6e 6f 56 73 32 30 31  Vs2015 = noVs201
1bf20 35 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  5;..            
1bf30 20 20 20 20 74 68 69 73 2e 6e 6f 56 73 32 30 31      this.noVs201
1bf40 37 20 3d 20 6e 6f 56 73 32 30 31 37 3b 0d 0a 20  7 = noVs2017;.. 
1bf50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1bf60 68 69 73 2e 6e 6f 54 72 61 63 65 20 3d 20 6e 6f  his.noTrace = no
1bf70 54 72 61 63 65 3b 0d 0a 20 20 20 20 20 20 20 20  Trace;..        
1bf80 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 43          this.noC
1bf90 6f 6e 73 6f 6c 65 20 3d 20 6e 6f 43 6f 6e 73 6f  onsole = noConso
1bfa0 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le;..           
1bfb0 20 20 20 20 20 74 68 69 73 2e 6e 6f 4c 6f 67 20       this.noLog 
1bfc0 3d 20 6e 6f 4c 6f 67 3b 0d 0a 20 20 20 20 20 20  = noLog;..      
1bfd0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 74            this.t
1bfe0 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 20 3d 20  hrowOnMissing = 
1bff0 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 3b 0d  throwOnMissing;.
1c000 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c010 20 74 68 69 73 2e 77 68 61 74 49 66 20 3d 20 77   this.whatIf = w
1c020 68 61 74 49 66 3b 0d 0a 20 20 20 20 20 20 20 20  hatIf;..        
1c030 20 20 20 20 20 20 20 20 74 68 69 73 2e 64 65 62          this.deb
1c040 75 67 20 3d 20 64 65 62 75 67 3b 0d 0a 20 20 20  ug = debug;..   
1c050 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
1c060 73 2e 76 65 72 62 6f 73 65 20 3d 20 76 65 72 62  s.verbose = verb
1c070 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ose;..          
1c080 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 66 69        this.confi
1c090 72 6d 20 3d 20 63 6f 6e 66 69 72 6d 3b 0d 0a 20  rm = confirm;.. 
1c0a0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1c0b0 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
1c0c0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
1c0d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1c0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c0f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c110 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1c120 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
1c130 72 69 76 61 74 65 20 53 74 61 74 69 63 20 4d 65  rivate Static Me
1c140 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20  thods..         
1c150 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1c160 63 20 76 6f 69 64 20 47 65 74 44 65 66 61 75 6c  c void GetDefaul
1c170 74 46 69 6c 65 4e 61 6d 65 73 28 0d 0a 20 20 20  tFileNames(..   
1c180 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1c190 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
1c1a0 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
1c1b0 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 63      ref string c
1c1c0 6f 72 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20  oreFileName,..  
1c1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1c1e0 66 20 73 74 72 69 6e 67 20 6c 69 6e 71 46 69 6c  f string linqFil
1c1f0 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
1c200 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
1c210 6e 67 20 65 66 36 46 69 6c 65 4e 61 6d 65 2c 0d  ng ef6FileName,.
1c220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c230 20 72 65 66 20 73 74 72 69 6e 67 20 64 65 73 69   ref string desi
1c240 67 6e 65 72 46 69 6c 65 4e 61 6d 65 0d 0a 20 20  gnerFileName..  
1c250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
1c260 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
1c270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c280 69 66 20 28 74 68 69 73 41 73 73 65 6d 62 6c 79  if (thisAssembly
1c290 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1c2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1c2b0 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
1c2c0 20 20 20 20 20 20 20 20 20 20 64 69 72 65 63 74            direct
1c2d0 6f 72 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69  ory = Path.GetDi
1c2e0 72 65 63 74 6f 72 79 4e 61 6d 65 28 74 68 69 73  rectoryName(this
1c2f0 41 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69 6f  Assembly.Locatio
1c300 6e 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  n);....         
1c310 20 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e         if (Strin
1c320 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
1c330 64 69 72 65 63 74 6f 72 79 29 29 0d 0a 20 20 20  directory))..   
1c340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c350 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
1c360 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 72 65              core
1c370 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e  FileName = Path.
1c380 43 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72  Combine(director
1c390 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
1c3a0 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c 6c 65          Installe
1c3b0 72 2e 43 6f 72 65 46 69 6c 65 4e 61 6d 65 29 3b  r.CoreFileName);
1c3c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c3d0 20 20 20 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65      linqFileName
1c3e0 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28   = Path.Combine(
1c3f0 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20  directory,..    
1c400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c410 49 6e 73 74 61 6c 6c 65 72 2e 4c 69 6e 71 46 69  Installer.LinqFi
1c420 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
1c430 20 20 20 20 20 20 20 20 20 20 20 20 65 66 36 46              ef6F
1c440 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43  ileName = Path.C
1c450 6f 6d 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79  ombine(directory
1c460 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1c470 20 20 20 20 20 20 20 49 6e 73 74 61 6c 6c 65 72         Installer
1c480 2e 45 66 36 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a  .Ef6FileName);..
1c490 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c4a0 20 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61    designerFileNa
1c4b0 6d 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e  me = Path.Combin
1c4c0 65 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20  e(directory,..  
1c4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c4e0 20 20 49 6e 73 74 61 6c 6c 65 72 2e 44 65 73 69    Installer.Desi
1c4f0 67 6e 65 72 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a  gnerFileName);..
1c500 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
1c510 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
1c520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c560 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1c570 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 62  private static b
1c580 6f 6f 6c 20 43 68 65 63 6b 4f 70 74 69 6f 6e 28  ool CheckOption(
1c590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c5a0 20 20 72 65 66 20 73 74 72 69 6e 67 20 61 72 67    ref string arg
1c5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c5c0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
1c5d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1c5e0 20 20 20 20 73 74 72 69 6e 67 20 72 65 73 75 6c      string resul
1c5f0 74 20 3d 20 61 72 67 3b 0d 0a 0d 0a 20 20 20 20  t = arg;....    
1c600 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1c610 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
1c620 45 6d 70 74 79 28 72 65 73 75 6c 74 29 29 0d 0a  Empty(result))..
1c630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c640 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1c650 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1c660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1c670 2f 20 4e 4f 54 45 3a 20 52 65 6d 6f 76 65 20 61  / NOTE: Remove a
1c680 6c 6c 20 6c 65 61 64 69 6e 67 20 73 77 69 74 63  ll leading switc
1c690 68 20 63 68 61 72 73 2e 0d 0a 20 20 20 20 20 20  h chars...      
1c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c6b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c6c0 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 72        result = r
1c6d0 65 73 75 6c 74 2e 54 72 69 6d 53 74 61 72 74 28  esult.TrimStart(
1c6e0 53 77 69 74 63 68 43 68 61 72 73 29 3b 0d 0a 0d  SwitchChars);...
1c6f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c700 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1c710 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1c720 4e 4f 54 45 3a 20 48 6f 77 20 6d 61 6e 79 20 63  NOTE: How many c
1c730 68 61 72 73 20 77 65 72 65 20 72 65 6d 6f 76 65  hars were remove
1c740 64 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d?..            
1c750 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1c760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c770 69 6e 74 20 63 6f 75 6e 74 20 3d 20 61 72 67 2e  int count = arg.
1c780 4c 65 6e 67 74 68 20 2d 20 72 65 73 75 6c 74 2e  Length - result.
1c790 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20  Length;....     
1c7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1c7b0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1c7c0 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
1c7d0 57 61 73 20 74 68 65 72 65 20 61 74 20 6c 65 61  Was there at lea
1c7e0 73 74 20 6f 6e 65 3f 0d 0a 20 20 20 20 20 20 20  st one?..       
1c7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1c800 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c810 20 20 20 20 20 69 66 20 28 63 6f 75 6e 74 20 3e       if (count >
1c820 20 30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0)..           
1c830 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1c840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c850 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1c860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c870 2f 2f 20 4e 4f 54 45 3a 20 4f 6b 2c 20 72 65 70  // NOTE: Ok, rep
1c880 6c 61 63 65 20 74 68 65 69 72 20 6f 72 69 67 69  lace their origi
1c890 6e 61 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nal..           
1c8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1c8b0 20 20 20 20 20 20 61 72 67 75 6d 65 6e 74 2e 0d        argument..
1c8c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c8d0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1c8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c8f0 20 20 20 20 20 61 72 67 20 3d 20 72 65 73 75 6c       arg = resul
1c900 74 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  t;....          
1c910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c930 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1c940 45 3a 20 59 65 73 2c 20 74 68 69 73 20 69 73 20  E: Yes, this is 
1c950 61 20 73 77 69 74 63 68 2e 0d 0a 20 20 20 20 20  a switch...     
1c960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c970 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1c980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1c990 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20  eturn true;..   
1c9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9b0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1c9c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1c9d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1c9e0 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
1c9f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1ca00 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1ca10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1ca50 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1ca60 73 74 61 74 69 63 20 62 6f 6f 6c 20 4d 61 74 63  static bool Matc
1ca70 68 4f 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  hOption(..      
1ca80 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1ca90 20 61 72 67 2c 0d 0a 20 20 20 20 20 20 20 20 20   arg,..         
1caa0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6f 70         string op
1cab0 74 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  tion..          
1cac0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1cad0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1cae0 20 20 20 20 20 20 20 20 69 66 20 28 28 61 72 67          if ((arg
1caf0 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 28 6f 70   == null) || (op
1cb00 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a  tion == null))..
1cb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1cb30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1cb40 20 20 20 20 20 72 65 74 75 72 6e 20 53 74 72 69       return Stri
1cb50 6e 67 2e 43 6f 6d 70 61 72 65 28 61 72 67 2c 20  ng.Compare(arg, 
1cb60 30 2c 20 6f 70 74 69 6f 6e 2c 20 30 2c 0d 0a 20  0, option, 0,.. 
1cb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb80 20 20 20 61 72 67 2e 4c 65 6e 67 74 68 2c 20 53     arg.Length, S
1cb90 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
1cba0 4f 72 64 69 6e 61 6c 49 67 6e 6f 72 65 43 61 73  OrdinalIgnoreCas
1cbb0 65 29 20 3d 3d 20 30 3b 0d 0a 20 20 20 20 20 20  e) == 0;..      
1cbc0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1cbd0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
1cbe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cbf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cc10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
1cc20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
1cc30 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 3f 20 50  e static bool? P
1cc40 61 72 73 65 42 6f 6f 6c 65 61 6e 28 0d 0a 20 20  arseBoolean(..  
1cc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
1cc60 72 69 6e 67 20 74 65 78 74 0d 0a 20 20 20 20 20  ring text..     
1cc70 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
1cc80 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1cc90 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1cca0 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
1ccb0 72 45 6d 70 74 79 28 74 65 78 74 29 29 0d 0a 20  rEmpty(text)).. 
1ccc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1ccd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1cce0 20 20 20 20 20 20 62 6f 6f 6c 20 76 61 6c 75 65        bool value
1ccf0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1cd00 20 20 20 20 20 20 20 20 20 69 66 20 28 62 6f 6f           if (boo
1cd10 6c 2e 54 72 79 50 61 72 73 65 28 74 65 78 74 2c  l.TryParse(text,
1cd20 20 6f 75 74 20 76 61 6c 75 65 29 29 0d 0a 20 20   out value))..  
1cd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cd40 20 20 20 20 20 20 72 65 74 75 72 6e 20 76 61 6c        return val
1cd50 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
1cd60 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1cd70 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1cd80 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
1cd90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1cda0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1cdb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cdc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cdd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1cde0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1cdf0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
1ce00 73 74 61 74 69 63 20 6f 62 6a 65 63 74 20 50 61  static object Pa
1ce10 72 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20  rseEnum(..      
1ce20 20 20 20 20 20 20 20 20 20 20 54 79 70 65 20 65            Type e
1ce30 6e 75 6d 54 79 70 65 2c 0d 0a 20 20 20 20 20 20  numType,..      
1ce40 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
1ce50 20 74 65 78 74 2c 0d 0a 20 20 20 20 20 20 20 20   text,..        
1ce60 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 43          bool noC
1ce70 61 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ase..           
1ce80 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
1ce90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1cea0 20 20 20 20 20 20 20 69 66 20 28 28 65 6e 75 6d         if ((enum
1ceb0 54 79 70 65 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  Type == null) ||
1cec0 20 21 65 6e 75 6d 54 79 70 65 2e 49 73 45 6e 75   !enumType.IsEnu
1ced0 6d 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m)..            
1cee0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1cef0 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ull;....        
1cf00 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
1cf10 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
1cf20 79 28 74 65 78 74 29 29 0d 0a 20 20 20 20 20 20  y(text))..      
1cf30 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1cf40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf50 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1cf60 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1cf70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf80 20 20 20 20 20 72 65 74 75 72 6e 20 45 6e 75 6d       return Enum
1cf90 2e 50 61 72 73 65 28 65 6e 75 6d 54 79 70 65 2c  .Parse(enumType,
1cfa0 20 74 65 78 74 2c 20 6e 6f 43 61 73 65 29 3b 0d   text, noCase);.
1cfb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cfc0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1cfd0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1cfe0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
1cff0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1d000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d010 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e    // do nothing.
1d020 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d030 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1d040 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1d050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1d060 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
1d070 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1d080 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
1d090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1d0d0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
1d0e0 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  ate static bool 
1d0f0 49 73 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d  IsSystemEf6Assem
1d100 62 6c 79 47 6c 6f 62 61 6c 28 29 0d 0a 20 20 20  blyGlobal()..   
1d110 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1d120 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1d130 73 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c  systemEf6Assembl
1d140 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
1d150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d160 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
1d170 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d180 20 72 65 74 75 72 6e 20 73 79 73 74 65 6d 45 66   return systemEf
1d190 36 41 73 73 65 6d 62 6c 79 2e 47 6c 6f 62 61 6c  6Assembly.Global
1d1a0 41 73 73 65 6d 62 6c 79 43 61 63 68 65 3b 0d 0a  AssemblyCache;..
1d1b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1d1c0 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
1d1d0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
1d1e0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1d1f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d220 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1d230 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
1d240 50 75 62 6c 69 63 20 53 74 61 74 69 63 20 4d 65  Public Static Me
1d250 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20  thods..         
1d260 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
1d270 20 76 6f 69 64 20 42 72 65 61 6b 49 6e 74 6f 44   void BreakIntoD
1d280 65 62 75 67 67 65 72 28 29 0d 0a 20 20 20 20 20  ebugger()..     
1d290 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1d2a0 20 20 20 20 20 20 20 20 20 20 43 6f 6e 73 6f 6c            Consol
1d2b0 65 2e 57 72 69 74 65 4c 69 6e 65 28 0d 0a 20 20  e.WriteLine(..  
1d2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2d0 20 20 22 41 74 74 61 63 68 20 61 20 64 65 62 75    "Attach a debu
1d2e0 67 67 65 72 20 74 6f 20 70 72 6f 63 65 73 73 20  gger to process 
1d2f0 7b 30 7d 20 61 6e 64 20 70 72 65 73 73 20 22 20  {0} and press " 
1d300 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
1d310 20 20 20 20 20 20 20 22 61 6e 79 20 6b 65 79 20         "any key 
1d320 74 6f 20 63 6f 6e 74 69 6e 75 65 2e 22 2c 20 28  to continue.", (
1d330 74 68 69 73 50 72 6f 63 65 73 73 20 21 3d 20 6e  thisProcess != n
1d340 75 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20 20  ull) ?..        
1d350 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1d360 50 72 6f 63 65 73 73 2e 49 64 2e 54 6f 53 74 72  Process.Id.ToStr
1d370 69 6e 67 28 29 20 3a 20 22 3c 75 6e 6b 6e 6f 77  ing() : "<unknow
1d380 6e 3e 22 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  n>");....       
1d390 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
1d3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1d3b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d3c0 20 20 20 20 20 43 6f 6e 73 6f 6c 65 2e 52 65 61       Console.Rea
1d3d0 64 4b 65 79 28 74 72 75 65 29 3b 20 2f 2a 20 74  dKey(true); /* t
1d3e0 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
1d3f0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1d400 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
1d410 68 20 28 49 6e 76 61 6c 69 64 4f 70 65 72 61 74  h (InvalidOperat
1d420 69 6f 6e 45 78 63 65 70 74 69 6f 6e 29 20 2f 2f  ionException) //
1d430 20 43 6f 6e 73 6f 6c 65 2e 52 65 61 64 4b 65 79   Console.ReadKey
1d440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d450 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1d460 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
1d470 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
1d480 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1d490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 65                De
1d4a0 62 75 67 67 65 72 2e 42 72 65 61 6b 28 29 3b 0d  bugger.Break();.
1d4b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
1d4c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
1d4d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d4e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d4f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d510 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
1d520 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 43   public static C
1d530 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 43 72 65  onfiguration Cre
1d540 61 74 65 44 65 66 61 75 6c 74 28 29 0d 0a 20 20  ateDefault()..  
1d550 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1d560 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
1d570 69 6e 67 20 64 69 72 65 63 74 6f 72 79 20 3d 20  ing directory = 
1d580 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
1d590 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 6f         string co
1d5a0 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c  reFileName = nul
1d5b0 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l;..            
1d5c0 20 20 20 20 73 74 72 69 6e 67 20 6c 69 6e 71 46      string linqF
1d5d0 69 6c 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d  ileName = null;.
1d5e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d5f0 20 73 74 72 69 6e 67 20 65 66 36 46 69 6c 65 4e   string ef6FileN
1d600 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ame = null;..   
1d610 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
1d620 69 6e 67 20 64 65 73 69 67 6e 65 72 46 69 6c 65  ing designerFile
1d630 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a  Name = null;....
1d640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d650 47 65 74 44 65 66 61 75 6c 74 46 69 6c 65 4e 61  GetDefaultFileNa
1d660 6d 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mes(..          
1d670 20 20 20 20 20 20 20 20 20 20 72 65 66 20 64 69            ref di
1d680 72 65 63 74 6f 72 79 2c 20 72 65 66 20 63 6f 72  rectory, ref cor
1d690 65 46 69 6c 65 4e 61 6d 65 2c 20 72 65 66 20 6c  eFileName, ref l
1d6a0 69 6e 71 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20  inqFileName,..  
1d6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d6c0 20 20 72 65 66 20 65 66 36 46 69 6c 65 4e 61 6d    ref ef6FileNam
1d6d0 65 2c 20 72 65 66 20 64 65 73 69 67 6e 65 72 46  e, ref designerF
1d6e0 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
1d6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1d700 75 72 6e 20 6e 65 77 20 43 6f 6e 66 69 67 75 72  urn new Configur
1d710 61 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ation(..        
1d720 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
1d730 41 73 73 65 6d 62 6c 79 2c 20 6e 75 6c 6c 2c 20  Assembly, null, 
1d740 6e 75 6c 6c 2c 20 64 69 72 65 63 74 6f 72 79 2c  null, directory,
1d750 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65 2c 0d 0a   coreFileName,..
1d760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d770 20 20 20 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65      linqFileName
1d780 2c 20 65 66 36 46 69 6c 65 4e 61 6d 65 2c 20 64  , ef6FileName, d
1d790 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 2c  esignerFileName,
1d7a0 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c 0d 0a 20 20   null, null,..  
1d7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d7c0 20 20 6e 75 6c 6c 2c 20 54 72 61 63 65 4f 70 73    null, TraceOps
1d7d0 2e 44 65 62 75 67 46 6f 72 6d 61 74 2c 20 54 72  .DebugFormat, Tr
1d7e0 61 63 65 4f 70 73 2e 54 72 61 63 65 46 6f 72 6d  aceOps.TraceForm
1d7f0 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
1d800 20 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c 6c           Install
1d810 46 6c 61 67 73 2e 44 65 66 61 75 6c 74 2c 20 50  Flags.Default, P
1d820 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44 65 66  roviderFlags.Def
1d830 61 75 6c 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  ault,..         
1d840 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
1d850 50 72 69 6f 72 69 74 79 2e 44 65 66 61 75 6c 74  Priority.Default
1d860 2c 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  , TracePriority.
1d870 44 65 66 61 75 6c 74 2c 20 66 61 6c 73 65 2c 20  Default, false, 
1d880 74 72 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  true,..         
1d890 20 20 20 20 20 20 20 20 20 20 20 66 61 6c 73 65             false
1d8a0 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20  , false, false, 
1d8b0 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61  false, false, fa
1d8c0 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73  lse, false, fals
1d8d0 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
1d8e0 20 20 20 20 20 20 20 20 66 61 6c 73 65 2c 20 66          false, f
1d8f0 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c  alse, false, fal
1d900 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65  se, false, false
1d910 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 0d  , false, false,.
1d920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d930 20 20 20 20 20 66 61 6c 73 65 2c 20 66 61 6c 73       false, fals
1d940 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c  e, false, false,
1d950 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66   false, false, f
1d960 61 6c 73 65 2c 20 66 61 6c 73 65 2c 0d 0a 20 20  alse, false,..  
1d970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d980 20 20 66 61 6c 73 65 2c 20 74 72 75 65 2c 20 74    false, true, t
1d990 72 75 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73  rue, false, fals
1d9a0 65 2c 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  e, false);..    
1d9b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1d9c0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
1d9d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1da10 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74              [Met
1da20 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d  hodImpl(MethodIm
1da30 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69  plOptions.NoInli
1da40 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20  ning)]..        
1da50 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
1da60 63 20 62 6f 6f 6c 20 46 72 6f 6d 41 72 67 73 28  c bool FromArgs(
1da70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1da80 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 67 73 2c    string[] args,
1da90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1daa0 20 20 62 6f 6f 6c 20 73 74 72 69 63 74 2c 0d 0a    bool strict,..
1dab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dac0 72 65 66 20 43 6f 6e 66 69 67 75 72 61 74 69 6f  ref Configuratio
1dad0 6e 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2c  n configuration,
1dae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1daf0 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72    ref string err
1db00 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  or..            
1db10 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
1db20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1db30 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
1db40 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
1db50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db60 20 20 69 66 20 28 61 72 67 73 20 3d 3d 20 6e 75    if (args == nu
1db70 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1db80 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1db90 75 72 6e 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20  urn true;....   
1dba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dbb0 20 69 66 20 28 63 6f 6e 66 69 67 75 72 61 74 69   if (configurati
1dbc0 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on == null)..   
1dbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dbe0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
1dbf0 6f 6e 20 3d 20 43 6f 6e 66 69 67 75 72 61 74 69  on = Configurati
1dc00 6f 6e 2e 43 72 65 61 74 65 44 65 66 61 75 6c 74  on.CreateDefault
1dc10 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
1dc20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 6c             int l
1dc30 65 6e 67 74 68 20 3d 20 61 72 67 73 2e 4c 65 6e  ength = args.Len
1dc40 67 74 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gth;....        
1dc50 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 20              for 
1dc60 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b 20  (int index = 0; 
1dc70 69 6e 64 65 78 20 3c 20 6c 65 6e 67 74 68 3b 20  index < length; 
1dc80 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20 20  index++)..      
1dc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1dca0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1dcb0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1dcc0 61 72 67 20 3d 20 61 72 67 73 5b 69 6e 64 65 78  arg = args[index
1dcd0 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
1dce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1dcf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1dd00 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1dd10 45 3a 20 53 6b 69 70 20 61 6e 79 20 61 72 67 75  E: Skip any argu
1dd20 6d 65 6e 74 20 74 68 61 74 20 69 73 20 6e 75 6c  ment that is nul
1dd30 6c 20 28 3f 29 20 6f 72 20 61 6e 20 65 6d 70 74  l (?) or an empt
1dd40 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
1dd50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1dd60 20 20 20 20 73 74 72 69 6e 67 2e 0d 0a 20 20 20      string...   
1dd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd80 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1dd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dda0 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75   if (String.IsNu
1ddb0 6c 6c 4f 72 45 6d 70 74 79 28 61 72 67 29 29 0d  llOrEmpty(arg)).
1ddc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ddd0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1dde0 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
1ddf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de00 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
1de10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1de20 20 4e 4f 54 45 3a 20 57 65 20 61 72 65 20 67 6f   NOTE: We are go
1de30 69 6e 67 20 74 6f 20 6d 6f 64 69 66 79 20 74 68  ing to modify th
1de40 65 20 6f 72 69 67 69 6e 61 6c 20 61 72 67 75 6d  e original argum
1de50 65 6e 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ent..           
1de60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1de70 20 20 20 20 20 20 62 79 20 72 65 6d 6f 76 69 6e        by removin
1de80 67 20 61 6e 79 20 6c 65 61 64 69 6e 67 20 6f 70  g any leading op
1de90 74 69 6f 6e 20 63 68 61 72 61 63 74 65 72 73 3b  tion characters;
1dea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1deb0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1dec0 20 20 20 74 68 65 72 65 66 6f 72 65 2c 20 77 65     therefore, we
1ded0 20 75 73 65 20 61 20 6e 65 77 20 73 74 72 69 6e   use a new strin
1dee0 67 20 74 6f 20 68 6f 6c 64 20 74 68 65 0d 0a 20  g to hold the.. 
1def0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df00 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1df10 6d 6f 64 69 66 69 65 64 20 61 72 67 75 6d 65 6e  modified argumen
1df20 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t...            
1df30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1df40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df50 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
1df60 65 77 41 72 67 20 3d 20 61 72 67 3b 0d 0a 0d 0a  ewArg = arg;....
1df70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df80 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1df90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dfa0 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 6c 6c      // NOTE: All
1dfb0 20 74 68 65 20 73 75 70 70 6f 72 74 65 64 20 63   the supported c
1dfc0 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 6f 70 74 69  ommand line opti
1dfd0 6f 6e 73 20 6d 75 73 74 0d 0a 20 20 20 20 20 20  ons must..      
1dfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dff0 20 20 2f 2f 20 20 20 20 20 20 20 62 65 67 69 6e    //       begin
1e000 20 77 69 74 68 20 61 6e 20 6f 70 74 69 6f 6e 20   with an option 
1e010 63 68 61 72 61 63 74 65 72 20 28 65 2e 67 2e 20  character (e.g. 
1e020 61 20 6d 69 6e 75 73 0d 0a 20 20 20 20 20 20 20  a minus..       
1e030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e040 20 2f 2f 20 20 20 20 20 20 20 6f 72 20 66 6f 72   //       or for
1e050 77 61 72 64 20 73 6c 61 73 68 29 3b 20 61 74 74  ward slash); att
1e060 65 6d 70 74 20 74 6f 20 76 61 6c 69 64 61 74 65  empt to validate
1e070 20 74 68 61 74 0d 0a 20 20 20 20 20 20 20 20 20   that..         
1e080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1e090 2f 20 20 20 20 20 20 20 6e 6f 77 2e 20 20 49 66  /       now.  If
1e0a0 20 77 65 20 66 61 69 6c 20 69 6e 20 73 74 72 69   we fail in stri
1e0b0 63 74 20 6d 6f 64 65 2c 20 77 65 20 61 72 65 20  ct mode, we are 
1e0c0 64 6f 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  done;..         
1e0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1e0e0 2f 20 20 20 20 20 20 20 6f 74 68 65 72 77 69 73  /       otherwis
1e0f0 65 2c 20 6a 75 73 74 20 73 6b 69 70 20 74 68 69  e, just skip thi
1e100 73 20 61 72 67 75 6d 65 6e 74 20 61 6e 64 20 61  s argument and a
1e110 64 76 61 6e 63 65 0d 0a 20 20 20 20 20 20 20 20  dvance..        
1e120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e130 2f 2f 20 20 20 20 20 20 20 74 6f 20 74 68 65 20  //       to the 
1e140 6e 65 78 74 20 6f 6e 65 2e 0d 0a 20 20 20 20 20  next one...     
1e150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e160 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1e170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1e180 66 20 28 21 43 68 65 63 6b 4f 70 74 69 6f 6e 28  f (!CheckOption(
1e190 72 65 66 20 6e 65 77 41 72 67 29 29 0d 0a 20 20  ref newArg))..  
1e1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1d0 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
1e1e0 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
1e1f0 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
1e200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e210 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
1e220 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
1e230 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
1e240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e250 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
1e260 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
1e270 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
1e280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e290 20 20 20 20 20 20 20 20 20 20 20 22 55 6e 73 75             "Unsu
1e2a0 70 70 6f 72 74 65 64 20 63 6f 6d 6d 61 6e 64 20  pported command 
1e2b0 6c 69 6e 65 20 61 72 67 75 6d 65 6e 74 3a 20 7b  line argument: {
1e2c0 30 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  0}",..          
1e2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2e0 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
1e2f0 28 61 72 67 29 29 2c 20 74 72 61 63 65 43 61 74  (arg)), traceCat
1e300 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
1e310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e320 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
1e330 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
1e340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e350 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1e360 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1e370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e380 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
1e390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1e3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3c0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1e3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1e3e0 4e 4f 54 45 3a 20 41 6c 6c 20 74 68 65 20 73 75  NOTE: All the su
1e3f0 70 70 6f 72 74 65 64 20 63 6f 6d 6d 61 6e 64 20  pported command 
1e400 6c 69 6e 65 20 6f 70 74 69 6f 6e 73 20 6d 75 73  line options mus
1e410 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
1e420 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1e430 20 20 20 20 68 61 76 65 20 61 20 76 61 6c 75 65      have a value
1e440 3b 20 74 68 65 72 65 66 6f 72 65 2c 20 61 74 74  ; therefore, att
1e450 65 6d 70 74 20 74 6f 20 61 64 76 61 6e 63 65 0d  empt to advance.
1e460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e470 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1e480 20 20 74 6f 20 69 74 20 6e 6f 77 2e 20 20 49 66    to it now.  If
1e490 20 77 65 20 66 61 69 6c 2c 20 77 65 20 61 72 65   we fail, we are
1e4a0 20 64 6f 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20   done...        
1e4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e4c0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1e4d0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 64 65              inde
1e4e0 78 2b 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  x++;....        
1e4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e500 69 66 20 28 69 6e 64 65 78 20 3e 3d 20 6c 65 6e  if (index >= len
1e510 67 74 68 29 0d 0a 20 20 20 20 20 20 20 20 20 20  gth)..          
1e520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1e530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e540 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
1e550 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
1e560 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
1e570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1e590 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
1e5a0 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
1e5b0 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
1e5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5d0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
1e5e0 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
1e5f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1e600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e610 20 20 20 22 4d 69 73 73 69 6e 67 20 76 61 6c 75     "Missing valu
1e620 65 20 66 6f 72 20 6f 70 74 69 6f 6e 3a 20 7b 30  e for option: {0
1e630 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
1e640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e650 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
1e660 61 72 67 29 29 2c 20 74 72 61 63 65 43 61 74 65  arg)), traceCate
1e670 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
1e680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e690 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
1e6a0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1e6b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e6c0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1e6d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1e6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e6f0 62 72 65 61 6b 3b 0d 0a 20 20 20 20 20 20 20 20  break;..        
1e700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e710 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1e720 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1e730 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e740 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1e750 3a 20 47 72 61 62 20 74 68 65 20 74 65 78 74 75  : Grab the textu
1e760 61 6c 20 76 61 6c 75 65 20 6f 66 20 74 68 69 73  al value of this
1e770 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 0d 0a 20   command line.. 
1e780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e790 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
1e7a0 6f 70 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  option...       
1e7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7c0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1e7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
1e7e0 69 6e 67 20 74 65 78 74 20 3d 20 61 72 67 73 5b  ing text = args[
1e7f0 69 6e 64 65 78 5d 3b 0d 0a 0d 0a 20 20 20 20 20  index];....     
1e800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e810 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1e820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1e830 2f 20 4e 4f 54 45 3a 20 46 69 67 75 72 65 20 6f  / NOTE: Figure o
1e840 75 74 20 77 68 69 63 68 20 63 6f 6d 6d 61 6e 64  ut which command
1e850 20 6c 69 6e 65 20 6f 70 74 69 6f 6e 20 74 68 69   line option thi
1e860 73 20 69 73 0d 0a 20 20 20 20 20 20 20 20 20 20  s is..          
1e870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1e880 20 20 20 20 20 20 20 28 62 61 73 65 64 20 6f 6e         (based on
1e890 20 61 20 70 61 72 74 69 61 6c 20 6e 61 6d 65 20   a partial name 
1e8a0 6d 61 74 63 68 29 20 61 6e 64 20 74 68 65 6e 20  match) and then 
1e8b0 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
1e8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1e8d0 20 20 20 20 20 20 74 6f 20 69 6e 74 65 72 70 72        to interpr
1e8e0 65 74 20 74 68 65 20 74 65 78 74 75 61 6c 20 76  et the textual v
1e8f0 61 6c 75 65 20 61 73 20 74 68 65 20 63 6f 72 72  alue as the corr
1e900 65 63 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ect..           
1e910 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1e920 20 20 20 20 20 20 74 79 70 65 2e 0d 0a 20 20 20        type...   
1e930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e940 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
1e950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e960 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
1e970 28 6e 65 77 41 72 67 2c 20 22 62 72 65 61 6b 22  (newArg, "break"
1e980 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
1e990 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1e9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e9b0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f             bool?
1e9c0 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
1e9d0 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
1e9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e9f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1ea00 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
1ea10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1ea30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1ea50 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
1ea60 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
1ea70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ea90 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
1eaa0 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
1eab0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
1eac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ead0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
1eae0 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
1eaf0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
1eb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
1eb30 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
1eb40 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
1eb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb60 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
1eb70 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
1eb80 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
1eb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ebb0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
1ebc0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ebd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ebe0 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
1ebf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ec00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec10 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
1ec20 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
1ec30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec40 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
1ec50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ec60 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1ec70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ec80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1ec90 20 28 28 62 6f 6f 6c 29 76 61 6c 75 65 29 0d 0a   ((bool)value)..
1eca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ecb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ecc0 42 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67 65  BreakIntoDebugge
1ecd0 72 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  r();..          
1ece0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1ecf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ed00 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
1ed10 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
1ed20 77 41 72 67 2c 20 22 63 6f 6e 66 69 67 56 65 72  wArg, "configVer
1ed30 73 69 6f 6e 22 29 29 0d 0a 20 20 20 20 20 20 20  sion"))..       
1ed40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1ed60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed70 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 63 6f  configuration.co
1ed80 6e 66 69 67 56 65 72 73 69 6f 6e 20 3d 20 74 65  nfigVersion = te
1ed90 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt;..           
1eda0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
1edb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1edc0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
1edd0 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
1ede0 41 72 67 2c 20 22 63 6f 6e 66 69 72 6d 22 29 29  Arg, "confirm"))
1edf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ee00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1ee10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
1ee30 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
1ee40 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
1ee50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee60 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
1ee70 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
1ee80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee90 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1eea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eeb0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
1eec0 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
1eed0 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
1eee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef00 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
1ef10 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
1ef20 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
1ef30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef40 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
1ef50 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
1ef60 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
1ef70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1ef90 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
1efa0 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
1efb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1efc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1efd0 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
1efe0 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
1eff0 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
1f000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1f020 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
1f030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f050 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
1f060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f080 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
1f090 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1f0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f0b0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
1f0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f0d0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1f0e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f0f0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
1f100 69 67 75 72 61 74 69 6f 6e 2e 63 6f 6e 66 69 72  iguration.confir
1f110 6d 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  m = (bool)value;
1f120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f130 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1f140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f150 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
1f160 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
1f170 2c 20 22 63 6f 72 65 46 69 6c 65 4e 61 6d 65 22  , "coreFileName"
1f180 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
1f190 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1f1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f1b0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
1f1c0 67 75 72 61 74 69 6f 6e 2e 63 6f 72 65 46 69 6c  guration.coreFil
1f1d0 65 4e 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a 20  eName = text;.. 
1f1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f1f0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1f200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f210 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
1f220 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
1f230 64 65 62 75 67 22 29 29 0d 0a 20 20 20 20 20 20  debug"))..      
1f240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f250 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1f260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f270 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
1f280 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
1f290 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1f2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f2b0 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
1f2c0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1f2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f2e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1f2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f300 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
1f310 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
1f320 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
1f330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f340 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
1f350 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
1f360 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
1f370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f390 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
1f3a0 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
1f3b0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1f3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f3d0 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
1f3e0 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
1f3f0 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
1f400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
1f420 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
1f430 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
1f440 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1f450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f460 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
1f470 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
1f480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f490 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
1f4a0 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
1f4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f4c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1f4d0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
1f4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f4f0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
1f500 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
1f510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f520 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1f530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f540 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
1f550 6e 2e 64 65 62 75 67 20 3d 20 28 62 6f 6f 6c 29  n.debug = (bool)
1f560 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
1f570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f580 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1f590 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
1f5a0 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
1f5b0 6e 65 77 41 72 67 2c 20 22 64 65 62 75 67 46 6f  newArg, "debugFo
1f5c0 72 6d 61 74 22 29 29 0d 0a 20 20 20 20 20 20 20  rmat"))..       
1f5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f5e0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1f5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f600 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65  configuration.de
1f610 62 75 67 46 6f 72 6d 61 74 20 3d 20 74 65 78 74  bugFormat = text
1f620 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1f630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
1f640 72 61 63 65 4f 70 73 2e 44 65 62 75 67 46 6f 72  raceOps.DebugFor
1f650 6d 61 74 20 3d 20 63 6f 6e 66 69 67 75 72 61 74  mat = configurat
1f660 69 6f 6e 2e 64 65 62 75 67 46 6f 72 6d 61 74 3b  ion.debugFormat;
1f670 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f680 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
1f690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f6a0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
1f6b0 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
1f6c0 2c 20 22 64 65 62 75 67 50 72 69 6f 72 69 74 79  , "debugPriority
1f6d0 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
1f6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1f6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f700 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65              obje
1f710 63 74 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  ct value = Parse
1f720 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20 20 20  Enum(..         
1f730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f740 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 54 72         typeof(Tr
1f750 61 63 65 50 72 69 6f 72 69 74 79 29 2c 20 74 65  acePriority), te
1f760 78 74 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20 20  xt, true);....  
1f770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f780 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
1f790 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
1f7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1f7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
1f7e0 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
1f7f0 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
1f800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f820 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
1f830 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
1f840 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
1f850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f860 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
1f870 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
1f880 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
1f890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f8a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
1f8b0 49 6e 76 61 6c 69 64 20 7b 30 7d 20 76 61 6c 75  Invalid {0} valu
1f8c0 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
1f8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
1f8f0 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
1f900 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
1f910 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1f920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f930 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
1f940 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
1f950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f960 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
1f970 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
1f980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f990 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1f9a0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
1f9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9c0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
1f9d0 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
1f9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9f0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1fa00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa10 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
1fa20 6e 2e 64 65 62 75 67 50 72 69 6f 72 69 74 79 20  n.debugPriority 
1fa30 3d 20 28 54 72 61 63 65 50 72 69 6f 72 69 74 79  = (TracePriority
1fa40 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
1fa50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa60 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65       TraceOps.De
1fa70 62 75 67 50 72 69 6f 72 69 74 79 20 3d 20 63 6f  bugPriority = co
1fa80 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65 62 75  nfiguration.debu
1fa90 67 50 72 69 6f 72 69 74 79 3b 0d 0a 20 20 20 20  gPriority;..    
1faa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fab0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1fac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1fad0 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
1fae0 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 64 65 73  ion(newArg, "des
1faf0 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 22 29 29  ignerFileName"))
1fb00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fb10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1fb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb30 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
1fb40 72 61 74 69 6f 6e 2e 64 65 73 69 67 6e 65 72 46  ration.designerF
1fb50 69 6c 65 4e 61 6d 65 20 3d 20 74 65 78 74 3b 0d  ileName = text;.
1fb60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1fb70 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1fb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb90 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
1fba0 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
1fbb0 20 22 64 69 72 65 63 74 6f 72 79 22 29 29 0d 0a   "directory"))..
1fbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fbd0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1fbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fbf0 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
1fc00 74 69 6f 6e 2e 64 69 72 65 63 74 6f 72 79 20 3d  tion.directory =
1fc10 20 74 65 78 74 3b 0d 0a 0d 0a 20 20 20 20 20 20   text;....      
1fc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc30 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
1fc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc50 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 2a        // NOTE: *
1fc60 53 50 45 43 49 41 4c 2a 20 4d 75 73 74 20 72 65  SPECIAL* Must re
1fc70 66 72 65 73 68 20 74 68 65 20 66 69 6c 65 20 6e  fresh the file n
1fc80 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ames..          
1fc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fca0 20 20 2f 2f 20 20 20 20 20 20 20 68 65 72 65 20    //       here 
1fcb0 62 65 63 61 75 73 65 20 74 68 65 20 75 6e 64 65  because the unde
1fcc0 72 6c 79 69 6e 67 20 64 69 72 65 63 74 6f 72 79  rlying directory
1fcd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1fcf0 20 20 20 20 20 20 20 68 61 73 20 63 68 61 6e 67         has chang
1fd00 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed...           
1fd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1fd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd40 20 73 74 72 69 6e 67 20 63 6f 72 65 46 69 6c 65   string coreFile
1fd50 4e 61 6d 65 20 3d 20 63 6f 6e 66 69 67 75 72 61  Name = configura
1fd60 74 69 6f 6e 2e 63 6f 72 65 46 69 6c 65 4e 61 6d  tion.coreFileNam
1fd70 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
1fd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd90 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73    if (!String.Is
1fda0 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 72 65  NullOrEmpty(core
1fdb0 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20  FileName))..    
1fdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fdd0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 72 65              core
1fde0 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e  FileName = Path.
1fdf0 47 65 74 46 69 6c 65 4e 61 6d 65 28 63 6f 72 65  GetFileName(core
1fe00 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20  FileName);....  
1fe10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53 74            if (St
1fe30 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
1fe40 74 79 28 63 6f 72 65 46 69 6c 65 4e 61 6d 65 29  ty(coreFileName)
1fe50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1fe60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe70 20 20 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20     coreFileName 
1fe80 3d 20 49 6e 73 74 61 6c 6c 65 72 2e 43 6f 72 65  = Installer.Core
1fe90 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  FileName;....   
1fea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1feb0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
1fec0 72 61 74 69 6f 6e 2e 63 6f 72 65 46 69 6c 65 4e  ration.coreFileN
1fed0 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69  ame = Path.Combi
1fee0 6e 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ne(..           
1fef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff00 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
1ff10 6f 6e 2e 64 69 72 65 63 74 6f 72 79 2c 20 63 6f  on.directory, co
1ff20 72 65 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a  reFileName);....
1ff30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff40 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1ff50 6e 67 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20  ng linqFileName 
1ff60 3d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  = configuration.
1ff70 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d  linqFileName;...
1ff80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ff90 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1ffa0 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
1ffb0 72 45 6d 70 74 79 28 6c 69 6e 71 46 69 6c 65 4e  rEmpty(linqFileN
1ffc0 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
1ffd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ffe0 20 20 20 20 20 20 20 6c 69 6e 71 46 69 6c 65 4e         linqFileN
1fff0 61 6d 65 20 3d 20 50 61 74 68 2e 47 65 74 46 69  ame = Path.GetFi
20000 6c 65 4e 61 6d 65 28 6c 69 6e 71 46 69 6c 65 4e  leName(linqFileN
20010 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
20020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20030 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
20040 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 6c 69  IsNullOrEmpty(li
20050 6e 71 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  nqFileName))..  
20060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c 69                li
20080 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 49 6e 73  nqFileName = Ins
20090 74 61 6c 6c 65 72 2e 4c 69 6e 71 46 69 6c 65 4e  taller.LinqFileN
200a0 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ame;....        
200b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
200c0 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
200d0 6e 2e 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d  n.linqFileName =
200e0 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a   Path.Combine(..
200f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20110 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 69  configuration.di
20120 72 65 63 74 6f 72 79 2c 20 6c 69 6e 71 46 69 6c  rectory, linqFil
20130 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
20140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20150 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 66         string ef
20160 36 46 69 6c 65 4e 61 6d 65 20 3d 20 63 6f 6e 66  6FileName = conf
20170 69 67 75 72 61 74 69 6f 6e 2e 65 66 36 46 69 6c  iguration.ef6Fil
20180 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  eName;....      
20190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
201a0 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69 6e        if (!Strin
201b0 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
201c0 65 66 36 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  ef6FileName)).. 
201d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
201e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
201f0 66 36 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74  f6FileName = Pat
20200 68 2e 47 65 74 46 69 6c 65 4e 61 6d 65 28 65 66  h.GetFileName(ef
20210 36 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  6FileName);.... 
20220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20230 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
20240 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d  tring.IsNullOrEm
20250 70 74 79 28 65 66 36 46 69 6c 65 4e 61 6d 65 29  pty(ef6FileName)
20260 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
20270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20280 20 20 20 65 66 36 46 69 6c 65 4e 61 6d 65 20 3d     ef6FileName =
20290 20 49 6e 73 74 61 6c 6c 65 72 2e 45 66 36 46 69   Installer.Ef6Fi
202a0 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20  leName;....     
202b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
202c0 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
202d0 74 69 6f 6e 2e 65 66 36 46 69 6c 65 4e 61 6d 65  tion.ef6FileName
202e0 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28   = Path.Combine(
202f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20310 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
20320 64 69 72 65 63 74 6f 72 79 2c 20 65 66 36 46 69  directory, ef6Fi
20330 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
20340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20350 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
20360 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20  esignerFileName 
20370 3d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  = configuration.
20380 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65  designerFileName
20390 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
203a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
203b0 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
203c0 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65 73 69 67  ullOrEmpty(desig
203d0 6e 65 72 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20  nerFileName)).. 
203e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
203f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
20400 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20  esignerFileName 
20410 3d 20 50 61 74 68 2e 47 65 74 46 69 6c 65 4e 61  = Path.GetFileNa
20420 6d 65 28 64 65 73 69 67 6e 65 72 46 69 6c 65 4e  me(designerFileN
20430 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
20440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20450 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
20460 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 64 65  IsNullOrEmpty(de
20470 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 29 29  signerFileName))
20480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
204a0 20 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61    designerFileNa
204b0 6d 65 20 3d 20 49 6e 73 74 61 6c 6c 65 72 2e 44  me = Installer.D
204c0 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 3b  esignerFileName;
204d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
204e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
204f0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65  configuration.de
20500 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d  signerFileName =
20510 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a   Path.Combine(..
20520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20540 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 69  configuration.di
20550 72 65 63 74 6f 72 79 2c 20 64 65 73 69 67 6e 65  rectory, designe
20560 72 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20  rFileName);..   
20570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20580 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
20590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205a0 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
205b0 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 65 66  tion(newArg, "ef
205c0 36 46 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20  6FileName"))..  
205d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
205f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20600 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
20610 6f 6e 2e 65 66 36 46 69 6c 65 4e 61 6d 65 20 3d  on.ef6FileName =
20620 20 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20   text;..        
20630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20640 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
20650 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
20660 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
20670 6e 65 77 41 72 67 2c 20 22 69 6e 73 74 61 6c 6c  newArg, "install
20680 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
20690 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
206a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
206b0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
206c0 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
206d0 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
206e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
206f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
20700 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
20710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20720 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
20730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20750 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
20760 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
20770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20790 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
207a0 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
207b0 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
207c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
207e0 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
207f0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
20800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20820 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
20830 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
20840 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
20850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20860 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
20870 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
20880 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
20890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
208a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
208b0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
208c0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
208d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
208e0 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
208f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20910 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
20920 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
20930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20940 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
20950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
20970 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
20980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
20990 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 69 6e 73  onfiguration.ins
209a0 74 61 6c 6c 20 3d 20 28 62 6f 6f 6c 29 76 61 6c  tall = (bool)val
209b0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
209c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
209d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209e0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
209f0 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
20a00 41 72 67 2c 20 22 69 6e 73 74 61 6c 6c 46 6c 61  Arg, "installFla
20a10 67 73 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  gs"))..         
20a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
20a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
20a50 6a 65 63 74 20 76 61 6c 75 65 20 3d 20 50 61 72  ject value = Par
20a60 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20  seEnum(..       
20a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a80 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28           typeof(
20a90 49 6e 73 74 61 6c 6c 46 6c 61 67 73 29 2c 20 74  InstallFlags), t
20aa0 65 78 74 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20  ext, true);.... 
20ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ac0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
20ad0 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
20ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20af0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
20b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
20b20 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
20b30 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
20b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b60 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
20b70 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
20b80 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
20b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
20bb0 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
20bc0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
20bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20bf0 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 76 61 6c  "Invalid {0} val
20c00 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
20c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
20c30 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
20c40 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
20c50 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
20c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c70 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
20c80 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
20c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ca0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
20cb0 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
20cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20cd0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
20ce0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
20cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
20d10 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
20d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d30 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
20d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d50 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
20d60 6f 6e 2e 69 6e 73 74 61 6c 6c 46 6c 61 67 73 20  on.installFlags 
20d70 3d 20 28 49 6e 73 74 61 6c 6c 46 6c 61 67 73 29  = (InstallFlags)
20d80 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
20d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20da0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
20db0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
20dc0 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
20dd0 6e 65 77 41 72 67 2c 20 22 6c 69 6e 71 46 69 6c  newArg, "linqFil
20de0 65 4e 61 6d 65 22 29 29 0d 0a 20 20 20 20 20 20  eName"))..      
20df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e00 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
20e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6c   configuration.l
20e30 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 74 65  inqFileName = te
20e40 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt;..           
20e50 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
20e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e70 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
20e80 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
20e90 41 72 67 2c 20 22 6c 6f 67 46 69 6c 65 4e 61 6d  Arg, "logFileNam
20ea0 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  e"))..          
20eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
20ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
20ee0 66 69 67 75 72 61 74 69 6f 6e 2e 6c 6f 67 46 69  figuration.logFi
20ef0 6c 65 4e 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a  leName = text;..
20f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f10 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
20f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f30 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
20f40 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
20f50 22 6e 6f 43 6f 6d 70 61 63 74 22 29 29 0d 0a 20  "noCompact")).. 
20f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f70 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
20f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f90 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
20fa0 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
20fb0 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
20fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20fd0 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
20fe0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
20ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21000 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
21010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21020 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
21030 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
21040 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
21050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
21070 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
21080 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
21090 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
210a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210b0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
210c0 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
210d0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
210e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210f0 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
21100 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
21110 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
21120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21140 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
21150 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
21160 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
21170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21180 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
21190 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
211a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
211b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
211c0 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
211d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
211e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
211f0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
21200 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21220 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
21230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21240 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
21250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21260 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
21270 72 61 74 69 6f 6e 2e 6e 6f 43 6f 6d 70 61 63 74  ration.noCompact
21280 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d   = (bool)value;.
21290 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
212a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
212b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
212c0 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
212d0 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
212e0 20 22 6e 6f 43 6f 6e 73 6f 6c 65 22 29 29 0d 0a   "noConsole"))..
212f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21300 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
21310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21320 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c         bool? val
21330 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61  ue = ParseBoolea
21340 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20  n(text);....    
21350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21360 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
21370 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
21380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21390 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
213a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
213b0 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
213c0 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75   = TraceOps.Debu
213d0 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20  gAndTrace(..    
213e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
213f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21400 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f  TracePriority.Lo
21410 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62  west, debugCallb
21420 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
21430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21440 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
21450 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
21460 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
21470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21480 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e               "In
21490 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61  valid {0} boolea
214a0 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a  n value: {1}",..
214b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
214c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
214d0 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61      ForDisplay(a
214e0 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  rg), ForDisplay(
214f0 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  text)),..       
21500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21510 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
21520 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
21530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21550 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
21560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21580 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
21590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
215a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
215b0 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20    continue;..   
215c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
215d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
215e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
215f0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
21600 75 72 61 74 69 6f 6e 2e 6e 6f 43 6f 6e 73 6f 6c  uration.noConsol
21610 65 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  e = (bool)value;
21620 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21630 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
21640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21650 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
21660 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
21670 2c 20 22 6e 6f 44 65 73 6b 74 6f 70 22 29 29 0d  , "noDesktop")).
21680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21690 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
216a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
216b0 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
216c0 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
216d0 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
216e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
216f0 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
21700 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
21710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21720 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
21730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21740 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
21750 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
21760 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
21770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21790 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
217a0 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
217b0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
217c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
217d0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
217e0 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
217f0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
21800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
21820 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
21830 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
21840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21860 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
21870 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
21880 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
21890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
218a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
218b0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
218c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
218d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
218e0 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
218f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21910 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
21920 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
21930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21940 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
21950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21960 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
21970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21980 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
21990 67 75 72 61 74 69 6f 6e 2e 6e 6f 44 65 73 6b 74  guration.noDeskt
219a0 6f 70 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65  op = (bool)value
219b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
219c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
219d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
219e0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
219f0 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
21a00 67 2c 20 22 6e 6f 4c 6f 67 22 29 29 0d 0a 20 20  g, "noLog"))..  
21a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
21a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a40 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65       bool? value
21a50 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28   = ParseBoolean(
21a60 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  text);....      
21a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a80 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
21a90 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
21aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ab0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
21ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ad0 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
21ae0 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
21af0 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
21b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
21b20 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
21b30 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
21b40 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
21b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b60 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
21b70 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
21b80 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
21b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ba0 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61             "Inva
21bb0 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20  lid {0} boolean 
21bc0 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20  value: {1}",..  
21bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21bf0 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
21c00 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65  ), ForDisplay(te
21c10 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  xt)),..         
21c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c30 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
21c40 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
21c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
21c70 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
21c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
21ca0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
21cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21cd0 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20  continue;..     
21ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21cf0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
21d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d10 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
21d20 61 74 69 6f 6e 2e 6e 6f 4c 6f 67 20 3d 20 28 62  ation.noLog = (b
21d30 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ool)value;..    
21d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d50 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
21d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
21d70 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
21d80 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e  ion(newArg, "noN
21d90 65 74 46 78 32 30 22 29 29 0d 0a 20 20 20 20 20  etFx20"))..     
21da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21db0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
21dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21dd0 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20    bool? value = 
21de0 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78  ParseBoolean(tex
21df0 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
21e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e10 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
21e20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
21e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e40 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
21e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e60 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
21e70 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
21e80 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
21e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ea0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
21eb0 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
21ec0 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
21ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ef0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
21f00 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
21f10 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
21f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f30 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
21f40 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c   {0} boolean val
21f50 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
21f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
21f80 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
21f90 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
21fa0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
21fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21fc0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
21fd0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
21fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ff0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
22000 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
22010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22020 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
22030 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
22040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22050 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
22060 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
22070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22080 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
22090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220a0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
220b0 6f 6e 2e 6e 6f 4e 65 74 46 78 32 30 20 3d 20 28  on.noNetFx20 = (
220c0 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
220d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220e0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
220f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22100 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
22110 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f  tion(newArg, "no
22120 4e 65 74 46 78 33 35 22 29 29 0d 0a 20 20 20 20  NetFx35"))..    
22130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22140 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
22150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22160 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d     bool? value =
22170 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65   ParseBoolean(te
22180 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
22190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
221a0 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
221b0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
221c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
221d0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
221e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
221f0 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54         error = T
22200 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
22210 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
22220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22230 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
22240 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
22250 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
22260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22280 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
22290 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
222a0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
222b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
222c0 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69           "Invali
222d0 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61  d {0} boolean va
222e0 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
222f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22310 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
22320 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
22330 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
22340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22350 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
22360 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
22370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22380 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
22390 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
223a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
223b0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
223c0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
223d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
223e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
223f0 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
22400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22410 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
22420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22430 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
22440 69 6f 6e 2e 6e 6f 4e 65 74 46 78 33 35 20 3d 20  ion.noNetFx35 = 
22450 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20  (bool)value;..  
22460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22470 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
22480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22490 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
224a0 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e  ption(newArg, "n
224b0 6f 4e 65 74 46 78 34 30 22 29 29 0d 0a 20 20 20  oNetFx40"))..   
224c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
224d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
224e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
224f0 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
22500 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
22510 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
22520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22530 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
22540 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
22550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22560 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
22570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22580 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
22590 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
225a0 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
225b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
225c0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
225d0 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
225e0 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
225f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
22600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22610 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
22620 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
22630 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
22640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22650 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
22660 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
22670 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
22680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
226a0 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
226b0 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
226c0 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
226d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
226e0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
226f0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
22700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22710 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
22720 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
22730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
22750 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
22760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
22780 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
22790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
227a0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
227b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
227c0 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
227d0 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 30 20 3d  tion.noNetFx40 =
227e0 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20   (bool)value;.. 
227f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22800 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
22810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22820 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
22830 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
22840 6e 6f 4e 65 74 46 78 34 35 22 29 29 0d 0a 20 20  noNetFx45"))..  
22850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22860 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22880 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65       bool? value
22890 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28   = ParseBoolean(
228a0 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  text);....      
228b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228c0 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
228d0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
228e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
228f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
22900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22910 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
22920 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
22930 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
22940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
22960 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
22970 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
22980 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
22990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229a0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
229b0 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
229c0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
229d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
229e0 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61             "Inva
229f0 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20  lid {0} boolean 
22a00 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20  value: {1}",..  
22a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a30 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
22a40 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65  ), ForDisplay(te
22a50 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  xt)),..         
22a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a70 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
22a80 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
22a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
22ab0 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
22ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
22ae0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
22af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b10 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20  continue;..     
22b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b30 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
22b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b50 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
22b60 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35 20  ation.noNetFx45 
22b70 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
22b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
22ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bb0 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
22bc0 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
22bd0 22 6e 6f 4e 65 74 46 78 34 35 31 22 29 29 0d 0a  "noNetFx451"))..
22be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22bf0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c10 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c         bool? val
22c20 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61  ue = ParseBoolea
22c30 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20  n(text);....    
22c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c50 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
22c60 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
22c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22c80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
22c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ca0 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
22cb0 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75   = TraceOps.Debu
22cc0 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20  gAndTrace(..    
22cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22cf0 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f  TracePriority.Lo
22d00 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62  west, debugCallb
22d10 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
22d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d30 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
22d40 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
22d50 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
22d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d70 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e               "In
22d80 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61  valid {0} boolea
22d90 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a  n value: {1}",..
22da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22dc0 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61      ForDisplay(a
22dd0 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  rg), ForDisplay(
22de0 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  text)),..       
22df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e00 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
22e10 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
22e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e40 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
22e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e70 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
22e80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ea0 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20    continue;..   
22eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ec0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
22ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ee0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
22ef0 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34  uration.noNetFx4
22f00 35 31 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65  51 = (bool)value
22f10 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
22f20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
22f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f40 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
22f50 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
22f60 67 2c 20 22 6e 6f 4e 65 74 46 78 34 35 32 22 29  g, "noNetFx452")
22f70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
22f80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
22f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22fa0 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20            bool? 
22fb0 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f  value = ParseBoo
22fc0 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  lean(text);.... 
22fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22fe0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
22ff0 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
23000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23010 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
23020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
23040 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
23050 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
23060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23080 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
23090 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
230a0 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
230b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230c0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
230d0 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
230e0 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
230f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23110 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f  "Invalid {0} boo
23120 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22  lean value: {1}"
23130 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
23140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23150 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
23160 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
23170 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
23180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
231a0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
231b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
231c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
231d0 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
231e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
231f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23200 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
23210 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
23220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23230 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
23240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23250 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
23260 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23270 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
23280 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74  figuration.noNet
23290 46 78 34 35 32 20 3d 20 28 62 6f 6f 6c 29 76 61  Fx452 = (bool)va
232a0 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
232b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
232c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
232d0 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
232e0 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
232f0 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34 36  wArg, "noNetFx46
23300 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
23310 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
23320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23330 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
23340 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
23350 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
23360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23370 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
23380 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
23390 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
233a0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
233b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
233c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
233d0 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
233e0 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
233f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23410 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
23420 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
23430 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
23440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
23460 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
23470 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
23480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
234a0 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
234b0 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
234c0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
234d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
234e0 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
234f0 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
23500 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
23510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23530 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
23540 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
23550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23560 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
23570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23590 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
235a0 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
235b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
235c0 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
235d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
235e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
235f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
23600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
23610 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e  onfiguration.noN
23620 65 74 46 78 34 36 20 3d 20 28 62 6f 6f 6c 29 76  etFx46 = (bool)v
23630 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
23640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
23650 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23660 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
23670 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
23680 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34  ewArg, "noNetFx4
23690 36 31 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  61"))..         
236a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
236b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
236c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
236d0 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73  ol? value = Pars
236e0 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d  eBoolean(text);.
236f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
23700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
23710 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
23720 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
23730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
23740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23760 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f    error = TraceO
23770 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
23780 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
23790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237a0 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f         TracePrio
237b0 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62  rity.Lowest, deb
237c0 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ugCallback,..   
237d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237f0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
23800 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
23810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23830 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d      "Invalid {0}
23840 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20   boolean value: 
23850 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
23860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23870 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
23880 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
23890 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
238a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
238b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
238c0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
238d0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
238e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
238f0 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
23900 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
23910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23920 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
23930 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
23940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23950 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
23960 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
23970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23980 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
23990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239a0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
239b0 6f 4e 65 74 46 78 34 36 31 20 3d 20 28 62 6f 6f  oNetFx461 = (boo
239c0 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
239d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
239f0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
23a00 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
23a10 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74  n(newArg, "noNet
23a20 46 78 34 36 32 22 29 29 0d 0a 20 20 20 20 20 20  Fx462"))..      
23a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
23a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a60 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
23a70 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
23a80 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
23a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23aa0 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
23ab0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
23ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ad0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
23ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23af0 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
23b00 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
23b10 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
23b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b30 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
23b40 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
23b50 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
23b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b80 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
23b90 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
23ba0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
23bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23bc0 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
23bd0 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
23be0 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
23bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
23c10 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
23c20 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
23c30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
23c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c50 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
23c60 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
23c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23c80 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
23c90 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
23ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23cb0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
23cc0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
23cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ce0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
23cf0 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
23d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d10 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
23d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d30 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
23d40 6e 2e 6e 6f 4e 65 74 46 78 34 36 32 20 3d 20 28  n.noNetFx462 = (
23d50 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
23d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d70 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
23d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d90 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
23da0 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f  tion(newArg, "no
23db0 4e 65 74 46 78 34 37 22 29 29 0d 0a 20 20 20 20  NetFx47"))..    
23dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23dd0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
23de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23df0 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d     bool? value =
23e00 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65   ParseBoolean(te
23e10 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
23e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e30 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
23e40 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
23e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
23e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e80 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54         error = T
23e90 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
23ea0 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
23eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ec0 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
23ed0 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
23ee0 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
23ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f10 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
23f20 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
23f30 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
23f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f50 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69           "Invali
23f60 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61  d {0} boolean va
23f70 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
23f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23fa0 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
23fb0 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
23fc0 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
23fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23fe0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
23ff0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
24000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24010 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
24020 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
24030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24040 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
24050 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
24060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
24080 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
24090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240a0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
240b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240c0 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
240d0 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 37 20 3d 20  ion.noNetFx47 = 
240e0 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20  (bool)value;..  
240f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24100 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
24110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24120 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
24130 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e  ption(newArg, "n
24140 6f 4e 65 74 46 78 34 37 31 22 29 29 0d 0a 20 20  oNetFx471"))..  
24150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24160 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
24170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24180 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65       bool? value
24190 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28   = ParseBoolean(
241a0 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  text);....      
241b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
241c0 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
241d0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
241e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
241f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
24200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24210 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
24220 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
24230 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
24240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
24260 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
24270 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
24280 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
24290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242a0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
242b0 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
242c0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
242d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242e0 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61             "Inva
242f0 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20  lid {0} boolean 
24300 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20  value: {1}",..  
24310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24330 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
24340 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65  ), ForDisplay(te
24350 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  xt)),..         
24360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24370 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
24380 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
24390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
243a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
243b0 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
243c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
243d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
243e0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
243f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24410 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20  continue;..     
24420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24430 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
24440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24450 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
24460 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 37 31  ation.noNetFx471
24470 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d   = (bool)value;.
24480 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24490 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
244a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244b0 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
244c0 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
244d0 20 22 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69   "noRuntimeVersi
244e0 6f 6e 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  on"))..         
244f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
24500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
24510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
24520 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73  ol? value = Pars
24530 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d  eBoolean(text);.
24540 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
24550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
24560 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
24570 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
24580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
24590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
245a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
245b0 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f    error = TraceO
245c0 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
245d0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
245e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
245f0 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f         TracePrio
24600 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62  rity.Lowest, deb
24610 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ugCallback,..   
24620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24640 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
24650 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
24660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24680 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d      "Invalid {0}
24690 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20   boolean value: 
246a0 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
246b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246c0 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
246d0 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
246e0 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
246f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24710 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
24720 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
24730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24740 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
24750 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
24760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24770 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
24780 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
24790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247a0 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
247b0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
247c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247d0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
247e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247f0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
24800 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 20  oRuntimeVersion 
24810 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
24820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24830 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
24840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24850 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
24860 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
24870 22 6e 6f 54 72 61 63 65 22 29 29 0d 0a 20 20 20  "noTrace"))..   
24880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24890 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
248a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
248b0 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
248c0 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
248d0 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
248e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
248f0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
24900 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
24910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24920 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
24930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24940 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
24950 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
24960 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
24970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24980 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
24990 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
249a0 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
249b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
249c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
249d0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
249e0 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
249f0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
24a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a10 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
24a20 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
24a30 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
24a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a60 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
24a70 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
24a80 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
24a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24aa0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
24ab0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
24ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
24ae0 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
24af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
24b10 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
24b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
24b40 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
24b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b60 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
24b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b80 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
24b90 74 69 6f 6e 2e 6e 6f 54 72 61 63 65 20 3d 20 28  tion.noTrace = (
24ba0 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
24bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24bc0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
24bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24be0 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
24bf0 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f  tion(newArg, "no
24c00 56 73 32 30 30 35 22 29 29 0d 0a 20 20 20 20 20  Vs2005"))..     
24c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c40 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20    bool? value = 
24c50 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78  ParseBoolean(tex
24c60 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
24c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c80 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
24c90 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
24ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24cb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
24cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24cd0 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
24ce0 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
24cf0 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
24d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d10 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
24d20 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
24d30 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
24d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24d60 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
24d70 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
24d80 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
24d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24da0 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
24db0 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c   {0} boolean val
24dc0 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
24dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
24df0 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
24e00 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
24e10 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
24e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e30 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
24e40 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
24e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e60 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
24e70 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
24e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e90 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
24ea0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
24eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
24ed0 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
24ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ef0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
24f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f10 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
24f20 6f 6e 2e 6e 6f 56 73 32 30 30 35 20 3d 20 28 62  on.noVs2005 = (b
24f30 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ool)value;..    
24f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f50 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
24f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
24f70 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
24f80 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 56  ion(newArg, "noV
24f90 73 32 30 30 38 22 29 29 0d 0a 20 20 20 20 20 20  s2008"))..      
24fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fb0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
24fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fd0 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
24fe0 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
24ff0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
25000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25010 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
25020 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
25030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25040 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
25050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25060 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
25070 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
25080 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
25090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250a0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
250b0 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
250c0 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
250d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250f0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
25100 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
25110 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
25120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25130 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
25140 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
25150 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
25160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
25180 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
25190 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
251a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
251b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251c0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
251d0 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
251e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251f0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
25200 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
25210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25220 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
25230 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
25240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25250 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
25260 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
25270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25280 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
25290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252a0 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
252b0 6e 2e 6e 6f 56 73 32 30 30 38 20 3d 20 28 62 6f  n.noVs2008 = (bo
252c0 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
252d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
252f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
25300 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
25310 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 56 73  on(newArg, "noVs
25320 32 30 31 30 22 29 29 0d 0a 20 20 20 20 20 20 20  2010"))..       
25330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25340 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
25350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25360 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61  bool? value = Pa
25370 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29  rseBoolean(text)
25380 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
25390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253a0 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
253b0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
253c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
253e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253f0 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
25400 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
25410 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
25420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25430 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
25440 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
25450 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
25460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25480 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
25490 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
254a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
254b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
254c0 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b        "Invalid {
254d0 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  0} boolean value
254e0 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
254f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25500 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
25510 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f  Display(arg), Fo
25520 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c  rDisplay(text)),
25530 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25550 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
25560 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
25570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25580 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72           if (str
25590 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ict)..          
255a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255b0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
255c0 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
255d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255e0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
255f0 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
25600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25610 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
25620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25630 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
25640 2e 6e 6f 56 73 32 30 31 30 20 3d 20 28 62 6f 6f  .noVs2010 = (boo
25650 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
25660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25670 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
25680 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
25690 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
256a0 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 56 73 32  n(newArg, "noVs2
256b0 30 31 32 22 29 29 0d 0a 20 20 20 20 20 20 20 20  012"))..        
256c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256d0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
256e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
256f0 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
25700 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
25710 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
25720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25730 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
25740 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
25750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25760 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
25770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25780 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
25790 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
257a0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
257b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
257c0 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
257d0 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
257e0 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
257f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25810 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
25820 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
25830 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25850 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
25860 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
25870 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
25880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25890 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
258a0 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
258b0 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
258c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
258d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
258e0 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
258f0 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
25900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25910 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
25920 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
25930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25940 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
25950 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
25960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25970 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
25980 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
25990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
259a0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
259b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
259c0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
259d0 6e 6f 56 73 32 30 31 32 20 3d 20 28 62 6f 6f 6c  noVs2012 = (bool
259e0 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
259f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a00 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
25a10 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
25a20 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
25a30 28 6e 65 77 41 72 67 2c 20 22 6e 6f 56 73 32 30  (newArg, "noVs20
25a40 31 33 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  13"))..         
25a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
25a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
25a80 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73  ol? value = Pars
25a90 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d  eBoolean(text);.
25aa0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
25ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
25ac0 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
25ad0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
25ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
25af0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b10 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f    error = TraceO
25b20 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
25b30 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
25b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b50 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f         TracePrio
25b60 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62  rity.Lowest, deb
25b70 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ugCallback,..   
25b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ba0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
25bb0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
25bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25be0 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d      "Invalid {0}
25bf0 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20   boolean value: 
25c00 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
25c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
25c30 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
25c40 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
25c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c70 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
25c80 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
25c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ca0 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
25cb0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
25cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25cd0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
25ce0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
25cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d00 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
25d10 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
25d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
25d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d50 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
25d60 6f 56 73 32 30 31 33 20 3d 20 28 62 6f 6f 6c 29  oVs2013 = (bool)
25d70 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
25d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d90 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
25da0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
25db0 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
25dc0 6e 65 77 41 72 67 2c 20 22 6e 6f 56 73 32 30 31  newArg, "noVs201
25dd0 35 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  5"))..          
25de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
25df0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25e00 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
25e10 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
25e20 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
25e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
25e50 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
25e60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
25e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ea0 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
25eb0 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
25ec0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ee0 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
25ef0 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
25f00 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
25f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f30 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
25f40 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
25f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25f70 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
25f80 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
25f90 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
25fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25fb0 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
25fc0 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
25fd0 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
25fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26000 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
26010 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
26020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26030 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
26040 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
26050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26060 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
26070 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
26080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26090 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
260a0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
260b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
260c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
260d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
260e0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
260f0 56 73 32 30 31 35 20 3d 20 28 62 6f 6f 6c 29 76  Vs2015 = (bool)v
26100 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
26110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
26120 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26130 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
26140 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
26150 65 77 41 72 67 2c 20 22 6e 6f 56 73 32 30 31 37  ewArg, "noVs2017
26160 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
26170 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
26180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26190 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
261a0 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
261b0 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
261c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
261d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
261e0 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
261f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26200 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
26210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26230 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
26240 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
26250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26270 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
26280 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
26290 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
262a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
262c0 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
262d0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
262e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26300 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
26310 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
26320 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
26330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26340 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
26350 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
26360 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
26370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26390 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
263a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
263b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
263c0 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
263d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
263e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
263f0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
26400 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
26410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26420 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
26430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
26450 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
26460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
26470 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56  onfiguration.noV
26480 73 32 30 31 37 20 3d 20 28 62 6f 6f 6c 29 76 61  s2017 = (bool)va
26490 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
264a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
264b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
264c0 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
264d0 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
264e0 77 41 72 67 2c 20 22 70 65 72 55 73 65 72 22 29  wArg, "perUser")
264f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
26500 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
26510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26520 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20            bool? 
26530 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f  value = ParseBoo
26540 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  lean(text);.... 
26550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26560 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
26570 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
26580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26590 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
265a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
265b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
265c0 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
265d0 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
265e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
265f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26600 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
26610 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
26620 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
26630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26640 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
26650 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
26660 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
26670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26690 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f  "Invalid {0} boo
266a0 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22  lean value: {1}"
266b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
266c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
266d0 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
266e0 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
266f0 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
26700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26720 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
26730 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
26740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26750 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
26760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26780 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
26790 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
267a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
267b0 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
267c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
267d0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
267e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
267f0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
26800 66 69 67 75 72 61 74 69 6f 6e 2e 70 65 72 55 73  figuration.perUs
26810 65 72 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65  er = (bool)value
26820 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
26830 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
26840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26850 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
26860 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
26870 67 2c 20 22 70 72 6f 76 69 64 65 72 46 6c 61 67  g, "providerFlag
26880 73 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  s"))..          
26890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
268a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
268b0 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a               obj
268c0 65 63 74 20 76 61 6c 75 65 20 3d 20 50 61 72 73  ect value = Pars
268d0 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20 20 20  eEnum(..        
268e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
268f0 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 50          typeof(P
26900 72 6f 76 69 64 65 72 46 6c 61 67 73 29 2c 20 74  roviderFlags), t
26910 65 78 74 2c 20 74 72 75 65 29 3b 0d 0a 0d 0a 20  ext, true);.... 
26920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26930 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76             if (v
26940 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
26950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26960 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
26970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
26990 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
269a0 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
269b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
269c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
269d0 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
269e0 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
269f0 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
26a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a10 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
26a20 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
26a30 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
26a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a60 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 76 61 6c  "Invalid {0} val
26a70 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
26a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
26aa0 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
26ab0 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
26ac0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
26ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ae0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
26af0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
26b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b10 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
26b20 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
26b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b40 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
26b50 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
26b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b70 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
26b80 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
26b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ba0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
26bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26bc0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
26bd0 6f 6e 2e 70 72 6f 76 69 64 65 72 46 6c 61 67 73  on.providerFlags
26be0 20 3d 20 28 50 72 6f 76 69 64 65 72 46 6c 61 67   = (ProviderFlag
26bf0 73 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  s)value;..      
26c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c10 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
26c20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
26c30 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
26c40 6e 28 6e 65 77 41 72 67 2c 20 22 72 65 67 69 73  n(newArg, "regis
26c50 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 22 29  tryLogFileName")
26c60 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
26c70 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
26c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c90 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
26ca0 75 72 61 74 69 6f 6e 2e 72 65 67 69 73 74 72 79  uration.registry
26cb0 4c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20 74 65  LogFileName = te
26cc0 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  xt;..           
26cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
26ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26cf0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
26d00 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
26d10 41 72 67 2c 20 22 72 65 67 69 73 74 72 79 56 65  Arg, "registryVe
26d20 72 73 69 6f 6e 22 29 29 0d 0a 20 20 20 20 20 20  rsion"))..      
26d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d40 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
26d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d60 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 72   configuration.r
26d70 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e 20 3d  egistryVersion =
26d80 20 74 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20   text;..        
26d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26da0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
26db0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
26dc0 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
26dd0 6e 65 77 41 72 67 2c 20 22 73 74 72 69 63 74 22  newArg, "strict"
26de0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
26df0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
26e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e10 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f             bool?
26e20 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
26e30 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
26e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e50 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
26e60 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
26e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e80 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
26e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
26eb0 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
26ec0 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
26ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ef0 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
26f00 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
26f10 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
26f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
26f40 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
26f50 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
26f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f80 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
26f90 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
26fa0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
26fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26fc0 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
26fd0 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
26fe0 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
26ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27010 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
27020 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27040 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
27050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27070 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
27080 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
27090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
270a0 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
270b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
270c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
270d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
270e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
270f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
27110 20 4e 4f 54 45 3a 20 41 6c 6c 6f 77 20 74 68 65   NOTE: Allow the
27120 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 61 72   command line ar
27130 67 75 6d 65 6e 74 73 20 74 6f 0d 0a 20 20 20 20  guments to..    
27140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27150 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
27160 20 6f 76 65 72 72 69 64 65 20 74 68 65 20 22 73   override the "s
27170 74 72 69 63 74 6e 65 73 73 22 20 73 65 74 74 69  trictness" setti
27180 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ng..            
27190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
271a0 2f 2f 20 20 20 20 20 20 20 70 72 6f 76 69 64 65  //       provide
271b0 64 20 62 79 20 6f 75 72 20 63 61 6c 6c 65 72 2e  d by our caller.
271c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
271d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
271e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
271f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
27200 72 69 63 74 20 3d 20 28 62 6f 6f 6c 29 76 61 6c  rict = (bool)val
27210 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
27220 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
27230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27240 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
27250 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
27260 41 72 67 2c 20 22 74 68 72 6f 77 4f 6e 4d 69 73  Arg, "throwOnMis
27270 73 69 6e 67 22 29 29 0d 0a 20 20 20 20 20 20 20  sing"))..       
27280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27290 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
272a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272b0 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61  bool? value = Pa
272c0 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29  rseBoolean(text)
272d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
272e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272f0 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
27300 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
27310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27320 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27340 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
27350 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
27360 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
27370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27380 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
27390 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
273a0 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
273b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
273c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
273d0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
273e0 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
273f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27410 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b        "Invalid {
27420 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  0} boolean value
27430 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
27440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27450 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
27460 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f  Display(arg), Fo
27470 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c  rDisplay(text)),
27480 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274a0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
274b0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
274c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274d0 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72           if (str
274e0 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ict)..          
274f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27500 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
27510 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
27520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27530 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
27540 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
27550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27560 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
27570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27580 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
27590 2e 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 20  .throwOnMissing 
275a0 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
275b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
275c0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
275d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
275e0 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
275f0 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
27600 22 74 72 61 63 65 46 6f 72 6d 61 74 22 29 29 0d  "traceFormat")).
27610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27620 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
27630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27640 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
27650 61 74 69 6f 6e 2e 74 72 61 63 65 46 6f 72 6d 61  ation.traceForma
27660 74 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20 20  t = text;..     
27670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27680 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
27690 54 72 61 63 65 46 6f 72 6d 61 74 20 3d 20 63 6f  TraceFormat = co
276a0 6e 66 69 67 75 72 61 74 69 6f 6e 2e 74 72 61 63  nfiguration.trac
276b0 65 46 6f 72 6d 61 74 3b 0d 0a 20 20 20 20 20 20  eFormat;..      
276c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
276d0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
276e0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
276f0 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
27700 6e 28 6e 65 77 41 72 67 2c 20 22 74 72 61 63 65  n(newArg, "trace
27710 50 72 69 6f 72 69 74 79 22 29 29 0d 0a 20 20 20  Priority"))..   
27720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27730 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27750 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
27760 20 3d 20 50 61 72 73 65 45 6e 75 6d 28 0d 0a 20   = ParseEnum(.. 
27770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
27790 79 70 65 6f 66 28 54 72 61 63 65 50 72 69 6f 72  ypeof(TracePrior
277a0 69 74 79 29 2c 20 74 65 78 74 2c 20 74 72 75 65  ity), text, true
277b0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
277c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
277d0 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
277e0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
277f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27800 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
27810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27820 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
27830 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
27840 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
27850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27860 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
27870 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
27880 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
27890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
278a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
278b0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
278c0 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
278d0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
278e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
278f0 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
27900 7b 30 7d 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  {0} value: {1}",
27910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27930 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
27940 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
27950 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
27960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
27980 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
27990 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
279a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
279b0 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
279c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
279d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
279e0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
279f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a10 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
27a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a30 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
27a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a50 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
27a60 69 67 75 72 61 74 69 6f 6e 2e 74 72 61 63 65 50  iguration.traceP
27a70 72 69 6f 72 69 74 79 20 3d 20 28 54 72 61 63 65  riority = (Trace
27a80 50 72 69 6f 72 69 74 79 29 76 61 6c 75 65 3b 0d  Priority)value;.
27a90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
27ab0 63 65 4f 70 73 2e 54 72 61 63 65 50 72 69 6f 72  ceOps.TracePrior
27ac0 69 74 79 20 3d 20 63 6f 6e 66 69 67 75 72 61 74  ity = configurat
27ad0 69 6f 6e 2e 74 72 61 63 65 50 72 69 6f 72 69 74  ion.tracePriorit
27ae0 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
27af0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
27b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27b10 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
27b20 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
27b30 72 67 2c 20 22 76 65 72 62 6f 73 65 22 29 29 0d  rg, "verbose")).
27b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27b50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
27b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27b70 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
27b80 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
27b90 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
27ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27bb0 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
27bc0 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
27bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27be0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
27bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27c00 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
27c10 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
27c20 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
27c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27c50 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
27c60 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
27c70 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
27c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27c90 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
27ca0 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
27cb0 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
27cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49                "I
27ce0 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
27cf0 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
27d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
27d30 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
27d40 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
27d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
27d70 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
27d80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27da0 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
27db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27dd0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
27de0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
27df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e00 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
27e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
27e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e40 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
27e50 67 75 72 61 74 69 6f 6e 2e 76 65 72 62 6f 73 65  guration.verbose
27e60 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d   = (bool)value;.
27e70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27e80 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
27e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27ea0 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
27eb0 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
27ec0 20 22 76 73 56 65 72 73 69 6f 6e 53 75 66 66 69   "vsVersionSuffi
27ed0 78 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  x"))..          
27ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
27ef0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27f00 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
27f10 66 69 67 75 72 61 74 69 6f 6e 2e 76 73 56 65 72  figuration.vsVer
27f20 73 69 6f 6e 53 75 66 66 69 78 20 3d 20 74 65 78  sionSuffix = tex
27f30 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
27f40 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
27f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f60 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
27f70 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
27f80 72 67 2c 20 22 77 68 61 74 49 66 22 29 29 0d 0a  rg, "whatIf"))..
27f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27fa0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
27fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27fc0 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c         bool? val
27fd0 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61  ue = ParseBoolea
27fe0 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20  n(text);....    
27ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28000 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
28010 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
28020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28030 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
28040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28050 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
28060 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75   = TraceOps.Debu
28070 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20  gAndTrace(..    
28080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
280a0 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f  TracePriority.Lo
280b0 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62  west, debugCallb
280c0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
280d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
280e0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
280f0 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
28100 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
28110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28120 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e               "In
28130 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61  valid {0} boolea
28140 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a  n value: {1}",..
28150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28170 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61      ForDisplay(a
28180 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  rg), ForDisplay(
28190 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  text)),..       
281a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
281b0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
281c0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
281d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
281e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
281f0 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
28200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28220 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
28230 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28250 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20    continue;..   
28260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28270 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
28280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28290 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
282a0 75 72 61 74 69 6f 6e 2e 77 68 61 74 49 66 20 3d  uration.whatIf =
282b0 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20   (bool)value;.. 
282c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
282d0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
282e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
282f0 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
28300 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
28310 77 6f 77 36 34 22 29 29 0d 0a 20 20 20 20 20 20  wow64"))..      
28320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28330 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
28340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28350 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
28360 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
28370 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
28380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28390 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
283a0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
283b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
283c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
283d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
283e0 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
283f0 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
28400 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
28410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28420 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50            TraceP
28430 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
28440 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
28450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28470 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
28480 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
28490 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
284a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
284b0 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20         "Invalid 
284c0 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
284d0 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
284e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
284f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
28500 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
28510 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
28520 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
28530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28540 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
28550 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
28560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28570 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
28580 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
28590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
285a0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
285b0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
285c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
285d0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
285e0 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
285f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28600 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
28610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28620 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
28630 6e 2e 77 6f 77 36 34 20 3d 20 28 62 6f 6f 6c 29  n.wow64 = (bool)
28640 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
28650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28660 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
28670 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
28680 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28690 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
286a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
286b0 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
286c0 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
286d0 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
286e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
286f0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
28700 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
28710 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
28720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
28740 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
28750 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
28760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 55                "U
28780 6e 73 75 70 70 6f 72 74 65 64 20 63 6f 6d 6d 61  nsupported comma
28790 6e 64 20 6c 69 6e 65 20 6f 70 74 69 6f 6e 3a 20  nd line option: 
287a0 7b 30 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {0}",..         
287b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
287c0 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
287d0 79 28 61 72 67 29 29 2c 20 74 72 61 63 65 43 61  y(arg)), traceCa
287e0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
287f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28800 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
28810 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
28820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28830 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
28840 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
28850 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
28860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28870 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
28880 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
28890 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20  rn true;..      
288a0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
288b0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
288c0 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29  ch (Exception e)
288d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
288e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
288f0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
28900 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
28910 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69  TracePriority.Hi
28920 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20  ghest,..        
28930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28940 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74  debugCallback, t
28950 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 65 2c  raceCallback, e,
28960 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
28970 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
28980 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
28990 22 46 61 69 6c 65 64 20 74 6f 20 6d 6f 64 69 66  "Failed to modif
289a0 79 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  y configuration.
289b0 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
289c0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
289d0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
289e0 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
289f0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
28a00 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
28a10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a40 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
28a50 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49          [MethodI
28a60 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70  mpl(MethodImplOp
28a70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67  tions.NoInlining
28a80 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]..            
28a90 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f  public static bo
28aa0 6f 6c 20 50 72 6f 63 65 73 73 28 0d 0a 20 20 20  ol Process(..   
28ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
28ac0 69 6e 67 5b 5d 20 61 72 67 73 2c 0d 0a 20 20 20  ing[] args,..   
28ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 43 6f 6e               Con
28ae0 66 69 67 75 72 61 74 69 6f 6e 20 63 6f 6e 66 69  figuration confi
28af0 67 75 72 61 74 69 6f 6e 2c 0d 0a 20 20 20 20 20  guration,..     
28b00 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
28b10 73 74 72 69 63 74 2c 0d 0a 20 20 20 20 20 20 20  strict,..       
28b20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
28b30 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20 20 20 20  ing error..     
28b40 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
28b50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
28b60 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79               try
28b70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28b80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
28b90 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
28ba0 66 69 67 75 72 61 74 69 6f 6e 20 3d 3d 20 6e 75  figuration == nu
28bb0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
28bc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
28bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28be0 20 20 20 20 65 72 72 6f 72 20 3d 20 22 49 6e 76      error = "Inv
28bf0 61 6c 69 64 20 63 6f 6e 66 69 67 75 72 61 74 69  alid configurati
28c00 6f 6e 2e 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  on.";..         
28c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
28c20 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
28c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28c40 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
28c50 20 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d             Assem
28c60 62 6c 79 20 61 73 73 65 6d 62 6c 79 20 3d 20 63  bly assembly = c
28c70 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 61 73 73  onfiguration.ass
28c80 65 6d 62 6c 79 3b 0d 0a 0d 0a 20 20 20 20 20 20  embly;....      
28c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
28ca0 20 28 61 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75   (assembly == nu
28cb0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
28cc0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
28cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ce0 20 20 20 20 65 72 72 6f 72 20 3d 20 22 49 6e 76      error = "Inv
28cf0 61 6c 69 64 20 61 73 73 65 6d 62 6c 79 2e 22 3b  alid assembly.";
28d00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28d10 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
28d20 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
28d30 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
28d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28d50 20 20 20 20 20 20 69 66 20 28 21 63 6f 6e 66 69        if (!confi
28d60 67 75 72 61 74 69 6f 6e 2e 6e 6f 54 72 61 63 65  guration.noTrace
28d70 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
28d80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
28d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28da0 20 20 69 66 20 28 21 63 6f 6e 66 69 67 75 72 61    if (!configura
28db0 74 69 6f 6e 2e 6e 6f 4c 6f 67 20 26 26 0d 0a 20  tion.noLog &&.. 
28dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28dd0 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
28de0 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28  g.IsNullOrEmpty(
28df0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6c 6f  configuration.lo
28e00 67 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  gFileName))..   
28e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e40 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
28e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e60 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 55 73 65      // NOTE: Use
28e70 20 74 68 65 20 64 65 66 61 75 6c 74 20 6c 6f 67   the default log
28e80 20 66 69 6c 65 20 6e 61 6d 65 2e 0d 0a 20 20 20   file name...   
28e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ea0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
28eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ec0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
28ed0 72 61 74 69 6f 6e 2e 6c 6f 67 46 69 6c 65 4e 61  ration.logFileNa
28ee0 6d 65 20 3d 20 47 65 74 4c 6f 67 46 69 6c 65 4e  me = GetLogFileN
28ef0 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
28f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f10 20 20 20 20 20 20 22 74 72 61 63 65 22 29 3b 0d        "trace");.
28f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28f30 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
28f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f50 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
28f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
28f90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28fa0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 63 6f           if (!co
28fb0 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 43 6f  nfiguration.noCo
28fc0 6e 73 6f 6c 65 29 0d 0a 20 20 20 20 20 20 20 20  nsole)..        
28fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28fe0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
28ff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29000 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
29010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29020 2f 20 4e 4f 54 45 3a 20 49 6e 20 76 65 72 62 6f  / NOTE: In verbo
29030 73 65 20 6d 6f 64 65 2c 20 64 65 62 75 67 20 6f  se mode, debug o
29040 75 74 70 75 74 20 28 74 68 61 74 20 6d 65 65 74  utput (that meet
29050 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
29060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
29070 2f 20 20 20 20 20 20 20 74 68 65 20 63 6f 6e 66  /       the conf
29080 69 67 75 72 65 64 20 70 72 69 6f 72 69 74 79 20  igured priority 
29090 63 72 69 74 65 72 69 61 29 20 77 69 6c 6c 20 62  criteria) will b
290a0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
290b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
290c0 2f 20 20 20 20 20 20 20 64 69 73 70 6c 61 79 65  /       displaye
290d0 64 20 74 6f 20 74 68 65 20 63 6f 6e 73 6f 6c 65  d to the console
290e0 3b 20 6f 74 68 65 72 77 69 73 65 2c 20 74 72 61  ; otherwise, tra
290f0 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ce..            
29100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29110 2f 2f 20 20 20 20 20 20 20 6f 75 74 70 75 74 20  //       output 
29120 28 74 68 61 74 20 6d 65 65 74 73 20 74 68 65 20  (that meets the 
29130 63 6f 6e 66 69 67 75 72 65 64 20 70 72 69 6f 72  configured prior
29140 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ity..           
29150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29160 20 2f 2f 20 20 20 20 20 20 20 63 72 69 74 65 72   //       criter
29170 69 61 29 20 77 69 6c 6c 20 62 65 20 64 69 73 70  ia) will be disp
29180 6c 61 79 65 64 20 74 6f 20 74 68 65 20 63 6f 6e  layed to the con
29190 73 6f 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20  sole...         
291a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
291b0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
291c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
291d0 20 20 20 69 66 20 28 63 6f 6e 66 69 67 75 72 61     if (configura
291e0 74 69 6f 6e 2e 64 65 62 75 67 29 0d 0a 20 20 20  tion.debug)..   
291f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29200 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
29210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29220 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
29230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29250 2f 2f 20 4e 4f 54 45 3a 20 41 64 64 20 74 68 65  // NOTE: Add the
29260 20 63 6f 6e 73 6f 6c 65 20 74 72 61 63 65 20 6c   console trace l
29270 69 73 74 65 6e 65 72 20 74 6f 20 74 68 65 0d 0a  istener to the..
29280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292a0 2f 2f 20 20 20 20 20 20 20 6c 69 73 74 20 6f 66  //       list of
292b0 20 74 72 61 63 65 20 6c 69 73 74 65 6e 65 72 73   trace listeners
292c0 20 6d 61 69 6e 74 61 69 6e 65 64 20 62 79 0d 0a   maintained by..
292d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292f0 2f 2f 20 20 20 20 20 20 20 74 68 65 20 54 72 61  //       the Tra
29300 63 65 4f 70 73 20 63 6c 61 73 73 20 28 69 2e 65  ceOps class (i.e
29310 2e 20 6f 6e 6c 79 20 6d 65 73 73 61 67 65 73 0d  . only messages.
29320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29340 20 2f 2f 20 20 20 20 20 20 20 74 68 61 74 20 6d   //       that m
29350 65 65 74 20 74 68 65 20 64 65 62 75 67 20 70 72  eet the debug pr
29360 69 6f 72 69 74 79 20 77 69 6c 6c 20 62 65 0d 0a  iority will be..
29370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29390 2f 2f 20 20 20 20 20 20 20 73 65 65 6e 20 6f 6e  //       seen on
293a0 20 74 68 65 20 63 6f 6e 73 6f 6c 65 29 2e 0d 0a   the console)...
293b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
293c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
293d0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
293e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
293f0 20 20 20 20 54 72 61 63 65 4f 70 73 2e 53 65 74      TraceOps.Set
29400 75 70 44 65 62 75 67 4c 69 73 74 65 6e 65 72 73  upDebugListeners
29410 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
29420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29430 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
29440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29450 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
29460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29470 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
29480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29490 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
294a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
294b0 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
294c0 3a 20 41 64 64 20 74 68 65 20 63 6f 6e 73 6f 6c  : Add the consol
294d0 65 20 74 72 61 63 65 20 6c 69 73 74 65 6e 65 72  e trace listener
294e0 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20 20 20   to the..       
294f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29500 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
29510 20 20 6c 69 73 74 20 6f 66 20 62 75 69 6c 74 2d    list of built-
29520 69 6e 20 74 72 61 63 65 20 6c 69 73 74 65 6e 65  in trace listene
29530 72 73 20 28 69 2e 65 2e 0d 0a 20 20 20 20 20 20  rs (i.e...      
29540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29550 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
29560 20 20 20 6f 6e 6c 79 20 6d 65 73 73 61 67 65 73     only messages
29570 20 74 68 61 74 20 6d 65 65 74 20 74 68 65 20 74   that meet the t
29580 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20  race..          
29590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295a0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 70        //       p
295b0 72 69 6f 72 69 74 79 20 77 69 6c 6c 20 62 65 20  riority will be 
295c0 73 65 65 6e 20 6f 6e 20 74 68 65 20 63 6f 6e 73  seen on the cons
295d0 6f 6c 65 29 2e 0d 0a 20 20 20 20 20 20 20 20 20  ole)...         
295e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295f0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
29600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29610 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
29620 2e 4c 69 73 74 65 6e 65 72 73 2e 41 64 64 28 6e  .Listeners.Add(n
29630 65 77 20 43 6f 6e 73 6f 6c 65 54 72 61 63 65 4c  ew ConsoleTraceL
29640 69 73 74 65 6e 65 72 28 29 29 3b 0d 0a 20 20 20  istener());..   
29650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29660 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
29670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29680 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
29690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
296a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
296b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
296d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
296e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
296f0 20 20 20 20 69 66 20 28 21 63 6f 6e 66 69 67 75      if (!configu
29700 72 61 74 69 6f 6e 2e 6e 6f 4c 6f 67 20 26 26 0d  ration.noLog &&.
29710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29720 20 20 20 20 20 20 20 20 20 20 20 20 20 21 53 74               !St
29730 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70  ring.IsNullOrEmp
29740 74 79 28 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ty(configuration
29750 2e 6c 6f 67 46 69 6c 65 4e 61 6d 65 29 29 0d 0a  .logFileName))..
29760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29770 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
29780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29790 20 20 20 20 20 20 20 54 72 61 63 65 2e 4c 69 73         Trace.Lis
297a0 74 65 6e 65 72 73 2e 41 64 64 28 6e 65 77 20 54  teners.Add(new T
297b0 65 78 74 57 72 69 74 65 72 54 72 61 63 65 4c 69  extWriterTraceLi
297c0 73 74 65 6e 65 72 28 0d 0a 20 20 20 20 20 20 20  stener(..       
297d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
297e0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
297f0 72 61 74 69 6f 6e 2e 6c 6f 67 46 69 6c 65 4e 61  ration.logFileNa
29800 6d 65 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  me));....       
29810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29820 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
29830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29840 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 65       // NOTE: Te
29850 63 68 6e 69 63 61 6c 6c 79 2c 20 77 65 20 63 72  chnically, we cr
29860 65 61 74 65 64 20 74 68 65 20 6c 6f 67 20 66 69  eated the log fi
29870 6c 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  le...           
29880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29890 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
298a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
298b0 20 66 69 6c 65 73 43 72 65 61 74 65 64 2b 2b 3b   filesCreated++;
298c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
298d0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
298e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
298f0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
29900 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
29910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29920 20 20 2f 2f 20 4e 4f 54 45 3a 20 44 75 6d 70 20    // NOTE: Dump 
29930 74 68 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f  the configuratio
29940 6e 20 6e 6f 77 20 69 6e 20 63 61 73 65 20 77 65  n now in case we
29950 20 6e 65 65 64 20 74 6f 0d 0a 20 20 20 20 20 20   need to..      
29960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
29970 20 20 20 20 20 20 20 74 72 6f 75 62 6c 65 73 68         troublesh
29980 6f 6f 74 20 61 6e 79 20 69 73 73 75 65 73 2e 0d  oot any issues..
29990 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
299a0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
299b0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
299c0 28 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64  (configuration.d
299d0 65 62 75 67 50 72 69 6f 72 69 74 79 20 3c 3d 20  ebugPriority <= 
299e0 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4d 65  TracePriority.Me
299f0 64 69 75 6d 29 0d 0a 20 20 20 20 20 20 20 20 20  dium)..         
29a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
29a10 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 44 75 6d  onfiguration.Dum
29a20 70 28 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 29  p(debugCallback)
29a30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
29a40 20 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e           if (con
29a50 66 69 67 75 72 61 74 69 6f 6e 2e 74 72 61 63 65  figuration.trace
29a60 50 72 69 6f 72 69 74 79 20 3c 3d 20 54 72 61 63  Priority <= Trac
29a70 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d  ePriority.Medium
29a80 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
29a90 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
29aa0 67 75 72 61 74 69 6f 6e 2e 44 75 6d 70 28 74 72  guration.Dump(tr
29ab0 61 63 65 43 61 6c 6c 62 61 63 6b 29 3b 0d 0a 0d  aceCallback);...
29ac0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29ad0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
29ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
29af0 4e 4f 54 45 3a 20 53 68 6f 77 20 77 68 65 72 65  NOTE: Show where
29b00 20 77 65 20 61 72 65 20 72 75 6e 6e 69 6e 67 20   we are running 
29b10 66 72 6f 6d 20 61 6e 64 20 68 6f 77 20 77 65 20  from and how we 
29b20 77 65 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20  were..          
29b30 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
29b40 20 20 20 69 6e 76 6f 6b 65 64 2e 0d 0a 20 20 20     invoked...   
29b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b60 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
29b70 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
29b80 6c 6f 63 61 74 69 6f 6e 20 3d 20 61 73 73 65 6d  location = assem
29b90 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 3b 0d 0a 0d  bly.Location;...
29ba0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29bb0 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65       TraceOps.De
29bc0 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63  bugAndTrace(Trac
29bd0 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d  ePriority.Medium
29be0 4c 6f 77 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  Low,..          
29bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
29c00 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
29c10 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
29c20 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
29c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c40 20 20 20 20 22 52 75 6e 6e 69 6e 67 20 65 78 65      "Running exe
29c50 63 75 74 61 62 6c 65 20 69 73 3a 20 7b 30 7d 22  cutable is: {0}"
29c60 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6c 6f 63  , ForDisplay(loc
29c70 61 74 69 6f 6e 29 29 2c 0d 0a 20 20 20 20 20 20  ation)),..      
29c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c90 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
29ca0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
29cb0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
29cc0 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
29cd0 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4d 65  TracePriority.Me
29ce0 64 69 75 6d 4c 6f 77 2c 0d 0a 20 20 20 20 20 20  diumLow,..      
29cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29d00 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
29d10 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
29d20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
29d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29d40 20 20 20 20 20 20 20 20 22 4f 72 69 67 69 6e 61          "Origina
29d50 6c 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 69  l command line i
29d60 73 3a 20 7b 30 7d 22 2c 0d 0a 20 20 20 20 20 20  s: {0}",..      
29d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29d80 20 20 45 6e 76 69 72 6f 6e 6d 65 6e 74 2e 43 6f    Environment.Co
29d90 6d 6d 61 6e 64 4c 69 6e 65 29 2c 20 74 72 61 63  mmandLine), trac
29da0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
29db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29dc0 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75     TraceOps.Debu
29dd0 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50  gAndTrace(TraceP
29de0 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 4c 6f  riority.MediumLo
29df0 77 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  w,..            
29e00 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
29e10 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65  gCallback, trace
29e20 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
29e30 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
29e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29e50 20 20 22 52 75 6e 6e 69 6e 67 20 70 72 6f 63 65    "Running proce
29e60 73 73 20 69 73 20 7b 30 7d 2e 22 2c 20 49 73 36  ss is {0}.", Is6
29e70 34 42 69 74 50 72 6f 63 65 73 73 28 29 20 3f 0d  4BitProcess() ?.
29e80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29e90 20 20 20 20 20 20 20 20 20 20 20 20 20 22 36 34               "64
29ea0 2d 62 69 74 22 20 3a 20 22 33 32 2d 62 69 74 22  -bit" : "32-bit"
29eb0 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79  ), traceCategory
29ec0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
29ed0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 63            if (!c
29ee0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 77 68 61  onfiguration.wha
29ef0 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
29f00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
29f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
29f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29f40 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20 74 68 65   // NOTE: If the
29f50 20 64 65 62 75 67 67 65 72 20 69 73 20 61 74 74   debugger is att
29f60 61 63 68 65 64 20 61 6e 64 20 22 77 68 61 74 2d  ached and "what-
29f70 69 66 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20  if"..           
29f80 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
29f90 20 20 20 20 20 20 6d 6f 64 65 20 69 73 20 5b 6e        mode is [n
29fa0 6f 77 5d 20 64 69 73 61 62 6c 65 64 2c 20 69 73  ow] disabled, is
29fb0 73 75 65 20 61 20 77 61 72 6e 69 6e 67 2e 0d 0a  sue a warning...
29fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29fd0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
29fe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29ff0 20 20 20 20 69 66 20 28 44 65 62 75 67 67 65 72      if (Debugger
2a000 2e 49 73 41 74 74 61 63 68 65 64 29 0d 0a 20 20  .IsAttached)..  
2a010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a020 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2a030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a040 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65       TraceOps.De
2a050 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63  bugAndTrace(Trac
2a060 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d  ePriority.Medium
2a070 48 69 67 68 2c 0d 0a 20 20 20 20 20 20 20 20 20  High,..         
2a080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a090 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c         debugCall
2a0a0 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
2a0b0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
2a0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a0d0 20 20 20 20 20 20 22 46 6f 72 63 65 64 20 74 6f        "Forced to
2a0e0 20 64 69 73 61 62 6c 65 20 5c 22 77 68 61 74 2d   disable \"what-
2a0f0 69 66 5c 22 20 6d 6f 64 65 20 77 69 74 68 20 22  if\" mode with "
2a100 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
2a110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a120 20 20 20 20 22 64 65 62 75 67 67 65 72 20 61 74      "debugger at
2a130 74 61 63 68 65 64 2e 22 2c 20 74 72 61 63 65 43  tached.", traceC
2a140 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20  ategory);..     
2a150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a160 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2a170 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2a180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a190 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20   else..         
2a1a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2a1b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a1c0 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
2a1d0 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61  ebugAndTrace(Tra
2a1e0 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75  cePriority.Mediu
2a1f0 6d 48 69 67 68 2c 0d 0a 20 20 20 20 20 20 20 20  mHigh,..        
2a200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a210 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63      debugCallbac
2a220 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  k, traceCallback
2a230 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2a240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2a250 4e 6f 20 61 63 74 75 61 6c 20 63 68 61 6e 67 65  No actual change
2a260 73 20 77 69 6c 6c 20 62 65 20 6d 61 64 65 20 74  s will be made t
2a270 6f 20 74 68 69 73 20 22 20 2b 0d 0a 20 20 20 20  o this " +..    
2a280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a290 20 20 20 20 20 20 20 20 22 73 79 73 74 65 6d 20          "system 
2a2a0 62 65 63 61 75 73 65 20 5c 22 77 68 61 74 2d 69  because \"what-i
2a2b0 66 5c 22 20 6d 6f 64 65 20 69 73 20 65 6e 61 62  f\" mode is enab
2a2c0 6c 65 64 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20  led.",..        
2a2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a2e0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2a2f0 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
2a300 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2a310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a320 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2a330 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2a340 45 3a 20 49 66 20 74 68 65 20 72 65 67 69 73 74  E: If the regist
2a350 72 79 20 6c 6f 67 20 66 69 6c 65 20 6e 61 6d 65  ry log file name
2a360 20 68 61 73 20 62 65 65 6e 20 73 65 74 2c 20 69   has been set, i
2a370 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ts..            
2a380 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2a390 20 76 61 6c 75 65 20 77 69 6c 6c 20 62 65 20 75   value will be u
2a3a0 73 65 64 20 76 65 72 62 61 74 69 6d 20 61 73 20  sed verbatim as 
2a3b0 74 68 65 20 70 6c 61 63 65 20 77 68 65 72 65 0d  the place where.
2a3c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a3d0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 6c       //       al
2a3e0 6c 20 72 65 67 69 73 74 72 79 20 77 72 69 74 65  l registry write
2a3f0 20 6f 70 65 72 61 74 69 6f 6e 73 20 77 69 6c 6c   operations will
2a400 20 28 65 76 65 6e 74 75 61 6c 6c 79 29 0d 0a 20   (eventually).. 
2a410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a420 20 20 20 2f 2f 20 20 20 20 20 20 20 62 65 20 6c     //       be l
2a430 6f 67 67 65 64 2e 20 20 4d 61 6b 65 20 73 75 72  ogged.  Make sur
2a440 65 20 74 68 65 20 72 65 67 69 73 74 72 79 20 68  e the registry h
2a450 65 6c 70 65 72 20 63 6c 61 73 73 0d 0a 20 20 20  elper class..   
2a460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a470 20 2f 2f 20 20 20 20 20 20 20 68 61 73 20 61 20   //       has a 
2a480 76 61 6c 69 64 20 6f 70 65 72 61 74 69 6f 6e 20  valid operation 
2a490 6c 69 73 74 3b 20 6f 74 68 65 72 77 69 73 65 2c  list; otherwise,
2a4a0 20 69 74 20 77 69 6c 6c 0d 0a 20 20 20 20 20 20   it will..      
2a4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2a4c0 20 20 20 20 20 20 20 6e 6f 74 20 70 65 72 66 6f         not perfo
2a4d0 72 6d 20 61 6e 79 20 6c 6f 67 67 69 6e 67 2e 0d  rm any logging..
2a4e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a4f0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2a500 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2a510 28 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 72  (configuration.r
2a520 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61  egistryLogFileNa
2a530 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  me != null)..   
2a540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a550 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2a560 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67 69              Regi
2a570 73 74 72 79 48 65 6c 70 65 72 2e 45 6e 61 62 6c  stryHelper.Enabl
2a580 65 4f 72 44 69 73 61 62 6c 65 4f 70 65 72 61 74  eOrDisableOperat
2a590 69 6f 6e 4c 69 73 74 28 74 72 75 65 29 3b 0d 0a  ionList(true);..
2a5a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a5b0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
2a5c0 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
2a5d0 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4d  (TracePriority.M
2a5e0 65 64 69 75 6d 48 69 67 68 2c 0d 0a 20 20 20 20  ediumHigh,..    
2a5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a600 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
2a610 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
2a620 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
2a630 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2a640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a650 20 20 22 52 65 67 69 73 74 72 79 20 6c 6f 67 67    "Registry logg
2a660 69 6e 67 20 74 6f 20 66 69 6c 65 20 7b 30 7d 20  ing to file {0} 
2a670 65 6e 61 62 6c 65 64 2e 22 2c 0d 0a 20 20 20 20  enabled.",..    
2a680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a690 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
2a6a0 61 79 28 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ay(configuration
2a6b0 2e 72 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65  .registryLogFile
2a6c0 4e 61 6d 65 29 29 2c 0d 0a 20 20 20 20 20 20 20  Name)),..       
2a6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a6e0 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
2a6f0 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry);..          
2a700 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2a710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a720 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2a730 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
2a740 54 45 3a 20 49 66 20 74 68 65 20 63 6f 6d 6d 61  TE: If the comma
2a750 6e 64 20 6c 69 6e 65 20 68 61 73 20 6e 6f 74 20  nd line has not 
2a760 62 65 65 6e 20 6d 61 6e 75 61 6c 6c 79 0d 0a 20  been manually.. 
2a770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a780 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f 6e 66     //       conf
2a790 69 72 6d 65 64 20 28 69 2e 65 2e 20 76 69 61 20  irmed (i.e. via 
2a7a0 74 68 65 20 65 78 70 6c 69 63 69 74 20 63 6f 6d  the explicit com
2a7b0 6d 61 6e 64 20 6c 69 6e 65 0d 0a 20 20 20 20 20  mand line..     
2a7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2a7d0 2f 20 20 20 20 20 20 20 6f 70 74 69 6f 6e 29 2c  /       option),
2a7e0 20 74 68 65 6e 20 73 74 6f 70 20 70 72 6f 63 65   then stop proce
2a7f0 73 73 69 6e 67 20 6e 6f 77 2e 20 20 57 65 20 65  ssing now.  We e
2a800 6e 66 6f 72 63 65 0d 0a 20 20 20 20 20 20 20 20  nforce..        
2a810 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2a820 20 20 20 20 20 74 68 69 73 20 72 75 6c 65 20 73       this rule s
2a830 6f 20 74 68 61 74 20 73 69 6d 70 6c 79 20 64 6f  o that simply do
2a840 75 62 6c 65 2d 63 6c 69 63 6b 69 6e 67 20 74 68  uble-clicking th
2a850 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
2a860 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2a870 65 78 65 63 75 74 61 62 6c 65 20 77 69 6c 6c 20  executable will 
2a880 6e 6f 74 20 72 65 73 75 6c 74 20 69 6e 20 61 6e  not result in an
2a890 79 20 63 68 61 6e 67 65 73 20 62 65 69 6e 67 0d  y changes being.
2a8a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a8b0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 61       //       ma
2a8c0 64 65 20 74 6f 20 74 68 65 20 73 79 73 74 65 6d  de to the system
2a8d0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a8e0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2a8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2a900 66 20 28 21 63 6f 6e 66 69 67 75 72 61 74 69 6f  f (!configuratio
2a910 6e 2e 63 6f 6e 66 69 72 6d 29 0d 0a 20 20 20 20  n.confirm)..    
2a920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a930 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2a940 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
2a950 20 3d 20 22 43 61 6e 6e 6f 74 20 63 6f 6e 74 69   = "Cannot conti
2a960 6e 75 65 2c 20 74 68 65 20 5c 22 63 6f 6e 66 69  nue, the \"confi
2a970 72 6d 5c 22 20 6f 70 74 69 6f 6e 20 69 73 20 22  rm\" option is "
2a980 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
2a990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a9a0 22 6e 6f 74 20 65 6e 61 62 6c 65 64 2e 22 3b 0d  "not enabled.";.
2a9b0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2a9c0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2a9d0 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20  n false;..      
2a9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2a9f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2aa00 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
2aa10 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
2aa20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2aa30 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
2aa40 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20  xception e)..   
2aa50 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2aa60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aa70 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62      TraceOps.Deb
2aa80 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65  ugAndTrace(Trace
2aa90 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74  Priority.Highest
2aaa0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2aab0 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
2aac0 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
2aad0 61 6c 6c 62 61 63 6b 2c 20 65 2c 20 74 72 61 63  allback, e, trac
2aae0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2aaf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab00 20 20 20 65 72 72 6f 72 20 3d 20 22 46 61 69 6c     error = "Fail
2ab10 65 64 20 74 6f 20 70 72 6f 63 65 73 73 20 63 6f  ed to process co
2ab20 6e 66 69 67 75 72 61 74 69 6f 6e 2e 22 3b 0d 0a  nfiguration.";..
2ab30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab40 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2ab50 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
2ab60 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2ab70 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2ab80 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2ab90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abc0 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2abd0 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28      [MethodImpl(
2abe0 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e  MethodImplOption
2abf0 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a  s.NoInlining)]..
2ac00 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
2ac10 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 43  ic static bool C
2ac20 68 65 63 6b 52 75 6e 74 69 6d 65 56 65 72 73 69  heckRuntimeVersi
2ac30 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
2ac40 20 20 20 20 20 43 6f 6e 66 69 67 75 72 61 74 69       Configurati
2ac50 6f 6e 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e  on configuration
2ac60 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2ac70 20 20 20 62 6f 6f 6c 20 73 74 72 69 63 74 2c 0d     bool strict,.
2ac80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ac90 20 72 65 66 20 73 74 72 69 6e 67 20 65 72 72 6f   ref string erro
2aca0 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  r..             
2acb0 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2acc0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2acd0 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
2ace0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2acf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad00 20 69 66 20 28 63 6f 6e 66 69 67 75 72 61 74 69   if (configurati
2ad10 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on == null)..   
2ad20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2ad40 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f              erro
2ad50 72 20 3d 20 22 49 6e 76 61 6c 69 64 20 63 6f 6e  r = "Invalid con
2ad60 66 69 67 75 72 61 74 69 6f 6e 2e 22 3b 0d 0a 20  figuration.";.. 
2ad70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ad80 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
2ad90 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
2ada0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2adb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2adc0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2add0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
2ade0 54 45 3a 20 57 68 61 74 20 76 65 72 73 69 6f 6e  TE: What version
2adf0 20 6f 66 20 74 68 65 20 72 75 6e 74 69 6d 65 20   of the runtime 
2ae00 77 61 73 20 74 68 65 20 63 6f 72 65 20 28 70 72  was the core (pr
2ae10 69 6d 61 72 79 29 0d 0a 20 20 20 20 20 20 20 20  imary)..        
2ae20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2ae30 20 20 20 20 20 61 73 73 65 6d 62 6c 79 20 63 6f       assembly co
2ae40 6d 70 69 6c 65 64 20 61 67 61 69 6e 73 74 20 28  mpiled against (
2ae50 65 2e 67 2e 20 22 76 32 2e 30 2e 35 30 37 32 37  e.g. "v2.0.50727
2ae60 22 20 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  " or..          
2ae70 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2ae80 20 20 20 22 76 34 2e 30 2e 33 30 33 31 39 22 29     "v4.0.30319")
2ae90 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2aea0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2aeb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
2aec0 74 72 69 6e 67 20 63 6f 72 65 49 6d 61 67 65 52  tring coreImageR
2aed0 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 20 3d 20  untimeVersion = 
2aee0 47 65 74 49 6d 61 67 65 52 75 6e 74 69 6d 65 56  GetImageRuntimeV
2aef0 65 72 73 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20  ersion(..       
2af00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af10 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 63   configuration.c
2af20 6f 72 65 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  oreFileName);...
2af30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2af40 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2af50 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2af60 4e 4f 54 45 3a 20 57 65 20 61 6c 6c 6f 77 20 74  NOTE: We allow t
2af70 68 65 20 61 63 74 75 61 6c 20 69 6d 61 67 65 20  he actual image 
2af80 72 75 6e 74 69 6d 65 20 63 68 65 63 6b 69 6e 67  runtime checking
2af90 20 74 6f 20 62 65 0d 0a 20 20 20 20 20 20 20 20   to be..        
2afa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2afb0 20 20 20 20 20 62 79 70 61 73 73 65 64 20 76 69       bypassed vi
2afc0 61 20 74 68 65 20 22 2d 6e 6f 52 75 6e 74 69 6d  a the "-noRuntim
2afd0 65 56 65 72 73 69 6f 6e 22 20 63 6f 6d 6d 61 6e  eVersion" comman
2afe0 64 20 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20  d line..        
2aff0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2b000 20 20 20 20 20 6f 70 74 69 6f 6e 2e 20 20 54 68       option.  Th
2b010 65 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20 6f  e command line o
2b020 70 74 69 6f 6e 20 69 73 20 69 6e 74 65 6e 64 65  ption is intende
2b030 64 20 66 6f 72 0d 0a 20 20 20 20 20 20 20 20 20  d for..         
2b040 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2b050 20 20 20 20 65 78 70 65 72 74 20 75 73 65 20 6f      expert use o
2b060 6e 6c 79 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  nly...          
2b070 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2b080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b090 20 20 69 66 20 28 63 6f 6e 66 69 67 75 72 61 74    if (configurat
2b0a0 69 6f 6e 2e 6e 6f 52 75 6e 74 69 6d 65 56 65 72  ion.noRuntimeVer
2b0b0 73 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 20  sion)..         
2b0c0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2b0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b0e0 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
2b0f0 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61  ebugAndTrace(Tra
2b100 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75  cePriority.Mediu
2b110 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m,..            
2b120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b130 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74  debugCallback, t
2b140 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
2b150 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
2b160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b170 20 20 20 20 20 20 20 20 20 20 22 41 73 73 65 6d            "Assem
2b180 62 6c 79 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  bly is compiled 
2b190 66 6f 72 20 74 68 65 20 2e 4e 45 54 20 46 72 61  for the .NET Fra
2b1a0 6d 65 77 6f 72 6b 20 7b 30 7d 3b 20 22 20 2b 0d  mework {0}; " +.
2b1b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 68 6f               "ho
2b1d0 77 65 76 65 72 2c 20 69 6e 73 74 61 6c 6c 61 74  wever, installat
2b1e0 69 6f 6e 20 72 65 73 74 72 69 63 74 69 6f 6e 73  ion restrictions
2b1f0 20 62 61 73 65 64 20 6f 6e 20 74 68 69 73 20 22   based on this "
2b200 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   +..            
2b210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b220 22 66 61 63 74 20 68 61 76 65 20 62 65 65 6e 20  "fact have been 
2b230 64 69 73 61 62 6c 65 64 20 76 69 61 20 74 68 65  disabled via the
2b240 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 2e 22 2c   command line.",
2b250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
2b270 72 65 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65  reImageRuntimeVe
2b280 72 73 69 6f 6e 29 2c 20 74 72 61 63 65 43 61 74  rsion), traceCat
2b290 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2b2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b2b0 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d     return true;.
2b2c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b2d0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2b2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b2f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b300 20 20 20 20 20 20 2f 2f 20 54 4f 44 4f 3a 20 52        // TODO: R
2b310 65 73 74 72 69 63 74 20 74 68 65 20 63 6f 6e 66  estrict the conf
2b320 69 67 75 72 61 74 69 6f 6e 20 62 61 73 65 64 20  iguration based 
2b330 6f 6e 20 77 68 69 63 68 20 69 6d 61 67 65 0d 0a  on which image..
2b340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b350 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 75 6e      //       run
2b360 74 69 6d 65 20 76 65 72 73 69 6f 6e 73 20 28 77  time versions (w
2b370 68 69 63 68 20 6d 6f 72 65 2d 6f 72 2d 6c 65 73  hich more-or-les
2b380 73 20 63 6f 72 72 65 73 70 6f 6e 64 0d 0a 20 20  s correspond..  
2b390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b3a0 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20 2e 4e    //       to .N
2b3b0 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 76 65 72  ET Framework ver
2b3c0 73 69 6f 6e 73 29 20 61 72 65 20 73 75 70 70 6f  sions) are suppo
2b3d0 72 74 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20  rted by the..   
2b3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b3f0 20 2f 2f 20 20 20 20 20 20 20 76 65 72 73 69 6f   //       versio
2b400 6e 73 20 6f 66 20 56 69 73 75 61 6c 20 53 74 75  ns of Visual Stu
2b410 64 69 6f 20 74 68 61 74 20 61 72 65 20 69 6e 73  dio that are ins
2b420 74 61 6c 6c 65 64 2e 0d 0a 20 20 20 20 20 20 20  talled...       
2b430 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2b440 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b450 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
2b460 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f  IsNullOrEmpty(co
2b470 72 65 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65  reImageRuntimeVe
2b480 72 73 69 6f 6e 29 29 0d 0a 20 20 20 20 20 20 20  rsion))..       
2b490 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2b4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b4b0 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
2b4c0 22 69 6e 76 61 6c 69 64 20 63 6f 72 65 20 66 69  "invalid core fi
2b4d0 6c 65 20 69 6d 61 67 65 20 72 75 6e 74 69 6d 65  le image runtime
2b4e0 20 76 65 72 73 69 6f 6e 22 3b 0d 0a 20 20 20 20   version";..    
2b4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b500 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
2b510 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2b520 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2b530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
2b540 73 65 20 69 66 20 28 53 74 72 69 6e 67 2e 45 71  se if (String.Eq
2b550 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
2b560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b570 20 20 20 63 6f 72 65 49 6d 61 67 65 52 75 6e 74     coreImageRunt
2b580 69 6d 65 56 65 72 73 69 6f 6e 2c 20 43 4c 52 76  imeVersion, CLRv
2b590 32 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72  2ImageRuntimeVer
2b5a0 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20  sion,..         
2b5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b5c0 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72 69     StringCompari
2b5d0 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a 20  son.Ordinal)).. 
2b5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b5f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2b600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2b610 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b620 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2b630 45 3a 20 46 6f 72 20 74 68 65 20 43 4c 52 20 76  E: For the CLR v
2b640 32 2e 30 20 72 75 6e 74 69 6d 65 2c 20 6d 61 6b  2.0 runtime, mak
2b650 65 20 73 75 72 65 20 77 65 20 64 69 73 61 62 6c  e sure we disabl
2b660 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
2b670 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2b680 20 20 20 20 61 6e 79 20 61 74 74 65 6d 70 74 20      any attempt 
2b690 74 6f 20 75 73 65 20 69 74 20 66 6f 72 20 74 68  to use it for th
2b6a0 69 6e 67 73 20 74 68 61 74 20 72 65 71 75 69 72  ings that requir
2b6b0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
2b6c0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2b6d0 20 20 20 20 61 6e 20 61 73 73 65 6d 62 6c 79 20      an assembly 
2b6e0 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20 74 68 65  compiled for the
2b6f0 20 43 4c 52 20 76 34 2e 30 2e 20 20 49 74 20 69   CLR v4.0.  It i
2b700 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
2b710 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
2b720 20 20 20 20 75 6e 63 65 72 74 61 69 6e 20 69 66      uncertain if
2b730 20 74 68 69 73 20 69 73 20 61 63 74 75 61 6c 6c   this is actuall
2b740 79 20 61 20 70 72 6f 62 6c 65 6d 20 69 6e 0d 0a  y a problem in..
2b750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b760 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2b770 20 70 72 61 63 74 69 63 65 20 61 73 20 74 68 65   practice as the
2b780 20 43 4c 52 20 76 34 2e 30 20 63 61 6e 20 6c 6f   CLR v4.0 can lo
2b790 61 64 20 61 6e 64 20 75 73 65 20 61 6e 0d 0a 20  ad and use an.. 
2b7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b7b0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2b7c0 61 73 73 65 6d 62 6c 79 20 63 6f 6d 70 69 6c 65  assembly compile
2b7d0 64 20 77 69 74 68 20 74 68 65 20 43 4c 52 20 76  d with the CLR v
2b7e0 32 2e 30 3b 20 68 6f 77 65 76 65 72 2c 0d 0a 20  2.0; however,.. 
2b7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b800 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2b810 73 69 6e 63 65 20 74 68 69 73 20 70 72 6f 6a 65  since this proje
2b820 63 74 20 6f 66 66 65 72 73 20 62 6f 74 68 20 63  ct offers both c
2b830 6f 6e 66 69 67 75 72 61 74 69 6f 6e 73 2c 0d 0a  onfigurations,..
2b840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b850 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2b860 20 77 65 20 63 75 72 72 65 6e 74 6c 79 20 64 69   we currently di
2b870 73 61 6c 6c 6f 77 20 74 68 69 73 20 6d 69 73 6d  sallow this mism
2b880 61 74 63 68 2e 0d 0a 20 20 20 20 20 20 20 20 20  atch...         
2b890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2b8a0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2b8b0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
2b8c0 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78  guration.noNetFx
2b8d0 34 30 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  40 = true;..    
2b8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b8f0 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
2b900 6e 2e 6e 6f 4e 65 74 46 78 34 35 20 3d 20 74 72  n.noNetFx45 = tr
2b910 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
2b920 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
2b930 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74  figuration.noNet
2b940 46 78 34 35 31 20 3d 20 74 72 75 65 3b 0d 0a 20  Fx451 = true;.. 
2b950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b960 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
2b970 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35 32 20  tion.noNetFx452 
2b980 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
2b990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b9a0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
2b9b0 6f 4e 65 74 46 78 34 36 20 3d 20 74 72 75 65 3b  oNetFx46 = true;
2b9c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b9d0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
2b9e0 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34  uration.noNetFx4
2b9f0 36 31 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  61 = true;..    
2ba00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba10 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
2ba20 6e 2e 6e 6f 4e 65 74 46 78 34 36 32 20 3d 20 74  n.noNetFx462 = t
2ba30 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
2ba40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
2ba50 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65  nfiguration.noNe
2ba60 74 46 78 34 37 20 3d 20 74 72 75 65 3b 0d 0a 20  tFx47 = true;.. 
2ba70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba80 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
2ba90 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 37 31 20  tion.noNetFx471 
2baa0 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
2bab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bac0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
2bad0 6f 56 73 32 30 31 30 20 3d 20 74 72 75 65 3b 0d  oVs2010 = true;.
2bae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2baf0 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
2bb00 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 32 20  ration.noVs2012 
2bb10 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
2bb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bb30 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
2bb40 6f 56 73 32 30 31 33 20 3d 20 74 72 75 65 3b 0d  oVs2013 = true;.
2bb50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bb60 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
2bb70 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 35 20  ration.noVs2015 
2bb80 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
2bb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bba0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
2bbb0 6f 56 73 32 30 31 37 20 3d 20 74 72 75 65 3b 0d  oVs2017 = true;.
2bbc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2bbd0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
2bbe0 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
2bbf0 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
2bc00 4d 65 64 69 75 6d 2c 0d 0a 20 20 20 20 20 20 20  Medium,..       
2bc10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
2bc30 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
2bc40 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
2bc50 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2bc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2bc70 41 73 73 65 6d 62 6c 79 20 69 73 20 63 6f 6d 70  Assembly is comp
2bc80 69 6c 65 64 20 66 6f 72 20 74 68 65 20 2e 4e 45  iled for the .NE
2bc90 54 20 46 72 61 6d 65 77 6f 72 6b 20 7b 30 7d 2c  T Framework {0},
2bca0 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
2bcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bcc0 20 20 22 73 75 70 70 6f 72 74 20 66 6f 72 20 74    "support for t
2bcd0 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  he .NET Framewor
2bce0 6b 20 7b 31 7d 20 69 73 20 6e 6f 77 20 64 69 73  k {1} is now dis
2bcf0 61 62 6c 65 64 2e 22 2c 0d 0a 20 20 20 20 20 20  abled.",..      
2bd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bd10 20 20 20 20 20 20 43 4c 52 76 32 49 6d 61 67 65        CLRv2Image
2bd20 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 2c 20  RuntimeVersion, 
2bd30 43 4c 52 76 34 49 6d 61 67 65 52 75 6e 74 69 6d  CLRv4ImageRuntim
2bd40 65 56 65 72 73 69 6f 6e 29 2c 0d 0a 20 20 20 20  eVersion),..    
2bd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bd60 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2bd70 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  egory);..       
2bd80 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
2bd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bda0 20 20 20 20 65 6c 73 65 20 69 66 20 28 53 74 72      else if (Str
2bdb0 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20 20  ing.Equals(..   
2bdc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bdd0 20 20 20 20 20 20 20 20 20 63 6f 72 65 49 6d 61           coreIma
2bde0 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  geRuntimeVersion
2bdf0 2c 20 43 4c 52 76 34 49 6d 61 67 65 52 75 6e 74  , CLRv4ImageRunt
2be00 69 6d 65 56 65 72 73 69 6f 6e 2c 0d 0a 20 20 20  imeVersion,..   
2be10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e 67 43           StringC
2be30 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61  omparison.Ordina
2be40 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l))..           
2be50 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2be60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be70 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2be80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2be90 2f 2f 20 4e 4f 54 45 3a 20 46 6f 72 20 74 68 65  // NOTE: For the
2bea0 20 43 4c 52 20 76 34 2e 30 20 72 75 6e 74 69 6d   CLR v4.0 runtim
2beb0 65 2c 20 6d 61 6b 65 20 73 75 72 65 20 77 65 20  e, make sure we 
2bec0 64 69 73 61 62 6c 65 0d 0a 20 20 20 20 20 20 20  disable..       
2bed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bee0 20 2f 2f 20 20 20 20 20 20 20 61 6e 79 20 61 74   //       any at
2bef0 74 65 6d 70 74 20 74 6f 20 75 73 65 20 69 74 20  tempt to use it 
2bf00 66 6f 72 20 74 68 69 6e 67 73 20 74 68 61 74 20  for things that 
2bf10 72 65 71 75 69 72 65 0d 0a 20 20 20 20 20 20 20  require..       
2bf20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bf30 20 2f 2f 20 20 20 20 20 20 20 61 6e 20 61 73 73   //       an ass
2bf40 65 6d 62 6c 79 20 63 6f 6d 70 69 6c 65 64 20 66  embly compiled f
2bf50 6f 72 20 74 68 65 20 43 4c 52 20 76 32 2e 30 2e  or the CLR v2.0.
2bf60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bf70 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2bf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bf90 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
2bfa0 69 6f 6e 2e 6e 6f 4e 65 74 46 78 32 30 20 3d 20  ion.noNetFx20 = 
2bfb0 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
2bfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
2bfd0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e  onfiguration.noN
2bfe0 65 74 46 78 33 35 20 3d 20 74 72 75 65 3b 0d 0a  etFx35 = true;..
2bff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c000 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
2c010 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 30 35 20 3d  ation.noVs2005 =
2c020 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
2c030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c040 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
2c050 56 73 32 30 30 38 20 3d 20 74 72 75 65 3b 0d 0a  Vs2008 = true;..
2c060 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c070 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
2c080 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
2c090 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4d  (TracePriority.M
2c0a0 65 64 69 75 6d 2c 0d 0a 20 20 20 20 20 20 20 20  edium,..        
2c0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c0c0 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63      debugCallbac
2c0d0 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  k, traceCallback
2c0e0 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
2c0f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41                "A
2c110 73 73 65 6d 62 6c 79 20 69 73 20 63 6f 6d 70 69  ssembly is compi
2c120 6c 65 64 20 66 6f 72 20 74 68 65 20 2e 4e 45 54  led for the .NET
2c130 20 46 72 61 6d 65 77 6f 72 6b 20 7b 30 7d 2c 20   Framework {0}, 
2c140 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
2c150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c160 20 22 73 75 70 70 6f 72 74 20 66 6f 72 20 74 68   "support for th
2c170 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b  e .NET Framework
2c180 20 7b 31 7d 20 69 73 20 6e 6f 77 20 64 69 73 61   {1} is now disa
2c190 62 6c 65 64 2e 22 2c 0d 0a 20 20 20 20 20 20 20  bled.",..       
2c1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c1b0 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
2c1c0 43 4c 52 76 34 49 6d 61 67 65 52 75 6e 74 69 6d  CLRv4ImageRuntim
2c1d0 65 56 65 72 73 69 6f 6e 29 2c 0d 0a 20 20 20 20  eVersion),..    
2c1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c1f0 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
2c200 61 79 28 43 4c 52 76 32 49 6d 61 67 65 52 75 6e  ay(CLRv2ImageRun
2c210 74 69 6d 65 56 65 72 73 69 6f 6e 29 29 2c 0d 0a  timeVersion)),..
2c220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c230 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2c240 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20  eCategory);..   
2c250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c260 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2c270 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20          else..  
2c280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c290 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2c2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
2c2b0 6f 72 20 3d 20 53 74 72 69 6e 67 2e 46 6f 72 6d  or = String.Form
2c2c0 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
2c2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c2e0 20 22 75 6e 73 75 70 70 6f 72 74 65 64 20 63 6f   "unsupported co
2c2f0 72 65 20 66 69 6c 65 20 69 6d 61 67 65 20 72 75  re file image ru
2c300 6e 74 69 6d 65 20 76 65 72 73 69 6f 6e 20 22 20  ntime version " 
2c310 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  +..             
2c320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2c330 7b 30 7d 2c 20 6d 75 73 74 20 62 65 20 7b 31 7d  {0}, must be {1}
2c340 20 6f 72 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20   or {2}",..     
2c350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c360 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
2c370 79 28 63 6f 72 65 49 6d 61 67 65 52 75 6e 74 69  y(coreImageRunti
2c380 6d 65 56 65 72 73 69 6f 6e 29 2c 0d 0a 20 20 20  meVersion),..   
2c390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c3a0 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
2c3b0 6c 61 79 28 43 4c 52 76 32 49 6d 61 67 65 52 75  lay(CLRv2ImageRu
2c3c0 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29 2c 0d 0a  ntimeVersion),..
2c3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c3e0 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
2c3f0 69 73 70 6c 61 79 28 43 4c 52 76 34 49 6d 61 67  isplay(CLRv4Imag
2c400 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29  eRuntimeVersion)
2c410 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2c420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2c430 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
2c440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c450 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2c460 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2c470 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
2c480 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2c490 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
2c4a0 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
2c4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c4c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2c4d0 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
2c4e0 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72  DebugAndTrace(Tr
2c4f0 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68  acePriority.High
2c500 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  est,..          
2c510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
2c520 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
2c530 63 65 43 61 6c 6c 62 61 63 6b 2c 20 65 2c 20 74  ceCallback, e, t
2c540 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
2c550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c560 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22 46        error = "F
2c570 61 69 6c 65 64 20 74 6f 20 63 68 65 63 6b 20 69  ailed to check i
2c580 6d 61 67 65 20 72 75 6e 74 69 6d 65 20 76 65 72  mage runtime ver
2c590 73 69 6f 6e 2e 22 3b 0d 0a 20 20 20 20 20 20 20  sion.";..       
2c5a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2c5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2c5c0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20  turn false;..   
2c5d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2c5e0 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2c5f0 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
2c600 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
2c610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c640 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2c650 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
2c660 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a 20 20  vate Methods..  
2c670 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
2c680 65 20 73 74 72 69 6e 67 20 47 65 74 49 6e 76 61  e string GetInva
2c690 72 69 61 6e 74 4e 61 6d 65 28 0d 0a 20 20 20 20  riantName(..    
2c6a0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
2c6b0 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20   trace..        
2c6c0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2c6d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2c6e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2c6f0 20 55 73 65 45 66 36 50 72 6f 76 69 64 65 72 28   UseEf6Provider(
2c700 74 72 61 63 65 29 20 3f 0d 0a 20 20 20 20 20 20  trace) ?..      
2c710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 66                Ef
2c720 36 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 20 3a  6InvariantName :
2c730 20 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 3b 0d   InvariantName;.
2c740 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2c750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c7a0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2c7b0 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 49 73   private bool Is
2c7c0 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c  SystemEf6Assembl
2c7d0 79 41 76 61 69 6c 61 62 6c 65 28 0d 0a 20 20 20  yAvailable(..   
2c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
2c7f0 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20  l trace..       
2c800 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2c810 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2c820 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
2c830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c840 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2c850 20 20 20 20 20 20 20 69 66 20 28 73 79 73 74 65         if (syste
2c860 6d 45 66 36 41 73 73 65 6d 62 6c 79 20 3d 3d 20  mEf6Assembly == 
2c870 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
2c880 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2c890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c8a0 20 20 20 20 20 20 73 79 73 74 65 6d 45 66 36 41        systemEf6A
2c8b0 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62  ssembly = Assemb
2c8c0 6c 79 2e 52 65 66 6c 65 63 74 69 6f 6e 4f 6e 6c  ly.ReflectionOnl
2c8d0 79 4c 6f 61 64 28 0d 0a 20 20 20 20 20 20 20 20  yLoad(..        
2c8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c8f0 20 20 20 20 53 79 73 74 65 6d 45 66 36 41 73 73      SystemEf6Ass
2c900 65 6d 62 6c 79 4e 61 6d 65 29 3b 0d 0a 20 20 20  emblyName);..   
2c910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c920 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2c930 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 79            if (sy
2c940 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 20  stemEf6Assembly 
2c950 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
2c960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2c970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c980 20 20 20 20 20 20 20 20 20 69 66 20 28 74 72 61           if (tra
2c990 63 65 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  ce &&..         
2c9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c9b0 20 20 20 21 48 61 73 46 6c 61 67 73 28 50 72 6f     !HasFlags(Pro
2c9c0 76 69 64 65 72 46 6c 61 67 73 2e 44 69 64 45 66  viderFlags.DidEf
2c9d0 36 52 65 73 6f 6c 76 65 54 72 61 63 65 2c 20 74  6ResolveTrace, t
2c9e0 72 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  rue))..         
2c9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2ca00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ca10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
2ca20 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
2ca30 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69  race(TracePriori
2ca40 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20  ty.Highest,..   
2ca50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca60 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
2ca70 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63  ugCallback, trac
2ca80 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
2ca90 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
2caa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cab0 20 20 20 20 20 20 20 20 20 20 20 22 45 6e 74 69             "Enti
2cac0 74 79 20 46 72 61 6d 65 77 6f 72 6b 20 36 20 61  ty Framework 6 a
2cad0 73 73 65 6d 62 6c 79 20 77 61 73 20 22 20 2b 0d  ssembly was " +.
2cae0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2caf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb00 20 22 72 65 73 6f 6c 76 65 64 20 74 6f 20 7b 30   "resolved to {0
2cb10 7d 2e 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  }.", ForDisplay(
2cb20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb40 20 20 73 79 73 74 65 6d 45 66 36 41 73 73 65 6d    systemEf6Assem
2cb50 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 29 29 2c 0d  bly.Location)),.
2cb60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cb80 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
2cb90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2cba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cbb0 70 72 6f 76 69 64 65 72 46 6c 61 67 73 20 7c 3d  providerFlags |=
2cbc0 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44   ProviderFlags.D
2cbd0 69 64 45 66 36 52 65 73 6f 6c 76 65 54 72 61 63  idEf6ResolveTrac
2cbe0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2cbf0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2cc00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cc10 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2cc20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
2cc30 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
2cc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2cc50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cc60 20 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20   catch..        
2cc70 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2cc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2cc90 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20  / do nothing... 
2cca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2ccb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ccc0 20 20 20 20 69 66 20 28 74 72 61 63 65 20 26 26      if (trace &&
2ccd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cce0 20 20 20 20 20 20 21 48 61 73 46 6c 61 67 73 28        !HasFlags(
2ccf0 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44 69  ProviderFlags.Di
2cd00 64 45 66 36 52 65 73 6f 6c 76 65 54 72 61 63 65  dEf6ResolveTrace
2cd10 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20  , true))..      
2cd20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2cd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd40 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
2cd50 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
2cd60 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a  ority.Highest,..
2cd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cd80 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
2cd90 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
2cda0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
2cdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2cdc0 45 6e 74 69 74 79 20 46 72 61 6d 65 77 6f 72 6b  Entity Framework
2cdd0 20 36 20 61 73 73 65 6d 62 6c 79 20 77 61 73 20   6 assembly was 
2cde0 6e 6f 74 20 72 65 73 6f 6c 76 65 64 2e 22 2c 0d  not resolved.",.
2cdf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ce00 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2ce10 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2ce20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ce30 70 72 6f 76 69 64 65 72 46 6c 61 67 73 20 7c 3d  providerFlags |=
2ce40 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e 44   ProviderFlags.D
2ce50 69 64 45 66 36 52 65 73 6f 6c 76 65 54 72 61 63  idEf6ResolveTrac
2ce60 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2ce70 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2ce80 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ce90 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
2cea0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2ceb0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
2cec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
2ced0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf10 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2cf20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 4d  #region Public M
2cf30 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20  ethods..        
2cf40 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
2cf50 48 61 73 46 6c 61 67 73 28 0d 0a 20 20 20 20 20  HasFlags(..     
2cf60 20 20 20 20 20 20 20 20 20 20 20 49 6e 73 74 61             Insta
2cf70 6c 6c 46 6c 61 67 73 20 68 61 73 46 6c 61 67 73  llFlags hasFlags
2cf80 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2cf90 20 20 20 62 6f 6f 6c 20 61 6c 6c 0d 0a 20 20 20     bool all..   
2cfa0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
2cfb0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2cfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2cfd0 66 20 28 61 6c 6c 29 0d 0a 20 20 20 20 20 20 20  f (all)..       
2cfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2cff0 75 72 6e 20 28 28 69 6e 73 74 61 6c 6c 46 6c 61  urn ((installFla
2d000 67 73 20 26 20 68 61 73 46 6c 61 67 73 29 20 3d  gs & hasFlags) =
2d010 3d 20 68 61 73 46 6c 61 67 73 29 3b 0d 0a 20 20  = hasFlags);..  
2d020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
2d030 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
2d040 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
2d050 28 69 6e 73 74 61 6c 6c 46 6c 61 67 73 20 26 20  (installFlags & 
2d060 68 61 73 46 6c 61 67 73 29 20 21 3d 20 49 6e 73  hasFlags) != Ins
2d070 74 61 6c 6c 46 6c 61 67 73 2e 4e 6f 6e 65 29 3b  tallFlags.None);
2d080 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2d090 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2d0a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d0e0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2d0f0 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 48 61    public bool Ha
2d100 73 46 6c 61 67 73 28 0d 0a 20 20 20 20 20 20 20  sFlags(..       
2d110 20 20 20 20 20 20 20 20 20 50 72 6f 76 69 64 65           Provide
2d120 72 46 6c 61 67 73 20 68 61 73 46 6c 61 67 73 2c  rFlags hasFlags,
2d130 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d140 20 20 62 6f 6f 6c 20 61 6c 6c 0d 0a 20 20 20 20    bool all..    
2d150 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
2d160 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2d170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2d180 20 28 61 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   (all)..        
2d190 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2d1a0 72 6e 20 28 28 70 72 6f 76 69 64 65 72 46 6c 61  rn ((providerFla
2d1b0 67 73 20 26 20 68 61 73 46 6c 61 67 73 29 20 3d  gs & hasFlags) =
2d1c0 3d 20 68 61 73 46 6c 61 67 73 29 3b 0d 0a 20 20  = hasFlags);..  
2d1d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
2d1e0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
2d1f0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
2d200 28 70 72 6f 76 69 64 65 72 46 6c 61 67 73 20 26  (providerFlags &
2d210 20 68 61 73 46 6c 61 67 73 29 20 21 3d 20 50 72   hasFlags) != Pr
2d220 6f 76 69 64 65 72 46 6c 61 67 73 2e 4e 6f 6e 65  oviderFlags.None
2d230 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2d240 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2d250 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2d260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d290 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2d2a0 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
2d2b0 49 73 4c 69 6e 71 53 75 70 70 6f 72 74 65 64 28  IsLinqSupported(
2d2c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d2d0 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a 20 20    bool trace..  
2d2e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
2d2f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2d300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d310 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2d320 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43 68 65      // NOTE: Che
2d330 63 6b 20 74 6f 20 73 65 65 20 69 66 20 74 68 65  ck to see if the
2d340 20 63 61 6c 6c 65 72 20 68 61 73 20 66 6f 72 63   caller has forc
2d350 65 64 20 4c 49 4e 51 20 73 75 70 70 6f 72 74 20  ed LINQ support 
2d360 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  to..            
2d370 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62 65 20      //       be 
2d380 65 6e 61 62 6c 65 64 20 2d 4f 52 2d 20 64 69 73  enabled -OR- dis
2d390 61 62 6c 65 64 2c 20 74 68 65 72 65 62 79 20 62  abled, thereby b
2d3a0 79 70 61 73 73 69 6e 67 20 74 68 65 20 6e 65 65  ypassing the nee
2d3b0 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
2d3c0 20 20 20 2f 2f 20 20 20 20 20 20 20 66 6f 72 20     //       for 
2d3d0 22 61 75 74 6f 6d 61 74 69 63 20 64 65 74 65 63  "automatic detec
2d3e0 74 69 6f 6e 22 20 62 79 20 74 68 69 73 20 6d 65  tion" by this me
2d3f0 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20  thod...         
2d400 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
2d410 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 48             if (H
2d420 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72  asFlags(Provider
2d430 46 6c 61 67 73 2e 46 6f 72 63 65 4c 69 6e 71 45  Flags.ForceLinqE
2d440 6e 61 62 6c 65 64 2c 20 74 72 75 65 29 29 0d 0a  nabled, true))..
2d450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d460 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d470 20 20 20 20 20 20 20 69 66 20 28 74 72 61 63 65         if (trace
2d480 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
2d490 20 20 20 20 20 20 20 20 20 20 20 20 20 21 48 61               !Ha
2d4a0 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46  sFlags(ProviderF
2d4b0 6c 61 67 73 2e 44 69 64 4c 69 6e 71 46 6f 72 63  lags.DidLinqForc
2d4c0 65 54 72 61 63 65 2c 20 74 72 75 65 29 29 0d 0a  eTrace, true))..
2d4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d4e0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d4f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
2d500 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
2d510 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72  Trace(TracePrior
2d520 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c 0d  ity.MediumHigh,.
2d530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d540 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
2d550 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63  ugCallback, trac
2d560 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  eCallback,..    
2d570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d580 20 20 20 20 20 20 20 20 22 46 6f 72 63 65 64 20          "Forced 
2d590 74 6f 20 65 6e 61 62 6c 65 20 73 75 70 70 6f 72  to enable suppor
2d5a0 74 20 66 6f 72 20 5c 22 4c 69 6e 71 5c 22 2e 22  t for \"Linq\"."
2d5b0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2d5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2d5d0 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
2d5e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d5f0 20 20 20 20 20 20 20 20 20 20 70 72 6f 76 69 64            provid
2d600 65 72 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76 69  erFlags |= Provi
2d610 64 65 72 46 6c 61 67 73 2e 44 69 64 4c 69 6e 71  derFlags.DidLinq
2d620 46 6f 72 63 65 54 72 61 63 65 3b 0d 0a 20 20 20  ForceTrace;..   
2d630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d640 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2d650 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2d660 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
2d670 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
2d680 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
2d690 69 66 20 28 48 61 73 46 6c 61 67 73 28 50 72 6f  if (HasFlags(Pro
2d6a0 76 69 64 65 72 46 6c 61 67 73 2e 46 6f 72 63 65  viderFlags.Force
2d6b0 4c 69 6e 71 44 69 73 61 62 6c 65 64 2c 20 74 72  LinqDisabled, tr
2d6c0 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
2d6d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2d6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2d6f0 28 74 72 61 63 65 20 26 26 0d 0a 20 20 20 20 20  (trace &&..     
2d700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d710 20 20 20 21 48 61 73 46 6c 61 67 73 28 50 72 6f     !HasFlags(Pro
2d720 76 69 64 65 72 46 6c 61 67 73 2e 44 69 64 4c 69  viderFlags.DidLi
2d730 6e 71 46 6f 72 63 65 54 72 61 63 65 2c 20 74 72  nqForceTrace, tr
2d740 75 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ue))..          
2d750 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2d760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d770 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65       TraceOps.De
2d780 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63  bugAndTrace(Trac
2d790 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d  ePriority.Medium
2d7a0 48 69 67 68 2c 0d 0a 20 20 20 20 20 20 20 20 20  High,..         
2d7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d7c0 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b     debugCallback
2d7d0 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c  , traceCallback,
2d7e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 46                "F
2d800 6f 72 63 65 64 20 74 6f 20 64 69 73 61 62 6c 65  orced to disable
2d810 20 73 75 70 70 6f 72 74 20 66 6f 72 20 5c 22 4c   support for \"L
2d820 69 6e 71 5c 22 2e 22 2c 0d 0a 20 20 20 20 20 20  inq\".",..      
2d830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d840 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2d850 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2d860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d870 20 70 72 6f 76 69 64 65 72 46 6c 61 67 73 20 7c   providerFlags |
2d880 3d 20 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e  = ProviderFlags.
2d890 44 69 64 4c 69 6e 71 46 6f 72 63 65 54 72 61 63  DidLinqForceTrac
2d8a0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2d8b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2d8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d8d0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
2d8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d8f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2d900 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2d910 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
2d920 3a 20 52 65 74 75 72 6e 20 6e 6f 6e 2d 7a 65 72  : Return non-zer
2d930 6f 20 69 66 20 74 68 65 20 53 79 73 74 65 6d 2e  o if the System.
2d940 44 61 74 61 2e 53 51 4c 69 74 65 2e 4c 69 6e 71  Data.SQLite.Linq
2d950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d960 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d    //       assem
2d970 62 6c 79 20 73 68 6f 75 6c 64 20 62 65 20 70 72  bly should be pr
2d980 6f 63 65 73 73 65 64 20 64 75 72 69 6e 67 20 74  ocessed during t
2d990 68 65 20 69 6e 73 74 61 6c 6c 2e 0d 0a 20 20 20  he install...   
2d9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2d9b0 20 20 20 20 20 20 49 66 20 74 68 65 20 74 61 72        If the tar
2d9c0 67 65 74 20 69 73 20 56 69 73 75 61 6c 20 53 74  get is Visual St
2d9d0 75 64 69 6f 20 32 30 30 35 2c 20 74 68 69 73 20  udio 2005, this 
2d9e0 6d 75 73 74 0d 0a 20 20 20 20 20 20 20 20 20 20  must..          
2d9f0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72        //       r
2da00 65 74 75 72 6e 20 7a 65 72 6f 2e 0d 0a 20 20 20  eturn zero...   
2da10 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2da20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2da30 20 72 65 74 75 72 6e 20 21 6e 6f 4e 65 74 46 78   return !noNetFx
2da40 33 35 20 7c 7c 20 21 6e 6f 4e 65 74 46 78 34 30  35 || !noNetFx40
2da50 20 7c 7c 20 21 6e 6f 4e 65 74 46 78 34 35 20 7c   || !noNetFx45 |
2da60 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  |..             
2da70 20 20 20 20 20 20 20 21 6e 6f 4e 65 74 46 78 34         !noNetFx4
2da80 35 31 20 7c 7c 20 21 6e 6f 4e 65 74 46 78 34 35  51 || !noNetFx45
2da90 32 20 7c 7c 20 21 6e 6f 4e 65 74 46 78 34 36 20  2 || !noNetFx46 
2daa0 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ||..            
2dab0 20 20 20 20 20 20 20 20 21 6e 6f 4e 65 74 46 78          !noNetFx
2dac0 34 36 31 20 7c 7c 20 21 6e 6f 4e 65 74 46 78 34  461 || !noNetFx4
2dad0 36 32 20 7c 7c 20 21 6e 6f 4e 65 74 46 78 34 37  62 || !noNetFx47
2dae0 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
2daf0 20 20 20 20 20 20 20 20 20 21 6e 6f 4e 65 74 46           !noNetF
2db00 78 34 37 31 3b 0d 0a 20 20 20 20 20 20 20 20 20  x471;..         
2db10 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2db20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2db30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2db60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2db70 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
2db80 6f 6c 20 49 73 45 66 36 53 75 70 70 6f 72 74 65  ol IsEf6Supporte
2db90 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d(..            
2dba0 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a      bool trace..
2dbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dbc0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2dbd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dbe0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2dbf0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 43        // NOTE: C
2dc00 68 65 63 6b 20 74 6f 20 73 65 65 20 69 66 20 74  heck to see if t
2dc10 68 65 20 63 61 6c 6c 65 72 20 68 61 73 20 66 6f  he caller has fo
2dc20 72 63 65 64 20 45 46 36 20 73 75 70 70 6f 72 74  rced EF6 support
2dc30 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   to..           
2dc40 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 62 65       //       be
2dc50 20 65 6e 61 62 6c 65 64 20 2d 4f 52 2d 20 64 69   enabled -OR- di
2dc60 73 61 62 6c 65 64 2c 20 74 68 65 72 65 62 79 20  sabled, thereby 
2dc70 62 79 70 61 73 73 69 6e 67 20 74 68 65 20 6e 65  bypassing the ne
2dc80 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
2dc90 20 20 20 20 2f 2f 20 20 20 20 20 20 20 66 6f 72      //       for
2dca0 20 22 61 75 74 6f 6d 61 74 69 63 20 64 65 74 65   "automatic dete
2dcb0 63 74 69 6f 6e 22 20 62 79 20 74 68 69 73 20 6d  ction" by this m
2dcc0 65 74 68 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20  ethod...        
2dcd0 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2dce0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2dcf0 48 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65  HasFlags(Provide
2dd00 72 46 6c 61 67 73 2e 46 6f 72 63 65 45 66 36 45  rFlags.ForceEf6E
2dd10 6e 61 62 6c 65 64 2c 20 74 72 75 65 29 29 0d 0a  nabled, true))..
2dd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd30 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2dd40 20 20 20 20 20 20 20 69 66 20 28 74 72 61 63 65         if (trace
2dd50 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20   &&..           
2dd60 20 20 20 20 20 20 20 20 20 20 20 20 20 21 48 61               !Ha
2dd70 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46  sFlags(ProviderF
2dd80 6c 61 67 73 2e 44 69 64 45 66 36 46 6f 72 63 65  lags.DidEf6Force
2dd90 54 72 61 63 65 2c 20 74 72 75 65 29 29 0d 0a 20  Trace, true)).. 
2dda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ddb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2ddc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
2ddd0 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
2dde0 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69  race(TracePriori
2ddf0 74 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c 0d 0a  ty.MediumHigh,..
2de00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de10 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
2de20 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65  gCallback, trace
2de30 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
2de40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de50 20 20 20 20 20 20 20 22 46 6f 72 63 65 64 20 74         "Forced t
2de60 6f 20 65 6e 61 62 6c 65 20 73 75 70 70 6f 72 74  o enable support
2de70 20 66 6f 72 20 5c 22 45 66 36 5c 22 2e 22 2c 0d   for \"Ef6\".",.
2de80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2de90 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2dea0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
2deb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dec0 20 20 20 20 20 20 20 20 70 72 6f 76 69 64 65 72          provider
2ded0 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76 69 64 65  Flags |= Provide
2dee0 72 46 6c 61 67 73 2e 44 69 64 45 66 36 46 6f 72  rFlags.DidEf6For
2def0 63 65 54 72 61 63 65 3b 0d 0a 20 20 20 20 20 20  ceTrace;..      
2df00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2df10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2df20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
2df30 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
2df40 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2df50 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
2df60 28 48 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64  (HasFlags(Provid
2df70 65 72 46 6c 61 67 73 2e 46 6f 72 63 65 45 66 36  erFlags.ForceEf6
2df80 44 69 73 61 62 6c 65 64 2c 20 74 72 75 65 29 29  Disabled, true))
2df90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dfa0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2dfb0 20 20 20 20 20 20 20 20 20 69 66 20 28 74 72 61           if (tra
2dfc0 63 65 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  ce &&..         
2dfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21                 !
2dfe0 48 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65  HasFlags(Provide
2dff0 72 46 6c 61 67 73 2e 44 69 64 45 66 36 46 6f 72  rFlags.DidEf6For
2e000 63 65 54 72 61 63 65 2c 20 74 72 75 65 29 29 0d  ceTrace, true)).
2e010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e020 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2e030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e040 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
2e050 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f  dTrace(TracePrio
2e060 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c  rity.MediumHigh,
2e070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
2e090 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
2e0a0 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ceCallback,..   
2e0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e0c0 20 20 20 20 20 20 20 20 20 22 46 6f 72 63 65 64           "Forced
2e0d0 20 74 6f 20 64 69 73 61 62 6c 65 20 73 75 70 70   to disable supp
2e0e0 6f 72 74 20 66 6f 72 20 5c 22 45 66 36 5c 22 2e  ort for \"Ef6\".
2e0f0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
2e100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e110 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2e120 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e130 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 76 69             provi
2e140 64 65 72 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76  derFlags |= Prov
2e150 69 64 65 72 46 6c 61 67 73 2e 44 69 64 45 66 36  iderFlags.DidEf6
2e160 46 6f 72 63 65 54 72 61 63 65 3b 0d 0a 20 20 20  ForceTrace;..   
2e170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e180 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
2e190 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2e1a0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
2e1b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2e1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2e1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e1e0 20 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72    // NOTE: Retur
2e1f0 6e 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20 74 68  n non-zero if th
2e200 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51  e System.Data.SQ
2e210 4c 69 74 65 2e 45 46 36 0d 0a 20 20 20 20 20 20  Lite.EF6..      
2e220 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
2e230 20 20 20 61 73 73 65 6d 62 6c 79 20 73 68 6f 75     assembly shou
2e240 6c 64 20 62 65 20 70 72 6f 63 65 73 73 65 64 20  ld be processed 
2e250 64 75 72 69 6e 67 20 74 68 65 20 69 6e 73 74 61  during the insta
2e260 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll...           
2e270 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 49 66       //       If
2e280 20 74 68 65 20 74 61 72 67 65 74 20 69 73 20 56   the target is V
2e290 69 73 75 61 6c 20 53 74 75 64 69 6f 20 32 30 30  isual Studio 200
2e2a0 35 20 6f 72 20 56 69 73 75 61 6c 0d 0a 20 20 20  5 or Visual..   
2e2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2e2c0 20 20 20 20 20 20 53 74 75 64 69 6f 20 32 30 30        Studio 200
2e2d0 38 2c 20 74 68 69 73 20 6d 75 73 74 20 72 65 74  8, this must ret
2e2e0 75 72 6e 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20  urn zero...     
2e2f0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2e300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2e310 66 20 28 6e 6f 4e 65 74 46 78 34 30 20 26 26 0d  f (noNetFx40 &&.
2e320 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e330 20 20 20 20 20 6e 6f 4e 65 74 46 78 34 35 20 26       noNetFx45 &
2e340 26 20 6e 6f 4e 65 74 46 78 34 35 31 20 26 26 20  & noNetFx451 && 
2e350 6e 6f 4e 65 74 46 78 34 35 32 20 26 26 20 6e 6f  noNetFx452 && no
2e360 4e 65 74 46 78 34 36 20 26 26 0d 0a 20 20 20 20  NetFx46 &&..    
2e370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e380 6e 6f 4e 65 74 46 78 34 36 31 20 26 26 20 6e 6f  noNetFx461 && no
2e390 4e 65 74 46 78 34 36 32 20 26 26 20 6e 6f 4e 65  NetFx462 && noNe
2e3a0 74 46 78 34 37 20 26 26 20 6e 6f 4e 65 74 46 78  tFx47 && noNetFx
2e3b0 34 37 31 29 0d 0a 20 20 20 20 20 20 20 20 20 20  471)..          
2e3c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2e3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2e3e0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20  urn false;..    
2e3f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2e400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e410 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2e420 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 6c       // NOTE: Al
2e430 73 6f 2c 20 69 66 20 74 68 65 20 45 46 36 20 63  so, if the EF6 c
2e440 6f 72 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20  ore assembly is 
2e450 75 6e 61 76 61 69 6c 61 62 6c 65 2c 20 74 68 69  unavailable, thi
2e460 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  s..             
2e470 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 75 73 74     //       must
2e480 20 72 65 74 75 72 6e 20 7a 65 72 6f 2e 0d 0a 20   return zero... 
2e490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2e4a0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2e4b0 20 20 20 69 66 20 28 21 49 73 53 79 73 74 65 6d     if (!IsSystem
2e4c0 45 66 36 41 73 73 65 6d 62 6c 79 41 76 61 69 6c  Ef6AssemblyAvail
2e4d0 61 62 6c 65 28 74 72 61 63 65 29 29 0d 0a 20 20  able(trace))..  
2e4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e4f0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
2e500 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e510 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2e520 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
2e530 46 69 6e 61 6c 6c 79 2c 20 69 66 20 74 68 65 20  Finally, if the 
2e540 45 46 36 20 63 6f 72 65 20 61 73 73 65 6d 62 6c  EF6 core assembl
2e550 79 20 69 73 20 6e 6f 74 20 61 76 61 69 6c 61 62  y is not availab
2e560 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
2e570 20 20 20 20 2f 2f 20 20 20 20 20 20 20 67 6c 6f      //       glo
2e580 62 61 6c 6c 79 20 5b 61 6e 64 20 74 68 69 73 20  bally [and this 
2e590 69 73 20 61 20 72 65 71 75 69 72 65 6d 65 6e 74  is a requirement
2e5a0 20 66 6f 72 20 74 68 65 20 63 75 72 72 65 6e 74   for the current
2e5b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e5c0 20 20 2f 2f 20 20 20 20 20 20 20 69 6e 73 74 61    //       insta
2e5d0 6c 6c 5d 2c 20 72 65 74 75 72 6e 20 7a 65 72 6f  ll], return zero
2e5e0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2e5f0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2e600 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 48 61         return Ha
2e610 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46  sFlags(ProviderF
2e620 6c 61 67 73 2e 53 79 73 74 65 6d 45 66 36 4d 75  lags.SystemEf6Mu
2e630 73 74 42 65 47 6c 6f 62 61 6c 2c 20 74 72 75 65  stBeGlobal, true
2e640 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
2e650 20 20 20 20 20 20 20 20 20 49 73 53 79 73 74 65           IsSyste
2e660 6d 45 66 36 41 73 73 65 6d 62 6c 79 47 6c 6f 62  mEf6AssemblyGlob
2e670 61 6c 28 29 20 3a 20 74 72 75 65 3b 0d 0a 20 20  al() : true;..  
2e680 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2e690 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2e6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2e6e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
2e6f0 69 76 61 74 65 20 62 6f 6f 6c 20 49 73 45 66 36  ivate bool IsEf6
2e700 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61 6c 28 29  AssemblyGlobal()
2e710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2e720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e730 20 69 66 20 28 65 66 36 41 73 73 65 6d 62 6c 79   if (ef6Assembly
2e740 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Name == null).. 
2e750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e760 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
2e770 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e780 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73      Assembly ass
2e790 65 6d 62 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79  embly = Assembly
2e7a0 2e 52 65 66 6c 65 63 74 69 6f 6e 4f 6e 6c 79 4c  .ReflectionOnlyL
2e7b0 6f 61 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20  oad(..          
2e7c0 20 20 20 20 20 20 20 20 20 20 65 66 36 41 73 73            ef6Ass
2e7d0 65 6d 62 6c 79 4e 61 6d 65 2e 54 6f 53 74 72 69  emblyName.ToStri
2e7e0 6e 67 28 29 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  ng());....      
2e7f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2e800 20 28 61 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75   (assembly != nu
2e810 6c 6c 29 20 26 26 20 61 73 73 65 6d 62 6c 79 2e  ll) && assembly.
2e820 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61  GlobalAssemblyCa
2e830 63 68 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  che;..          
2e840 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2e850 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2e860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e890 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2e8a0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
2e8b0 6c 20 55 73 65 45 66 36 50 72 6f 76 69 64 65 72  l UseEf6Provider
2e8c0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2e8d0 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a 20     bool trace.. 
2e8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
2e8f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2e900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e910 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2e920 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 65       // NOTE: We
2e930 20 63 61 6e 6e 6f 74 20 75 73 65 20 74 68 65 20   cannot use the 
2e940 45 46 36 20 61 73 73 65 6d 62 6c 79 20 61 73 20  EF6 assembly as 
2e950 74 68 65 20 70 72 6f 76 69 64 65 72 20 69 66 20  the provider if 
2e960 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  it..            
2e970 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 73 20      //       is 
2e980 6e 6f 74 20 73 75 70 70 6f 72 74 65 64 20 62 79  not supported by
2e990 20 74 68 69 73 20 69 6e 73 74 61 6c 6c 61 74 69   this installati
2e9a0 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on...           
2e9b0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2e9c0 20 20 20 20 20 20 20 20 20 69 66 20 28 21 49 73           if (!Is
2e9d0 45 66 36 53 75 70 70 6f 72 74 65 64 28 74 72 61  Ef6Supported(tra
2e9e0 63 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ce))..          
2e9f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2ea00 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
2ea10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2ea20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2ea30 2f 20 4e 4f 54 45 3a 20 46 6f 72 20 74 68 65 20  / NOTE: For the 
2ea40 45 46 36 20 61 73 73 65 6d 62 6c 79 20 74 6f 20  EF6 assembly to 
2ea50 62 65 20 75 73 61 62 6c 65 20 61 73 20 61 20 70  be usable as a p
2ea60 72 6f 76 69 64 65 72 20 69 6e 0d 0a 20 20 20 20  rovider in..    
2ea70 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
2ea80 20 20 20 20 20 74 68 65 20 6d 61 63 68 69 6e 65       the machine
2ea90 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 66   configuration f
2eaa0 69 6c 65 2c 20 69 74 20 6d 75 73 74 20 62 65 20  ile, it must be 
2eab0 69 6e 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  in the..        
2eac0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2ead0 20 67 6c 6f 62 61 6c 20 61 73 73 65 6d 62 6c 79   global assembly
2eae0 20 63 61 63 68 65 2e 0d 0a 20 20 20 20 20 20 20   cache...       
2eaf0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2eb00 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2eb10 75 72 6e 20 49 73 45 66 36 41 73 73 65 6d 62 6c  urn IsEf6Assembl
2eb20 79 47 6c 6f 62 61 6c 28 29 3b 0d 0a 20 20 20 20  yGlobal();..    
2eb30 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2eb40 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2eb50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2eb80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2eb90 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 52              /* R
2eba0 45 51 55 49 52 45 44 20 2a 2f 0d 0a 20 20 20 20  EQUIRED */..    
2ebb0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 41          public A
2ebc0 73 73 65 6d 62 6c 79 4e 61 6d 65 20 47 65 74 43  ssemblyName GetC
2ebd0 6f 72 65 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28  oreAssemblyName(
2ebe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ebf0 20 20 62 6f 6f 6c 20 74 72 61 63 65 20 2f 2a 20    bool trace /* 
2ec00 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20 20  NOT USED */..   
2ec10 20 20 20 20 20 20 20 20 20 20 20 20 20 29 20 2f               ) /
2ec20 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
2ec30 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ec40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 63             if (c
2ec50 6f 72 65 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20  oreAssemblyName 
2ec60 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2ec70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2ec80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ec90 20 63 6f 72 65 41 73 73 65 6d 62 6c 79 4e 61 6d   coreAssemblyNam
2eca0 65 20 3d 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65  e = AssemblyName
2ecb0 2e 47 65 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65  .GetAssemblyName
2ecc0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2ecd0 20 20 20 20 20 20 20 20 20 20 20 43 6f 72 65 46             CoreF
2ece0 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72  ileName); /* thr
2ecf0 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
2ed00 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2ed10 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2ed20 72 6e 20 63 6f 72 65 41 73 73 65 6d 62 6c 79 4e  rn coreAssemblyN
2ed30 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
2ed40 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2ed50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2ed60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ed90 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2eda0 20 20 20 20 20 20 2f 2a 20 4f 50 54 49 4f 4e 41        /* OPTIONA
2edb0 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  L */..          
2edc0 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c    public Assembl
2edd0 79 4e 61 6d 65 20 47 65 74 4c 69 6e 71 41 73 73  yName GetLinqAss
2ede0 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20  emblyName(..    
2edf0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
2ee00 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20   trace..        
2ee10 20 20 20 20 20 20 20 20 29 20 2f 2a 20 74 68 72          ) /* thr
2ee20 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
2ee30 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2ee40 20 20 20 20 20 20 69 66 20 28 49 73 4c 69 6e 71        if (IsLinq
2ee50 53 75 70 70 6f 72 74 65 64 28 74 72 61 63 65 29  Supported(trace)
2ee60 20 26 26 20 28 6c 69 6e 71 41 73 73 65 6d 62 6c   && (linqAssembl
2ee70 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 29 0d  yName == null)).
2ee80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2ee90 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2eea0 20 20 20 20 20 20 20 20 6c 69 6e 71 41 73 73 65          linqAsse
2eeb0 6d 62 6c 79 4e 61 6d 65 20 3d 20 41 73 73 65 6d  mblyName = Assem
2eec0 62 6c 79 4e 61 6d 65 2e 47 65 74 41 73 73 65 6d  blyName.GetAssem
2eed0 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20  blyName(..      
2eee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eef0 20 20 4c 69 6e 71 46 69 6c 65 4e 61 6d 65 29 3b    LinqFileName);
2ef00 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
2ef10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
2ef20 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2ef30 20 20 20 72 65 74 75 72 6e 20 6c 69 6e 71 41 73     return linqAs
2ef40 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20  semblyName;..   
2ef50 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2ef60 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2ef70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ef90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2efa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2efb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20  .            /* 
2efc0 4f 50 54 49 4f 4e 41 4c 20 2a 2f 0d 0a 20 20 20  OPTIONAL */..   
2efd0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
2efe0 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 47 65 74  AssemblyName Get
2eff0 45 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28  Ef6AssemblyName(
2f000 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f010 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a 20 20    bool trace..  
2f020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 20                ) 
2f030 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
2f040 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2f050 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2f060 49 73 45 66 36 53 75 70 70 6f 72 74 65 64 28 74  IsEf6Supported(t
2f070 72 61 63 65 29 20 26 26 20 28 65 66 36 41 73 73  race) && (ef6Ass
2f080 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c  emblyName == nul
2f090 6c 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  l))..           
2f0a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2f0b0 20 20 20 20 20 20 20 20 20 20 20 20 65 66 36 41              ef6A
2f0c0 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 41 73  ssemblyName = As
2f0d0 73 65 6d 62 6c 79 4e 61 6d 65 2e 47 65 74 41 73  semblyName.GetAs
2f0e0 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20  semblyName(..   
2f0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f100 20 20 20 20 20 45 66 36 46 69 6c 65 4e 61 6d 65       Ef6FileName
2f110 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a  ); /* throw */..
2f120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f130 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2f140 20 20 20 20 20 72 65 74 75 72 6e 20 65 66 36 41       return ef6A
2f150 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20  ssemblyName;..  
2f160 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2f170 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2f180 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2f1c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a  ..            /*
2f1d0 20 52 45 51 55 49 52 45 44 20 2a 2f 0d 0a 20 20   REQUIRED */..  
2f1e0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
2f1f0 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 47 65   AssemblyName Ge
2f200 74 44 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c  tDesignerAssembl
2f210 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  yName(..        
2f220 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61          bool tra
2f230 63 65 20 2f 2a 20 4e 4f 54 20 55 53 45 44 20 2a  ce /* NOT USED *
2f240 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
2f250 20 20 20 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f     ) /* throw */
2f260 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2f270 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f280 20 69 66 20 28 64 65 73 69 67 6e 65 72 41 73 73   if (designerAss
2f290 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c  emblyName == nul
2f2a0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2f2b0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2f2c0 20 20 20 20 20 20 20 20 20 20 20 64 65 73 69 67             desig
2f2d0 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20  nerAssemblyName 
2f2e0 3d 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 47  = AssemblyName.G
2f2f0 65 74 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 0d  etAssemblyName(.
2f300 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f310 20 20 20 20 20 20 20 20 20 44 65 73 69 67 6e 65           Designe
2f320 72 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74  rFileName); /* t
2f330 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
2f340 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2f350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2f360 74 75 72 6e 20 64 65 73 69 67 6e 65 72 41 73 73  turn designerAss
2f370 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20  emblyName;..    
2f380 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2f390 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2f3a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f3b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f3c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f3d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2f3e0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2a 20 52              /* R
2f3f0 45 51 55 49 52 45 44 20 2a 2f 0d 0a 20 20 20 20  EQUIRED */..    
2f400 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 41          public A
2f410 73 73 65 6d 62 6c 79 4e 61 6d 65 20 47 65 74 50  ssemblyName GetP
2f420 72 6f 76 69 64 65 72 41 73 73 65 6d 62 6c 79 4e  roviderAssemblyN
2f430 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
2f440 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65        bool trace
2f450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f460 20 20 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d    ) /* throw */.
2f470 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
2f480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f490 72 65 74 75 72 6e 20 55 73 65 45 66 36 50 72 6f  return UseEf6Pro
2f4a0 76 69 64 65 72 28 74 72 61 63 65 29 20 3f 0d 0a  vider(trace) ?..
2f4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f4c0 20 20 20 20 47 65 74 45 66 36 41 73 73 65 6d 62      GetEf6Assemb
2f4d0 6c 79 4e 61 6d 65 28 74 72 61 63 65 29 20 3a 20  lyName(trace) : 
2f4e0 47 65 74 43 6f 72 65 41 73 73 65 6d 62 6c 79 4e  GetCoreAssemblyN
2f4f0 61 6d 65 28 74 72 61 63 65 29 3b 0d 0a 20 20 20  ame(trace);..   
2f500 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2f510 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2f520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2f560 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2f570 6c 69 63 20 73 74 72 69 6e 67 20 47 65 74 43 6f  lic string GetCo
2f580 6e 66 69 67 49 6e 76 61 72 69 61 6e 74 4e 61 6d  nfigInvariantNam
2f590 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
2f5a0 20 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a      bool trace..
2f5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f5c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
2f5d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f5e0 20 20 72 65 74 75 72 6e 20 47 65 74 49 6e 76 61    return GetInva
2f5f0 72 69 61 6e 74 4e 61 6d 65 28 74 72 61 63 65 29  riantName(trace)
2f600 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2f610 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f660 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2f670 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
2f680 20 47 65 74 50 72 6f 76 69 64 65 72 49 6e 76 61   GetProviderInva
2f690 72 69 61 6e 74 4e 61 6d 65 28 0d 0a 20 20 20 20  riantName(..    
2f6a0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
2f6b0 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20 20   trace..        
2f6c0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2f6d0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2f6e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
2f6f0 20 47 65 74 49 6e 76 61 72 69 61 6e 74 4e 61 6d   GetInvariantNam
2f700 65 28 74 72 61 63 65 29 3b 0d 0a 20 20 20 20 20  e(trace);..     
2f710 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2f720 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2f730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2f770 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2f780 63 20 73 74 72 69 6e 67 20 47 65 74 46 61 63 74  c string GetFact
2f790 6f 72 79 54 79 70 65 4e 61 6d 65 28 0d 0a 20 20  oryTypeName(..  
2f7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
2f7b0 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20  ol trace..      
2f7c0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2f7d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2f7e0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2f7f0 72 6e 20 55 73 65 45 66 36 50 72 6f 76 69 64 65  rn UseEf6Provide
2f800 72 28 74 72 61 63 65 29 20 3f 0d 0a 20 20 20 20  r(trace) ?..    
2f810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f820 45 66 36 46 61 63 74 6f 72 79 54 79 70 65 4e 61  Ef6FactoryTypeNa
2f830 6d 65 20 3a 20 46 61 63 74 6f 72 79 54 79 70 65  me : FactoryType
2f840 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
2f850 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2f860 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2f870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f8a0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2f8b0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f         public vo
2f8c0 69 64 20 44 75 6d 70 28 0d 0a 20 20 20 20 20 20  id Dump(..      
2f8d0 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 43            TraceC
2f8e0 61 6c 6c 62 61 63 6b 20 74 72 61 63 65 43 61 6c  allback traceCal
2f8f0 6c 62 61 63 6b 0d 0a 20 20 20 20 20 20 20 20 20  lback..         
2f900 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2f910 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2f920 20 20 20 20 20 20 20 20 20 69 66 20 28 74 72 61           if (tra
2f930 63 65 43 61 6c 6c 62 61 63 6b 20 21 3d 20 6e 75  ceCallback != nu
2f940 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2f950 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2f960 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2f970 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67  eCallback(String
2f980 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56  .Format(NameAndV
2f990 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  alueFormat,..   
2f9a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f9b0 20 20 20 20 20 22 41 73 73 65 6d 62 6c 79 22 2c       "Assembly",
2f9c0 20 46 6f 72 44 69 73 70 6c 61 79 28 61 73 73 65   ForDisplay(asse
2f9d0 6d 62 6c 79 29 29 2c 0d 0a 20 20 20 20 20 20 20  mbly)),..       
2f9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f9f0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
2fa00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2fa10 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
2fa20 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
2fa30 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
2fa40 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
2fa50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa60 20 22 4c 6f 67 46 69 6c 65 4e 61 6d 65 22 2c 20   "LogFileName", 
2fa70 46 6f 72 44 69 73 70 6c 61 79 28 6c 6f 67 46 69  ForDisplay(logFi
2fa80 6c 65 4e 61 6d 65 29 29 2c 0d 0a 20 20 20 20 20  leName)),..     
2fa90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2faa0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
2fab0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2fac0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2fad0 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46  allback(String.F
2fae0 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c  ormat(NameAndVal
2faf0 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20  ueFormat,..     
2fb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb10 20 20 20 22 52 65 67 69 73 74 72 79 4c 6f 67 46     "RegistryLogF
2fb20 69 6c 65 4e 61 6d 65 22 2c 0d 0a 20 20 20 20 20  ileName",..     
2fb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb40 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 72 65     ForDisplay(re
2fb50 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d  gistryLogFileNam
2fb60 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  e)),..          
2fb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2fb80 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2fb90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fba0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2fbb0 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2fbc0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2fbd0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2fbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 44                "D
2fbf0 69 72 65 63 74 6f 72 79 22 2c 20 46 6f 72 44 69  irectory", ForDi
2fc00 73 70 6c 61 79 28 64 69 72 65 63 74 6f 72 79 29  splay(directory)
2fc10 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2fc20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2fc30 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2fc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fc50 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2fc60 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2fc70 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2fc80 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2fc90 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 72              "Cor
2fca0 65 46 69 6c 65 4e 61 6d 65 22 2c 20 46 6f 72 44  eFileName", ForD
2fcb0 69 73 70 6c 61 79 28 63 6f 72 65 46 69 6c 65 4e  isplay(coreFileN
2fcc0 61 6d 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ame)),..        
2fcd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fce0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2fcf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2fd00 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2fd10 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2fd20 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2fd30 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2fd40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd50 22 4c 69 6e 71 46 69 6c 65 4e 61 6d 65 22 2c 20  "LinqFileName", 
2fd60 46 6f 72 44 69 73 70 6c 61 79 28 6c 69 6e 71 46  ForDisplay(linqF
2fd70 69 6c 65 4e 61 6d 65 29 29 2c 0d 0a 20 20 20 20  ileName)),..    
2fd80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd90 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2fda0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2fdb0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2fdc0 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
2fdd0 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
2fde0 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
2fdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe00 20 20 20 20 22 45 66 36 46 69 6c 65 4e 61 6d 65      "Ef6FileName
2fe10 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 65 66  ", ForDisplay(ef
2fe20 36 46 69 6c 65 4e 61 6d 65 29 29 2c 0d 0a 20 20  6FileName)),..  
2fe30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe40 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
2fe50 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
2fe60 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2fe70 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
2fe80 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
2fe90 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
2fea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2feb0 20 20 20 20 20 20 22 44 65 73 69 67 6e 65 72 46        "DesignerF
2fec0 69 6c 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73  ileName", ForDis
2fed0 70 6c 61 79 28 64 65 73 69 67 6e 65 72 46 69 6c  play(designerFil
2fee0 65 4e 61 6d 65 29 29 2c 0d 0a 20 20 20 20 20 20  eName)),..      
2fef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff00 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
2ff10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2ff20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2ff30 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
2ff40 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
2ff50 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
2ff60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff70 20 20 22 52 65 67 69 73 74 72 79 56 65 72 73 69    "RegistryVersi
2ff80 6f 6e 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  on", ForDisplay(
2ff90 72 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e 29  registryVersion)
2ffa0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2ffb0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2ffc0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2ffd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ffe0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2fff0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
30000 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
30010 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
30020 20 20 20 20 20 20 20 20 20 20 20 20 22 43 6f 6e              "Con
30030 66 69 67 56 65 72 73 69 6f 6e 22 2c 20 46 6f 72  figVersion", For
30040 44 69 73 70 6c 61 79 28 63 6f 6e 66 69 67 56 65  Display(configVe
30050 72 73 69 6f 6e 29 29 2c 0d 0a 20 20 20 20 20 20  rsion)),..      
30060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30070 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
30080 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
30090 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
300a0 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
300b0 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
300c0 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
300d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
300e0 20 20 22 56 73 56 65 72 73 69 6f 6e 53 75 66 66    "VsVersionSuff
300f0 69 78 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  ix", ForDisplay(
30100 76 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78 29  vsVersionSuffix)
30110 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
30120 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
30130 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
30140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30150 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
30160 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
30170 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
30180 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
30190 20 20 20 20 20 20 20 20 20 20 20 20 22 44 65 62              "Deb
301a0 75 67 46 6f 72 6d 61 74 22 2c 20 46 6f 72 44 69  ugFormat", ForDi
301b0 73 70 6c 61 79 28 64 65 62 75 67 46 6f 72 6d 61  splay(debugForma
301c0 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
301d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
301e0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
301f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30200 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
30210 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
30220 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
30230 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
30240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 54                "T
30250 72 61 63 65 46 6f 72 6d 61 74 22 2c 20 46 6f 72  raceFormat", For
30260 44 69 73 70 6c 61 79 28 74 72 61 63 65 46 6f 72  Display(traceFor
30270 6d 61 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  mat)),..        
30280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30290 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
302a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
302b0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
302c0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
302d0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
302e0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
302f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30300 22 49 6e 73 74 61 6c 6c 46 6c 61 67 73 22 2c 20  "InstallFlags", 
30310 46 6f 72 44 69 73 70 6c 61 79 28 69 6e 73 74 61  ForDisplay(insta
30320 6c 6c 46 6c 61 67 73 29 29 2c 0d 0a 20 20 20 20  llFlags)),..    
30330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30340 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
30350 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
30360 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
30370 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
30380 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
30390 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
303a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303b0 20 20 20 20 22 50 72 6f 76 69 64 65 72 46 6c 61      "ProviderFla
303c0 67 73 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  gs", ForDisplay(
303d0 70 72 6f 76 69 64 65 72 46 6c 61 67 73 29 29 2c  providerFlags)),
303e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
303f0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
30400 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
30410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30420 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
30430 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
30440 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
30450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30460 20 20 20 20 20 20 20 20 20 20 22 44 65 62 75 67            "Debug
30470 50 72 69 6f 72 69 74 79 22 2c 20 46 6f 72 44 69  Priority", ForDi
30480 73 70 6c 61 79 28 64 65 62 75 67 50 72 69 6f 72  splay(debugPrior
30490 69 74 79 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ity)),..        
304a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304b0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
304c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
304d0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
304e0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
304f0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30500 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30520 22 54 72 61 63 65 50 72 69 6f 72 69 74 79 22 2c  "TracePriority",
30530 20 46 6f 72 44 69 73 70 6c 61 79 28 74 72 61 63   ForDisplay(trac
30540 65 50 72 69 6f 72 69 74 79 29 29 2c 0d 0a 20 20  ePriority)),..  
30550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30560 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
30570 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
30580 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
30590 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
305a0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
305b0 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
305c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
305d0 20 20 20 20 20 20 22 50 65 72 55 73 65 72 22 2c        "PerUser",
305e0 20 46 6f 72 44 69 73 70 6c 61 79 28 70 65 72 55   ForDisplay(perU
305f0 73 65 72 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ser)),..        
30600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30610 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
30620 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30630 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
30640 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
30650 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30660 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30680 22 49 6e 73 74 61 6c 6c 22 2c 20 46 6f 72 44 69  "Install", ForDi
30690 73 70 6c 61 79 28 69 6e 73 74 61 6c 6c 29 29 2c  splay(install)),
306a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
306b0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
306c0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
306d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
306e0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
306f0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
30700 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
30710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30720 20 20 20 20 20 20 20 20 20 20 22 57 6f 77 36 34            "Wow64
30730 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 77 6f  ", ForDisplay(wo
30740 77 36 34 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  w64)),..        
30750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30760 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
30770 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30780 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
30790 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
307a0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
307b0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
307c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307d0 22 4e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f  "NoRuntimeVersio
307e0 6e 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  n", ForDisplay(n
307f0 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29  oRuntimeVersion)
30800 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
30810 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
30820 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
30830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30840 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
30850 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
30860 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
30870 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
30880 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 44              "NoD
30890 65 73 6b 74 6f 70 22 2c 20 46 6f 72 44 69 73 70  esktop", ForDisp
308a0 6c 61 79 28 6e 6f 44 65 73 6b 74 6f 70 29 29 2c  lay(noDesktop)),
308b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
308c0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
308d0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
308e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308f0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
30900 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
30910 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
30920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30930 20 20 20 20 20 20 20 20 20 20 22 4e 6f 43 6f 6d            "NoCom
30940 70 61 63 74 22 2c 20 46 6f 72 44 69 73 70 6c 61  pact", ForDispla
30950 79 28 6e 6f 43 6f 6d 70 61 63 74 29 29 2c 0d 0a  y(noCompact)),..
30960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30970 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
30980 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
30990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
309a0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
309b0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
309c0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
309d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309e0 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78          "NoNetFx
309f0 32 30 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  20", ForDisplay(
30a00 6e 6f 4e 65 74 46 78 32 30 29 29 2c 0d 0a 20 20  noNetFx20)),..  
30a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
30a30 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
30a40 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
30a50 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
30a60 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
30a70 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
30a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a90 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78 33 35        "NoNetFx35
30aa0 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f  ", ForDisplay(no
30ab0 4e 65 74 46 78 33 35 29 29 2c 0d 0a 20 20 20 20  NetFx35)),..    
30ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ad0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
30ae0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
30af0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
30b00 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
30b10 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
30b20 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
30b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b40 20 20 20 20 22 4e 6f 4e 65 74 46 78 34 30 22 2c      "NoNetFx40",
30b50 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 4e 65   ForDisplay(noNe
30b60 74 46 78 34 30 29 29 2c 0d 0a 20 20 20 20 20 20  tFx40)),..      
30b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b80 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
30b90 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
30ba0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
30bb0 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
30bc0 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
30bd0 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
30be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30bf0 20 20 22 4e 6f 4e 65 74 46 78 34 35 22 2c 20 46    "NoNetFx45", F
30c00 6f 72 44 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46  orDisplay(noNetF
30c10 78 34 35 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  x45)),..        
30c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c30 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
30c40 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30c50 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
30c60 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
30c70 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30c80 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ca0 22 4e 6f 4e 65 74 46 78 34 35 31 22 2c 20 46 6f  "NoNetFx451", Fo
30cb0 72 44 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78  rDisplay(noNetFx
30cc0 34 35 31 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  451)),..        
30cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ce0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
30cf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30d00 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
30d10 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
30d20 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30d30 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d50 22 4e 6f 4e 65 74 46 78 34 35 32 22 2c 20 46 6f  "NoNetFx452", Fo
30d60 72 44 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78  rDisplay(noNetFx
30d70 34 35 32 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  452)),..        
30d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30d90 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
30da0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
30db0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
30dc0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
30dd0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30de0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30e00 22 4e 6f 4e 65 74 46 78 34 36 22 2c 20 46 6f 72  "NoNetFx46", For
30e10 44 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 34  Display(noNetFx4
30e20 36 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  6)),..          
30e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
30e40 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
30e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30e60 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
30e70 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
30e80 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
30e90 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
30ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
30eb0 6f 4e 65 74 46 78 34 36 31 22 2c 20 46 6f 72 44  oNetFx461", ForD
30ec0 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 34 36  isplay(noNetFx46
30ed0 31 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1)),..          
30ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
30ef0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
30f00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30f10 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
30f20 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
30f30 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
30f40 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
30f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
30f60 6f 4e 65 74 46 78 34 36 32 22 2c 20 46 6f 72 44  oNetFx462", ForD
30f70 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 34 36  isplay(noNetFx46
30f80 32 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  2)),..          
30f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
30fa0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
30fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30fc0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
30fd0 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
30fe0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
30ff0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
31000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e                "N
31010 6f 4e 65 74 46 78 34 37 22 2c 20 46 6f 72 44 69  oNetFx47", ForDi
31020 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 34 37 29  splay(noNetFx47)
31030 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
31040 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
31050 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
31060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31070 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
31080 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
31090 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
310a0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
310b0 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e              "NoN
310c0 65 74 46 78 34 37 31 22 2c 20 46 6f 72 44 69 73  etFx471", ForDis
310d0 70 6c 61 79 28 6e 6f 4e 65 74 46 78 34 37 31 29  play(noNetFx471)
310e0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
310f0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
31100 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
31110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31120 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
31130 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
31140 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
31150 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
31160 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 56              "NoV
31170 73 32 30 30 35 22 2c 20 46 6f 72 44 69 73 70 6c  s2005", ForDispl
31180 61 79 28 6e 6f 56 73 32 30 30 35 29 29 2c 0d 0a  ay(noVs2005)),..
31190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
311a0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
311b0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
311c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
311d0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
311e0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
311f0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
31200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31210 20 20 20 20 20 20 20 20 22 4e 6f 56 73 32 30 30          "NoVs200
31220 38 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  8", ForDisplay(n
31230 6f 56 73 32 30 30 38 29 29 2c 0d 0a 20 20 20 20  oVs2008)),..    
31240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31250 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
31260 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
31270 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
31280 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
31290 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
312a0 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
312b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
312c0 20 20 20 20 22 4e 6f 56 73 32 30 31 30 22 2c 20      "NoVs2010", 
312d0 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 56 73 32  ForDisplay(noVs2
312e0 30 31 30 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  010)),..        
312f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31300 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
31310 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
31320 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
31330 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
31340 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
31350 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
31360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31370 22 4e 6f 56 73 32 30 31 32 22 2c 20 46 6f 72 44  "NoVs2012", ForD
31380 69 73 70 6c 61 79 28 6e 6f 56 73 32 30 31 32 29  isplay(noVs2012)
31390 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
313a0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
313b0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
313c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
313d0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
313e0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
313f0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
31400 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
31410 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 56              "NoV
31420 73 32 30 31 33 22 2c 20 46 6f 72 44 69 73 70 6c  s2013", ForDispl
31430 61 79 28 6e 6f 56 73 32 30 31 33 29 29 2c 0d 0a  ay(noVs2013)),..
31440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31450 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
31460 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
31470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
31480 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
31490 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
314a0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
314b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
314c0 20 20 20 20 20 20 20 20 22 4e 6f 56 73 32 30 31          "NoVs201
314d0 35 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  5", ForDisplay(n
314e0 6f 56 73 32 30 31 35 29 29 2c 0d 0a 20 20 20 20  oVs2015)),..    
314f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31500 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
31510 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
31520 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
31530 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
31540 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
31550 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
31560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31570 20 20 20 20 22 4e 6f 56 73 32 30 31 37 22 2c 20      "NoVs2017", 
31580 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 56 73 32  ForDisplay(noVs2
31590 30 31 37 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  017)),..        
315a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315b0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
315c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
315d0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
315e0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
315f0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
31600 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
31610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31620 22 4e 6f 54 72 61 63 65 22 2c 20 46 6f 72 44 69  "NoTrace", ForDi
31630 73 70 6c 61 79 28 6e 6f 54 72 61 63 65 29 29 2c  splay(noTrace)),
31640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31650 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
31660 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
31670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31680 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
31690 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
316a0 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
316b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
316c0 20 20 20 20 20 20 20 20 20 20 22 4e 6f 43 6f 6e            "NoCon
316d0 73 6f 6c 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  sole", ForDispla
316e0 79 28 6e 6f 43 6f 6e 73 6f 6c 65 29 29 2c 0d 0a  y(noConsole)),..
316f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31700 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
31710 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
31720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
31730 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
31740 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
31750 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
31760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31770 20 20 20 20 20 20 20 20 22 4e 6f 4c 6f 67 22 2c          "NoLog",
31780 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 4c 6f   ForDisplay(noLo
31790 67 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  g)),..          
317a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
317b0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
317c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
317d0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
317e0 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
317f0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
31800 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
31810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 54                "T
31820 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 22 2c 20  hrowOnMissing", 
31830 46 6f 72 44 69 73 70 6c 61 79 28 74 68 72 6f 77  ForDisplay(throw
31840 4f 6e 4d 69 73 73 69 6e 67 29 29 2c 0d 0a 20 20  OnMissing)),..  
31850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31860 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
31870 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
31880 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
31890 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
318a0 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
318b0 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
318c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
318d0 20 20 20 20 20 20 22 57 68 61 74 49 66 22 2c 20        "WhatIf", 
318e0 46 6f 72 44 69 73 70 6c 61 79 28 77 68 61 74 49  ForDisplay(whatI
318f0 66 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  f)),..          
31900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
31910 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
31920 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31930 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
31940 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
31950 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
31960 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
31970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 44                "D
31980 65 62 75 67 22 2c 20 46 6f 72 44 69 73 70 6c 61  ebug", ForDispla
31990 79 28 64 65 62 75 67 29 29 2c 0d 0a 20 20 20 20  y(debug)),..    
319a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
319b0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
319c0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
319d0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
319e0 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
319f0 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
31a00 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
31a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31a20 20 20 20 20 22 56 65 72 62 6f 73 65 22 2c 20 46      "Verbose", F
31a30 6f 72 44 69 73 70 6c 61 79 28 76 65 72 62 6f 73  orDisplay(verbos
31a40 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  e)),..          
31a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
31a60 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
31a70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31a80 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
31a90 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
31aa0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
31ab0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
31ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 43                "C
31ad0 6f 6e 66 69 72 6d 22 2c 20 46 6f 72 44 69 73 70  onfirm", ForDisp
31ae0 6c 61 79 28 63 6f 6e 66 69 72 6d 29 29 2c 0d 0a  lay(confirm)),..
31af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b00 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
31b10 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
31b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
31b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
31b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31b80 20 20 69 66 20 28 61 73 73 65 6d 62 6c 79 20 21    if (assembly !
31b90 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
31ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
31bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31bc0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
31bd0 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
31be0 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
31bf0 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
31c00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c10 20 20 20 20 20 22 41 73 73 65 6d 62 6c 79 54 69       "AssemblyTi
31c20 74 6c 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  tle",..         
31c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c40 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 47 65     ForDisplay(Ge
31c50 74 41 73 73 65 6d 62 6c 79 54 69 74 6c 65 28 61  tAssemblyTitle(a
31c60 73 73 65 6d 62 6c 79 29 29 29 2c 0d 0a 20 20 20  ssembly))),..   
31c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31c80 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
31c90 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
31ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31cb0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
31cc0 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
31cd0 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
31ce0 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
31cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d00 20 22 41 73 73 65 6d 62 6c 79 43 6f 6e 66 69 67   "AssemblyConfig
31d10 75 72 61 74 69 6f 6e 22 2c 0d 0a 20 20 20 20 20  uration",..     
31d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d30 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
31d40 79 28 47 65 74 41 73 73 65 6d 62 6c 79 43 6f 6e  y(GetAssemblyCon
31d50 66 69 67 75 72 61 74 69 6f 6e 28 61 73 73 65 6d  figuration(assem
31d60 62 6c 79 29 29 29 2c 0d 0a 20 20 20 20 20 20 20  bly))),..       
31d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31d80 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
31d90 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry);..          
31da0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
31db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31dc0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
31dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
31e00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31e10 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
31e20 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
31e30 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
31e40 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
31e50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
31e60 49 73 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d  IsSystemEf6Assem
31e70 62 6c 79 41 76 61 69 6c 61 62 6c 65 22 2c 20 46  blyAvailable", F
31e80 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20  orDisplay(..    
31e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ea0 20 20 20 20 49 73 53 79 73 74 65 6d 45 66 36 41      IsSystemEf6A
31eb0 73 73 65 6d 62 6c 79 41 76 61 69 6c 61 62 6c 65  ssemblyAvailable
31ec0 28 66 61 6c 73 65 29 29 29 2c 0d 0a 20 20 20 20  (false))),..    
31ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31ee0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
31ef0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
31f00 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
31f10 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e  Callback(String.
31f20 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61  Format(NameAndVa
31f30 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20  lueFormat,..    
31f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31f50 20 20 20 20 22 49 73 53 79 73 74 65 6d 45 66 36      "IsSystemEf6
31f60 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61 6c 22 2c  AssemblyGlobal",
31f70 20 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20   ForDisplay(..  
31f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31f90 20 20 20 20 20 20 49 73 53 79 73 74 65 6d 45 66        IsSystemEf
31fa0 36 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61 6c 28  6AssemblyGlobal(
31fb0 29 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ))),..          
31fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
31fd0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
31fe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31ff0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32030 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32040 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
32050 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
32060 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
32070 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
32080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32090 20 22 49 73 4c 69 6e 71 53 75 70 70 6f 72 74 65   "IsLinqSupporte
320a0 64 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 49  d", ForDisplay(I
320b0 73 4c 69 6e 71 53 75 70 70 6f 72 74 65 64 28 66  sLinqSupported(f
320c0 61 6c 73 65 29 29 29 2c 0d 0a 20 20 20 20 20 20  alse))),..      
320d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
320e0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
320f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32100 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
32110 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
32120 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
32130 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
32140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32150 20 20 22 49 73 45 66 36 53 75 70 70 6f 72 74 65    "IsEf6Supporte
32160 64 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 49  d", ForDisplay(I
32170 73 45 66 36 53 75 70 70 6f 72 74 65 64 28 66 61  sEf6Supported(fa
32180 6c 73 65 29 29 29 2c 0d 0a 20 20 20 20 20 20 20  lse))),..       
32190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
321a0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
321b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
321c0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
321d0 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
321e0 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
321f0 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
32200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32210 20 22 49 73 45 66 36 41 73 73 65 6d 62 6c 79 47   "IsEf6AssemblyG
32220 6c 6f 62 61 6c 22 2c 20 46 6f 72 44 69 73 70 6c  lobal", ForDispl
32230 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay(..           
32240 20 20 20 20 20 20 20 20 20 20 20 20 20 49 73 45               IsE
32250 66 36 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61 6c  f6AssemblyGlobal
32260 28 29 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  ())),..         
32270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
32280 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
32290 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
322a0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
322b0 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
322c0 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
322d0 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
322e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
322f0 55 73 65 45 66 36 50 72 6f 76 69 64 65 72 22 2c  UseEf6Provider",
32300 20 46 6f 72 44 69 73 70 6c 61 79 28 55 73 65 45   ForDisplay(UseE
32310 66 36 50 72 6f 76 69 64 65 72 28 66 61 6c 73 65  f6Provider(false
32320 29 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ))),..          
32330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
32340 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
32350 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32360 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32390 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
323a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
323b0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
323c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
323d0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
323e0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
323f0 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67  eCallback(String
32400 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56  .Format(NameAndV
32410 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  alueFormat,..   
32420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32430 20 20 20 20 20 20 20 20 20 22 47 65 74 43 6f 72           "GetCor
32440 65 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20  eAssemblyName", 
32450 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20  ForDisplay(..   
32460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32470 20 20 20 20 20 20 20 20 20 47 65 74 43 6f 72 65           GetCore
32480 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 66 61 6c  AssemblyName(fal
32490 73 65 29 29 29 2c 20 74 72 61 63 65 43 61 74 65  se))), traceCate
324a0 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  gory);..        
324b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
324c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
324d0 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
324e0 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20  ion e)..        
324f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
32500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32510 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
32520 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
32530 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
32540 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
32550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32560 20 20 20 20 22 47 65 74 43 6f 72 65 41 73 73 65      "GetCoreAsse
32570 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69  mblyName", ForDi
32580 73 70 6c 61 79 28 65 29 29 2c 0d 0a 20 20 20 20  splay(e)),..    
32590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
325a0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
325b0 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  egory);..       
325c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
325d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
325e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
325f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32620 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
32630 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20           try..  
32640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32650 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
32660 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
32670 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
32680 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
32690 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
326a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
326b0 20 20 20 20 20 20 20 20 20 20 22 47 65 74 4c 69            "GetLi
326c0 6e 71 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c  nqAssemblyName",
326d0 20 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20   ForDisplay(..  
326e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
326f0 20 20 20 20 20 20 20 20 20 20 47 65 74 4c 69 6e            GetLin
32700 71 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 66 61  qAssemblyName(fa
32710 6c 73 65 29 29 29 2c 20 74 72 61 63 65 43 61 74  lse))), traceCat
32720 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  egory);..       
32730 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
32740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32750 20 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70      catch (Excep
32760 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20  tion e)..       
32770 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
32780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32790 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
327a0 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
327b0 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
327c0 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
327d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
327e0 20 20 20 20 20 22 47 65 74 4c 69 6e 71 41 73 73       "GetLinqAss
327f0 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44  emblyName", ForD
32800 69 73 70 6c 61 79 28 65 29 29 2c 0d 0a 20 20 20  isplay(e)),..   
32810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32820 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
32830 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20  tegory);..      
32840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
32850 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
32860 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
32870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
328a0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
328b0 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20            try.. 
328c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
328d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
328e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
328f0 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
32900 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
32910 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
32920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32930 20 20 20 20 20 20 20 20 20 20 20 22 47 65 74 45             "GetE
32940 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c  f6AssemblyName",
32950 20 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20   ForDisplay(..  
32960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32970 20 20 20 20 20 20 20 20 20 20 47 65 74 45 66 36            GetEf6
32980 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 66 61 6c  AssemblyName(fal
32990 73 65 29 29 29 2c 20 74 72 61 63 65 43 61 74 65  se))), traceCate
329a0 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  gory);..        
329b0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
329c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
329d0 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
329e0 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20  ion e)..        
329f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
32a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32a10 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
32a20 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
32a30 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
32a40 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
32a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32a60 20 20 20 20 22 47 65 74 45 66 36 41 73 73 65 6d      "GetEf6Assem
32a70 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73  blyName", ForDis
32a80 70 6c 61 79 28 65 29 29 2c 0d 0a 20 20 20 20 20  play(e)),..     
32a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32aa0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
32ab0 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  gory);..        
32ac0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
32ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32ae0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
32af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32b30 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
32b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32b50 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32b60 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
32b70 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67  eCallback(String
32b80 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56  .Format(NameAndV
32b90 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  alueFormat,..   
32ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32bb0 20 20 20 20 20 20 20 20 20 22 47 65 74 44 65 73           "GetDes
32bc0 69 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d  ignerAssemblyNam
32bd0 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 0d  e", ForDisplay(.
32be0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
32c00 44 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79  DesignerAssembly
32c10 4e 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20 74  Name(false))), t
32c20 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
32c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32c40 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
32c50 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
32c60 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
32c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32c80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
32c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
32ca0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
32cb0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
32cc0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
32cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32ce0 20 20 20 20 20 20 20 20 20 20 20 20 22 47 65 74              "Get
32cf0 44 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79  DesignerAssembly
32d00 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  Name", ForDispla
32d10 79 28 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  y(e)),..        
32d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32d30 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
32d40 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
32d50 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
32d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32d70 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
32d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
32db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32dc0 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
32dd0 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
32de0 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
32df0 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
32e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 47                "G
32e10 65 74 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 22  etInvariantName"
32e20 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 47 65 74  , ForDisplay(Get
32e30 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 28 0d 0a  InvariantName(..
32e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32e50 20 20 20 20 20 20 20 20 66 61 6c 73 65 29 29 29          false)))
32e60 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
32e70 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32e80 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
32e90 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
32ea0 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
32eb0 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
32ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32ed0 20 20 22 47 65 74 43 6f 6e 66 69 67 49 6e 76 61    "GetConfigInva
32ee0 72 69 61 6e 74 4e 61 6d 65 22 2c 20 46 6f 72 44  riantName", ForD
32ef0 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
32f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32f10 20 47 65 74 43 6f 6e 66 69 67 49 6e 76 61 72 69   GetConfigInvari
32f20 61 6e 74 4e 61 6d 65 28 66 61 6c 73 65 29 29 29  antName(false)))
32f30 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
32f40 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
32f50 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
32f60 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
32f70 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
32f80 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
32f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32fa0 20 20 22 47 65 74 50 72 6f 76 69 64 65 72 49 6e    "GetProviderIn
32fb0 76 61 72 69 61 6e 74 4e 61 6d 65 22 2c 20 46 6f  variantName", Fo
32fc0 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20  rDisplay(..     
32fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32fe0 20 20 20 47 65 74 50 72 6f 76 69 64 65 72 49 6e     GetProviderIn
32ff0 76 61 72 69 61 6e 74 4e 61 6d 65 28 66 61 6c 73  variantName(fals
33000 65 29 29 29 2c 20 74 72 61 63 65 43 61 74 65 67  e))), traceCateg
33010 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
33020 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
33030 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e  ceCallback(Strin
33040 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64  g.Format(NameAnd
33050 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20  ValueFormat,..  
33060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33070 20 20 20 20 20 20 22 47 65 74 46 61 63 74 6f 72        "GetFactor
33080 79 54 79 70 65 4e 61 6d 65 22 2c 20 46 6f 72 44  yTypeName", ForD
33090 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
330a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
330b0 20 47 65 74 46 61 63 74 6f 72 79 54 79 70 65 4e   GetFactoryTypeN
330c0 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20 74 72  ame(false))), tr
330d0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
330e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
330f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33110 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33130 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
33140 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
33150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33160 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
33170 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
33180 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67  eCallback(String
33190 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56  .Format(NameAndV
331a0 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  alueFormat,..   
331b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
331c0 20 20 20 20 20 20 20 20 20 22 47 65 74 50 72 6f           "GetPro
331d0 76 69 64 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d  viderAssemblyNam
331e0 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 0d  e", ForDisplay(.
331f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33200 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74               Get
33210 50 72 6f 76 69 64 65 72 41 73 73 65 6d 62 6c 79  ProviderAssembly
33220 4e 61 6d 65 28 66 61 6c 73 65 29 29 29 2c 20 74  Name(false))), t
33230 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
33240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33250 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
33260 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68             catch
33270 20 28 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a   (Exception e)..
33280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33290 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
332a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
332b0 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
332c0 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
332d0 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
332e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
332f0 20 20 20 20 20 20 20 20 20 20 20 20 22 47 65 74              "Get
33300 50 72 6f 76 69 64 65 72 41 73 73 65 6d 62 6c 79  ProviderAssembly
33310 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  Name", ForDispla
33320 79 28 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  y(e)),..        
33330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33340 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
33350 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
33360 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
33370 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
33380 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
33390 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
333a0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
333b0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
333c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
333d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
333e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
333f0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
33400 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
33410 75 62 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73  ublic Properties
33420 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
33430 69 76 61 74 65 20 41 73 73 65 6d 62 6c 79 20 61  ivate Assembly a
33440 73 73 65 6d 62 6c 79 3b 0d 0a 20 20 20 20 20 20  ssembly;..      
33450 20 20 20 20 20 20 70 75 62 6c 69 63 20 41 73 73        public Ass
33460 65 6d 62 6c 79 20 41 73 73 65 6d 62 6c 79 0d 0a  embly Assembly..
33470 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
33480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
33490 65 74 20 7b 20 72 65 74 75 72 6e 20 61 73 73 65  et { return asse
334a0 6d 62 6c 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20  mbly; }..       
334b0 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 61           set { a
334c0 73 73 65 6d 62 6c 79 20 3d 20 76 61 6c 75 65 3b  ssembly = value;
334d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
334e0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
334f0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
33500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33530 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
33540 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
33550 6e 67 20 6c 6f 67 46 69 6c 65 4e 61 6d 65 3b 0d  ng logFileName;.
33560 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
33570 6c 69 63 20 73 74 72 69 6e 67 20 4c 6f 67 46 69  lic string LogFi
33580 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  leName..        
33590 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
335a0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
335b0 75 72 6e 20 6c 6f 67 46 69 6c 65 4e 61 6d 65 3b  urn logFileName;
335c0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
335d0 20 20 20 20 73 65 74 20 7b 20 6c 6f 67 46 69 6c      set { logFil
335e0 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d  eName = value; }
335f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
33600 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
33610 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33650 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
33660 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67    private string
33670 20 72 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65   registryLogFile
33680 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
33690 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
336a0 20 52 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65   RegistryLogFile
336b0 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
336c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
336d0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
336e0 6e 20 72 65 67 69 73 74 72 79 4c 6f 67 46 69 6c  n registryLogFil
336f0 65 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20  eName; }..      
33700 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
33710 72 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e  registryLogFileN
33720 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ame = value; }..
33730 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
33740 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
33750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33790 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
337a0 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 64  private string d
337b0 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
337c0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
337d0 72 69 6e 67 20 44 69 72 65 63 74 6f 72 79 0d 0a  ring Directory..
337e0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
337f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
33800 65 74 20 7b 20 72 65 74 75 72 6e 20 64 69 72 65  et { return dire
33810 63 74 6f 72 79 3b 20 7d 0d 0a 20 20 20 20 20 20  ctory; }..      
33820 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
33830 64 69 72 65 63 74 6f 72 79 20 3d 20 76 61 6c 75  directory = valu
33840 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
33850 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
33860 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
33870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
338a0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
338b0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
338c0 72 69 6e 67 20 63 6f 72 65 46 69 6c 65 4e 61 6d  ring coreFileNam
338d0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
338e0 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 43 6f  public string Co
338f0 72 65 46 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20  reFileName..    
33900 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
33910 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
33920 20 72 65 74 75 72 6e 20 63 6f 72 65 46 69 6c 65   return coreFile
33930 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  Name; }..       
33940 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 63           set { c
33950 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20 76 61  oreFileName = va
33960 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
33970 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33980 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
339c0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
339d0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
339e0 73 74 72 69 6e 67 20 6c 69 6e 71 46 69 6c 65 4e  string linqFileN
339f0 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
33a00 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
33a10 4c 69 6e 71 46 69 6c 65 4e 61 6d 65 0d 0a 20 20  LinqFileName..  
33a20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
33a30 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
33a40 20 7b 20 72 65 74 75 72 6e 20 6c 69 6e 71 46 69   { return linqFi
33a50 6c 65 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20  leName; }..     
33a60 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
33a70 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20   linqFileName = 
33a80 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
33a90 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
33aa0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33af0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
33b00 65 20 73 74 72 69 6e 67 20 65 66 36 46 69 6c 65  e string ef6File
33b10 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
33b20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
33b30 20 45 66 36 46 69 6c 65 4e 61 6d 65 0d 0a 20 20   Ef6FileName..  
33b40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
33b50 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
33b60 20 7b 20 72 65 74 75 72 6e 20 65 66 36 46 69 6c   { return ef6Fil
33b70 65 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20  eName; }..      
33b80 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
33b90 65 66 36 46 69 6c 65 4e 61 6d 65 20 3d 20 76 61  ef6FileName = va
33ba0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
33bb0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33bc0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33c00 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
33c10 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
33c20 73 74 72 69 6e 67 20 64 65 73 69 67 6e 65 72 46  string designerF
33c30 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  ileName;..      
33c40 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72        public str
33c50 69 6e 67 20 44 65 73 69 67 6e 65 72 46 69 6c 65  ing DesignerFile
33c60 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
33c70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33c80 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
33c90 6e 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61  n designerFileNa
33ca0 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  me; }..         
33cb0 20 20 20 20 20 20 20 73 65 74 20 7b 20 64 65 73         set { des
33cc0 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20  ignerFileName = 
33cd0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
33ce0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
33cf0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
33d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
33d40 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
33d50 65 20 73 74 72 69 6e 67 20 72 65 67 69 73 74 72  e string registr
33d60 79 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20  yVersion;..     
33d70 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
33d80 72 69 6e 67 20 52 65 67 69 73 74 72 79 56 65 72  ring RegistryVer
33d90 73 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 20 20  sion..          
33da0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33db0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
33dc0 6e 20 72 65 67 69 73 74 72 79 56 65 72 73 69 6f  n registryVersio
33dd0 6e 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  n; }..          
33de0 20 20 20 20 20 20 73 65 74 20 7b 20 72 65 67 69        set { regi
33df0 73 74 72 79 56 65 72 73 69 6f 6e 20 3d 20 76 61  stryVersion = va
33e00 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
33e10 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
33e20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
33e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33e60 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
33e70 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
33e80 73 74 72 69 6e 67 20 63 6f 6e 66 69 67 56 65 72  string configVer
33e90 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20  sion;..         
33ea0 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
33eb0 20 43 6f 6e 66 69 67 56 65 72 73 69 6f 6e 0d 0a   ConfigVersion..
33ec0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
33ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
33ee0 65 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6e 66  et { return conf
33ef0 69 67 56 65 72 73 69 6f 6e 3b 20 7d 0d 0a 20 20  igVersion; }..  
33f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
33f10 74 20 7b 20 63 6f 6e 66 69 67 56 65 72 73 69 6f  t { configVersio
33f20 6e 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  n = value; }..  
33f30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
33f40 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
33f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
33f90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
33fa0 69 76 61 74 65 20 73 74 72 69 6e 67 20 76 73 56  ivate string vsV
33fb0 65 72 73 69 6f 6e 53 75 66 66 69 78 3b 0d 0a 20  ersionSuffix;.. 
33fc0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
33fd0 63 20 73 74 72 69 6e 67 20 56 73 56 65 72 73 69  c string VsVersi
33fe0 6f 6e 53 75 66 66 69 78 0d 0a 20 20 20 20 20 20  onSuffix..      
33ff0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34000 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
34010 65 74 75 72 6e 20 76 73 56 65 72 73 69 6f 6e 53  eturn vsVersionS
34020 75 66 66 69 78 3b 20 7d 0d 0a 20 20 20 20 20 20  uffix; }..      
34030 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
34040 76 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78 20  vsVersionSuffix 
34050 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
34060 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
34070 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
34080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
340c0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
340d0 61 74 65 20 73 74 72 69 6e 67 20 64 65 62 75 67  ate string debug
340e0 46 6f 72 6d 61 74 3b 0d 0a 20 20 20 20 20 20 20  Format;..       
340f0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
34100 6e 67 20 44 65 62 75 67 46 6f 72 6d 61 74 0d 0a  ng DebugFormat..
34110 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
34120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
34130 65 74 20 7b 20 72 65 74 75 72 6e 20 64 65 62 75  et { return debu
34140 67 46 6f 72 6d 61 74 3b 20 7d 0d 0a 20 20 20 20  gFormat; }..    
34150 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
34160 7b 20 64 65 62 75 67 46 6f 72 6d 61 74 20 3d 20  { debugFormat = 
34170 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
34180 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
34190 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
341a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
341e0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
341f0 65 20 73 74 72 69 6e 67 20 74 72 61 63 65 46 6f  e string traceFo
34200 72 6d 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  rmat;..         
34210 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67     public string
34220 20 54 72 61 63 65 46 6f 72 6d 61 74 0d 0a 20 20   TraceFormat..  
34230 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
34240 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
34250 20 7b 20 72 65 74 75 72 6e 20 74 72 61 63 65 46   { return traceF
34260 6f 72 6d 61 74 3b 20 7d 0d 0a 20 20 20 20 20 20  ormat; }..      
34270 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
34280 74 72 61 63 65 46 6f 72 6d 61 74 20 3d 20 76 61  traceFormat = va
34290 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
342a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
342b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
342c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
342d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
342e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
342f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34300 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
34310 49 6e 73 74 61 6c 6c 46 6c 61 67 73 20 69 6e 73  InstallFlags ins
34320 74 61 6c 6c 46 6c 61 67 73 3b 0d 0a 20 20 20 20  tallFlags;..    
34330 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 49          public I
34340 6e 73 74 61 6c 6c 46 6c 61 67 73 20 49 6e 73 74  nstallFlags Inst
34350 61 6c 6c 46 6c 61 67 73 0d 0a 20 20 20 20 20 20  allFlags..      
34360 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34370 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
34380 65 74 75 72 6e 20 69 6e 73 74 61 6c 6c 46 6c 61  eturn installFla
34390 67 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  gs; }..         
343a0 20 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e 73         set { ins
343b0 74 61 6c 6c 46 6c 61 67 73 20 3d 20 76 61 6c 75  tallFlags = valu
343c0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
343d0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
343e0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
343f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34420 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34430 20 20 20 20 20 20 70 72 69 76 61 74 65 20 50 72        private Pr
34440 6f 76 69 64 65 72 46 6c 61 67 73 20 70 72 6f 76  oviderFlags prov
34450 69 64 65 72 46 6c 61 67 73 3b 0d 0a 20 20 20 20  iderFlags;..    
34460 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 50          public P
34470 72 6f 76 69 64 65 72 46 6c 61 67 73 20 50 72 6f  roviderFlags Pro
34480 76 69 64 65 72 46 6c 61 67 73 0d 0a 20 20 20 20  viderFlags..    
34490 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
344a0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
344b0 20 72 65 74 75 72 6e 20 70 72 6f 76 69 64 65 72   return provider
344c0 46 6c 61 67 73 3b 20 7d 0d 0a 20 20 20 20 20 20  Flags; }..      
344d0 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
344e0 70 72 6f 76 69 64 65 72 46 6c 61 67 73 20 3d 20  providerFlags = 
344f0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
34500 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
34510 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
34520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
34560 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
34570 65 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20  e TracePriority 
34580 64 65 62 75 67 50 72 69 6f 72 69 74 79 3b 0d 0a  debugPriority;..
34590 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
345a0 69 63 20 54 72 61 63 65 50 72 69 6f 72 69 74 79  ic TracePriority
345b0 20 44 65 62 75 67 50 72 69 6f 72 69 74 79 0d 0a   DebugPriority..
345c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
345d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
345e0 65 74 20 7b 20 72 65 74 75 72 6e 20 64 65 62 75  et { return debu
345f0 67 50 72 69 6f 72 69 74 79 3b 20 7d 0d 0a 20 20  gPriority; }..  
34600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
34610 74 20 7b 20 64 65 62 75 67 50 72 69 6f 72 69 74  t { debugPriorit
34620 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  y = value; }..  
34630 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
34640 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
34650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
34690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
346a0 69 76 61 74 65 20 54 72 61 63 65 50 72 69 6f 72  ivate TracePrior
346b0 69 74 79 20 74 72 61 63 65 50 72 69 6f 72 69 74  ity tracePriorit
346c0 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y;..            
346d0 70 75 62 6c 69 63 20 54 72 61 63 65 50 72 69 6f  public TracePrio
346e0 72 69 74 79 20 54 72 61 63 65 50 72 69 6f 72 69  rity TracePriori
346f0 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ty..            
34700 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34710 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
34720 74 72 61 63 65 50 72 69 6f 72 69 74 79 3b 20 7d  tracePriority; }
34730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34740 20 20 73 65 74 20 7b 20 74 72 61 63 65 50 72 69    set { tracePri
34750 6f 72 69 74 79 20 3d 20 76 61 6c 75 65 3b 20 7d  ority = value; }
34760 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
34770 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
34780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
347a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
347b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
347c0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
347d0 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 70    private bool p
347e0 65 72 55 73 65 72 3b 0d 0a 20 20 20 20 20 20 20  erUser;..       
347f0 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
34800 20 50 65 72 55 73 65 72 0d 0a 20 20 20 20 20 20   PerUser..      
34810 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34820 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
34830 65 74 75 72 6e 20 70 65 72 55 73 65 72 3b 20 7d  eturn perUser; }
34840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34850 20 20 73 65 74 20 7b 20 70 65 72 55 73 65 72 20    set { perUser 
34860 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
34870 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
34880 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
34890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
348c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
348d0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
348e0 61 74 65 20 62 6f 6f 6c 20 69 6e 73 74 61 6c 6c  ate bool install
348f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
34900 75 62 6c 69 63 20 62 6f 6f 6c 20 49 6e 73 74 61  ublic bool Insta
34910 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ll..            
34920 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34930 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
34940 69 6e 73 74 61 6c 6c 3b 20 7d 0d 0a 20 20 20 20  install; }..    
34950 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
34960 7b 20 69 6e 73 74 61 6c 6c 20 3d 20 76 61 6c 75  { install = valu
34970 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
34980 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
34990 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
349a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
349d0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
349e0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
349f0 6f 6c 20 77 6f 77 36 34 3b 0d 0a 20 20 20 20 20  ol wow64;..     
34a00 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
34a10 6f 6c 20 57 6f 77 36 34 0d 0a 20 20 20 20 20 20  ol Wow64..      
34a20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
34a30 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
34a40 65 74 75 72 6e 20 77 6f 77 36 34 3b 20 7d 0d 0a  eturn wow64; }..
34a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34a60 73 65 74 20 7b 20 77 6f 77 36 34 20 3d 20 76 61  set { wow64 = va
34a70 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
34a80 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
34a90 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
34aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34ad0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34ae0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
34af0 62 6f 6f 6c 20 6e 6f 52 75 6e 74 69 6d 65 56 65  bool noRuntimeVe
34b00 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20  rsion;..        
34b10 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
34b20 4e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  NoRuntimeVersion
34b30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
34b40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34b50 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
34b60 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 3b 20  RuntimeVersion; 
34b70 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
34b80 20 20 20 73 65 74 20 7b 20 6e 6f 52 75 6e 74 69     set { noRunti
34b90 6d 65 56 65 72 73 69 6f 6e 20 3d 20 76 61 6c 75  meVersion = valu
34ba0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
34bb0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
34bc0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
34bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34c00 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
34c10 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
34c20 6f 6c 20 6e 6f 44 65 73 6b 74 6f 70 3b 0d 0a 20  ol noDesktop;.. 
34c30 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
34c40 63 20 62 6f 6f 6c 20 4e 6f 44 65 73 6b 74 6f 70  c bool NoDesktop
34c50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
34c60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
34c70 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
34c80 44 65 73 6b 74 6f 70 3b 20 7d 0d 0a 20 20 20 20  Desktop; }..    
34c90 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
34ca0 7b 20 6e 6f 44 65 73 6b 74 6f 70 20 3d 20 76 61  { noDesktop = va
34cb0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
34cc0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
34cd0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
34ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d10 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34d20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
34d30 62 6f 6f 6c 20 6e 6f 43 6f 6d 70 61 63 74 3b 0d  bool noCompact;.
34d40 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
34d50 6c 69 63 20 62 6f 6f 6c 20 4e 6f 43 6f 6d 70 61  lic bool NoCompa
34d60 63 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ct..            
34d70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34d80 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
34d90 6e 6f 43 6f 6d 70 61 63 74 3b 20 7d 0d 0a 20 20  noCompact; }..  
34da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
34db0 74 20 7b 20 6e 6f 43 6f 6d 70 61 63 74 20 3d 20  t { noCompact = 
34dc0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
34dd0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
34de0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
34df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
34e30 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
34e40 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 32 30  e bool noNetFx20
34e50 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
34e60 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74  ublic bool NoNet
34e70 46 78 32 30 0d 0a 20 20 20 20 20 20 20 20 20 20  Fx20..          
34e80 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
34e90 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
34ea0 6e 20 6e 6f 4e 65 74 46 78 32 30 3b 20 7d 0d 0a  n noNetFx20; }..
34eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34ec0 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 32 30 20  set { noNetFx20 
34ed0 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
34ee0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
34ef0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
34f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
34f40 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
34f50 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78  ate bool noNetFx
34f60 33 35 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  35;..           
34f70 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e   public bool NoN
34f80 65 74 46 78 33 35 0d 0a 20 20 20 20 20 20 20 20  etFx35..        
34f90 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
34fa0 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
34fb0 75 72 6e 20 6e 6f 4e 65 74 46 78 33 35 3b 20 7d  urn noNetFx35; }
34fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
34fd0 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 33    set { noNetFx3
34fe0 35 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  5 = value; }..  
34ff0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
35000 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
35010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35050 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
35060 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74  ivate bool noNet
35070 46 78 34 30 3b 0d 0a 20 20 20 20 20 20 20 20 20  Fx40;..         
35080 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e     public bool N
35090 6f 4e 65 74 46 78 34 30 0d 0a 20 20 20 20 20 20  oNetFx40..      
350a0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
350b0 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
350c0 65 74 75 72 6e 20 6e 6f 4e 65 74 46 78 34 30 3b  eturn noNetFx40;
350d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
350e0 20 20 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46      set { noNetF
350f0 78 34 30 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  x40 = value; }..
35100 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
35110 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
35120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35160 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
35170 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e  private bool noN
35180 65 74 46 78 34 35 3b 0d 0a 20 20 20 20 20 20 20  etFx45;..       
35190 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
351a0 20 4e 6f 4e 65 74 46 78 34 35 0d 0a 20 20 20 20   NoNetFx45..    
351b0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
351c0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
351d0 20 72 65 74 75 72 6e 20 6e 6f 4e 65 74 46 78 34   return noNetFx4
351e0 35 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  5; }..          
351f0 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 4e 65        set { noNe
35200 74 46 78 34 35 20 3d 20 76 61 6c 75 65 3b 20 7d  tFx45 = value; }
35210 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
35220 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
35230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35270 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
35280 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
35290 6f 4e 65 74 46 78 34 35 31 3b 0d 0a 20 20 20 20  oNetFx451;..    
352a0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
352b0 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34 35 31 0d 0a  ool NoNetFx451..
352c0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
352d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
352e0 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65  et { return noNe
352f0 74 46 78 34 35 31 3b 20 7d 0d 0a 20 20 20 20 20  tFx451; }..     
35300 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
35310 20 6e 6f 4e 65 74 46 78 34 35 31 20 3d 20 76 61   noNetFx451 = va
35320 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
35330 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
35340 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
35350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35380 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
35390 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
353a0 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 35 32 3b  bool noNetFx452;
353b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
353c0 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46  blic bool NoNetF
353d0 78 34 35 32 0d 0a 20 20 20 20 20 20 20 20 20 20  x452..          
353e0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
353f0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
35400 6e 20 6e 6f 4e 65 74 46 78 34 35 32 3b 20 7d 0d  n noNetFx452; }.
35410 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35420 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 35   set { noNetFx45
35430 32 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  2 = value; }..  
35440 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
35450 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
35460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
354a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
354b0 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74  ivate bool noNet
354c0 46 78 34 36 3b 0d 0a 20 20 20 20 20 20 20 20 20  Fx46;..         
354d0 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e     public bool N
354e0 6f 4e 65 74 46 78 34 36 0d 0a 20 20 20 20 20 20  oNetFx46..      
354f0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35500 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
35510 65 74 75 72 6e 20 6e 6f 4e 65 74 46 78 34 36 3b  eturn noNetFx46;
35520 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
35530 20 20 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46      set { noNetF
35540 78 34 36 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  x46 = value; }..
35550 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
35560 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
35570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
355a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
355b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
355c0 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e  private bool noN
355d0 65 74 46 78 34 36 31 3b 0d 0a 20 20 20 20 20 20  etFx461;..      
355e0 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
355f0 6c 20 4e 6f 4e 65 74 46 78 34 36 31 0d 0a 20 20  l NoNetFx461..  
35600 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
35610 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
35620 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65 74 46   { return noNetF
35630 78 34 36 31 3b 20 7d 0d 0a 20 20 20 20 20 20 20  x461; }..       
35640 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e           set { n
35650 6f 4e 65 74 46 78 34 36 31 20 3d 20 76 61 6c 75  oNetFx461 = valu
35660 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
35670 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
35680 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
35690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
356a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
356b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
356c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
356d0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
356e0 6f 6c 20 6e 6f 4e 65 74 46 78 34 36 32 3b 0d 0a  ol noNetFx462;..
356f0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
35700 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34  ic bool NoNetFx4
35710 36 32 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  62..            
35720 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
35730 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
35740 6e 6f 4e 65 74 46 78 34 36 32 3b 20 7d 0d 0a 20  noNetFx462; }.. 
35750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
35760 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 36 32 20  et { noNetFx462 
35770 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
35780 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
35790 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
357a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
357e0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
357f0 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78  ate bool noNetFx
35800 34 37 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  47;..           
35810 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e   public bool NoN
35820 65 74 46 78 34 37 0d 0a 20 20 20 20 20 20 20 20  etFx47..        
35830 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35840 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
35850 75 72 6e 20 6e 6f 4e 65 74 46 78 34 37 3b 20 7d  urn noNetFx47; }
35860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
35870 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34    set { noNetFx4
35880 37 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  7 = value; }..  
35890 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
358a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
358b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
358c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
358d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
358e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
358f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
35900 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74  ivate bool noNet
35910 46 78 34 37 31 3b 0d 0a 20 20 20 20 20 20 20 20  Fx471;..        
35920 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
35930 4e 6f 4e 65 74 46 78 34 37 31 0d 0a 20 20 20 20  NoNetFx471..    
35940 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
35950 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
35960 20 72 65 74 75 72 6e 20 6e 6f 4e 65 74 46 78 34   return noNetFx4
35970 37 31 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  71; }..         
35980 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 4e         set { noN
35990 65 74 46 78 34 37 31 20 3d 20 76 61 6c 75 65 3b  etFx471 = value;
359a0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
359b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
359c0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
359d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
359f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35a00 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
35a10 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
35a20 20 6e 6f 56 73 32 30 30 35 3b 0d 0a 20 20 20 20   noVs2005;..    
35a30 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
35a40 6f 6f 6c 20 4e 6f 56 73 32 30 30 35 0d 0a 20 20  ool NoVs2005..  
35a50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
35a60 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
35a70 20 7b 20 72 65 74 75 72 6e 20 6e 6f 56 73 32 30   { return noVs20
35a80 30 35 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  05; }..         
35a90 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 56         set { noV
35aa0 73 32 30 30 35 20 3d 20 76 61 6c 75 65 3b 20 7d  s2005 = value; }
35ab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
35ac0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
35ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b10 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
35b20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
35b30 6f 56 73 32 30 30 38 3b 0d 0a 20 20 20 20 20 20  oVs2008;..      
35b40 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
35b50 6c 20 4e 6f 56 73 32 30 30 38 0d 0a 20 20 20 20  l NoVs2008..    
35b60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
35b70 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
35b80 20 72 65 74 75 72 6e 20 6e 6f 56 73 32 30 30 38   return noVs2008
35b90 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
35ba0 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 56 73 32       set { noVs2
35bb0 30 30 38 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  008 = value; }..
35bc0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
35bd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
35be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35c20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
35c30 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 56  private bool noV
35c40 73 32 30 31 30 3b 0d 0a 20 20 20 20 20 20 20 20  s2010;..        
35c50 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
35c60 4e 6f 56 73 32 30 31 30 0d 0a 20 20 20 20 20 20  NoVs2010..      
35c70 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
35c80 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
35c90 65 74 75 72 6e 20 6e 6f 56 73 32 30 31 30 3b 20  eturn noVs2010; 
35ca0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
35cb0 20 20 20 73 65 74 20 7b 20 6e 6f 56 73 32 30 31     set { noVs201
35cc0 30 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  0 = value; }..  
35cd0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
35ce0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
35cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35d30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
35d40 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 56 73 32  ivate bool noVs2
35d50 30 31 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  012;..          
35d60 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f    public bool No
35d70 56 73 32 30 31 32 0d 0a 20 20 20 20 20 20 20 20  Vs2012..        
35d80 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
35d90 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
35da0 75 72 6e 20 6e 6f 56 73 32 30 31 32 3b 20 7d 0d  urn noVs2012; }.
35db0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
35dc0 20 73 65 74 20 7b 20 6e 6f 56 73 32 30 31 32 20   set { noVs2012 
35dd0 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
35de0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
35df0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
35e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
35e40 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
35e50 61 74 65 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31  ate bool noVs201
35e60 33 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  3;..            
35e70 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56 73  public bool NoVs
35e80 32 30 31 33 0d 0a 20 20 20 20 20 20 20 20 20 20  2013..          
35e90 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
35ea0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
35eb0 6e 20 6e 6f 56 73 32 30 31 33 3b 20 7d 0d 0a 20  n noVs2013; }.. 
35ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
35ed0 65 74 20 7b 20 6e 6f 56 73 32 30 31 33 20 3d 20  et { noVs2013 = 
35ee0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
35ef0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
35f00 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
35f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
35f50 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
35f60 65 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 35 3b  e bool noVs2015;
35f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
35f80 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56 73 32 30  blic bool NoVs20
35f90 31 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  15..            
35fa0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
35fb0 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
35fc0 6e 6f 56 73 32 30 31 35 3b 20 7d 0d 0a 20 20 20  noVs2015; }..   
35fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
35fe0 20 7b 20 6e 6f 56 73 32 30 31 35 20 3d 20 76 61   { noVs2015 = va
35ff0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
36000 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
36010 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
36020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36050 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
36060 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
36070 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 37 3b 0d 0a  bool noVs2017;..
36080 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
36090 69 63 20 62 6f 6f 6c 20 4e 6f 56 73 32 30 31 37  ic bool NoVs2017
360a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
360b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
360c0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f   get { return no
360d0 56 73 32 30 31 37 3b 20 7d 0d 0a 20 20 20 20 20  Vs2017; }..     
360e0 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
360f0 20 6e 6f 56 73 32 30 31 37 20 3d 20 76 61 6c 75   noVs2017 = valu
36100 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
36110 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
36120 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
36130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36160 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
36170 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f        private bo
36180 6f 6c 20 6e 6f 54 72 61 63 65 3b 0d 0a 20 20 20  ol noTrace;..   
36190 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
361a0 62 6f 6f 6c 20 4e 6f 54 72 61 63 65 0d 0a 20 20  bool NoTrace..  
361b0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
361c0 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
361d0 20 7b 20 72 65 74 75 72 6e 20 6e 6f 54 72 61 63   { return noTrac
361e0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
361f0 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 54 72        set { noTr
36200 61 63 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ace = value; }..
36210 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
36220 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
36230 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36240 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36250 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36260 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36270 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36280 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 43  private bool noC
36290 6f 6e 73 6f 6c 65 3b 0d 0a 20 20 20 20 20 20 20  onsole;..       
362a0 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
362b0 20 4e 6f 43 6f 6e 73 6f 6c 65 0d 0a 20 20 20 20   NoConsole..    
362c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
362d0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
362e0 20 72 65 74 75 72 6e 20 6e 6f 43 6f 6e 73 6f 6c   return noConsol
362f0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
36300 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 43 6f        set { noCo
36310 6e 73 6f 6c 65 20 3d 20 76 61 6c 75 65 3b 20 7d  nsole = value; }
36320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
36330 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
36340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36380 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
36390 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e    private bool n
363a0 6f 4c 6f 67 3b 0d 0a 20 20 20 20 20 20 20 20 20  oLog;..         
363b0 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e     public bool N
363c0 6f 4c 6f 67 0d 0a 20 20 20 20 20 20 20 20 20 20  oLog..          
363d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
363e0 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
363f0 6e 20 6e 6f 4c 6f 67 3b 20 7d 0d 0a 20 20 20 20  n noLog; }..    
36400 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
36410 7b 20 6e 6f 4c 6f 67 20 3d 20 76 61 6c 75 65 3b  { noLog = value;
36420 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
36430 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
36440 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
36450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36480 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
36490 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
364a0 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 3b   throwOnMissing;
364b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
364c0 62 6c 69 63 20 62 6f 6f 6c 20 54 68 72 6f 77 4f  blic bool ThrowO
364d0 6e 4d 69 73 73 69 6e 67 0d 0a 20 20 20 20 20 20  nMissing..      
364e0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
364f0 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
36500 65 74 75 72 6e 20 74 68 72 6f 77 4f 6e 4d 69 73  eturn throwOnMis
36510 73 69 6e 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20  sing; }..       
36520 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 74           set { t
36530 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 20 3d 20  hrowOnMissing = 
36540 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
36550 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
36560 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
36570 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36580 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
365a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
365b0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
365c0 65 20 62 6f 6f 6c 20 77 68 61 74 49 66 3b 0d 0a  e bool whatIf;..
365d0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
365e0 69 63 20 62 6f 6f 6c 20 57 68 61 74 49 66 0d 0a  ic bool WhatIf..
365f0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
36600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
36610 65 74 20 7b 20 72 65 74 75 72 6e 20 77 68 61 74  et { return what
36620 49 66 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  If; }..         
36630 20 20 20 20 20 20 20 73 65 74 20 7b 20 77 68 61         set { wha
36640 74 49 66 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  tIf = value; }..
36650 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
36660 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
36670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
366a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
366b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
366c0 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 65 62  private bool deb
366d0 75 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ug;..           
366e0 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 44 65 62   public bool Deb
366f0 75 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ug..            
36700 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
36710 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
36720 64 65 62 75 67 3b 20 7d 0d 0a 20 20 20 20 20 20  debug; }..      
36730 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
36740 64 65 62 75 67 20 3d 20 76 61 6c 75 65 3b 20 7d  debug = value; }
36750 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
36760 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
36770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
367a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
367b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
367c0 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 76    private bool v
367d0 65 72 62 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20  erbose;..       
367e0 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
367f0 20 56 65 72 62 6f 73 65 0d 0a 20 20 20 20 20 20   Verbose..      
36800 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
36810 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
36820 65 74 75 72 6e 20 76 65 72 62 6f 73 65 3b 20 7d  eturn verbose; }
36830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36840 20 20 73 65 74 20 7b 20 76 65 72 62 6f 73 65 20    set { verbose 
36850 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
36860 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
36870 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
36880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
368a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
368b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
368c0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
368d0 61 74 65 20 62 6f 6f 6c 20 63 6f 6e 66 69 72 6d  ate bool confirm
368e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
368f0 75 62 6c 69 63 20 62 6f 6f 6c 20 43 6f 6e 66 69  ublic bool Confi
36900 72 6d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rm..            
36910 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
36920 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
36930 63 6f 6e 66 69 72 6d 3b 20 7d 0d 0a 20 20 20 20  confirm; }..    
36940 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
36950 7b 20 63 6f 6e 66 69 72 6d 20 3d 20 76 61 6c 75  { confirm = valu
36960 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
36970 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
36980 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
36990 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
369a0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
369b0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
369c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
369f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
36a00 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
36a10 20 46 72 61 6d 65 77 6f 72 6b 4c 69 73 74 20 43   FrameworkList C
36a20 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20 70 72  lass..        pr
36a30 69 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61  ivate sealed cla
36a40 73 73 20 46 72 61 6d 65 77 6f 72 6b 4c 69 73 74  ss FrameworkList
36a50 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
36a60 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
36a70 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63   Public Construc
36a80 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20  tors..          
36a90 20 20 70 75 62 6c 69 63 20 46 72 61 6d 65 77 6f    public Framewo
36aa0 72 6b 4c 69 73 74 28 29 0d 0a 20 20 20 20 20 20  rkList()..      
36ab0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
36ac0 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
36ad0 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
36ae0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
36af0 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
36b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
36b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b50 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
36b60 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
36b70 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
36b80 20 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63       private Moc
36b90 6b 52 65 67 69 73 74 72 79 4b 65 79 20 72 6f 6f  kRegistryKey roo
36ba0 74 4b 65 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  tKey;..         
36bb0 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65     public MockRe
36bc0 67 69 73 74 72 79 4b 65 79 20 52 6f 6f 74 4b 65  gistryKey RootKe
36bd0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  y..            {
36be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36bf0 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 72    get { return r
36c00 6f 6f 74 4b 65 79 3b 20 7d 0d 0a 20 20 20 20 20  ootKey; }..     
36c10 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
36c20 20 72 6f 6f 74 4b 65 79 20 3d 20 76 61 6c 75 65   rootKey = value
36c30 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
36c40 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
36c50 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
36c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36c90 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
36ca0 20 20 20 20 20 70 72 69 76 61 74 65 20 53 74 72       private Str
36cb0 69 6e 67 4c 69 73 74 20 6e 61 6d 65 73 3b 0d 0a  ingList names;..
36cc0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
36cd0 69 63 20 53 74 72 69 6e 67 4c 69 73 74 20 4e 61  ic StringList Na
36ce0 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mes..           
36cf0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
36d00 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
36d10 20 6e 61 6d 65 73 3b 20 7d 0d 0a 20 20 20 20 20   names; }..     
36d20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
36d30 20 6e 61 6d 65 73 20 3d 20 76 61 6c 75 65 3b 20   names = value; 
36d40 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
36d50 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
36d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36da0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
36db0 20 20 20 70 72 69 76 61 74 65 20 56 65 72 73 69     private Versi
36dc0 6f 6e 4d 61 70 20 76 65 72 73 69 6f 6e 73 3b 0d  onMap versions;.
36dd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
36de0 6c 69 63 20 56 65 72 73 69 6f 6e 4d 61 70 20 56  lic VersionMap V
36df0 65 72 73 69 6f 6e 73 0d 0a 20 20 20 20 20 20 20  ersions..       
36e00 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
36e10 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
36e20 74 75 72 6e 20 76 65 72 73 69 6f 6e 73 3b 20 7d  turn versions; }
36e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
36e40 20 20 73 65 74 20 7b 20 76 65 72 73 69 6f 6e 73    set { versions
36e50 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
36e60 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
36e70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
36e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
36ec0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
36ed0 76 61 74 65 20 53 74 72 69 6e 67 4c 69 73 74 20  vate StringList 
36ee0 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 73 3b 0d 0a  platformNames;..
36ef0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
36f00 69 63 20 53 74 72 69 6e 67 4c 69 73 74 20 50 6c  ic StringList Pl
36f10 61 74 66 6f 72 6d 4e 61 6d 65 73 0d 0a 20 20 20  atformNames..   
36f20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
36f30 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
36f40 7b 20 72 65 74 75 72 6e 20 70 6c 61 74 66 6f 72  { return platfor
36f50 6d 4e 61 6d 65 73 3b 20 7d 0d 0a 20 20 20 20 20  mNames; }..     
36f60 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
36f70 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 73 20 3d   platformNames =
36f80 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
36f90 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
36fa0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
36fb0 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
36fc0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
36fd0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
36fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37020 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
37030 65 67 69 6f 6e 20 56 73 4c 69 73 74 20 43 6c 61  egion VsList Cla
37040 73 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ss..        priv
37050 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61 73 73  ate sealed class
37060 20 56 73 4c 69 73 74 0d 0a 20 20 20 20 20 20 20   VsList..       
37070 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
37080 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 43  #region Public C
37090 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20 20  onstructors..   
370a0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
370b0 56 73 4c 69 73 74 28 29 0d 0a 20 20 20 20 20 20  VsList()..      
370c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
370d0 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e           // do n
370e0 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20  othing...       
370f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
37100 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
37110 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
37120 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37130 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37140 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37150 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37160 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
37170 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
37180 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
37190 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
371a0 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
371b0 72 6f 6f 74 4b 65 79 3b 0d 0a 20 20 20 20 20 20  rootKey;..      
371c0 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
371d0 6b 52 65 67 69 73 74 72 79 4b 65 79 20 52 6f 6f  kRegistryKey Roo
371e0 74 4b 65 79 0d 0a 20 20 20 20 20 20 20 20 20 20  tKey..          
371f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
37200 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72       get { retur
37210 6e 20 72 6f 6f 74 4b 65 79 3b 20 7d 0d 0a 20 20  n rootKey; }..  
37220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
37230 74 20 7b 20 72 6f 6f 74 4b 65 79 20 3d 20 76 61  t { rootKey = va
37240 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
37250 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
37260 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
37270 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37280 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37290 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
372a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
372b0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
372c0 56 65 72 73 69 6f 6e 4c 69 73 74 20 76 65 72 73  VersionList vers
372d0 69 6f 6e 73 3b 0d 0a 20 20 20 20 20 20 20 20 20  ions;..         
372e0 20 20 20 70 75 62 6c 69 63 20 56 65 72 73 69 6f     public Versio
372f0 6e 4c 69 73 74 20 56 65 72 73 69 6f 6e 73 0d 0a  nList Versions..
37300 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
37310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
37320 65 74 20 7b 20 72 65 74 75 72 6e 20 76 65 72 73  et { return vers
37330 69 6f 6e 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20  ions; }..       
37340 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 76           set { v
37350 65 72 73 69 6f 6e 73 20 3d 20 76 61 6c 75 65 3b  ersions = value;
37360 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
37370 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
37380 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20  endregion..     
37390 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65     }..        #e
373a0 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20  ndregion..      
373b0 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
373c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
373d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
373e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
373f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
37410 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
37420 6f 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74  on Private Const
37430 61 6e 74 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ant Data..      
37440 20 20 23 72 65 67 69 6f 6e 20 50 61 63 6b 61 67    #region Packag
37450 65 20 26 20 50 72 6f 76 69 64 65 72 20 4e 61 6d  e & Provider Nam
37460 65 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  es..        priv
37470 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
37480 20 43 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20   CoreFileName = 
37490 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c  "System.Data.SQL
374a0 69 74 65 2e 64 6c 6c 22 3b 0d 0a 20 20 20 20 20  ite.dll";..     
374b0 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
374c0 20 73 74 72 69 6e 67 20 4c 69 6e 71 46 69 6c 65   string LinqFile
374d0 4e 61 6d 65 20 3d 20 22 53 79 73 74 65 6d 2e 44  Name = "System.D
374e0 61 74 61 2e 53 51 4c 69 74 65 2e 4c 69 6e 71 2e  ata.SQLite.Linq.
374f0 64 6c 6c 22 3b 0d 0a 20 20 20 20 20 20 20 20 70  dll";..        p
37500 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
37510 69 6e 67 20 45 66 36 46 69 6c 65 4e 61 6d 65 20  ing Ef6FileName 
37520 3d 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  = "System.Data.S
37530 51 4c 69 74 65 2e 45 46 36 2e 64 6c 6c 22 3b 0d  QLite.EF6.dll";.
37540 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
37550 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 65   const string De
37560 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d  signerFileName =
37570 20 22 53 51 4c 69 74 65 2e 44 65 73 69 67 6e 65   "SQLite.Designe
37580 72 2e 64 6c 6c 22 3b 0d 0a 20 20 20 20 20 20 20  r.dll";..       
37590 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
375a0 74 72 69 6e 67 20 50 72 6f 76 69 64 65 72 4e 61  tring ProviderNa
375b0 6d 65 20 3d 20 22 53 51 4c 69 74 65 20 44 61 74  me = "SQLite Dat
375c0 61 20 50 72 6f 76 69 64 65 72 22 3b 0d 0a 20 20  a Provider";..  
375d0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
375e0 6e 73 74 20 73 74 72 69 6e 67 20 50 72 6f 6a 65  nst string Proje
375f0 63 74 4e 61 6d 65 20 3d 20 22 53 79 73 74 65 6d  ctName = "System
37600 2e 44 61 74 61 2e 53 51 4c 69 74 65 22 3b 0d 0a  .Data.SQLite";..
37610 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
37620 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 4c 65 67  const string Leg
37630 61 63 79 50 72 6f 6a 65 63 74 4e 61 6d 65 20 3d  acyProjectName =
37640 20 22 53 51 4c 69 74 65 22 3b 0d 0a 0d 0a 20 20   "SQLite";....  
37650 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
37660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37680 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37690 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
376a0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
376b0 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 65   const string De
376c0 73 63 72 69 70 74 69 6f 6e 20 3d 0d 0a 20 20 20  scription =..   
376d0 20 20 20 20 20 20 20 20 20 22 2e 4e 45 54 20 46           ".NET F
376e0 72 61 6d 65 77 6f 72 6b 20 44 61 74 61 20 50 72  ramework Data Pr
376f0 6f 76 69 64 65 72 20 66 6f 72 20 53 51 4c 69 74  ovider for SQLit
37700 65 22 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  e";..        #en
37710 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
37720 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
37730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
37770 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
37780 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73 70 6c  nst string Displ
37790 61 79 4e 75 6c 6c 20 3d 20 22 3c 6e 75 6c 6c 3e  ayNull = "<null>
377a0 22 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ";..        priv
377b0 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
377c0 20 44 69 73 70 6c 61 79 45 6d 70 74 79 20 3d 20   DisplayEmpty = 
377d0 22 3c 65 6d 70 74 79 3e 22 3b 0d 0a 0d 0a 20 20  "<empty>";....  
377e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
377f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
37830 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
37840 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 43 4c   const string CL
37850 52 76 32 49 6d 61 67 65 52 75 6e 74 69 6d 65 56  Rv2ImageRuntimeV
37860 65 72 73 69 6f 6e 20 3d 20 22 76 32 2e 30 2e 35  ersion = "v2.0.5
37870 30 37 32 37 22 3b 0d 0a 20 20 20 20 20 20 20 20  0727";..        
37880 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
37890 72 69 6e 67 20 43 4c 52 76 34 49 6d 61 67 65 52  ring CLRv4ImageR
378a0 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 20 3d 20  untimeVersion = 
378b0 22 76 34 2e 30 2e 33 30 33 31 39 22 3b 0d 0a 0d  "v4.0.30319";...
378c0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
378d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
378e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
378f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37910 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ....        priv
37920 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
37930 20 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62   SystemEf6Assemb
37940 6c 79 4e 61 6d 65 20 3d 20 22 45 6e 74 69 74 79  lyName = "Entity
37950 46 72 61 6d 65 77 6f 72 6b 2c 20 22 20 2b 0d 0a  Framework, " +..
37960 20 20 20 20 20 20 20 20 20 20 20 20 22 56 65 72              "Ver
37970 73 69 6f 6e 3d 36 2e 30 2e 30 2e 30 2c 20 43 75  sion=6.0.0.0, Cu
37980 6c 74 75 72 65 3d 6e 65 75 74 72 61 6c 2c 20 50  lture=neutral, P
37990 75 62 6c 69 63 4b 65 79 54 6f 6b 65 6e 3d 62 37  ublicKeyToken=b7
379a0 37 61 35 63 35 36 31 39 33 34 65 30 38 39 22 3b  7a5c561934e089";
379b0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
379c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
379d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
379e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
379f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37a00 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70  ///....        p
37a10 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72  rivate const str
37a20 69 6e 67 20 4e 61 6d 65 41 6e 64 56 61 6c 75 65  ing NameAndValue
37a30 46 6f 72 6d 61 74 20 3d 20 22 7b 30 7d 3a 20 7b  Format = "{0}: {
37a40 31 7d 22 3b 0d 0a 20 20 20 20 20 20 20 20 70 72  1}";..        pr
37a50 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
37a60 6e 67 20 4c 6f 67 46 69 6c 65 53 75 66 66 69 78  ng LogFileSuffix
37a70 20 3d 20 22 2e 6c 6f 67 22 3b 0d 0a 0d 0a 20 20   = ".log";....  
37a80 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
37a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
37ad0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
37ae0 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 56 73   const string Vs
37af0 44 65 76 45 6e 76 53 65 74 75 70 46 6f 72 6d 61  DevEnvSetupForma
37b00 74 20 3d 20 22 7b 30 7d 3a 20 7b 31 7d 22 3b 0d  t = "{0}: {1}";.
37b10 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
37b20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
37b70 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
37b80 6e 67 20 52 6f 6f 74 4b 65 79 4e 61 6d 65 20 3d  ng RootKeyName =
37b90 20 22 53 6f 66 74 77 61 72 65 22 3b 0d 0a 20 20   "Software";..  
37ba0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f        private co
37bb0 6e 73 74 20 73 74 72 69 6e 67 20 57 6f 77 36 34  nst string Wow64
37bc0 53 75 62 4b 65 79 4e 61 6d 65 20 3d 20 22 57 6f  SubKeyName = "Wo
37bd0 77 36 34 33 32 4e 6f 64 65 22 3b 0d 0a 0d 0a 20  w6432Node";.... 
37be0 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
37bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
37c30 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
37c40 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
37c50 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  he .NET Framewor
37c60 6b 20 68 61 73 20 62 6f 74 68 20 33 32 2d 62 69  k has both 32-bi
37c70 74 20 61 6e 64 20 36 34 2d 62 69 74 20 65 64 69  t and 64-bit edi
37c80 74 69 6f 6e 73 2e 0d 0a 20 20 20 20 20 20 20 20  tions...        
37c90 2f 2f 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  //..        priv
37ca0 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64 6f  ate static reado
37cb0 6e 6c 79 20 62 6f 6f 6c 20 4e 65 74 46 78 49 73  nly bool NetFxIs
37cc0 33 32 42 69 74 4f 6e 6c 79 20 3d 20 66 61 6c 73  32BitOnly = fals
37cd0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  e;....        //
37ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37cf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37d20 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
37d30 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20   //..        // 
37d40 4e 4f 54 45 3a 20 46 6f 72 20 6e 6f 77 2c 20 56  NOTE: For now, V
37d50 69 73 75 61 6c 20 53 74 75 64 69 6f 20 69 73 20  isual Studio is 
37d60 61 6c 77 61 79 73 20 61 20 33 32 2d 62 69 74 20  always a 32-bit 
37d70 61 70 70 6c 69 63 61 74 69 6f 6e 2e 0d 0a 20 20  application...  
37d80 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
37d90 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
37da0 20 72 65 61 64 6f 6e 6c 79 20 62 6f 6f 6c 20 56   readonly bool V
37db0 73 49 73 33 32 42 69 74 4f 6e 6c 79 20 3d 20 74  sIs32BitOnly = t
37dc0 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
37dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
37e20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
37e30 63 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e  c readonly strin
37e40 67 20 56 73 49 64 46 6f 72 6d 61 74 20 3d 20 22  g VsIdFormat = "
37e50 42 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  B";....        /
37e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37ea0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
37eb0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
37ec0 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
37ed0 20 58 50 61 74 68 46 6f 72 41 64 64 45 6c 65 6d   XPathForAddElem
37ee0 65 6e 74 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  ent =..         
37ef0 20 20 20 22 63 6f 6e 66 69 67 75 72 61 74 69 6f     "configuratio
37f00 6e 2f 73 79 73 74 65 6d 2e 64 61 74 61 2f 44 62  n/system.data/Db
37f10 50 72 6f 76 69 64 65 72 46 61 63 74 6f 72 69 65  ProviderFactorie
37f20 73 2f 61 64 64 5b 40 69 6e 76 61 72 69 61 6e 74  s/add[@invariant
37f30 3d 5c 22 7b 30 7d 5c 22 5d 22 3b 0d 0a 0d 0a 20  =\"{0}\"]";.... 
37f40 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
37f50 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 73  tatic readonly s
37f60 74 72 69 6e 67 20 58 50 61 74 68 46 6f 72 52 65  tring XPathForRe
37f70 6d 6f 76 65 45 6c 65 6d 65 6e 74 20 3d 0d 0a 20  moveElement =.. 
37f80 20 20 20 20 20 20 20 20 20 20 20 22 63 6f 6e 66             "conf
37f90 69 67 75 72 61 74 69 6f 6e 2f 73 79 73 74 65 6d  iguration/system
37fa0 2e 64 61 74 61 2f 44 62 50 72 6f 76 69 64 65 72  .data/DbProvider
37fb0 46 61 63 74 6f 72 69 65 73 2f 72 65 6d 6f 76 65  Factories/remove
37fc0 5b 40 69 6e 76 61 72 69 61 6e 74 3d 5c 22 7b 30  [@invariant=\"{0
37fd0 7d 5c 22 5d 22 3b 0d 0a 20 20 20 20 20 20 20 20  }\"]";..        
37fe0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
37ff0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
38000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
38040 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
38050 20 50 72 69 76 61 74 65 20 53 74 61 74 69 63 20   Private Static 
38060 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 23 72  Data..        #r
38070 65 67 69 6f 6e 20 44 69 61 67 6e 6f 73 74 69 63  egion Diagnostic
38080 73 20 26 20 4c 6f 67 67 69 6e 67 0d 0a 20 20 20  s & Logging..   
38090 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
380a0 20 2f 2f 20 4e 4f 54 45 3a 20 43 61 63 68 65 20   // NOTE: Cache 
380b0 74 68 65 20 63 75 72 72 65 6e 74 20 70 72 6f 63  the current proc
380c0 65 73 73 20 61 6e 64 20 61 73 73 65 6d 62 6c 79  ess and assembly
380d0 20 61 73 20 74 68 65 79 20 64 6f 20 6e 6f 74 20   as they do not 
380e0 63 68 61 6e 67 65 0d 0a 20 20 20 20 20 20 20 20  change..        
380f0 2f 2f 20 20 20 20 20 20 20 61 6e 64 20 6d 61 79  //       and may
38100 20 62 65 20 6e 65 65 64 65 64 20 69 6e 20 71 75   be needed in qu
38110 69 74 65 20 61 20 66 65 77 20 64 69 66 66 65 72  ite a few differ
38120 65 6e 74 20 70 6c 61 63 65 73 2e 0d 0a 20 20 20  ent places...   
38130 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
38140 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
38150 50 72 6f 63 65 73 73 20 74 68 69 73 50 72 6f 63  Process thisProc
38160 65 73 73 20 3d 20 50 72 6f 63 65 73 73 2e 47 65  ess = Process.Ge
38170 74 43 75 72 72 65 6e 74 50 72 6f 63 65 73 73 28  tCurrentProcess(
38180 29 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  );..        priv
38190 61 74 65 20 73 74 61 74 69 63 20 41 73 73 65 6d  ate static Assem
381a0 62 6c 79 20 74 68 69 73 41 73 73 65 6d 62 6c 79  bly thisAssembly
381b0 20 3d 20 41 73 73 65 6d 62 6c 79 2e 47 65 74 45   = Assembly.GetE
381c0 78 65 63 75 74 69 6e 67 41 73 73 65 6d 62 6c 79  xecutingAssembly
381d0 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ();....        /
381e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
381f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38220 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
38230 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f    //..        //
38240 20 4e 4f 54 45 3a 20 54 68 65 20 74 72 61 63 65   NOTE: The trace
38250 20 63 61 74 65 67 6f 72 79 20 69 73 20 74 68 65   category is the
38260 20 73 61 6d 65 20 66 6f 72 20 62 6f 74 68 20 74   same for both t
38270 68 65 20 64 65 62 75 67 20 61 6e 64 20 74 72 61  he debug and tra
38280 63 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20  ce..        //  
38290 20 20 20 20 20 63 61 6c 6c 62 61 63 6b 73 2e 0d       callbacks..
382a0 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20  .        //..   
382b0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
382c0 74 69 63 20 73 74 72 69 6e 67 20 74 72 61 63 65  tic string trace
382d0 43 61 74 65 67 6f 72 79 20 3d 20 28 74 68 69 73  Category = (this
382e0 41 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c  Assembly != null
382f0 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
38300 20 50 61 74 68 2e 47 65 74 46 69 6c 65 4e 61 6d   Path.GetFileNam
38310 65 28 74 68 69 73 41 73 73 65 6d 62 6c 79 2e 4c  e(thisAssembly.L
38320 6f 63 61 74 69 6f 6e 29 20 3a 20 6e 75 6c 6c 3b  ocation) : null;
38330 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
38340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38380 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ///....        /
38390 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f  /..        // NO
383a0 54 45 3a 20 53 65 74 20 74 68 65 20 64 65 62 75  TE: Set the debu
383b0 67 20 61 6e 64 20 74 72 61 63 65 20 6c 6f 67 67  g and trace logg
383c0 69 6e 67 20 63 61 6c 6c 62 61 63 6b 73 20 75 73  ing callbacks us
383d0 65 64 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20  ed by the..     
383e0 20 20 20 2f 2f 20 20 20 20 20 20 20 61 70 70 6c     //       appl
383f0 69 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20  ication...      
38400 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 70 72    //..        pr
38410 69 76 61 74 65 20 73 74 61 74 69 63 20 54 72 61  ivate static Tra
38420 63 65 43 61 6c 6c 62 61 63 6b 20 64 65 62 75 67  ceCallback debug
38430 43 61 6c 6c 62 61 63 6b 20 3d 20 41 70 70 44 65  Callback = AppDe
38440 62 75 67 3b 0d 0a 20 20 20 20 20 20 20 20 70 72  bug;..        pr
38450 69 76 61 74 65 20 73 74 61 74 69 63 20 54 72 61  ivate static Tra
38460 63 65 43 61 6c 6c 62 61 63 6b 20 74 72 61 63 65  ceCallback trace
38470 43 61 6c 6c 62 61 63 6b 20 3d 20 41 70 70 54 72  Callback = AppTr
38480 61 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 23 65  ace;..        #e
38490 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
384a0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
384b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
384c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
384d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
384e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
384f0 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53         #region S
38500 79 73 74 65 6d 20 44 69 72 65 63 74 6f 72 79 0d  ystem Directory.
38510 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
38520 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 73   static string s
38530 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79 20 3d  ystemDirectory =
38540 20 6e 75 6c 6c 3b 0d 0a 0d 0a 23 69 66 20 57 49   null;....#if WI
38550 4e 44 4f 57 53 0d 0a 20 20 20 20 20 20 20 20 70  NDOWS..        p
38560 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73 74  rivate static st
38570 72 69 6e 67 20 73 79 73 74 65 6d 44 69 72 65 63  ring systemDirec
38580 74 6f 72 79 57 6f 77 36 34 20 3d 20 6e 75 6c 6c  toryWow64 = null
38590 3b 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20  ;..#endif..     
385a0 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
385b0 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
385c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
385d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
385e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
385f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38600 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
38610 69 6f 6e 20 52 65 67 69 73 74 72 79 20 53 74 61  ion Registry Sta
38620 74 69 73 74 69 63 73 0d 0a 20 20 20 20 20 20 20  tistics..       
38630 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
38640 69 6e 74 20 66 69 6c 65 73 43 72 65 61 74 65 64  int filesCreated
38650 20 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 70   = 0;..        p
38660 72 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e  rivate static in
38670 74 20 66 69 6c 65 73 4d 6f 64 69 66 69 65 64 20  t filesModified 
38680 3d 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 70 72  = 0;..        pr
38690 69 76 61 74 65 20 73 74 61 74 69 63 20 69 6e 74  ivate static int
386a0 20 66 69 6c 65 73 44 65 6c 65 74 65 64 20 3d 20   filesDeleted = 
386b0 30 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64  0;..        #end
386c0 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  region..        
386d0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
386e0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
386f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
38730 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
38740 20 54 72 61 63 65 20 48 61 6e 64 6c 69 6e 67 0d   Trace Handling.
38750 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
38760 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47   static string G
38770 65 74 4c 6f 67 46 69 6c 65 4e 61 6d 65 28 0d 0a  etLogFileName(..
38780 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
38790 6e 67 20 74 79 70 65 4e 61 6d 65 0d 0a 20 20 20  ng typeName..   
387a0 20 20 20 20 20 20 20 20 20 29 20 2f 2a 20 74 68           ) /* th
387b0 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
387c0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 73  {..            s
387d0 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 20 3d  tring fileName =
387e0 20 50 61 74 68 2e 47 65 74 54 65 6d 70 46 69 6c   Path.GetTempFil
387f0 65 4e 61 6d 65 28 29 3b 0d 0a 20 20 20 20 20 20  eName();..      
38800 20 20 20 20 20 20 73 74 72 69 6e 67 20 64 69 72        string dir
38810 65 63 74 6f 72 79 20 3d 20 50 61 74 68 2e 47 65  ectory = Path.Ge
38820 74 44 69 72 65 63 74 6f 72 79 4e 61 6d 65 28 66  tDirectoryName(f
38830 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  ileName);..     
38840 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 66 69         string fi
38850 6c 65 4e 61 6d 65 4f 6e 6c 79 20 3d 20 50 61 74  leNameOnly = Pat
38860 68 2e 47 65 74 46 69 6c 65 4e 61 6d 65 57 69 74  h.GetFileNameWit
38870 68 6f 75 74 45 78 74 65 6e 73 69 6f 6e 28 66 69  houtExtension(fi
38880 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
38890 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
388a0 65 77 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74  ewFileName = Pat
388b0 68 2e 43 6f 6d