System.Data.SQLite
Hex Artifact Content
Not logged in

Artifact 033e596943f9a8443567f50ac4d10e2ecfd52d60:


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 0d 0a 20 20 20 20 20 20 20 20 43 6f  0x0,..        Co
0d70: 72 65 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79  reGlobalAssembly
0d80: 43 61 63 68 65 20 3d 20 30 78 31 2c 0d 0a 20 20  Cache = 0x1,..  
0d90: 20 20 20 20 20 20 4c 69 6e 71 47 6c 6f 62 61 6c        LinqGlobal
0da0: 41 73 73 65 6d 62 6c 79 43 61 63 68 65 20 3d 20  AssemblyCache = 
0db0: 30 78 32 2c 0d 0a 20 20 20 20 20 20 20 20 45 66  0x2,..        Ef
0dc0: 36 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43  6GlobalAssemblyC
0dd0: 61 63 68 65 20 3d 20 30 78 34 2c 0d 0a 20 20 20  ache = 0x4,..   
0de0: 20 20 20 20 20 41 73 73 65 6d 62 6c 79 46 6f 6c       AssemblyFol
0df0: 64 65 72 73 20 3d 20 30 78 38 2c 0d 0a 20 20 20  ders = 0x8,..   
0e00: 20 20 20 20 20 44 62 50 72 6f 76 69 64 65 72 46       DbProviderF
0e10: 61 63 74 6f 72 79 20 3d 20 30 78 31 30 2c 0d 0a  actory = 0x10,..
0e20: 20 20 20 20 20 20 20 20 56 73 50 61 63 6b 61 67          VsPackag
0e30: 65 20 3d 20 30 78 32 30 2c 0d 0a 20 20 20 20 20  e = 0x20,..     
0e40: 20 20 20 56 73 50 61 63 6b 61 67 65 47 6c 6f 62     VsPackageGlob
0e50: 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65 20  alAssemblyCache 
0e60: 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 20 20 20  = 0x40,..       
0e70: 20 56 73 44 61 74 61 53 6f 75 72 63 65 20 3d 20   VsDataSource = 
0e80: 30 78 38 30 2c 0d 0a 20 20 20 20 20 20 20 20 56  0x80,..        V
0e90: 73 44 61 74 61 50 72 6f 76 69 64 65 72 20 3d 20  sDataProvider = 
0ea0: 30 78 31 30 30 2c 0d 0a 20 20 20 20 20 20 20 20  0x100,..        
0eb0: 56 73 44 65 76 45 6e 76 53 65 74 75 70 20 3d 20  VsDevEnvSetup = 
0ec0: 30 78 32 30 30 2c 0d 0a 20 20 20 20 20 20 20 20  0x200,..        
0ed0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
0ee0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
0ef0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
0f20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
0f30: 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
0f40: 20 43 6f 6d 70 6f 73 69 74 65 20 56 61 6c 75 65   Composite Value
0f50: 73 0d 0a 20 20 20 20 20 20 20 20 46 72 61 6d 65  s..        Frame
0f60: 77 6f 72 6b 47 6c 6f 62 61 6c 41 73 73 65 6d 62  workGlobalAssemb
0f70: 6c 79 43 61 63 68 65 20 3d 20 43 6f 72 65 47 6c  lyCache = CoreGl
0f80: 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61 63 68  obalAssemblyCach
0f90: 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e |..           
0fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0fb0: 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 6e 71              Linq
0fc0: 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43 61  GlobalAssemblyCa
0fd0: 63 68 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20  che |..         
0fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
0ff0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 45 66                Ef
1000: 36 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43  6GlobalAssemblyC
1010: 61 63 68 65 2c 0d 0a 0d 0a 20 20 20 20 20 20 20  ache,....       
1020: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
1030: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1060: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
1070: 20 20 20 20 46 72 61 6d 65 77 6f 72 6b 20 3d 20      Framework = 
1080: 46 72 61 6d 65 77 6f 72 6b 47 6c 6f 62 61 6c 41  FrameworkGlobalA
1090: 73 73 65 6d 62 6c 79 43 61 63 68 65 20 7c 20 41  ssemblyCache | A
10a0: 73 73 65 6d 62 6c 79 46 6f 6c 64 65 72 73 20 7c  ssemblyFolders |
10b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10c0: 20 20 20 20 20 20 44 62 50 72 6f 76 69 64 65 72        DbProvider
10d0: 46 61 63 74 6f 72 79 2c 0d 0a 0d 0a 20 20 20 20  Factory,....    
10e0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
10f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
1130: 20 20 20 20 20 20 20 56 73 20 3d 20 56 73 50 61         Vs = VsPa
1140: 63 6b 61 67 65 20 7c 20 56 73 50 61 63 6b 61 67  ckage | VsPackag
1150: 65 47 6c 6f 62 61 6c 41 73 73 65 6d 62 6c 79 43  eGlobalAssemblyC
1160: 61 63 68 65 20 7c 20 56 73 44 61 74 61 53 6f 75  ache | VsDataSou
1170: 72 63 65 20 7c 0d 0a 20 20 20 20 20 20 20 20 20  rce |..         
1180: 20 20 20 20 56 73 44 61 74 61 50 72 6f 76 69 64      VsDataProvid
1190: 65 72 20 7c 20 56 73 44 65 76 45 6e 76 53 65 74  er | VsDevEnvSet
11a0: 75 70 2c 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  up,....        /
11b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
1200: 20 20 41 6c 6c 47 6c 6f 62 61 6c 41 73 73 65 6d    AllGlobalAssem
1210: 62 6c 79 43 61 63 68 65 20 3d 20 46 72 61 6d 65  blyCache = Frame
1220: 77 6f 72 6b 47 6c 6f 62 61 6c 41 73 73 65 6d 62  workGlobalAssemb
1230: 6c 79 43 61 63 68 65 20 7c 0d 0a 20 20 20 20 20  lyCache |..     
1240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1250: 20 20 20 20 20 20 20 20 20 20 20 20 56 73 50 61              VsPa
1260: 63 6b 61 67 65 47 6c 6f 62 61 6c 41 73 73 65 6d  ckageGlobalAssem
1270: 62 6c 79 43 61 63 68 65 2c 0d 0a 0d 0a 20 20 20  blyCache,....   
1280: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
1290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a  ////////////....
12d0: 20 20 20 20 20 20 20 20 41 6c 6c 20 3d 20 46 72          All = Fr
12e0: 61 6d 65 77 6f 72 6b 20 7c 20 56 73 2c 0d 0a 0d  amework | Vs,...
12f0: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
1300: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1310: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1320: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1330: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1340: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 41 6c 6c 45  ....        AllE
1350: 78 63 65 70 74 47 6c 6f 62 61 6c 41 73 73 65 6d  xceptGlobalAssem
1360: 62 6c 79 43 61 63 68 65 20 3d 20 41 6c 6c 20 26  blyCache = All &
1370: 20 7e 41 6c 6c 47 6c 6f 62 61 6c 41 73 73 65 6d   ~AllGlobalAssem
1380: 62 6c 79 43 61 63 68 65 2c 0d 0a 20 20 20 20 20  blyCache,..     
1390: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
13a0: 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
1400: 69 6f 6e 20 53 75 67 67 65 73 74 65 64 20 44 65  ion Suggested De
1410: 66 61 75 6c 74 20 56 61 6c 75 65 73 0d 0a 20 20  fault Values..  
1420: 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d 20        Default = 
1430: 41 6c 6c 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  All..        #en
1440: 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 7d 0d 0a  dregion..    }..
1450: 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ..    //////////
1460: 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 5b 46 6c 61 67 73 28  /....    [Flags(
14b0: 29 5d 0d 0a 20 20 20 20 70 75 62 6c 69 63 20 65  )]..    public e
14c0: 6e 75 6d 20 50 72 6f 76 69 64 65 72 46 6c 61 67  num ProviderFlag
14d0: 73 0d 0a 20 20 20 20 7b 0d 0a 20 20 20 20 20 20  s..    {..      
14e0: 20 20 23 72 65 67 69 6f 6e 20 4e 6f 72 6d 61 6c    #region Normal
14f0: 20 56 61 6c 75 65 73 0d 0a 20 20 20 20 20 20 20   Values..       
1500: 20 4e 6f 6e 65 20 3d 20 30 78 30 2c 0d 0a 20 20   None = 0x0,..  
1510: 20 20 20 20 20 20 53 79 73 74 65 6d 45 66 36 4d        SystemEf6M
1520: 75 73 74 42 65 47 6c 6f 62 61 6c 20 3d 20 30 78  ustBeGlobal = 0x
1530: 31 2c 0d 0a 20 20 20 20 20 20 20 20 44 69 64 4c  1,..        DidL
1540: 69 6e 71 46 6f 72 63 65 54 72 61 63 65 20 3d 20  inqForceTrace = 
1550: 30 78 32 2c 0d 0a 20 20 20 20 20 20 20 20 44 69  0x2,..        Di
1560: 64 45 66 36 46 6f 72 63 65 54 72 61 63 65 20 3d  dEf6ForceTrace =
1570: 20 30 78 34 2c 0d 0a 20 20 20 20 20 20 20 20 44   0x4,..        D
1580: 69 64 45 66 36 52 65 73 6f 6c 76 65 54 72 61 63  idEf6ResolveTrac
1590: 65 20 3d 20 30 78 38 2c 0d 0a 20 20 20 20 20 20  e = 0x8,..      
15a0: 20 20 46 6f 72 63 65 4c 69 6e 71 45 6e 61 62 6c    ForceLinqEnabl
15b0: 65 64 20 3d 20 30 78 31 30 2c 0d 0a 20 20 20 20  ed = 0x10,..    
15c0: 20 20 20 20 46 6f 72 63 65 4c 69 6e 71 44 69 73      ForceLinqDis
15d0: 61 62 6c 65 64 20 3d 20 30 78 32 30 2c 0d 0a 20  abled = 0x20,.. 
15e0: 20 20 20 20 20 20 20 46 6f 72 63 65 45 66 36 45         ForceEf6E
15f0: 6e 61 62 6c 65 64 20 3d 20 30 78 34 30 2c 0d 0a  nabled = 0x40,..
1600: 20 20 20 20 20 20 20 20 46 6f 72 63 65 45 66 36          ForceEf6
1610: 44 69 73 61 62 6c 65 64 20 3d 20 30 78 38 30 2c  Disabled = 0x80,
1620: 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
1630: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
1640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1680: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1690: 20 20 20 23 72 65 67 69 6f 6e 20 53 75 67 67 65     #region Sugge
16a0: 73 74 65 64 20 44 65 66 61 75 6c 74 20 56 61 6c  sted Default Val
16b0: 75 65 73 0d 0a 20 20 20 20 20 20 20 20 44 65 66  ues..        Def
16c0: 61 75 6c 74 20 3d 20 4e 6f 6e 65 0d 0a 20 20 20  ault = None..   
16d0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
16e0: 0a 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 2f 2f  .    }....    //
16f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
1740: 20 5b 46 6c 61 67 73 28 29 5d 0d 0a 20 20 20 20   [Flags()]..    
1750: 70 75 62 6c 69 63 20 65 6e 75 6d 20 54 72 61 63  public enum Trac
1760: 65 50 72 69 6f 72 69 74 79 0d 0a 20 20 20 20 7b  ePriority..    {
1770: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
1780: 6e 20 4e 6f 72 6d 61 6c 20 56 61 6c 75 65 73 0d  n Normal Values.
1790: 0a 20 20 20 20 20 20 20 20 4e 6f 6e 65 20 3d 20  .        None = 
17a0: 30 78 30 2c 0d 0a 20 20 20 20 20 20 20 20 4c 6f  0x0,..        Lo
17b0: 77 65 73 74 20 3d 20 30 78 31 2c 0d 0a 20 20 20  west = 0x1,..   
17c0: 20 20 20 20 20 4c 6f 77 65 72 20 3d 20 30 78 32       Lower = 0x2
17d0: 2c 0d 0a 20 20 20 20 20 20 20 20 4c 6f 77 20 3d  ,..        Low =
17e0: 20 30 78 34 2c 0d 0a 20 20 20 20 20 20 20 20 4d   0x4,..        M
17f0: 65 64 69 75 6d 4c 6f 77 20 3d 20 30 78 38 2c 0d  ediumLow = 0x8,.
1800: 0a 20 20 20 20 20 20 20 20 4d 65 64 69 75 6d 20  .        Medium 
1810: 3d 20 30 78 31 30 2c 0d 0a 20 20 20 20 20 20 20  = 0x10,..       
1820: 20 4d 65 64 69 75 6d 48 69 67 68 20 3d 20 30 78   MediumHigh = 0x
1830: 32 30 2c 0d 0a 20 20 20 20 20 20 20 20 48 69 67  20,..        Hig
1840: 68 20 3d 20 30 78 34 30 2c 0d 0a 20 20 20 20 20  h = 0x40,..     
1850: 20 20 20 48 69 67 68 65 72 20 3d 20 30 78 38 30     Higher = 0x80
1860: 2c 0d 0a 20 20 20 20 20 20 20 20 48 69 67 68 65  ,..        Highe
1870: 73 74 20 3d 20 30 78 31 30 30 2c 0d 0a 20 20 20  st = 0x100,..   
1880: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
1890: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
18a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18e0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
18f0: 65 67 69 6f 6e 20 53 75 67 67 65 73 74 65 64 20  egion Suggested 
1900: 44 65 66 61 75 6c 74 20 46 6c 61 67 73 0d 0a 20  Default Flags.. 
1910: 20 20 20 20 20 20 20 44 65 66 61 75 6c 74 20 3d         Default =
1920: 20 4d 65 64 69 75 6d 0d 0a 20 20 20 20 20 20 20   Medium..       
1930: 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
1940: 20 7d 0d 0a 20 20 20 20 23 65 6e 64 72 65 67 69   }..    #endregi
1950: 6f 6e 0d 0a 0d 0a 20 20 20 20 2f 2f 2f 2f 2f 2f  on....    //////
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 2f 2f 2f 2f 2f 2f  ////////////////
1980: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 23 72 65  /////....    #re
19b0: 67 69 6f 6e 20 49 6e 73 74 61 6c 6c 65 72 20 43  gion Installer C
19c0: 6c 61 73 73 0d 0a 23 69 66 20 4e 45 54 5f 34 30  lass..#if NET_40
19d0: 20 7c 7c 20 4e 45 54 5f 34 35 20 7c 7c 20 4e 45   || NET_45 || NE
19e0: 54 5f 34 35 31 20 7c 7c 20 4e 45 54 5f 34 35 32  T_451 || NET_452
19f0: 20 7c 7c 20 4e 45 54 5f 34 36 20 7c 7c 20 4e 45   || NET_46 || NE
1a00: 54 5f 34 36 31 20 7c 7c 20 4e 45 54 5f 34 36 32  T_461 || NET_462
1a10: 20 7c 7c 20 4e 45 54 5f 34 37 20 7c 7c 20 4e 45   || NET_47 || NE
1a20: 54 5f 34 37 31 0d 0a 20 20 20 20 5b 53 65 63 75  T_471..    [Secu
1a30: 72 69 74 79 43 72 69 74 69 63 61 6c 28 29 5d 0d  rityCritical()].
1a40: 0a 23 65 6c 73 65 0d 0a 20 20 20 20 5b 53 65 63  .#else..    [Sec
1a50: 75 72 69 74 79 50 65 72 6d 69 73 73 69 6f 6e 28  urityPermission(
1a60: 53 65 63 75 72 69 74 79 41 63 74 69 6f 6e 2e 4c  SecurityAction.L
1a70: 69 6e 6b 44 65 6d 61 6e 64 2c 20 55 6e 6d 61 6e  inkDemand, Unman
1a80: 61 67 65 64 43 6f 64 65 20 3d 20 74 72 75 65 29  agedCode = true)
1a90: 5d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 69  ]..#endif..    i
1aa0: 6e 74 65 72 6e 61 6c 20 73 74 61 74 69 63 20 63  nternal static c
1ab0: 6c 61 73 73 20 49 6e 73 74 61 6c 6c 65 72 0d 0a  lass Installer..
1ac0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 23      {..        #
1ad0: 72 65 67 69 6f 6e 20 55 6e 73 61 66 65 20 4e 61  region Unsafe Na
1ae0: 74 69 76 65 20 4d 65 74 68 6f 64 73 20 43 6c 61  tive Methods Cla
1af0: 73 73 0d 0a 20 20 20 20 20 20 20 20 5b 53 75 70  ss..        [Sup
1b00: 70 72 65 73 73 55 6e 6d 61 6e 61 67 65 64 43 6f  pressUnmanagedCo
1b10: 64 65 53 65 63 75 72 69 74 79 28 29 5d 0d 0a 20  deSecurity()].. 
1b20: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
1b30: 65 61 6c 65 64 20 63 6c 61 73 73 20 55 6e 73 61  ealed class Unsa
1b40: 66 65 4e 61 74 69 76 65 4d 65 74 68 6f 64 73 0d  feNativeMethods.
1b50: 0a 20 20 20 20 20 20 20 20 7b 0d 0a 23 69 66 20  .        {..#if 
1b60: 57 49 4e 44 4f 57 53 0d 0a 20 20 20 20 20 20 20  WINDOWS..       
1b70: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74       #region Nat
1b80: 69 76 65 20 57 69 6e 33 32 20 43 6f 6e 73 74 61  ive Win32 Consta
1b90: 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nts..           
1ba0: 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69   private const i
1bb0: 6e 74 20 4d 41 58 5f 50 41 54 48 20 3d 20 32 36  nt MAX_PATH = 26
1bc0: 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  0;....          
1bd0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
1be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1c10: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1c20: 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
1c30: 73 74 20 69 6e 74 20 43 53 49 44 4c 5f 53 59 53  st int CSIDL_SYS
1c40: 54 45 4d 58 38 36 20 3d 20 30 78 30 30 32 39 3b  TEMX86 = 0x0029;
1c50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ca0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1cb0: 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
1cc0: 20 69 6e 74 20 53 48 47 46 50 5f 54 59 50 45 5f   int SHGFP_TYPE_
1cd0: 43 55 52 52 45 4e 54 20 3d 20 30 3b 0d 0a 0d 0a  CURRENT = 0;....
1ce0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
1cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1d20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
1d30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
1d40: 72 69 76 61 74 65 20 63 6f 6e 73 74 20 69 6e 74  rivate const int
1d50: 20 53 5f 4f 4b 20 3d 20 30 3b 20 2f 2a 20 48 52   S_OK = 0; /* HR
1d60: 45 53 55 4c 54 20 2a 2f 0d 0a 20 20 20 20 20 20  ESULT */..      
1d70: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1d80: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1da0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1db0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1dd0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1de0: 20 20 20 23 72 65 67 69 6f 6e 20 4e 61 74 69 76     #region Nativ
1df0: 65 20 57 69 6e 64 6f 77 73 20 4d 65 74 68 6f 64  e Windows Method
1e00: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  s..            [
1e10: 44 6c 6c 49 6d 70 6f 72 74 28 22 73 68 66 6f 6c  DllImport("shfol
1e20: 64 65 72 2e 64 6c 6c 22 2c 0d 0a 20 20 20 20 20  der.dll",..     
1e30: 20 20 20 20 20 20 20 20 20 20 20 43 61 6c 6c 69             Calli
1e40: 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e 20 3d 20 43  ngConvention = C
1e50: 61 6c 6c 69 6e 67 43 6f 6e 76 65 6e 74 69 6f 6e  allingConvention
1e60: 2e 57 69 6e 61 70 69 2c 0d 0a 20 20 20 20 20 20  .Winapi,..      
1e70: 20 20 20 20 20 20 20 20 20 20 43 68 61 72 53 65            CharSe
1e80: 74 20 3d 20 43 68 61 72 53 65 74 2e 41 75 74 6f  t = CharSet.Auto
1e90: 2c 20 42 65 73 74 46 69 74 4d 61 70 70 69 6e 67  , BestFitMapping
1ea0: 20 3d 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20   = false,..     
1eb0: 20 20 20 20 20 20 20 20 20 20 20 54 68 72 6f 77             Throw
1ec0: 4f 6e 55 6e 6d 61 70 70 61 62 6c 65 43 68 61 72  OnUnmappableChar
1ed0: 20 3d 20 74 72 75 65 2c 20 53 65 74 4c 61 73 74   = true, SetLast
1ee0: 45 72 72 6f 72 20 3d 20 74 72 75 65 29 5d 0d 0a  Error = true)]..
1ef0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
1f00: 61 74 65 20 73 74 61 74 69 63 20 65 78 74 65 72  ate static exter
1f10: 6e 20 69 6e 74 20 53 48 47 65 74 46 6f 6c 64 65  n int SHGetFolde
1f20: 72 50 61 74 68 28 0d 0a 20 20 20 20 20 20 20 20  rPath(..        
1f30: 20 20 20 20 20 20 20 20 49 6e 74 50 74 72 20 68          IntPtr h
1f40: 57 6e 64 4f 77 6e 65 72 2c 20 69 6e 74 20 6e 46  WndOwner, int nF
1f50: 6f 6c 64 65 72 2c 20 49 6e 74 50 74 72 20 68 54  older, IntPtr hT
1f60: 6f 6b 65 6e 2c 20 75 69 6e 74 20 66 6c 61 67 73  oken, uint flags
1f70: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1f80: 20 20 20 49 6e 74 50 74 72 20 62 75 66 66 65 72     IntPtr buffer
1f90: 20 2f 2a 20 3e 3d 20 4d 41 58 5f 50 41 54 48 20   /* >= MAX_PATH 
1fa0: 2a 2f 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  */);..          
1fb0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
1fc0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
1fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d  ///////////////.
2010: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
2020: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 57 72  region Public Wr
2030: 61 70 70 65 72 20 4d 65 74 68 6f 64 73 0d 0a 20  apper Methods.. 
2040: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
2050: 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
2060: 47 65 74 53 79 73 74 65 6d 44 69 72 65 63 74 6f  GetSystemDirecto
2070: 72 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ry()..          
2080: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2090: 20 20 20 20 20 49 6e 74 50 74 72 20 62 75 66 66       IntPtr buff
20a0: 65 72 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  er = IntPtr.Zero
20b0: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
20c0: 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20       try..      
20d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
20e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f0: 20 62 75 66 66 65 72 20 3d 20 4d 61 72 73 68 61   buffer = Marsha
2100: 6c 2e 41 6c 6c 6f 63 43 6f 54 61 73 6b 4d 65 6d  l.AllocCoTaskMem
2110: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2120: 20 20 20 20 20 20 20 20 20 20 20 73 69 7a 65 6f             sizeo
2130: 66 28 63 68 61 72 29 20 2a 20 28 4d 41 58 5f 50  f(char) * (MAX_P
2140: 41 54 48 20 2b 20 31 29 29 3b 0d 0a 0d 0a 20 20  ATH + 1));....  
2150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2160: 20 20 69 66 20 28 62 75 66 66 65 72 20 21 3d 20    if (buffer != 
2170: 49 6e 74 50 74 72 2e 5a 65 72 6f 29 0d 0a 20 20  IntPtr.Zero)..  
2180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2190: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
21a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
21b0: 28 53 48 47 65 74 46 6f 6c 64 65 72 50 61 74 68  (SHGetFolderPath
21c0: 28 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20  (IntPtr.Zero,.. 
21d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
21f0: 53 49 44 4c 5f 53 59 53 54 45 4d 58 38 36 2c 20  SIDL_SYSTEMX86, 
2200: 49 6e 74 50 74 72 2e 5a 65 72 6f 2c 0d 0a 20 20  IntPtr.Zero,..  
2210: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2220: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 48                SH
2230: 47 46 50 5f 54 59 50 45 5f 43 55 52 52 45 4e 54  GFP_TYPE_CURRENT
2240: 2c 20 62 75 66 66 65 72 29 20 3d 3d 20 53 5f 4f  , buffer) == S_O
2250: 4b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  K)..            
2260: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2280: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2290: 6e 20 4d 61 72 73 68 61 6c 2e 50 74 72 54 6f 53  n Marshal.PtrToS
22a0: 74 72 69 6e 67 41 75 74 6f 28 62 75 66 66 65 72  tringAuto(buffer
22b0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
22c0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
22d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e0: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
22f0: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2300: 20 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28           catch (
2310: 45 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20  Exception e)..  
2320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2330: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2340: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
2350: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2360: 54 4f 44 4f 3a 20 49 73 20 74 68 69 73 20 74 68  TODO: Is this th
2370: 65 20 72 69 67 68 74 20 65 72 72 6f 72 20 68 61  e right error ha
2380: 6e 64 6c 69 6e 67 20 73 6f 6c 75 74 69 6f 6e 0d  ndling solution.
2390: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23a0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f       //       to
23b0: 20 75 73 65 20 61 74 20 74 68 69 73 20 70 6f 69   use at this poi
23c0: 6e 74 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  nt?..           
23d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
23e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f0: 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
2400: 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
2410: 6f 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68  ority.MediumHigh
2420: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2430: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
2440: 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
2450: 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
2460: 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
2470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2480: 20 22 43 6f 75 6c 64 20 6e 6f 74 20 67 65 74 20   "Could not get 
2490: 73 79 73 74 65 6d 20 64 69 72 65 63 74 6f 72 79  system directory
24a0: 3a 20 7b 30 7d 22 2c 20 65 29 2c 0d 0a 20 20 20  : {0}", e),..   
24b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c0: 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
24d0: 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
24e0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
24f0: 77 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  w;..            
2500: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
2510: 20 20 20 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a         finally..
2520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2530: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2540: 20 20 20 20 20 20 20 69 66 20 28 62 75 66 66 65         if (buffe
2550: 72 20 21 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f  r != IntPtr.Zero
2560: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2570: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2590: 20 20 4d 61 72 73 68 61 6c 2e 46 72 65 65 43 6f    Marshal.FreeCo
25a0: 54 61 73 6b 4d 65 6d 28 62 75 66 66 65 72 29 3b  TaskMem(buffer);
25b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25c0: 20 20 20 20 20 20 20 20 20 20 62 75 66 66 65 72            buffer
25d0: 20 3d 20 49 6e 74 50 74 72 2e 5a 65 72 6f 3b 0d   = IntPtr.Zero;.
25e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25f0: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
2600: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2610: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2620: 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20  urn null;..     
2630: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2640: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2650: 0d 0a 23 65 6e 64 69 66 0d 0a 20 20 20 20 20 20  ..#endif..      
2660: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
2670: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
2680: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2690: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
26d0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
26e0: 69 76 61 74 65 20 48 65 6c 70 65 72 20 43 6c 61  ivate Helper Cla
26f0: 73 73 65 73 0d 0a 20 20 20 20 20 20 20 20 23 72  sses..        #r
2700: 65 67 69 6f 6e 20 41 6e 79 50 61 69 72 20 43 6c  egion AnyPair Cl
2710: 61 73 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  ass..        pri
2720: 76 61 74 65 20 73 65 61 6c 65 64 20 63 6c 61 73  vate sealed clas
2730: 73 20 41 6e 79 50 61 69 72 3c 54 31 2c 20 54 32  s AnyPair<T1, T2
2740: 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  >..        {..  
2750: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
2760: 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
2770: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20  ctors..         
2780: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2790: 20 20 20 2f 2f 20 57 41 52 4e 49 4e 47 3a 20 54     // WARNING: T
27a0: 68 69 73 20 63 6f 6e 73 74 72 75 63 74 6f 72 20  his constructor 
27b0: 70 72 6f 64 75 63 65 73 20 61 6e 20 69 6d 6d 75  produces an immu
27c0: 74 61 62 6c 65 20 22 65 6d 70 74 79 22 20 70 61  table "empty" pa
27d0: 69 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ir..            
27e0: 2f 2f 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65  //          obje
27f0: 63 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct...           
2800: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
2810: 20 70 75 62 6c 69 63 20 41 6e 79 50 61 69 72 28   public AnyPair(
2820: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2830: 20 20 20 3a 20 62 61 73 65 28 29 0d 0a 20 20 20     : base()..   
2840: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2850: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64              // d
2860: 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20  o nothing...    
2870: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2880: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
28d0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
28e0: 69 63 20 41 6e 79 50 61 69 72 28 54 31 20 78 29  ic AnyPair(T1 x)
28f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2900: 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20 20    : this()..    
2910: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2920: 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
2930: 78 20 3d 20 78 3b 0d 0a 20 20 20 20 20 20 20 20  x = x;..        
2940: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2950: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2970: 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
29a0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 41          public A
29b0: 6e 79 50 61 69 72 28 54 31 20 78 2c 20 54 32 20  nyPair(T1 x, T2 
29c0: 79 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y)..            
29d0: 20 20 20 20 3a 20 74 68 69 73 28 78 29 0d 0a 20      : this(x).. 
29e0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
29f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
2a00: 69 73 2e 79 20 3d 20 79 3b 0d 0a 20 20 20 20 20  is.y = y;..     
2a10: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2a20: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
2a30: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a80: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
2a90: 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
2aa0: 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
2ab0: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
2ac0: 65 20 54 31 20 78 3b 0d 0a 20 20 20 20 20 20 20  e T1 x;..       
2ad0: 20 20 20 20 20 70 75 62 6c 69 63 20 54 31 20 58       public T1 X
2ae0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2af0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b00: 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 78 3b   get { return x;
2b10: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
2b20: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
2b30: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2b40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b70: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
2b80: 20 20 20 20 70 72 69 76 61 74 65 20 54 32 20 79      private T2 y
2b90: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
2ba0: 75 62 6c 69 63 20 54 32 20 59 0d 0a 20 20 20 20  ublic T2 Y..    
2bb0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2bc0: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
2bd0: 20 72 65 74 75 72 6e 20 79 3b 20 7d 0d 0a 20 20   return y; }..  
2be0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
2bf0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
2c00: 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a  ion..        }..
2c10: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
2c20: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
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 2f 2f  ////////////////
2c60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c70: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2c80: 20 23 72 65 67 69 6f 6e 20 54 72 61 63 65 4f 70   #region TraceOp
2c90: 73 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20 20  s Class..       
2ca0: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
2cb0: 63 6c 61 73 73 20 54 72 61 63 65 4f 70 73 0d 0a  class TraceOps..
2cc0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2cd0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
2ce0: 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
2cf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
2d00: 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
2d10: 6e 67 20 44 65 66 61 75 6c 74 44 65 62 75 67 46  ng DefaultDebugF
2d20: 6f 72 6d 61 74 20 3d 20 22 23 7b 30 3a 30 30 30  ormat = "#{0:000
2d30: 7d 20 40 20 7b 31 7d 3a 20 7b 32 7d 22 3b 0d 0a  } @ {1}: {2}";..
2d40: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2d50: 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
2d60: 20 44 65 66 61 75 6c 74 54 72 61 63 65 46 6f 72   DefaultTraceFor
2d70: 6d 61 74 20 3d 20 22 23 7b 30 3a 30 30 30 7d 20  mat = "#{0:000} 
2d80: 40 20 7b 31 7d 3a 20 7b 32 7d 22 3b 0d 0a 0d 0a  @ {1}: {2}";....
2d90: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2da0: 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
2db0: 20 49 73 6f 38 36 30 31 44 61 74 65 54 69 6d 65   Iso8601DateTime
2dc0: 4f 75 74 70 75 74 46 6f 72 6d 61 74 20 3d 0d 0a  OutputFormat =..
2dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de0: 22 79 79 79 79 2e 4d 4d 2e 64 64 54 48 48 3a 6d  "yyyy.MM.ddTHH:m
2df0: 6d 3a 73 73 2e 66 66 66 66 66 66 66 22 3b 0d 0a  m:ss.fffffff";..
2e00: 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
2e10: 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
2e20: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2e70: 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e           #region
2e80: 20 50 72 69 76 61 74 65 20 53 74 61 74 69 63 20   Private Static 
2e90: 44 61 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20  Data..          
2ea0: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
2eb0: 20 6f 62 6a 65 63 74 20 73 79 6e 63 52 6f 6f 74   object syncRoot
2ec0: 20 3d 20 6e 65 77 20 6f 62 6a 65 63 74 28 29 3b   = new object();
2ed0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
2ee0: 69 76 61 74 65 20 73 74 61 74 69 63 20 6c 6f 6e  ivate static lon
2ef0: 67 20 6e 65 78 74 44 65 62 75 67 49 64 3b 0d 0a  g nextDebugId;..
2f00: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2f10: 61 74 65 20 73 74 61 74 69 63 20 6c 6f 6e 67 20  ate static long 
2f20: 6e 65 78 74 54 72 61 63 65 49 64 3b 0d 0a 20 20  nextTraceId;..  
2f30: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
2f40: 65 20 73 74 61 74 69 63 20 49 4c 69 73 74 3c 54  e static IList<T
2f50: 72 61 63 65 4c 69 73 74 65 6e 65 72 3e 20 64 65  raceListener> de
2f60: 62 75 67 4c 69 73 74 65 6e 65 72 73 3b 0d 0a 20  bugListeners;.. 
2f70: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
2f80: 74 65 20 73 74 61 74 69 63 20 54 72 61 63 65 50  te static TraceP
2f90: 72 69 6f 72 69 74 79 20 64 65 62 75 67 50 72 69  riority debugPri
2fa0: 6f 72 69 74 79 20 3d 20 54 72 61 63 65 50 72 69  ority = TracePri
2fb0: 6f 72 69 74 79 2e 44 65 66 61 75 6c 74 3b 0d 0a  ority.Default;..
2fc0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2fd0: 61 74 65 20 73 74 61 74 69 63 20 54 72 61 63 65  ate static Trace
2fe0: 50 72 69 6f 72 69 74 79 20 74 72 61 63 65 50 72  Priority tracePr
2ff0: 69 6f 72 69 74 79 20 3d 20 54 72 61 63 65 50 72  iority = TracePr
3000: 69 6f 72 69 74 79 2e 44 65 66 61 75 6c 74 3b 0d  iority.Default;.
3010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
3020: 76 61 74 65 20 73 74 61 74 69 63 20 73 74 72 69  vate static stri
3030: 6e 67 20 64 65 62 75 67 46 6f 72 6d 61 74 20 3d  ng debugFormat =
3040: 20 44 65 66 61 75 6c 74 44 65 62 75 67 46 6f 72   DefaultDebugFor
3050: 6d 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mat;..          
3060: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
3070: 20 73 74 72 69 6e 67 20 74 72 61 63 65 46 6f 72   string traceFor
3080: 6d 61 74 20 3d 20 44 65 66 61 75 6c 74 54 72 61  mat = DefaultTra
3090: 63 65 46 6f 72 6d 61 74 3b 0d 0a 20 20 20 20 20  ceFormat;..     
30a0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
30b0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
30c0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
30d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3100: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
3110: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
3120: 69 63 20 53 74 61 74 69 63 20 50 72 6f 70 65 72  ic Static Proper
3130: 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ties..          
3140: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
3150: 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 44 65  TracePriority De
3160: 62 75 67 50 72 69 6f 72 69 74 79 0d 0a 20 20 20  bugPriority..   
3170: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3180: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
3190: 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74  { lock (syncRoot
31a0: 29 20 7b 20 72 65 74 75 72 6e 20 64 65 62 75 67  ) { return debug
31b0: 50 72 69 6f 72 69 74 79 3b 20 7d 20 7d 0d 0a 20  Priority; } }.. 
31c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
31d0: 65 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52  et { lock (syncR
31e0: 6f 6f 74 29 20 7b 20 64 65 62 75 67 50 72 69 6f  oot) { debugPrio
31f0: 72 69 74 79 20 3d 20 76 61 6c 75 65 3b 20 7d 20  rity = value; } 
3200: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
3210: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3230: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3260: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
3270: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
3280: 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 54   TracePriority T
3290: 72 61 63 65 50 72 69 6f 72 69 74 79 0d 0a 20 20  racePriority..  
32a0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
32b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
32c0: 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f   { lock (syncRoo
32d0: 74 29 20 7b 20 72 65 74 75 72 6e 20 74 72 61 63  t) { return trac
32e0: 65 50 72 69 6f 72 69 74 79 3b 20 7d 20 7d 0d 0a  ePriority; } }..
32f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3300: 73 65 74 20 7b 20 6c 6f 63 6b 20 28 73 79 6e 63  set { lock (sync
3310: 52 6f 6f 74 29 20 7b 20 74 72 61 63 65 50 72 69  Root) { tracePri
3320: 6f 72 69 74 79 20 3d 20 76 61 6c 75 65 3b 20 7d  ority = value; }
3330: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
3340: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
3350: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
3360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3390: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
33a0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
33b0: 63 20 73 74 72 69 6e 67 20 44 65 62 75 67 46 6f  c string DebugFo
33c0: 72 6d 61 74 0d 0a 20 20 20 20 20 20 20 20 20 20  rmat..          
33d0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
33e0: 20 20 20 20 20 67 65 74 20 7b 20 6c 6f 63 6b 20       get { lock 
33f0: 28 73 79 6e 63 52 6f 6f 74 29 20 7b 20 72 65 74  (syncRoot) { ret
3400: 75 72 6e 20 64 65 62 75 67 46 6f 72 6d 61 74 3b  urn debugFormat;
3410: 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20   } }..          
3420: 20 20 20 20 20 20 73 65 74 20 7b 20 6c 6f 63 6b        set { lock
3430: 20 28 73 79 6e 63 52 6f 6f 74 29 20 7b 20 64 65   (syncRoot) { de
3440: 62 75 67 46 6f 72 6d 61 74 20 3d 20 76 61 6c 75  bugFormat = valu
3450: 65 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20 20 20  e; } }..        
3460: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
3470: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
3480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34c0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
34d0: 74 61 74 69 63 20 73 74 72 69 6e 67 20 54 72 61  tatic string Tra
34e0: 63 65 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20  ceFormat..      
34f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
3500: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 6c           get { l
3510: 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 7b  ock (syncRoot) {
3520: 20 72 65 74 75 72 6e 20 74 72 61 63 65 46 6f 72   return traceFor
3530: 6d 61 74 3b 20 7d 20 7d 0d 0a 20 20 20 20 20 20  mat; } }..      
3540: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
3550: 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20  lock (syncRoot) 
3560: 7b 20 74 72 61 63 65 46 6f 72 6d 61 74 20 3d 20  { traceFormat = 
3570: 76 61 6c 75 65 3b 20 7d 20 7d 0d 0a 20 20 20 20  value; } }..    
3580: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
3590: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
35a0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
35b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
35c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
3600: 20 20 20 20 23 72 65 67 69 6f 6e 20 49 6e 74 65      #region Inte
3610: 72 61 63 74 69 76 65 20 53 75 70 70 6f 72 74 20  ractive Support 
3620: 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
3630: 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c       [MethodImpl
3640: 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f  (MethodImplOptio
3650: 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d  ns.NoInlining)].
3660: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
3670: 6c 69 63 20 73 74 61 74 69 63 20 44 69 61 6c 6f  lic static Dialo
3680: 67 52 65 73 75 6c 74 20 53 68 6f 77 4d 65 73 73  gResult ShowMess
3690: 61 67 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  age(..          
36a0: 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
36b0: 69 74 79 20 74 72 61 63 65 50 72 69 6f 72 69 74  ity tracePriorit
36c0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
36d0: 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63      TraceCallbac
36e0: 6b 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  k debugCallback,
36f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3700: 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20    TraceCallback 
3710: 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a  traceCallback,..
3720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3730: 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c  Assembly assembl
3740: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
3750: 20 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61      string messa
3760: 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge,..           
3770: 20 20 20 20 20 73 74 72 69 6e 67 20 63 61 74 65       string cate
3780: 67 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  gory,..         
3790: 20 20 20 20 20 20 20 4d 65 73 73 61 67 65 42 6f         MessageBo
37a0: 78 42 75 74 74 6f 6e 73 20 62 75 74 74 6f 6e 73  xButtons buttons
37b0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
37c0: 20 20 20 4d 65 73 73 61 67 65 42 6f 78 49 63 6f     MessageBoxIco
37d0: 6e 20 69 63 6f 6e 0d 0a 20 20 20 20 20 20 20 20  n icon..        
37e0: 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
37f0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
3800: 20 20 20 20 20 20 20 20 20 20 44 69 61 6c 6f 67            Dialog
3810: 52 65 73 75 6c 74 20 72 65 73 75 6c 74 20 3d 20  Result result = 
3820: 44 69 61 6c 6f 67 52 65 73 75 6c 74 2e 4f 4b 3b  DialogResult.OK;
3830: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
3840: 20 20 20 20 44 65 62 75 67 41 6e 64 54 72 61 63      DebugAndTrac
3850: 65 28 74 72 61 63 65 50 72 69 6f 72 69 74 79 2c  e(tracePriority,
3860: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
3870: 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
3880: 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
3890: 63 6b 2c 20 6d 65 73 73 61 67 65 2c 20 63 61 74  ck, message, cat
38a0: 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
38b0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 53             if (S
38c0: 79 73 74 65 6d 49 6e 66 6f 72 6d 61 74 69 6f 6e  ystemInformation
38d0: 2e 55 73 65 72 49 6e 74 65 72 61 63 74 69 76 65  .UserInteractive
38e0: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
38f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
3900: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
3910: 20 74 69 74 6c 65 20 3d 20 47 65 74 41 73 73 65   title = GetAsse
3920: 6d 62 6c 79 54 69 74 6c 65 28 61 73 73 65 6d 62  mblyTitle(assemb
3930: 6c 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ly);....        
3940: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3950: 74 69 74 6c 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  title == null)..
3960: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3970: 20 20 20 20 20 20 20 20 74 69 74 6c 65 20 3d 20          title = 
3980: 41 70 70 6c 69 63 61 74 69 6f 6e 2e 50 72 6f 64  Application.Prod
3990: 75 63 74 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  uctName;....    
39a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
39b0: 72 65 73 75 6c 74 20 3d 20 4d 65 73 73 61 67 65  result = Message
39c0: 42 6f 78 2e 53 68 6f 77 28 6d 65 73 73 61 67 65  Box.Show(message
39d0: 2c 20 74 69 74 6c 65 2c 20 62 75 74 74 6f 6e 73  , title, buttons
39e0: 2c 20 69 63 6f 6e 29 3b 0d 0a 0d 0a 20 20 20 20  , icon);....    
39f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a00: 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 74 72  DebugAndTrace(tr
3a10: 61 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20  acePriority,..  
3a20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3a30: 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
3a40: 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
3a50: 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
3a60: 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
3a70: 20 20 20 20 20 20 20 20 20 20 20 20 22 55 73 65              "Use
3a80: 72 20 63 68 6f 69 63 65 20 6f 66 20 7b 30 7d 2e  r choice of {0}.
3a90: 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 72 65  ", ForDisplay(re
3aa0: 73 75 6c 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  sult)),..       
3ab0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ac0: 20 63 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20   category);.... 
3ad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3ae0: 20 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74     return result
3af0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
3b00: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
3b10: 20 20 20 20 20 20 20 20 44 65 62 75 67 41 6e 64          DebugAnd
3b20: 54 72 61 63 65 28 74 72 61 63 65 50 72 69 6f 72  Trace(tracePrior
3b30: 69 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ity,..          
3b40: 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
3b50: 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
3b60: 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
3b70: 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
3b80: 20 20 20 20 20 20 20 20 20 20 20 20 22 44 65 66              "Def
3b90: 61 75 6c 74 20 63 68 6f 69 63 65 20 6f 66 20 7b  ault choice of {
3ba0: 30 7d 2e 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  0}.", ForDisplay
3bb0: 28 72 65 73 75 6c 74 29 29 2c 0d 0a 20 20 20 20  (result)),..    
3bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
3bd0: 63 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  category);....  
3be0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3bf0: 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
3c00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
3c10: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
3c20: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
3c30: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
3c40: 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
3c80: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 54 72        #region Tr
3c90: 61 63 69 6e 67 20 53 75 70 70 6f 72 74 20 4d 65  acing Support Me
3ca0: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20  thods..         
3cb0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
3cc0: 20 76 6f 69 64 20 53 65 74 75 70 44 65 62 75 67   void SetupDebug
3cd0: 4c 69 73 74 65 6e 65 72 73 28 29 0d 0a 20 20 20  Listeners()..   
3ce0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
3cf0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
3d00: 64 65 62 75 67 4c 69 73 74 65 6e 65 72 73 20 3d  debugListeners =
3d10: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
3d20: 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
3d30: 75 67 4c 69 73 74 65 6e 65 72 73 20 3d 20 6e 65  ugListeners = ne
3d40: 77 20 4c 69 73 74 3c 54 72 61 63 65 4c 69 73 74  w List<TraceList
3d50: 65 6e 65 72 3e 28 29 3b 0d 0a 0d 0a 20 20 20 20  ener>();....    
3d60: 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75              debu
3d70: 67 4c 69 73 74 65 6e 65 72 73 2e 41 64 64 28 6e  gListeners.Add(n
3d80: 65 77 20 43 6f 6e 73 6f 6c 65 54 72 61 63 65 4c  ew ConsoleTraceL
3d90: 69 73 74 65 6e 65 72 28 29 29 3b 0d 0a 20 20 20  istener());..   
3da0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
3db0: 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3de0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3df0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
3e00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
3e10: 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67 20  lic static long 
3e20: 4e 65 78 74 44 65 62 75 67 49 64 28 29 0d 0a 20  NextDebugId().. 
3e30: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
3e40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
3e50: 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65 64  turn Interlocked
3e60: 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20 6e  .Increment(ref n
3e70: 65 78 74 44 65 62 75 67 49 64 29 3b 0d 0a 20 20  extDebugId);..  
3e80: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
3e90: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
3ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
3ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
3ee0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
3ef0: 62 6c 69 63 20 73 74 61 74 69 63 20 6c 6f 6e 67  blic static long
3f00: 20 4e 65 78 74 54 72 61 63 65 49 64 28 29 0d 0a   NextTraceId()..
3f10: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
3f20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
3f30: 65 74 75 72 6e 20 49 6e 74 65 72 6c 6f 63 6b 65  eturn Interlocke
3f40: 64 2e 49 6e 63 72 65 6d 65 6e 74 28 72 65 66 20  d.Increment(ref 
3f50: 6e 65 78 74 54 72 61 63 65 49 64 29 3b 0d 0a 20  nextTraceId);.. 
3f60: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
3f70: 20 20 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f  ////////////////
3fb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
3fc0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
3fd0: 75 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72  ublic static str
3fe0: 69 6e 67 20 54 69 6d 65 53 74 61 6d 70 28 44 61  ing TimeStamp(Da
3ff0: 74 65 54 69 6d 65 20 64 61 74 65 54 69 6d 65 29  teTime dateTime)
4000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
4010: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4020: 20 72 65 74 75 72 6e 20 64 61 74 65 54 69 6d 65   return dateTime
4030: 2e 54 6f 53 74 72 69 6e 67 28 49 73 6f 38 36 30  .ToString(Iso860
4040: 31 44 61 74 65 54 69 6d 65 4f 75 74 70 75 74 46  1DateTimeOutputF
4050: 6f 72 6d 61 74 29 3b 0d 0a 20 20 20 20 20 20 20  ormat);..       
4060: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
4070: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
4080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
40b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
40c0: 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64           [Method
40d0: 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f  Impl(MethodImplO
40e0: 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e  ptions.NoInlinin
40f0: 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  g)]..           
4100: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
4110: 74 72 69 6e 67 20 47 65 74 4d 65 74 68 6f 64 4e  tring GetMethodN
4120: 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ame(..          
4130: 20 20 20 20 20 20 53 74 61 63 6b 54 72 61 63 65        StackTrace
4140: 20 73 74 61 63 6b 54 72 61 63 65 2c 0d 0a 20 20   stackTrace,..  
4150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e                in
4160: 74 20 6c 65 76 65 6c 0d 0a 20 20 20 20 20 20 20  t level..       
4170: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
4180: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4190: 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d 0a             try..
41a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
41b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
41c0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
41d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
41e0: 2f 20 4e 4f 54 45 3a 20 49 66 20 61 20 76 61 6c  / NOTE: If a val
41f0: 69 64 20 73 74 61 63 6b 20 74 72 61 63 65 20 77  id stack trace w
4200: 61 73 20 6e 6f 74 20 73 75 70 70 6c 69 65 64 20  as not supplied 
4210: 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
4220: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
4230: 20 20 20 20 20 63 61 6c 6c 65 72 2c 20 63 72 65       caller, cre
4240: 61 74 65 20 6f 6e 65 20 6e 6f 77 20 62 61 73 65  ate one now base
4250: 64 20 6f 6e 20 74 68 65 20 63 75 72 72 65 6e 74  d on the current
4260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4270: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65        //       e
4280: 78 65 63 75 74 69 6f 6e 20 73 74 61 63 6b 2e 0d  xecution stack..
4290: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
42a0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
42b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
42c0: 28 73 74 61 63 6b 54 72 61 63 65 20 3d 3d 20 6e  (stackTrace == n
42d0: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
42e0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
42f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4300: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
4310: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4320: 20 2f 2f 20 4e 4f 54 45 3a 20 47 72 61 62 20 74   // NOTE: Grab t
4330: 68 65 20 63 75 72 72 65 6e 74 20 65 78 65 63 75  he current execu
4340: 74 69 6f 6e 20 73 74 61 63 6b 2e 0d 0a 20 20 20  tion stack...   
4350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4360: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
4370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4380: 20 73 74 61 63 6b 54 72 61 63 65 20 3d 20 6e 65   stackTrace = ne
4390: 77 20 53 74 61 63 6b 54 72 61 63 65 28 29 3b 0d  w StackTrace();.
43a0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
43b0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
43c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
43d0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
43e0: 41 6c 77 61 79 73 20 73 6b 69 70 20 74 68 69 73  Always skip this
43f0: 20 63 61 6c 6c 20 66 72 61 6d 65 20 77 68 65 6e   call frame when
4400: 20 77 65 20 63 61 70 74 75 72 65 0d 0a 20 20 20   we capture..   
4410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4420: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
4430: 65 20 73 74 61 63 6b 20 74 72 61 63 65 2e 0d 0a  e stack trace...
4440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4450: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
4460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4470: 20 20 20 20 6c 65 76 65 6c 2b 2b 3b 0d 0a 20 20      level++;..  
4480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4490: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
44a0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
44b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
44c0: 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 47 65 74 20     // NOTE: Get 
44d0: 74 68 65 20 73 70 65 63 69 66 69 65 64 20 73 74  the specified st
44e0: 61 63 6b 20 66 72 61 6d 65 20 28 61 6c 77 61 79  ack frame (alway
44f0: 73 20 61 64 64 20 6f 6e 65 20 74 6f 0d 0a 20 20  s add one to..  
4500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4510: 20 20 2f 2f 20 20 20 20 20 20 20 73 6b 69 70 20    //       skip 
4520: 74 68 69 73 20 6d 65 74 68 6f 64 29 2e 0d 0a 20  this method)... 
4530: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4540: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4550: 20 20 20 20 20 20 20 20 20 20 20 53 74 61 63 6b             Stack
4560: 46 72 61 6d 65 20 73 74 61 63 6b 46 72 61 6d 65  Frame stackFrame
4570: 20 3d 20 73 74 61 63 6b 54 72 61 63 65 2e 47 65   = stackTrace.Ge
4580: 74 46 72 61 6d 65 28 6c 65 76 65 6c 29 3b 0d 0a  tFrame(level);..
4590: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
45a0: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
45b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
45c0: 20 4e 4f 54 45 3a 20 47 65 74 20 74 68 65 20 6d   NOTE: Get the m
45d0: 65 74 68 6f 64 20 66 6f 72 20 74 68 65 20 73 74  ethod for the st
45e0: 61 63 6b 20 66 72 61 6d 65 2e 0d 0a 20 20 20 20  ack frame...    
45f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4600: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
4610: 20 20 20 20 20 20 20 20 4d 65 74 68 6f 64 42 61          MethodBa
4620: 73 65 20 6d 65 74 68 6f 64 42 61 73 65 20 3d 20  se methodBase = 
4630: 73 74 61 63 6b 46 72 61 6d 65 2e 47 65 74 4d 65  stackFrame.GetMe
4640: 74 68 6f 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  thod();....     
4650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4660: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4670: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
4680: 47 65 74 20 74 68 65 20 74 79 70 65 20 66 6f 72  Get the type for
4690: 20 74 68 65 20 6d 65 74 68 6f 64 2e 0d 0a 20 20   the method...  
46a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
46b0: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
46c0: 20 20 20 20 20 20 20 20 20 20 54 79 70 65 20 74            Type t
46d0: 79 70 65 20 3d 20 6d 65 74 68 6f 64 42 61 73 65  ype = methodBase
46e0: 2e 44 65 63 6c 61 72 69 6e 67 54 79 70 65 3b 0d  .DeclaringType;.
46f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
4700: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
4710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4720: 2f 20 4e 4f 54 45 3a 20 47 65 74 20 74 68 65 20  / NOTE: Get the 
4730: 6e 61 6d 65 20 6f 66 20 74 68 65 20 6d 65 74 68  name of the meth
4740: 6f 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  od...           
4750: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
4760: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4770: 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20 6d   string name = m
4780: 65 74 68 6f 64 42 61 73 65 2e 4e 61 6d 65 3b 0d  ethodBase.Name;.
4790: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
47a0: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
47b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
47c0: 2f 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 74  / NOTE: Return t
47d0: 68 65 20 70 72 6f 70 65 72 6c 79 20 66 6f 72 6d  he properly form
47e0: 61 74 74 65 64 20 72 65 73 75 6c 74 2e 0d 0a 20  atted result... 
47f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4800: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
4810: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
4820: 6e 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  n String.Format(
4830: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
4840: 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 7b 31            "{0}{1
4850: 7d 7b 32 7d 22 2c 20 74 79 70 65 2e 4e 61 6d 65  }{2}", type.Name
4860: 2c 20 54 79 70 65 2e 44 65 6c 69 6d 69 74 65 72  , Type.Delimiter
4870: 2c 20 6e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  , name);..      
4880: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
4890: 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74               cat
48a0: 63 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ch..            
48b0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
48c0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
48d0: 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
48e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
48f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4900: 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20  return null;..  
4910: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
4920: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
4930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4950: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4960: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
4970: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
4980: 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
4990: 20 44 65 62 75 67 43 6f 72 65 28 0d 0a 20 20 20   DebugCore(..   
49a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
49b0: 69 6e 67 20 6d 65 73 73 61 67 65 2c 0d 0a 20 20  ing message,..  
49c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
49d0: 72 69 6e 67 20 63 61 74 65 67 6f 72 79 0d 0a 20  ring category.. 
49e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
49f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
4a00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4a10: 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
4a20: 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e 41   /* TRANSACTIONA
4a30: 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  L */..          
4a40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
4a50: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
4a60: 28 64 65 62 75 67 4c 69 73 74 65 6e 65 72 73 20  (debugListeners 
4a70: 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  != null)..      
4a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
4a90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4aa0: 20 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68           foreach
4ab0: 20 28 54 72 61 63 65 4c 69 73 74 65 6e 65 72 20   (TraceListener 
4ac0: 6c 69 73 74 65 6e 65 72 20 69 6e 20 64 65 62 75  listener in debu
4ad0: 67 4c 69 73 74 65 6e 65 72 73 29 0d 0a 20 20 20  gListeners)..   
4ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4af0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
4b00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b10: 20 20 20 20 6c 69 73 74 65 6e 65 72 2e 57 72 69      listener.Wri
4b20: 74 65 4c 69 6e 65 28 6d 65 73 73 61 67 65 2c 20  teLine(message, 
4b30: 63 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  category);..    
4b40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b50: 20 20 20 20 20 20 20 20 6c 69 73 74 65 6e 65 72          listener
4b60: 2e 46 6c 75 73 68 28 29 3b 0d 0a 20 20 20 20 20  .Flush();..     
4b70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4b80: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
4b90: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
4ba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
4bb0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
4bc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
4bd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4be0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4bf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4c10: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
4c20: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
4c30: 69 64 20 54 72 61 63 65 43 6f 72 65 28 0d 0a 20  id TraceCore(.. 
4c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
4c50: 74 72 69 6e 67 20 6d 65 73 73 61 67 65 2c 0d 0a  tring message,..
4c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4c70: 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72 79 0d  string category.
4c80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
4c90: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
4ca0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
4cb0: 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f     lock (syncRoo
4cc0: 74 29 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f  t) /* TRANSACTIO
4cd0: 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  NAL */..        
4ce0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
4cf0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4d00: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
4d10: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
4d20: 57 72 69 74 65 20 74 68 65 20 6d 65 73 73 61 67  Write the messag
4d30: 65 20 74 6f 20 61 6c 6c 20 74 68 65 20 61 63 74  e to all the act
4d40: 69 76 65 20 74 72 61 63 65 0d 0a 20 20 20 20 20  ive trace..     
4d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
4d60: 2f 20 20 20 20 20 20 20 6c 69 73 74 65 6e 65 72  /       listener
4d70: 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s...            
4d80: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
4d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
4da0: 54 72 61 63 65 2e 57 72 69 74 65 4c 69 6e 65 28  Trace.WriteLine(
4db0: 6d 65 73 73 61 67 65 2c 20 63 61 74 65 67 6f 72  message, categor
4dc0: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
4dd0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 2e 46           Trace.F
4de0: 6c 75 73 68 28 29 3b 0d 0a 20 20 20 20 20 20 20  lush();..       
4df0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
4e00: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
4e10: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
4e20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
4e50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
4e60: 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74              [Met
4e70: 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d  hodImpl(MethodIm
4e80: 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69  plOptions.NoInli
4e90: 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20  ning)]..        
4ea0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
4eb0: 63 20 73 74 72 69 6e 67 20 44 65 62 75 67 41 6e  c string DebugAn
4ec0: 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
4ed0: 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
4ee0: 69 6f 72 69 74 79 20 74 72 61 63 65 50 72 69 6f  iority tracePrio
4ef0: 72 69 74 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  rity,..         
4f00: 20 20 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c         TraceCall
4f10: 62 61 63 6b 20 64 65 62 75 67 43 61 6c 6c 62 61  back debugCallba
4f20: 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
4f30: 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61       TraceCallba
4f40: 63 6b 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  ck traceCallback
4f50: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
4f60: 20 20 20 45 78 63 65 70 74 69 6f 6e 20 65 78 63     Exception exc
4f70: 65 70 74 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20  eption,..       
4f80: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
4f90: 63 61 74 65 67 6f 72 79 0d 0a 20 20 20 20 20 20  category..      
4fa0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
4fb0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
4fc0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
4fd0: 65 78 63 65 70 74 69 6f 6e 20 21 3d 20 6e 75 6c  exception != nul
4fe0: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
4ff0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 44          return D
5000: 65 62 75 67 41 6e 64 54 72 61 63 65 28 74 72 61  ebugAndTrace(tra
5010: 63 65 50 72 69 6f 72 69 74 79 2c 20 64 65 62 75  cePriority, debu
5020: 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
5030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5040: 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
5050: 6b 2c 20 6e 65 77 20 53 74 61 63 6b 54 72 61 63  k, new StackTrac
5060: 65 28 65 78 63 65 70 74 69 6f 6e 2c 20 74 72 75  e(exception, tru
5070: 65 29 2c 20 30 2c 0d 0a 20 20 20 20 20 20 20 20  e), 0,..        
5080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5090: 65 78 63 65 70 74 69 6f 6e 2e 54 6f 53 74 72 69  exception.ToStri
50a0: 6e 67 28 29 2c 20 63 61 74 65 67 6f 72 79 29 3b  ng(), category);
50b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
50c0: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
50d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
50e0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
50f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5130: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
5140: 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65    [MethodImpl(Me
5150: 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e  thodImplOptions.
5160: 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20  NoInlining)]..  
5170: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
5180: 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 44   static string D
5190: 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
51a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
51b0: 72 61 63 65 50 72 69 6f 72 69 74 79 20 74 72 61  racePriority tra
51c0: 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20 20 20  cePriority,..   
51d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
51e0: 63 65 43 61 6c 6c 62 61 63 6b 20 64 65 62 75 67  ceCallback debug
51f0: 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
5200: 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
5210: 43 61 6c 6c 62 61 63 6b 20 74 72 61 63 65 43 61  Callback traceCa
5220: 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
5230: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
5240: 6d 65 73 73 61 67 65 2c 0d 0a 20 20 20 20 20 20  message,..      
5250: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
5260: 20 63 61 74 65 67 6f 72 79 0d 0a 20 20 20 20 20   category..     
5270: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
5280: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
5290: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
52a0: 75 72 6e 20 44 65 62 75 67 41 6e 64 54 72 61 63  urn DebugAndTrac
52b0: 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
52c0: 20 20 20 20 20 20 20 20 74 72 61 63 65 50 72 69          tracePri
52d0: 6f 72 69 74 79 2c 20 64 65 62 75 67 43 61 6c 6c  ority, debugCall
52e0: 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
52f0: 61 63 6b 2c 20 6e 75 6c 6c 2c 20 31 2c 0d 0a 20  ack, null, 1,.. 
5300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5310: 20 20 20 6d 65 73 73 61 67 65 2c 20 63 61 74 65     message, cate
5320: 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  gory);..        
5330: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
5340: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
5350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5380: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
5390: 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49          [MethodI
53a0: 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70  mpl(MethodImplOp
53b0: 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67  tions.NoInlining
53c0: 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]..            
53d0: 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
53e0: 74 72 69 6e 67 20 44 65 62 75 67 41 6e 64 54 72  tring DebugAndTr
53f0: 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
5400: 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
5410: 69 74 79 20 74 72 61 63 65 50 72 69 6f 72 69 74  ity tracePriorit
5420: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
5430: 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63      TraceCallbac
5440: 6b 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  k debugCallback,
5450: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
5460: 20 20 54 72 61 63 65 43 61 6c 6c 62 61 63 6b 20    TraceCallback 
5470: 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a  traceCallback,..
5480: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5490: 53 74 61 63 6b 54 72 61 63 65 20 73 74 61 63 6b  StackTrace stack
54a0: 54 72 61 63 65 2c 0d 0a 20 20 20 20 20 20 20 20  Trace,..        
54b0: 20 20 20 20 20 20 20 20 69 6e 74 20 6c 65 76 65          int leve
54c0: 6c 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l,..            
54d0: 20 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73 61      string messa
54e0: 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ge,..           
54f0: 20 20 20 20 20 73 74 72 69 6e 67 20 63 61 74 65       string cate
5500: 67 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20  gory..          
5510: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
5520: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5530: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5540: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
5550: 4f 54 45 3a 20 41 6c 77 61 79 73 20 73 6b 69 70  OTE: Always skip
5560: 20 74 68 69 73 20 63 61 6c 6c 20 66 72 61 6d 65   this call frame
5570: 20 69 66 20 74 68 65 20 73 74 61 63 6b 20 74 72   if the stack tr
5580: 61 63 65 20 69 73 0d 0a 20 20 20 20 20 20 20 20  ace is..        
5590: 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
55a0: 20 67 6f 69 6e 67 20 74 6f 20 62 65 20 63 61 70   going to be cap
55b0: 74 75 72 65 64 20 62 79 20 47 65 74 4d 65 74 68  tured by GetMeth
55c0: 6f 64 4e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20  odName...       
55d0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
55e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
55f0: 28 73 74 61 63 6b 54 72 61 63 65 20 3d 3d 20 6e  (stackTrace == n
5600: 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
5610: 20 20 20 20 20 20 20 20 20 20 6c 65 76 65 6c 2b            level+
5620: 2b 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  +;....          
5630: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
5640: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
5650: 45 3a 20 46 6f 72 6d 61 74 20 74 68 65 20 6d 65  E: Format the me
5660: 73 73 61 67 65 20 66 6f 72 20 64 69 73 70 6c 61  ssage for displa
5670: 79 20 28 6f 6e 63 65 29 2e 0d 0a 20 20 20 20 20  y (once)...     
5680: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
5690: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
56a0: 74 72 69 6e 67 20 66 6f 72 6d 61 74 74 65 64 20  tring formatted 
56b0: 3d 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  = String.Format(
56c0: 22 7b 30 7d 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  "{0}: {1}",..   
56d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
56e0: 20 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 73   GetMethodName(s
56f0: 74 61 63 6b 54 72 61 63 65 2c 20 6c 65 76 65 6c  tackTrace, level
5700: 29 2c 20 6d 65 73 73 61 67 65 29 3b 0d 0a 0d 0a  ), message);....
5710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5720: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
5730: 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66 20      // NOTE: If 
5740: 74 68 65 20 64 65 62 75 67 20 63 61 6c 6c 62 61  the debug callba
5750: 63 6b 20 69 73 20 69 6e 76 61 6c 69 64 20 6f 72  ck is invalid or
5760: 20 74 68 65 20 74 72 61 63 65 20 70 72 69 6f 72   the trace prior
5770: 69 74 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ity..           
5780: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 66       //       of
5790: 20 74 68 69 73 20 6d 65 73 73 61 67 65 20 69 73   this message is
57a0: 20 6c 65 73 73 20 74 68 61 6e 20 77 68 61 74 20   less than what 
57b0: 77 65 20 63 75 72 72 65 6e 74 6c 79 20 77 61 6e  we currently wan
57c0: 74 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20  t to..          
57d0: 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 64        //       d
57e0: 65 62 75 67 2c 20 73 6b 69 70 20 69 74 2e 0d 0a  ebug, skip it...
57f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5800: 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
5810: 20 20 20 20 69 66 20 28 28 64 65 62 75 67 43 61      if ((debugCa
5820: 6c 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 20  llback != null) 
5830: 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  &&..            
5840: 20 20 20 20 20 20 20 20 28 74 72 61 63 65 50 72          (tracePr
5850: 69 6f 72 69 74 79 20 3e 3d 20 44 65 62 75 67 50  iority >= DebugP
5860: 72 69 6f 72 69 74 79 29 29 0d 0a 20 20 20 20 20  riority))..     
5870: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
5880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5890: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
58a0: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
58b0: 45 3a 20 49 6e 76 6f 6b 65 20 74 68 65 20 64 65  E: Invoke the de
58c0: 62 75 67 20 63 61 6c 6c 62 61 63 6b 20 77 69 74  bug callback wit
58d0: 68 20 74 68 65 20 66 6f 72 6d 61 74 74 65 64 0d  h the formatted.
58e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
58f0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6d 65       //       me
5900: 73 73 61 67 65 20 61 6e 64 20 74 68 65 20 63 61  ssage and the ca
5910: 74 65 67 6f 72 79 20 73 70 65 63 69 66 69 65 64  tegory specified
5920: 20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20   by the..       
5930: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
5940: 20 20 20 20 20 20 63 61 6c 6c 65 72 2e 0d 0a 20        caller... 
5950: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5960: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
5970: 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
5980: 43 61 6c 6c 62 61 63 6b 28 66 6f 72 6d 61 74 74  Callback(formatt
5990: 65 64 2c 20 63 61 74 65 67 6f 72 79 29 3b 0d 0a  ed, category);..
59a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
59b0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
59c0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
59d0: 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
59e0: 3a 20 49 66 20 74 68 65 20 74 72 61 63 65 20 63  : If the trace c
59f0: 61 6c 6c 62 61 63 6b 20 69 73 20 69 6e 76 61 6c  allback is inval
5a00: 69 64 20 6f 72 20 74 68 65 20 74 72 61 63 65 20  id or the trace 
5a10: 70 72 69 6f 72 69 74 79 0d 0a 20 20 20 20 20 20  priority..      
5a20: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
5a30: 20 20 20 6f 66 20 74 68 69 73 20 6d 65 73 73 61     of this messa
5a40: 67 65 20 69 73 20 6c 65 73 73 20 74 68 61 6e 20  ge is less than 
5a50: 77 68 61 74 20 77 65 20 63 75 72 72 65 6e 74 6c  what we currentl
5a60: 79 20 77 61 6e 74 20 74 6f 0d 0a 20 20 20 20 20  y want to..     
5a70: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
5a80: 20 20 20 20 74 72 61 63 65 2c 20 73 6b 69 70 20      trace, skip 
5a90: 69 74 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  it...           
5aa0: 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
5ab0: 20 20 20 20 20 20 20 20 20 69 66 20 28 28 74 72           if ((tr
5ac0: 61 63 65 43 61 6c 6c 62 61 63 6b 20 21 3d 20 6e  aceCallback != n
5ad0: 75 6c 6c 29 20 26 26 0d 0a 20 20 20 20 20 20 20  ull) &&..       
5ae0: 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74 72               (tr
5af0: 61 63 65 50 72 69 6f 72 69 74 79 20 3e 3d 20 54  acePriority >= T
5b00: 72 61 63 65 50 72 69 6f 72 69 74 79 29 29 0d 0a  racePriority))..
5b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5b20: 7b 0d 0a 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 2f                 /
5b50: 2f 20 4e 4f 54 45 3a 20 49 6e 76 6f 6b 65 20 74  / NOTE: Invoke t
5b60: 68 65 20 74 72 61 63 65 20 63 61 6c 6c 62 61 63  he trace callbac
5b70: 6b 20 77 69 74 68 20 74 68 65 20 66 6f 72 6d 61  k with the forma
5b80: 74 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20  tted..          
5b90: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
5ba0: 20 20 20 6d 65 73 73 61 67 65 20 61 6e 64 20 74     message and t
5bb0: 68 65 20 63 61 74 65 67 6f 72 79 20 73 70 65 63  he category spec
5bc0: 69 66 69 65 64 20 62 79 20 74 68 65 0d 0a 20 20  ified by the..  
5bd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5be0: 20 20 2f 2f 20 20 20 20 20 20 20 63 61 6c 6c 65    //       calle
5bf0: 72 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r...            
5c00: 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
5c10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
5c20: 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 66 6f  traceCallback(fo
5c30: 72 6d 61 74 74 65 64 2c 20 63 61 74 65 67 6f 72  rmatted, categor
5c40: 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
5c50: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5c60: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
5c70: 20 6d 65 73 73 61 67 65 3b 0d 0a 20 20 20 20 20   message;..     
5c80: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
5c90: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
5ca0: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
5cb0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
5cc0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
5cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5ce0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5d10: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
5d20: 65 67 69 6f 6e 20 4d 6f 63 6b 52 65 67 69 73 74  egion MockRegist
5d30: 72 79 20 43 6c 61 73 73 0d 0a 20 20 20 20 20 20  ry Class..      
5d40: 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64    private sealed
5d50: 20 63 6c 61 73 73 20 4d 6f 63 6b 52 65 67 69 73   class MockRegis
5d60: 74 72 79 20 3a 20 49 44 69 73 70 6f 73 61 62 6c  try : IDisposabl
5d70: 65 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  e..        {..  
5d80: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
5d90: 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75  n Public Constru
5da0: 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20  ctors..         
5db0: 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65     public MockRe
5dc0: 67 69 73 74 72 79 28 29 0d 0a 20 20 20 20 20 20  gistry()..      
5dd0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
5de0: 20 20 20 20 20 20 20 20 20 77 68 61 74 49 66 20           whatIf 
5df0: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
5e00: 20 20 20 20 20 20 20 20 20 72 65 61 64 4f 6e 6c           readOnl
5e10: 79 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  y = true;..     
5e20: 20 20 20 20 20 20 20 20 20 20 20 73 61 66 65 20             safe 
5e30: 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  = true;..       
5e40: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
5e50: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
5e60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
5ea0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
5eb0: 4d 6f 63 6b 52 65 67 69 73 74 72 79 28 0d 0a 20  MockRegistry(.. 
5ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
5ed0: 6f 6f 6c 20 77 68 61 74 49 66 0d 0a 20 20 20 20  ool whatIf..    
5ee0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
5ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a                 :
5f00: 20 74 68 69 73 28 29 0d 0a 20 20 20 20 20 20 20   this()..       
5f10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
5f20: 20 20 20 20 20 20 20 20 74 68 69 73 2e 77 68 61          this.wha
5f30: 74 49 66 20 3d 20 77 68 61 74 49 66 3b 0d 0a 20  tIf = whatIf;.. 
5f40: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
5f50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
5f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
5f90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
5fa0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
5fb0: 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
5fc0: 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry(..           
5fd0: 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66       bool whatIf
5fe0: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
5ff0: 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79     bool readOnly
6000: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6010: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
6020: 20 20 20 20 20 3a 20 74 68 69 73 28 77 68 61 74       : this(what
6030: 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If)..           
6040: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
6050: 20 20 20 20 74 68 69 73 2e 72 65 61 64 4f 6e 6c      this.readOnl
6060: 79 20 3d 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20  y = readOnly;.. 
6070: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
6080: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
6090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
60c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
60d0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
60e0: 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
60f0: 72 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ry(..           
6100: 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66       bool whatIf
6110: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6120: 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79     bool readOnly
6130: 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
6140: 20 20 20 62 6f 6f 6c 20 73 61 66 65 0d 0a 20 20     bool safe..  
6150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
6160: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6170: 20 3a 20 74 68 69 73 28 77 68 61 74 49 66 2c 20   : this(whatIf, 
6180: 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20 20 20 20  readOnly)..     
6190: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
61a0: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73            this.s
61b0: 61 66 65 20 3d 20 73 61 66 65 3b 0d 0a 20 20 20  afe = safe;..   
61c0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
61d0: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
61e0: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
61f0: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6200: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6210: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6220: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6230: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
6240: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62       #region Pub
6250: 6c 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a  lic Properties..
6260: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
6270: 61 74 65 20 62 6f 6f 6c 20 77 68 61 74 49 66 3b  ate bool whatIf;
6280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
6290: 62 6c 69 63 20 62 6f 6f 6c 20 57 68 61 74 49 66  blic bool WhatIf
62a0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
62b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
62c0: 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
62d0: 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 77  osed(); return w
62e0: 68 61 74 49 66 3b 20 7d 0d 0a 20 20 20 20 20 20  hatIf; }..      
62f0: 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
6300: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
6310: 20 77 68 61 74 49 66 20 3d 20 76 61 6c 75 65 3b   whatIf = value;
6320: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6330: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6340: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6380: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6390: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
63a0: 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a 20 20 20 20   readOnly;..    
63b0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
63c0: 6f 6f 6c 20 52 65 61 64 4f 6e 6c 79 0d 0a 20 20  ool ReadOnly..  
63d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
63e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
63f0: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
6400: 28 29 3b 20 72 65 74 75 72 6e 20 72 65 61 64 4f  (); return readO
6410: 6e 6c 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  nly; }..        
6420: 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 43 68          set { Ch
6430: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72  eckDisposed(); r
6440: 65 61 64 4f 6e 6c 79 20 3d 20 76 61 6c 75 65 3b  eadOnly = value;
6450: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6460: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6470: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
64b0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
64c0: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
64d0: 20 73 61 66 65 3b 0d 0a 20 20 20 20 20 20 20 20   safe;..        
64e0: 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
64f0: 53 61 66 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Safe..          
6500: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
6510: 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
6520: 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
6530: 72 6e 20 73 61 66 65 3b 20 7d 0d 0a 20 20 20 20  rn safe; }..    
6540: 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
6550: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
6560: 29 3b 20 73 61 66 65 20 3d 20 76 61 6c 75 65 3b  ); safe = value;
6570: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6580: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6590: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
65a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
65d0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
65e0: 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b      private Mock
65f0: 52 65 67 69 73 74 72 79 4b 65 79 20 63 6c 61 73  RegistryKey clas
6600: 73 65 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20  sesRoot;..      
6610: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
6620: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 43 6c 61  kRegistryKey Cla
6630: 73 73 65 73 52 6f 6f 74 0d 0a 20 20 20 20 20 20  ssesRoot..      
6640: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
6650: 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
6660: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
6670: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6680: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
6690: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
66a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
66b0: 28 63 6c 61 73 73 65 73 52 6f 6f 74 20 3d 3d 20  (classesRoot == 
66c0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
66d0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
66e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
66f0: 20 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f 6f        classesRoo
6700: 74 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69  t = new MockRegi
6710: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
6720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6730: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 2e 43        Registry.C
6740: 6c 61 73 73 65 73 52 6f 6f 74 2c 20 77 68 61 74  lassesRoot, what
6750: 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61  If, readOnly, sa
6760: 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  fe);..          
6770: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
6780: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6790: 20 20 20 72 65 74 75 72 6e 20 63 6c 61 73 73 65     return classe
67a0: 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20 20 20  sRoot;..        
67b0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
67c0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
67d0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
67e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
67f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
6820: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
6830: 74 65 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  te MockRegistryK
6840: 65 79 20 63 75 72 72 65 6e 74 43 6f 6e 66 69 67  ey currentConfig
6850: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
6860: 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  ublic MockRegist
6870: 72 79 4b 65 79 20 43 75 72 72 65 6e 74 43 6f 6e  ryKey CurrentCon
6880: 66 69 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fig..           
6890: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
68a0: 20 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20      get..       
68b0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
68c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
68d0: 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
68e0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
68f0: 20 20 20 20 20 20 20 20 69 66 20 28 63 75 72 72          if (curr
6900: 65 6e 74 43 6f 6e 66 69 67 20 3d 3d 20 6e 75 6c  entConfig == nul
6910: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
6920: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6930: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6940: 20 20 20 63 75 72 72 65 6e 74 43 6f 6e 66 69 67     currentConfig
6950: 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73   = new MockRegis
6960: 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20  tryKey(..       
6970: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6980: 20 20 20 20 20 52 65 67 69 73 74 72 79 2e 43 75       Registry.Cu
6990: 72 72 65 6e 74 43 6f 6e 66 69 67 2c 20 77 68 61  rrentConfig, wha
69a0: 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73  tIf, readOnly, s
69b0: 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  afe);..         
69c0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
69d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
69e0: 20 20 20 20 72 65 74 75 72 6e 20 63 75 72 72 65      return curre
69f0: 6e 74 43 6f 6e 66 69 67 3b 0d 0a 20 20 20 20 20  ntConfig;..     
6a00: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
6a10: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
6a20: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
6a30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6a60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
6a70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
6a80: 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69 73 74  ivate MockRegist
6a90: 72 79 4b 65 79 20 63 75 72 72 65 6e 74 55 73 65  ryKey currentUse
6aa0: 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
6ab0: 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73  public MockRegis
6ac0: 74 72 79 4b 65 79 20 43 75 72 72 65 6e 74 55 73  tryKey CurrentUs
6ad0: 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  er..            
6ae0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6af0: 20 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20     get..        
6b00: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6b10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
6b20: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
6b30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
6b40: 20 20 20 20 20 20 20 69 66 20 28 63 75 72 72 65         if (curre
6b50: 6e 74 55 73 65 72 20 3d 3d 20 6e 75 6c 6c 29 0d  ntUser == null).
6b60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6b70: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
6b80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6b90: 63 75 72 72 65 6e 74 55 73 65 72 20 3d 20 6e 65  currentUser = ne
6ba0: 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  w MockRegistryKe
6bb0: 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
6bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6bd0: 52 65 67 69 73 74 72 79 2e 43 75 72 72 65 6e 74  Registry.Current
6be0: 55 73 65 72 2c 20 77 68 61 74 49 66 2c 20 72 65  User, whatIf, re
6bf0: 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a  adOnly, safe);..
6c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6c10: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
6c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
6c30: 75 72 6e 20 63 75 72 72 65 6e 74 55 73 65 72 3b  urn currentUser;
6c40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6c50: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
6c60: 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
6c70: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
6c80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6c90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6cb0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
6cc0: 20 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63       private Moc
6cd0: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 64 79 6e  kRegistryKey dyn
6ce0: 44 61 74 61 3b 0d 0a 20 20 20 20 20 20 20 20 20  Data;..         
6cf0: 20 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65     public MockRe
6d00: 67 69 73 74 72 79 4b 65 79 20 44 79 6e 44 61 74  gistryKey DynDat
6d10: 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  a..            {
6d20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6d30: 20 20 67 65 74 0d 0a 20 20 20 20 20 20 20 20 20    get..         
6d40: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
6d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
6d60: 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a  eckDisposed();..
6d70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
6d80: 20 20 20 20 20 20 69 66 20 28 64 79 6e 44 61 74        if (dynDat
6d90: 61 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  a == null)..    
6da0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6db0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6dc0: 20 20 20 20 20 20 20 20 20 20 20 64 79 6e 44 61             dynDa
6dd0: 74 61 20 3d 20 6e 65 77 20 4d 6f 63 6b 52 65 67  ta = new MockReg
6de0: 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20  istryKey(..     
6df0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6e00: 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79 2e         Registry.
6e10: 44 79 6e 44 61 74 61 2c 20 77 68 61 74 49 66 2c  DynData, whatIf,
6e20: 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29   readOnly, safe)
6e30: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
6e40: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
6e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6e60: 72 65 74 75 72 6e 20 64 79 6e 44 61 74 61 3b 0d  return dynData;.
6e70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
6e80: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
6e90: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
6ea0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
6eb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ec0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ed0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
6ee0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
6ef0: 20 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b      private Mock
6f00: 52 65 67 69 73 74 72 79 4b 65 79 20 6c 6f 63 61  RegistryKey loca
6f10: 6c 4d 61 63 68 69 6e 65 3b 0d 0a 20 20 20 20 20  lMachine;..     
6f20: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f         public Mo
6f30: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 4c 6f  ckRegistryKey Lo
6f40: 63 61 6c 4d 61 63 68 69 6e 65 0d 0a 20 20 20 20  calMachine..    
6f50: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
6f60: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
6f70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
6f80: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
6f90: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
6fa0: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
6fb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
6fc0: 66 20 28 6c 6f 63 61 6c 4d 61 63 68 69 6e 65 20  f (localMachine 
6fd0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
6fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
6ff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7000: 20 20 20 20 20 20 20 20 20 6c 6f 63 61 6c 4d 61           localMa
7010: 63 68 69 6e 65 20 3d 20 6e 65 77 20 4d 6f 63 6b  chine = new Mock
7020: 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20  RegistryKey(..  
7030: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7040: 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
7050: 72 79 2e 4c 6f 63 61 6c 4d 61 63 68 69 6e 65 2c  ry.LocalMachine,
7060: 20 77 68 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c   whatIf, readOnl
7070: 79 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20 20 20  y, safe);..     
7080: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
7090: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
70a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6c          return l
70b0: 6f 63 61 6c 4d 61 63 68 69 6e 65 3b 0d 0a 20 20  ocalMachine;..  
70c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
70d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
70e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
70f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7100: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7110: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7120: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7130: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
7140: 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67   private MockReg
7150: 69 73 74 72 79 4b 65 79 20 70 65 72 66 6f 72 6d  istryKey perform
7160: 61 6e 63 65 44 61 74 61 3b 0d 0a 20 20 20 20 20  anceData;..     
7170: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f         public Mo
7180: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 50 65  ckRegistryKey Pe
7190: 72 66 6f 72 6d 61 6e 63 65 44 61 74 61 0d 0a 20  rformanceData.. 
71a0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
71b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
71c0: 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
71d0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
71e0: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44            CheckD
71f0: 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20  isposed();....  
7200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7210: 20 20 69 66 20 28 70 65 72 66 6f 72 6d 61 6e 63    if (performanc
7220: 65 44 61 74 61 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  eData == null)..
7230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7240: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
7250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
7260: 65 72 66 6f 72 6d 61 6e 63 65 44 61 74 61 20 3d  erformanceData =
7270: 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72   new MockRegistr
7280: 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  yKey(..         
7290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
72a0: 20 20 20 52 65 67 69 73 74 72 79 2e 50 65 72 66     Registry.Perf
72b0: 6f 72 6d 61 6e 63 65 44 61 74 61 2c 20 77 68 61  ormanceData, wha
72c0: 74 49 66 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73  tIf, readOnly, s
72d0: 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  afe);..         
72e0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
72f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7300: 20 20 20 20 72 65 74 75 72 6e 20 70 65 72 66 6f      return perfo
7310: 72 6d 61 6e 63 65 44 61 74 61 3b 0d 0a 20 20 20  rmanceData;..   
7320: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
7330: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
7340: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
7350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7390: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
73a0: 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69  private MockRegi
73b0: 73 74 72 79 4b 65 79 20 75 73 65 72 73 3b 0d 0a  stryKey users;..
73c0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
73d0: 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
73e0: 65 79 20 55 73 65 72 73 0d 0a 20 20 20 20 20 20  ey Users..      
73f0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7400: 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a 20 20           get..  
7410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
7420: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7430: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
7440: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
7450: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7460: 28 75 73 65 72 73 20 3d 3d 20 6e 75 6c 6c 29 0d  (users == null).
7470: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
7480: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
7490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74a0: 75 73 65 72 73 20 3d 20 6e 65 77 20 4d 6f 63 6b  users = new Mock
74b0: 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20  RegistryKey(..  
74c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
74d0: 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
74e0: 72 79 2e 55 73 65 72 73 2c 20 77 68 61 74 49 66  ry.Users, whatIf
74f0: 2c 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65  , readOnly, safe
7500: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
7510: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
7520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7530: 20 72 65 74 75 72 6e 20 75 73 65 72 73 3b 0d 0a   return users;..
7540: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7550: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
7560: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
7570: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
7580: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
75c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
75d0: 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
75e0: 6f 6e 20 50 75 62 6c 69 63 20 22 52 65 67 69 73  on Public "Regis
75f0: 74 72 79 22 20 4d 65 74 68 6f 64 73 0d 0a 23 69  try" Methods..#i
7600: 66 20 66 61 6c 73 65 0d 0a 20 20 20 20 20 20 20  f false..       
7610: 20 20 20 20 20 70 75 62 6c 69 63 20 6f 62 6a 65       public obje
7620: 63 74 20 47 65 74 56 61 6c 75 65 28 0d 0a 20 20  ct GetValue(..  
7630: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
7640: 72 69 6e 67 20 6b 65 79 4e 61 6d 65 2c 0d 0a 20  ring keyName,.. 
7650: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
7660: 74 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d 65 2c  tring valueName,
7670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7680: 20 20 6f 62 6a 65 63 74 20 64 65 66 61 75 6c 74    object default
7690: 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20 20 20  Value..         
76a0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
76b0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
76c0: 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69           CheckDi
76d0: 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20  sposed();....   
76e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
76f0: 75 72 6e 20 52 65 67 69 73 74 72 79 2e 47 65 74  urn Registry.Get
7700: 56 61 6c 75 65 28 6b 65 79 4e 61 6d 65 2c 20 76  Value(keyName, v
7710: 61 6c 75 65 4e 61 6d 65 2c 20 64 65 66 61 75 6c  alueName, defaul
7720: 74 56 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20  tValue);..      
7730: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
7740: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
7750: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
7790: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
77a0: 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65 28 0d   void SetValue(.
77b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
77c0: 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65 2c   string keyName,
77d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
77e0: 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e 61    string valueNa
77f0: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
7800: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
7810: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
7820: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
7830: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7840: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
7850: 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed();..         
7860: 20 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64         CheckRead
7870: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
7880: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
7890: 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20  whatIf)..       
78a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67               Reg
78b0: 69 73 74 72 79 2e 53 65 74 56 61 6c 75 65 28 6b  istry.SetValue(k
78c0: 65 79 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d  eyName, valueNam
78d0: 65 2c 20 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20  e, value);..    
78e0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
78f0: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
7900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
7940: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
7950: 69 63 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65  ic void SetValue
7960: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
7970: 20 20 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d     string keyNam
7980: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
7990: 20 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65      string value
79a0: 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
79b0: 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
79c0: 6c 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  lue,..          
79d0: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 56 61        RegistryVa
79e0: 6c 75 65 4b 69 6e 64 20 76 61 6c 75 65 4b 69 6e  lueKind valueKin
79f0: 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  d..             
7a00: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
7a10: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7a20: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
7a30: 65 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed();..         
7a40: 20 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64         CheckRead
7a50: 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  Only();....     
7a60: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
7a70: 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20  whatIf)..       
7a80: 20 20 20 20 20 20 20 20 20 20 20 20 20 52 65 67               Reg
7a90: 69 73 74 72 79 2e 53 65 74 56 61 6c 75 65 28 6b  istry.SetValue(k
7aa0: 65 79 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d  eyName, valueNam
7ab0: 65 2c 20 76 61 6c 75 65 2c 20 76 61 6c 75 65 4b  e, value, valueK
7ac0: 69 6e 64 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ind);..         
7ad0: 20 20 20 7d 0d 0a 23 65 6e 64 69 66 0d 0a 20 20     }..#endif..  
7ae0: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
7af0: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
7b00: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
7b10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7b40: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
7b50: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
7b60: 72 69 76 61 74 65 20 4d 65 74 68 6f 64 73 0d 0a  rivate Methods..
7b70: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
7b80: 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 52 65  ate void CheckRe
7b90: 61 64 4f 6e 6c 79 28 29 0d 0a 20 20 20 20 20 20  adOnly()..      
7ba0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
7bb0: 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
7bc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
7bd0: 4e 4f 54 45 3a 20 49 6e 20 22 72 65 61 64 2d 6f  NOTE: In "read-o
7be0: 6e 6c 79 22 20 6d 6f 64 65 2c 20 77 65 20 64 69  nly" mode, we di
7bf0: 73 61 6c 6c 6f 77 20 61 6c 6c 20 77 72 69 74 65  sallow all write
7c00: 20 61 63 63 65 73 73 2e 0d 0a 20 20 20 20 20 20   access...      
7c10: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
7c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
7c30: 20 28 21 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20   (!readOnly)..  
7c40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7c50: 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20    return;....   
7c60: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72               thr
7c70: 6f 77 20 6e 65 77 20 49 6e 76 61 6c 69 64 4f 70  ow new InvalidOp
7c80: 65 72 61 74 69 6f 6e 45 78 63 65 70 74 69 6f 6e  erationException
7c90: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
7ca0: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
7cb0: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
7cc0: 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7cf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7d00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
7d10: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
7d20: 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62 6c 65  gion IDisposable
7d30: 20 22 50 61 74 74 65 72 6e 22 20 4d 65 6d 62 65   "Pattern" Membe
7d40: 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rs..            
7d50: 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 64 69 73  private bool dis
7d60: 70 6f 73 65 64 3b 0d 0a 20 20 20 20 20 20 20 20  posed;..        
7d70: 20 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64      private void
7d80: 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29   CheckDisposed()
7d90: 20 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20   /* throw */..  
7da0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
7db0: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
7dc0: 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20 20 20  (!disposed)..   
7dd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7de0: 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
7df0: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 72 6f              thro
7e00: 77 20 6e 65 77 20 4f 62 6a 65 63 74 44 69 73 70  w new ObjectDisp
7e10: 6f 73 65 64 45 78 63 65 70 74 69 6f 6e 28 0d 0a  osedException(..
7e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7e30: 20 20 20 20 74 79 70 65 6f 66 28 4d 6f 63 6b 52      typeof(MockR
7e40: 65 67 69 73 74 72 79 29 2e 4e 61 6d 65 29 3b 0d  egistry).Name);.
7e50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
7e60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
7e70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7e90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7ea0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7eb0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
7ec0: 20 70 72 69 76 61 74 65 20 2f 2a 20 70 72 6f 74   private /* prot
7ed0: 65 63 74 65 64 20 76 69 72 74 75 61 6c 20 2a 2f  ected virtual */
7ee0: 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 0d 0a   void Dispose(..
7ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f00: 62 6f 6f 6c 20 64 69 73 70 6f 73 69 6e 67 0d 0a  bool disposing..
7f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7f20: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
7f30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7f40: 20 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29    if (!disposed)
7f50: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
7f60: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
7f70: 20 20 20 20 20 20 20 20 20 69 66 20 28 64 69 73           if (dis
7f80: 70 6f 73 69 6e 67 29 0d 0a 20 20 20 20 20 20 20  posing)..       
7f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
7fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7fb0: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
7fc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
7fd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20  ////////////..  
7fe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
7ff0: 20 20 20 20 20 20 2f 2f 20 64 69 73 70 6f 73 65        // dispose
8000: 20 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72 63   managed resourc
8010: 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20  es here.....    
8020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8030: 20 20 20 20 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 2f 2f 2f  ////////////////
8050: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
8060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8070: 20 20 20 20 69 66 20 28 63 6c 61 73 73 65 73 52      if (classesR
8080: 6f 6f 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  oot != null)..  
8090: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80a0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
80b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80c0: 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f 6f 74       classesRoot
80d0: 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  .Close();..     
80e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
80f0: 20 20 20 20 20 20 20 63 6c 61 73 73 65 73 52 6f         classesRo
8100: 6f 74 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ot = null;..    
8110: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8120: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
8130: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8140: 20 69 66 20 28 63 75 72 72 65 6e 74 43 6f 6e 66   if (currentConf
8150: 69 67 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ig != null)..   
8160: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8170: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
8180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8190: 20 20 20 20 63 75 72 72 65 6e 74 43 6f 6e 66 69      currentConfi
81a0: 67 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20  g.Close();..    
81b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81c0: 20 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 43          currentC
81d0: 6f 6e 66 69 67 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  onfig = null;.. 
81e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
81f0: 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
8200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8210: 20 20 20 20 69 66 20 28 63 75 72 72 65 6e 74 55      if (currentU
8220: 73 65 72 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ser != null)..  
8230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8240: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
8250: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8260: 20 20 20 20 20 63 75 72 72 65 6e 74 55 73 65 72       currentUser
8270: 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  .Close();..     
8280: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8290: 20 20 20 20 20 20 20 63 75 72 72 65 6e 74 55 73         currentUs
82a0: 65 72 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  er = null;..    
82b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82c0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
82d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
82e0: 20 69 66 20 28 64 79 6e 44 61 74 61 20 21 3d 20   if (dynData != 
82f0: 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
8300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
8310: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8320: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 79                dy
8330: 6e 44 61 74 61 2e 43 6c 6f 73 65 28 29 3b 0d 0a  nData.Close();..
8340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8350: 20 20 20 20 20 20 20 20 20 20 20 20 64 79 6e 44              dynD
8360: 61 74 61 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ata = null;..   
8370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8380: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83a0: 20 20 69 66 20 28 6c 6f 63 61 6c 4d 61 63 68 69    if (localMachi
83b0: 6e 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ne != null)..   
83c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83d0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
83e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
83f0: 20 20 20 20 6c 6f 63 61 6c 4d 61 63 68 69 6e 65      localMachine
8400: 2e 43 6c 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20  .Close();..     
8410: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8420: 20 20 20 20 20 20 20 6c 6f 63 61 6c 4d 61 63 68         localMach
8430: 69 6e 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20  ine = null;..   
8440: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8450: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8460: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8470: 20 20 69 66 20 28 70 65 72 66 6f 72 6d 61 6e 63    if (performanc
8480: 65 44 61 74 61 20 21 3d 20 6e 75 6c 6c 29 0d 0a  eData != null)..
8490: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84a0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
84b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
84c0: 20 20 20 20 20 20 20 70 65 72 66 6f 72 6d 61 6e         performan
84d0: 63 65 44 61 74 61 2e 43 6c 6f 73 65 28 29 3b 0d  ceData.Close();.
84e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
84f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 70 65 72               per
8500: 66 6f 72 6d 61 6e 63 65 44 61 74 61 20 3d 20 6e  formanceData = n
8510: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
8520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
8530: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
8540: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 75             if (u
8550: 73 65 72 73 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20  sers != null).. 
8560: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8570: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8580: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8590: 20 20 20 20 20 20 75 73 65 72 73 2e 43 6c 6f 73        users.Clos
85a0: 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  e();..          
85b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
85c0: 20 20 75 73 65 72 73 20 3d 20 6e 75 6c 6c 3b 0d    users = null;.
85d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
85e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
85f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8600: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
8610: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
8620: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
8640: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
8650: 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20       // release 
8660: 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  unmanaged resour
8670: 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
8680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8690: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
86a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
86b0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
86c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
86d0: 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
86e0: 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
86f0: 54 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20 6e  This object is n
8700: 6f 77 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20  ow disposed...  
8710: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8720: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
8730: 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
8740: 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
8750: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
8760: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
8770: 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
8780: 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
8790: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
87a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
87d0: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
87e0: 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
87f0: 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65  Disposable Membe
8800: 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rs..            
8810: 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
8820: 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  ose()..         
8830: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
8840: 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
8850: 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
8860: 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
8870: 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
8880: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
8890: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
88a0: 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
88b0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
88c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
88f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
8900: 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
8910: 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20  n Destructor..  
8920: 20 20 20 20 20 20 20 20 20 20 7e 4d 6f 63 6b 52            ~MockR
8930: 65 67 69 73 74 72 79 28 29 0d 0a 20 20 20 20 20  egistry()..     
8940: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8950: 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f 73            Dispos
8960: 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20  e(false);..     
8970: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
8980: 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
8990: 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20  ..        }..   
89a0: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
89b0: 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
89c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
89f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8a00: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72  //....        #r
8a10: 65 67 69 6f 6e 20 4d 6f 63 6b 52 65 67 69 73 74  egion MockRegist
8a20: 72 79 4b 65 79 20 43 6c 61 73 73 0d 0a 20 20 20  ryKey Class..   
8a30: 20 20 20 20 20 69 6e 74 65 72 6e 61 6c 20 73 65       internal se
8a40: 61 6c 65 64 20 63 6c 61 73 73 20 4d 6f 63 6b 52  aled class MockR
8a50: 65 67 69 73 74 72 79 4b 65 79 20 3a 20 49 44 69  egistryKey : IDi
8a60: 73 70 6f 73 61 62 6c 65 0d 0a 20 20 20 20 20 20  sposable..      
8a70: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8a80: 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65   #region Private
8a90: 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20   Constructors.. 
8aa0: 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
8ab0: 74 65 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  te MockRegistryK
8ac0: 65 79 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ey()..          
8ad0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
8ae0: 20 20 20 20 20 77 68 61 74 49 66 20 3d 20 74 72       whatIf = tr
8af0: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
8b00: 20 20 20 20 20 72 65 61 64 4f 6e 6c 79 20 3d 20       readOnly = 
8b10: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
8b20: 20 20 20 20 20 20 20 73 61 66 65 20 3d 20 74 72         safe = tr
8b30: 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
8b40: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
8b50: 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
8b60: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
8b70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d  /////////////...
8bb0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
8bc0: 67 69 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73  gion Public Cons
8bd0: 74 72 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20  tructors..      
8be0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
8bf0: 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20  kRegistryKey(.. 
8c00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 52                 R
8c10: 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a  egistryKey key..
8c20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8c30: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
8c40: 20 20 20 3a 20 74 68 69 73 28 29 0d 0a 20 20 20     : this()..   
8c50: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
8c60: 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
8c70: 2e 6b 65 79 20 3d 20 6b 65 79 3b 0d 0a 20 20 20  .key = key;..   
8c80: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
8c90: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
8ca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8cd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
8ce0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
8cf0: 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
8d00: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
8d10: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65        RegistryKe
8d20: 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
8d30: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
8d40: 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20  ubKeyName..     
8d50: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
8d60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20                : 
8d70: 74 68 69 73 28 6b 65 79 29 0d 0a 20 20 20 20 20  this(key)..     
8d80: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
8d90: 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 73            this.s
8da0: 75 62 4b 65 79 4e 61 6d 65 20 3d 20 73 75 62 4b  ubKeyName = subK
8db0: 65 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  eyName;..       
8dc0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
8dd0: 20 20 20 20 20 20 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 2f 2f 2f  ////////////////
8e00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8e10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
8e20: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
8e30: 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28  MockRegistryKey(
8e40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8e50: 20 20 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65    RegistryKey ke
8e60: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
8e70: 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65      string subKe
8e80: 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  yName,..        
8e90: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
8ea0: 74 49 66 0d 0a 20 20 20 20 20 20 20 20 20 20 20  tIf..           
8eb0: 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
8ec0: 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28 6b          : this(k
8ed0: 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 29 0d  ey, subKeyName).
8ee0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
8ef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8f00: 74 68 69 73 2e 77 68 61 74 49 66 20 3d 20 77 68  this.whatIf = wh
8f10: 61 74 49 66 3b 0d 0a 20 20 20 20 20 20 20 20 20  atIf;..         
8f20: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
8f30: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
8f40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
8f70: 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
8f80: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f         public Mo
8f90: 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28 0d 0a  ckRegistryKey(..
8fa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
8fb0: 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 2c  RegistryKey key,
8fc0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
8fd0: 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e    string subKeyN
8fe0: 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
8ff0: 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49        bool whatI
9000: 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f,..            
9010: 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c      bool readOnl
9020: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
9030: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
9040: 20 20 20 20 20 20 3a 20 74 68 69 73 28 6b 65 79        : this(key
9050: 2c 20 73 75 62 4b 65 79 4e 61 6d 65 2c 20 77 68  , subKeyName, wh
9060: 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20  atIf)..         
9070: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9080: 20 20 20 20 20 20 74 68 69 73 2e 72 65 61 64 4f        this.readO
9090: 6e 6c 79 20 3d 20 72 65 61 64 4f 6e 6c 79 3b 0d  nly = readOnly;.
90a0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
90b0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
90c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
90f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9100: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
9110: 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69   public MockRegi
9120: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
9130: 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
9140: 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20  ryKey key,..    
9150: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
9160: 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a  ng subKeyName,..
9170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9180: 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20  bool whatIf,..  
9190: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
91a0: 6f 6c 20 72 65 61 64 4f 6e 6c 79 2c 0d 0a 20 20  ol readOnly,..  
91b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
91c0: 6f 6c 20 73 61 66 65 0d 0a 20 20 20 20 20 20 20  ol safe..       
91d0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
91e0: 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 74 68              : th
91f0: 69 73 28 6b 65 79 2c 20 73 75 62 4b 65 79 4e 61  is(key, subKeyNa
9200: 6d 65 2c 20 77 68 61 74 49 66 2c 20 72 65 61 64  me, whatIf, read
9210: 4f 6e 6c 79 29 0d 0a 20 20 20 20 20 20 20 20 20  Only)..         
9220: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
9230: 20 20 20 20 20 20 74 68 69 73 2e 73 61 66 65 20        this.safe 
9240: 3d 20 73 61 66 65 3b 0d 0a 20 20 20 20 20 20 20  = safe;..       
9250: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
9260: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
9270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9280: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
92a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
92b0: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
92c0: 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 28  MockRegistryKey(
92d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
92e0: 20 20 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65    RegistryKey ke
92f0: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
9300: 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 0d      bool whatIf.
9310: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9320: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
9330: 20 20 20 20 3a 20 74 68 69 73 28 6b 65 79 2c 20      : this(key, 
9340: 6e 75 6c 6c 2c 20 77 68 61 74 49 66 29 0d 0a 20  null, whatIf).. 
9350: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9360: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9370: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
9380: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
9390: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
93a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
93d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
93e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
93f0: 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
9400: 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  yKey(..         
9410: 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b         RegistryK
9420: 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20  ey key,..       
9430: 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68           bool wh
9440: 61 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20  atIf,..         
9450: 20 20 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64         bool read
9460: 4f 6e 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  Only..          
9470: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
9480: 20 20 20 20 20 20 20 20 20 3a 20 74 68 69 73 28           : this(
9490: 6b 65 79 2c 20 6e 75 6c 6c 2c 20 77 68 61 74 49  key, null, whatI
94a0: 66 2c 20 72 65 61 64 4f 6e 6c 79 29 0d 0a 20 20  f, readOnly)..  
94b0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
94c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
94d0: 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
94e0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
94f0: 20 20 20 20 20 20 20 20 20 20 2f 2f 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 0d 0a 0d  /////////////...
9540: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
9550: 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  lic MockRegistry
9560: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
9570: 20 20 20 20 20 20 52 65 67 69 73 74 72 79 4b 65        RegistryKe
9580: 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
9590: 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
95a0: 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
95b0: 20 20 20 20 20 20 62 6f 6f 6c 20 72 65 61 64 4f        bool readO
95c0: 6e 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  nly,..          
95d0: 20 20 20 20 20 20 62 6f 6f 6c 20 73 61 66 65 0d        bool safe.
95e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
95f0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
9600: 20 20 20 20 3a 20 74 68 69 73 28 6b 65 79 2c 20      : this(key, 
9610: 6e 75 6c 6c 2c 20 77 68 61 74 49 66 2c 20 72 65  null, whatIf, re
9620: 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29 0d 0a 20  adOnly, safe).. 
9630: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9650: 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
9660: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
9670: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
9680: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
9690: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
96e0: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75        #region Pu
96f0: 62 6c 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20 20  blic Methods..  
9700: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
9710: 20 76 6f 69 64 20 43 6c 6f 73 65 28 29 0d 0a 20   void Close().. 
9720: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
9730: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
9740: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9750: 20 20 2f 2f 20 4e 4f 54 45 3a 20 4e 6f 20 64 69    // NOTE: No di
9760: 73 70 6f 73 65 64 20 63 68 65 63 6b 20 68 65 72  sposed check her
9770: 65 20 62 65 63 61 75 73 65 20 63 61 6c 6c 69 6e  e because callin
9780: 67 20 74 68 69 73 20 6d 65 74 68 6f 64 0d 0a 20  g this method.. 
9790: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
97a0: 2f 20 20 20 20 20 20 20 73 68 6f 75 6c 64 20 62  /       should b
97b0: 65 20 6a 75 73 74 20 6c 69 6b 65 20 63 61 6c 6c  e just like call
97c0: 69 6e 67 20 44 69 73 70 6f 73 65 2e 0d 0a 20 20  ing Dispose...  
97d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
97e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
97f0: 20 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b    Dispose(true);
9800: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
9810: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
9820: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9860: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
9870: 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69    public void Di
9880: 73 61 62 6c 65 43 6c 6f 73 65 28 29 0d 0a 20 20  sableClose()..  
9890: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
98a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
98b0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
98c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
98d0: 20 6e 6f 43 6c 6f 73 65 20 3d 20 74 72 75 65 3b   noClose = true;
98e0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
98f0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
9900: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9940: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
9950: 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67    public MockReg
9960: 69 73 74 72 79 4b 65 79 20 43 6c 6f 6e 65 28 0d  istryKey Clone(.
9970: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9980: 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20   bool whatIf,.. 
9990: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
99a0: 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79 2c 0d 0a 20  ool readOnly,.. 
99b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
99c0: 6f 6f 6c 20 73 61 66 65 0d 0a 20 20 20 20 20 20  ool safe..      
99d0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
99e0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
99f0: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
9a00: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a  kDisposed();....
9a10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a20: 72 65 74 75 72 6e 20 6e 65 77 20 4d 6f 63 6b 52  return new MockR
9a30: 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20  egistryKey(..   
9a40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9a50: 20 6b 65 79 2c 20 74 68 69 73 2e 77 68 61 74 49   key, this.whatI
9a60: 66 20 7c 7c 20 77 68 61 74 49 66 2c 20 74 68 69  f || whatIf, thi
9a70: 73 2e 72 65 61 64 4f 6e 6c 79 20 7c 7c 20 72 65  s.readOnly || re
9a80: 61 64 4f 6e 6c 79 2c 0d 0a 20 20 20 20 20 20 20  adOnly,..       
9a90: 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
9aa0: 73 2e 73 61 66 65 20 7c 7c 20 73 61 66 65 29 3b  s.safe || safe);
9ab0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
9ac0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
9ad0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9ae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9af0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
9b10: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
9b20: 20 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67    public MockReg
9b30: 69 73 74 72 79 4b 65 79 20 43 72 65 61 74 65 53  istryKey CreateS
9b40: 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20  ubKey(..        
9b50: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 73          string s
9b60: 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20  ubKeyName..     
9b70: 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
9b80: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
9b90: 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
9ba0: 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20  ckDisposed();.. 
9bb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
9bc0: 68 65 63 6b 52 65 61 64 4f 6e 6c 79 28 29 3b 0d  heckReadOnly();.
9bd0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
9be0: 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75     if (key == nu
9bf0: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
9c00: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
9c10: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
9c20: 20 20 20 20 20 20 20 20 20 69 66 20 28 77 68 61           if (wha
9c30: 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
9c40: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
9c50: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
9c60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9c70: 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20 41 74       // HACK: At
9c80: 74 65 6d 70 74 20 74 6f 20 6f 70 65 6e 20 74 68  tempt to open th
9c90: 65 20 73 70 65 63 69 66 69 65 64 20 73 75 62 2d  e specified sub-
9ca0: 6b 65 79 2e 20 20 49 66 20 74 68 69 73 0d 0a 20  key.  If this.. 
9cb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9cc0: 20 20 20 2f 2f 20 20 20 20 20 20 20 66 61 69 6c     //       fail
9cd0: 73 2c 20 77 65 20 77 69 6c 6c 20 73 69 6d 70 6c  s, we will simpl
9ce0: 79 20 72 65 74 75 72 6e 20 74 68 65 20 77 72 61  y return the wra
9cf0: 70 70 65 64 20 72 6f 6f 74 20 6b 65 79 0d 0a 20  pped root key.. 
9d00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d10: 20 20 20 2f 2f 20 20 20 20 20 20 20 69 74 73 65     //       itse
9d20: 6c 66 20 73 69 6e 63 65 20 6e 6f 20 77 72 69 74  lf since no writ
9d30: 65 73 20 61 72 65 20 61 6c 6c 6f 77 65 64 20 69  es are allowed i
9d40: 6e 20 22 77 68 61 74 2d 69 66 22 0d 0a 20 20 20  n "what-if"..   
9d50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9d60: 20 2f 2f 20 20 20 20 20 20 20 6d 6f 64 65 20 61   //       mode a
9d70: 6e 79 68 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  nyhow...        
9d80: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
9d90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9da0: 20 20 20 20 52 65 67 69 73 74 72 79 4b 65 79 20      RegistryKey 
9db0: 73 75 62 4b 65 79 20 3d 20 6b 65 79 2e 4f 70 65  subKey = key.Ope
9dc0: 6e 53 75 62 4b 65 79 28 73 75 62 4b 65 79 4e 61  nSubKey(subKeyNa
9dd0: 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
9de0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
9df0: 73 75 62 4b 65 79 20 21 3d 20 6e 75 6c 6c 29 0d  subKey != null).
9e00: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
9e10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
9e20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9e30: 72 65 74 75 72 6e 20 6e 65 77 20 4d 6f 63 6b 52  return new MockR
9e40: 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20  egistryKey(..   
9e50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9e60: 20 20 20 20 20 20 20 20 20 73 75 62 4b 65 79 2c           subKey,
9e70: 20 77 68 61 74 49 66 2c 20 72 65 61 64 4f 6e 6c   whatIf, readOnl
9e80: 79 2c 20 73 61 66 65 29 3b 0d 0a 20 20 20 20 20  y, safe);..     
9e90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
9ea0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9eb0: 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
9ec0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9ed0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
9ee0: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
9ef0: 6e 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74  n new MockRegist
9f00: 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20  ryKey(..        
9f10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f20: 20 20 20 20 6b 65 79 2c 20 73 75 62 4b 65 79 4e      key, subKeyN
9f30: 61 6d 65 2c 20 77 68 61 74 49 66 2c 20 72 65 61  ame, whatIf, rea
9f40: 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20  dOnly, safe);.. 
9f50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
9f60: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
9f70: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
9f80: 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
9f90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
9fa0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
9fb0: 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e 65 77        return new
9fc0: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
9fd0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
9fe0: 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 43             key.C
9ff0: 72 65 61 74 65 53 75 62 4b 65 79 28 73 75 62 4b  reateSubKey(subK
a000: 65 79 4e 61 6d 65 29 2c 20 77 68 61 74 49 66 2c  eyName), whatIf,
a010: 20 72 65 61 64 4f 6e 6c 79 2c 20 73 61 66 65 29   readOnly, safe)
a020: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
a030: 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
a040: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
a050: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a090: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
a0a0: 20 20 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69        public voi
a0b0: 64 20 44 65 6c 65 74 65 53 75 62 4b 65 79 28 0d  d DeleteSubKey(.
a0c0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a0d0: 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61   string subKeyNa
a0e0: 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
a0f0: 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f       bool throwO
a100: 6e 4d 69 73 73 69 6e 67 0d 0a 20 20 20 20 20 20  nMissing..      
a110: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
a120: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
a130: 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63              Chec
a140: 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 20 20  kDisposed();..  
a150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68                Ch
a160: 65 63 6b 52 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a  eckReadOnly();..
a170: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
a180: 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c    if (key == nul
a190: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
a1a0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d          return;.
a1b0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a1c0: 20 20 20 69 66 20 28 21 77 68 61 74 49 66 29 0d     if (!whatIf).
a1d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a1e0: 20 20 20 20 20 6b 65 79 2e 44 65 6c 65 74 65 53       key.DeleteS
a1f0: 75 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65  ubKey(subKeyName
a200: 2c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67  , throwOnMissing
a210: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a220: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
a230: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a270: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a280: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
a290: 44 65 6c 65 74 65 53 75 62 4b 65 79 54 72 65 65  DeleteSubKeyTree
a2a0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
a2b0: 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65 79     string subKey
a2c0: 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
a2d0: 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
a2e0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
a2f0: 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
a300: 70 6f 73 65 64 28 29 3b 0d 0a 20 20 20 20 20 20  posed();..      
a310: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 52            CheckR
a320: 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  eadOnly();....  
a330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
a340: 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (key == null)..
a350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a360: 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20      return;.... 
a370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
a380: 66 20 28 21 77 68 61 74 49 66 29 0d 0a 20 20 20  f (!whatIf)..   
a390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
a3a0: 20 6b 65 79 2e 44 65 6c 65 74 65 53 75 62 4b 65   key.DeleteSubKe
a3b0: 79 54 72 65 65 28 73 75 62 4b 65 79 4e 61 6d 65  yTree(subKeyName
a3c0: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a3d0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
a3e0: 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a410: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a420: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a430: 20 20 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20      public void 
a440: 44 65 6c 65 74 65 56 61 6c 75 65 28 0d 0a 20 20  DeleteValue(..  
a450: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
a460: 72 69 6e 67 20 6e 61 6d 65 2c 0d 0a 20 20 20 20  ring name,..    
a470: 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
a480: 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 0d   throwOnMissing.
a490: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a4a0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
a4b0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
a4c0: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
a4d0: 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
a4e0: 20 20 20 20 20 43 68 65 63 6b 52 65 61 64 4f 6e       CheckReadOn
a4f0: 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ly();....       
a500: 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
a510: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
a520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a530: 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
a540: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 77            if (!w
a550: 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20  hatIf)..        
a560: 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e              key.
a570: 44 65 6c 65 74 65 56 61 6c 75 65 28 6e 61 6d 65  DeleteValue(name
a580: 2c 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67  , throwOnMissing
a590: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
a5a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
a5b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
a5c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a5f0: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
a600: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
a610: 67 5b 5d 20 47 65 74 53 75 62 4b 65 79 4e 61 6d  g[] GetSubKeyNam
a620: 65 73 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  es()..          
a630: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
a640: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
a650: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
a660: 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
a670: 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
a680: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a690: 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  eturn null;.... 
a6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
a6b0: 65 74 75 72 6e 20 6b 65 79 2e 47 65 74 53 75 62  eturn key.GetSub
a6c0: 4b 65 79 4e 61 6d 65 73 28 29 3b 0d 0a 20 20 20  KeyNames();..   
a6d0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
a6e0: 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
a6f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
a730: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
a740: 6c 69 63 20 6f 62 6a 65 63 74 20 47 65 74 56 61  lic object GetVa
a750: 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
a760: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
a770: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
a780: 20 20 20 20 6f 62 6a 65 63 74 20 64 65 66 61 75      object defau
a790: 6c 74 56 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  ltValue..       
a7a0: 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
a7b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
a7c0: 20 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b             Check
a7d0: 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20  Disposed();.... 
a7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
a7f0: 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d  f (key == null).
a800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
a810: 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
a820: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
a830: 20 20 20 20 20 72 65 74 75 72 6e 20 6b 65 79 2e       return key.
a840: 47 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 64  GetValue(name, d
a850: 65 66 61 75 6c 74 56 61 6c 75 65 29 3b 0d 0a 20  efaultValue);.. 
a860: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
a870: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
a880: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a890: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a8b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
a8c0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
a8d0: 75 62 6c 69 63 20 73 74 72 69 6e 67 5b 5d 20 47  ublic string[] G
a8e0: 65 74 56 61 6c 75 65 4e 61 6d 65 73 28 29 0d 0a  etValueNames()..
a8f0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
a900: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
a910: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
a920: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
a930: 20 20 20 69 66 20 28 6b 65 79 20 3d 3d 20 6e 75     if (key == nu
a940: 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
a950: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a960: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
a970: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
a980: 6b 65 79 2e 47 65 74 56 61 6c 75 65 4e 61 6d 65  key.GetValueName
a990: 73 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  s();..          
a9a0: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
a9b0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
a9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
a9f0: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
aa00: 20 20 20 20 20 20 70 75 62 6c 69 63 20 4d 6f 63        public Moc
aa10: 6b 52 65 67 69 73 74 72 79 4b 65 79 20 4f 70 65  kRegistryKey Ope
aa20: 6e 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20  nSubKey(..      
aa30: 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
aa40: 20 73 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20 20   subKeyName..   
aa50: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
aa60: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
aa70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 43                 C
aa80: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d  heckDisposed();.
aa90: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
aaa0: 20 20 20 72 65 74 75 72 6e 20 4f 70 65 6e 53 75     return OpenSu
aab0: 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65 2c  bKey(subKeyName,
aac0: 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20   false);..      
aad0: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
aae0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
aaf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ab20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
ab30: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
ab40: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
ab50: 20 4f 70 65 6e 53 75 62 4b 65 79 28 0d 0a 20 20   OpenSubKey(..  
ab60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
ab70: 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c  ring subKeyName,
ab80: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ab90: 20 20 62 6f 6f 6c 20 77 72 69 74 61 62 6c 65 0d    bool writable.
aba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
abb0: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
abc0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
abd0: 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64     CheckDisposed
abe0: 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ();....         
abf0: 20 20 20 20 20 20 20 69 66 20 28 77 72 69 74 61         if (writa
ac00: 62 6c 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ble)..          
ac10: 20 20 20 20 20 20 20 20 20 20 43 68 65 63 6b 52            CheckR
ac20: 65 61 64 4f 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20  eadOnly();....  
ac30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
ac40: 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (key == null)..
ac50: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ac60: 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
ac70: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
ac80: 20 20 20 20 52 65 67 69 73 74 72 79 4b 65 79 20      RegistryKey 
ac90: 73 75 62 4b 65 79 20 3d 20 6b 65 79 2e 4f 70 65  subKey = key.Ope
aca0: 6e 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20  nSubKey(..      
acb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75                su
acc0: 62 4b 65 79 4e 61 6d 65 2c 20 77 68 61 74 49 66  bKeyName, whatIf
acd0: 20 3f 20 66 61 6c 73 65 20 3a 20 77 72 69 74 61   ? false : writa
ace0: 62 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ble);....       
acf0: 20 20 20 20 20 20 20 20 20 69 66 20 28 73 75 62           if (sub
ad00: 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  Key == null)..  
ad10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ad20: 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a    return null;..
ad30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ad40: 20 20 72 65 74 75 72 6e 20 6e 65 77 20 4d 6f 63    return new Moc
ad50: 6b 52 65 67 69 73 74 72 79 4b 65 79 28 73 75 62  kRegistryKey(sub
ad60: 4b 65 79 2c 20 77 68 61 74 49 66 2c 20 72 65 61  Key, whatIf, rea
ad70: 64 4f 6e 6c 79 2c 20 73 61 66 65 29 3b 0d 0a 20  dOnly, safe);.. 
ad80: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
ad90: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
ada0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
adb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
adc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
add0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ade0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
adf0: 75 62 6c 69 63 20 76 6f 69 64 20 53 65 74 56 61  ublic void SetVa
ae00: 6c 75 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lue(..          
ae10: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
ae20: 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
ae30: 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
ae40: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
ae50: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
ae60: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ae70: 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73 65      CheckDispose
ae80: 64 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  d();..          
ae90: 20 20 20 20 20 20 43 68 65 63 6b 52 65 61 64 4f        CheckReadO
aea0: 6e 6c 79 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  nly();....      
aeb0: 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65            if (ke
aec0: 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  y == null)..    
aed0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
aee0: 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20  return;....     
aef0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
af00: 77 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20  whatIf)..       
af10: 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79               key
af20: 2e 53 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20  .SetValue(name, 
af30: 76 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20  value);..       
af40: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
af50: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
af60: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
af70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
af90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afa0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
afb0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
afc0: 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
afd0: 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20 20  Properties..    
afe0: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
aff0: 74 72 69 6e 67 20 4e 61 6d 65 0d 0a 20 20 20 20  tring Name..    
b000: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
b010: 20 20 20 20 20 20 20 20 20 20 20 67 65 74 0d 0a             get..
b020: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b030: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
b040: 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70         CheckDisp
b050: 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  osed();....     
b060: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
b070: 66 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d  f (key == null).
b080: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b090: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
b0a0: 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  null;....       
b0b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
b0c0: 75 72 6e 20 21 53 74 72 69 6e 67 2e 49 73 4e 75  urn !String.IsNu
b0d0: 6c 6c 4f 72 45 6d 70 74 79 28 73 75 62 4b 65 79  llOrEmpty(subKey
b0e0: 4e 61 6d 65 29 20 3f 0d 0a 20 20 20 20 20 20 20  Name) ?..       
b0f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
b100: 20 52 65 67 69 73 74 72 79 48 65 6c 70 65 72 2e   RegistryHelper.
b110: 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 6b 65 79  JoinKeyNames(key
b120: 2e 4e 61 6d 65 2c 20 73 75 62 4b 65 79 4e 61 6d  .Name, subKeyNam
b130: 65 29 20 3a 0d 0a 20 20 20 20 20 20 20 20 20 20  e) :..          
b140: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b 65                ke
b150: 79 2e 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  y.Name;..       
b160: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
b170: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
b180: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
b190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b1c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
b1d0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
b1e0: 61 74 65 20 52 65 67 69 73 74 72 79 4b 65 79 20  ate RegistryKey 
b1f0: 6b 65 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  key;..          
b200: 20 20 70 75 62 6c 69 63 20 52 65 67 69 73 74 72    public Registr
b210: 79 4b 65 79 20 4b 65 79 0d 0a 20 20 20 20 20 20  yKey Key..      
b220: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b230: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
b240: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
b250: 43 68 65 63 6b 53 61 66 65 28 29 3b 20 72 65 74  CheckSafe(); ret
b260: 75 72 6e 20 6b 65 79 3b 20 7d 0d 0a 20 20 20 20  urn key; }..    
b270: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
b280: 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
b2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
b2d0: 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
b2e0: 61 74 65 20 73 74 72 69 6e 67 20 73 75 62 4b 65  ate string subKe
b2f0: 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  yName;..        
b300: 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e      public strin
b310: 67 20 53 75 62 4b 65 79 4e 61 6d 65 0d 0a 20 20  g SubKeyName..  
b320: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b330: 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
b340: 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
b350: 28 29 3b 20 72 65 74 75 72 6e 20 73 75 62 4b 65  (); return subKe
b360: 79 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20  yName; }..      
b370: 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
b380: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
b390: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b3c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
b3d0: 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
b3e0: 65 20 62 6f 6f 6c 20 77 68 61 74 49 66 3b 0d 0a  e bool whatIf;..
b3f0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
b400: 69 63 20 62 6f 6f 6c 20 57 68 61 74 49 66 0d 0a  ic bool WhatIf..
b410: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
b420: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
b430: 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73  et { CheckDispos
b440: 65 64 28 29 3b 20 72 65 74 75 72 6e 20 77 68 61  ed(); return wha
b450: 74 49 66 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  tIf; }..        
b460: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
b470: 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b4b0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
b4c0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
b4d0: 62 6f 6f 6c 20 72 65 61 64 4f 6e 6c 79 3b 0d 0a  bool readOnly;..
b4e0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
b4f0: 69 63 20 62 6f 6f 6c 20 52 65 61 64 4f 6e 6c 79  ic bool ReadOnly
b500: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
b510: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b520: 20 67 65 74 20 7b 20 43 68 65 63 6b 44 69 73 70   get { CheckDisp
b530: 6f 73 65 64 28 29 3b 20 72 65 74 75 72 6e 20 72  osed(); return r
b540: 65 61 64 4f 6e 6c 79 3b 20 7d 0d 0a 20 20 20 20  eadOnly; }..    
b550: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
b560: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
b570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
b5b0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
b5c0: 69 63 20 62 6f 6f 6c 20 73 61 66 65 3b 0d 0a 20  ic bool safe;.. 
b5d0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
b5e0: 63 20 62 6f 6f 6c 20 53 61 66 65 0d 0a 20 20 20  c bool Safe..   
b5f0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
b600: 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
b610: 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28  { CheckDisposed(
b620: 29 3b 20 72 65 74 75 72 6e 20 73 61 66 65 3b 20  ); return safe; 
b630: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
b640: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
b650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b690: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
b6a0: 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 6e     public bool n
b6b0: 6f 43 6c 6f 73 65 3b 0d 0a 20 20 20 20 20 20 20  oClose;..       
b6c0: 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c       public bool
b6d0: 20 4e 6f 43 6c 6f 73 65 0d 0a 20 20 20 20 20 20   NoClose..      
b6e0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
b6f0: 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 43           get { C
b700: 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20  heckDisposed(); 
b710: 72 65 74 75 72 6e 20 6e 6f 43 6c 6f 73 65 3b 20  return noClose; 
b720: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
b730: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
b740: 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
b750: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
b760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
b7a0: 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
b7b0: 6f 6e 20 50 72 69 76 61 74 65 20 4d 65 74 68 6f  on Private Metho
b7c0: 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ds..            
b7d0: 70 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65  private void Che
b7e0: 63 6b 52 65 61 64 4f 6e 6c 79 28 29 0d 0a 20 20  ckReadOnly()..  
b7f0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
b800: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
b810: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b820: 20 2f 2f 20 4e 4f 54 45 3a 20 49 6e 20 22 72 65   // NOTE: In "re
b830: 61 64 2d 6f 6e 6c 79 22 20 6d 6f 64 65 2c 20 77  ad-only" mode, w
b840: 65 20 64 69 73 61 6c 6c 6f 77 20 61 6c 6c 20 77  e disallow all w
b850: 72 69 74 65 20 61 63 63 65 73 73 2e 0d 0a 20 20  rite access...  
b860: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
b870: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b880: 20 20 69 66 20 28 21 72 65 61 64 4f 6e 6c 79 29    if (!readOnly)
b890: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b8a0: 20 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d        return;...
b8b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
b8c0: 20 74 68 72 6f 77 20 6e 65 77 20 49 6e 76 61 6c   throw new Inval
b8d0: 69 64 4f 70 65 72 61 74 69 6f 6e 45 78 63 65 70  idOperationExcep
b8e0: 74 69 6f 6e 28 29 3b 0d 0a 20 20 20 20 20 20 20  tion();..       
b8f0: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
b900: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
b910: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b920: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b930: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
b940: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
b950: 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
b960: 20 76 6f 69 64 20 43 68 65 63 6b 53 61 66 65 28   void CheckSafe(
b970: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
b980: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
b990: 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
b9a0: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
b9b0: 6e 20 22 73 61 66 65 22 20 6d 6f 64 65 2c 20 77  n "safe" mode, w
b9c0: 65 20 64 69 73 61 6c 6c 6f 77 20 61 6c 6c 20 64  e disallow all d
b9d0: 69 72 65 63 74 20 61 63 63 65 73 73 20 74 6f 20  irect access to 
b9e0: 74 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  the..           
b9f0: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 63 6f       //       co
ba00: 6e 74 61 69 6e 65 64 20 72 65 67 69 73 74 72 79  ntained registry
ba10: 20 6b 65 79 2e 0d 0a 20 20 20 20 20 20 20 20 20   key...         
ba20: 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
ba30: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21             if (!
ba40: 73 61 66 65 29 0d 0a 20 20 20 20 20 20 20 20 20  safe)..         
ba50: 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
ba60: 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
ba70: 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20        throw new 
ba80: 49 6e 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e  InvalidOperation
ba90: 45 78 63 65 70 74 69 6f 6e 28 29 3b 0d 0a 20 20  Exception();..  
baa0: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
bab0: 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67           #endreg
bac0: 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ion....         
bad0: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
bae0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
baf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bb10: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
bb20: 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 53 79        #region Sy
bb30: 73 74 65 6d 2e 4f 62 6a 65 63 74 20 4f 76 65 72  stem.Object Over
bb40: 72 69 64 65 73 0d 0a 20 20 20 20 20 20 20 20 20  rides..         
bb50: 20 20 20 70 75 62 6c 69 63 20 6f 76 65 72 72 69     public overri
bb60: 64 65 20 73 74 72 69 6e 67 20 54 6f 53 74 72 69  de string ToStri
bb70: 6e 67 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ng()..          
bb80: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
bb90: 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f 73       CheckDispos
bba0: 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ed();....       
bbb0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
bbc0: 74 68 69 73 2e 4e 61 6d 65 3b 0d 0a 20 20 20 20  this.Name;..    
bbd0: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
bbe0: 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
bbf0: 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  n....           
bc00: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
bc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc20: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bc40: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
bc50: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
bc60: 69 63 20 53 74 61 74 69 63 20 4d 65 74 68 6f 64  ic Static Method
bc70: 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
bc80: 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f  ublic static boo
bc90: 6c 20 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20  l NameEquals(.. 
bca0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
bcb0: 74 72 69 6e 67 20 6e 61 6d 65 31 2c 0d 0a 20 20  tring name1,..  
bcc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
bcd0: 72 69 6e 67 20 6e 61 6d 65 32 0d 0a 20 20 20 20  ring name2..    
bce0: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
bcf0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
bd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
bd10: 74 75 72 6e 20 53 74 72 69 6e 67 2e 45 71 75 61  turn String.Equa
bd20: 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ls(..           
bd30: 20 20 20 20 20 20 20 20 20 6e 61 6d 65 31 2c 20           name1, 
bd40: 6e 61 6d 65 32 2c 20 53 74 72 69 6e 67 43 6f 6d  name2, StringCom
bd50: 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 49  parison.OrdinalI
bd60: 67 6e 6f 72 65 43 61 73 65 29 3b 0d 0a 20 20 20  gnoreCase);..   
bd70: 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
bd80: 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bdb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
bdc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
bdd0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
bde0: 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20  lic static bool 
bdf0: 56 61 6c 75 65 45 71 75 61 6c 73 28 0d 0a 20 20  ValueEquals(..  
be00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
be10: 6a 65 63 74 20 76 61 6c 75 65 31 2c 0d 0a 20 20  ject value1,..  
be20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 62                ob
be30: 6a 65 63 74 20 76 61 6c 75 65 32 0d 0a 20 20 20  ject value2..   
be40: 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
be50: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
be60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
be70: 66 20 28 28 76 61 6c 75 65 31 20 3d 3d 20 6e 75  f ((value1 == nu
be80: 6c 6c 29 20 7c 7c 20 28 76 61 6c 75 65 32 20 3d  ll) || (value2 =
be90: 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20  = null))..      
bea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
beb0: 74 75 72 6e 20 28 28 76 61 6c 75 65 31 20 3d 3d  turn ((value1 ==
bec0: 20 6e 75 6c 6c 29 20 26 26 20 28 76 61 6c 75 65   null) && (value
bed0: 32 20 3d 3d 20 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a  2 == null));....
bee0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bef0: 69 66 20 28 4f 62 6a 65 63 74 2e 52 65 66 65 72  if (Object.Refer
bf00: 65 6e 63 65 45 71 75 61 6c 73 28 76 61 6c 75 65  enceEquals(value
bf10: 31 2c 20 76 61 6c 75 65 32 29 29 0d 0a 20 20 20  1, value2))..   
bf20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bf30: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 0d   return true;...
bf40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bf50: 20 54 79 70 65 20 74 79 70 65 31 20 3d 20 76 61   Type type1 = va
bf60: 6c 75 65 31 2e 47 65 74 54 79 70 65 28 29 3b 0d  lue1.GetType();.
bf70: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
bf80: 20 54 79 70 65 20 74 79 70 65 32 20 3d 20 76 61   Type type2 = va
bf90: 6c 75 65 32 2e 47 65 74 54 79 70 65 28 29 3b 0d  lue2.GetType();.
bfa0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
bfb0: 20 20 20 69 66 20 28 21 4f 62 6a 65 63 74 2e 52     if (!Object.R
bfc0: 65 66 65 72 65 6e 63 65 45 71 75 61 6c 73 28 74  eferenceEquals(t
bfd0: 79 70 65 31 2c 20 74 79 70 65 32 29 29 0d 0a 20  ype1, type2)).. 
bfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
bff0: 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
c000: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c010: 20 20 20 20 69 66 20 28 74 79 70 65 31 20 3d 3d      if (type1 ==
c020: 20 74 79 70 65 6f 66 28 69 6e 74 29 29 20 2f 2f   typeof(int)) //
c030: 20 44 57 6f 72 64 0d 0a 20 20 20 20 20 20 20 20   DWord..        
c040: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c050: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
c060: 65 74 75 72 6e 20 28 28 69 6e 74 29 76 61 6c 75  eturn ((int)valu
c070: 65 31 20 3d 3d 20 28 69 6e 74 29 76 61 6c 75 65  e1 == (int)value
c080: 32 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  2);..           
c090: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
c0a0: 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
c0b0: 28 74 79 70 65 31 20 3d 3d 20 74 79 70 65 6f 66  (type1 == typeof
c0c0: 28 6c 6f 6e 67 29 29 20 2f 2f 20 51 57 6f 72 64  (long)) // QWord
c0d0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c0e0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c0f0: 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
c100: 28 28 6c 6f 6e 67 29 76 61 6c 75 65 31 20 3d 3d  ((long)value1 ==
c110: 20 28 6c 6f 6e 67 29 76 61 6c 75 65 32 29 3b 0d   (long)value2);.
c120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c130: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
c140: 20 20 20 20 65 6c 73 65 20 69 66 20 28 74 79 70      else if (typ
c150: 65 31 20 3d 3d 20 74 79 70 65 6f 66 28 73 74 72  e1 == typeof(str
c160: 69 6e 67 29 29 20 2f 2f 20 53 74 72 69 6e 67 20  ing)) // String 
c170: 2f 20 45 78 70 61 6e 64 53 74 72 69 6e 67 0d 0a  / ExpandString..
c180: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c190: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
c1a0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 53 74         return St
c1b0: 72 69 6e 67 2e 45 71 75 61 6c 73 28 0d 0a 20 20  ring.Equals(..  
c1c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c1d0: 20 20 20 20 20 20 28 73 74 72 69 6e 67 29 76 61        (string)va
c1e0: 6c 75 65 31 2c 20 28 73 74 72 69 6e 67 29 76 61  lue1, (string)va
c1f0: 6c 75 65 32 2c 0d 0a 20 20 20 20 20 20 20 20 20  lue2,..         
c200: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
c210: 74 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e  tringComparison.
c220: 4f 72 64 69 6e 61 6c 29 3b 0d 0a 20 20 20 20 20  Ordinal);..     
c230: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
c240: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
c250: 73 65 20 69 66 20 28 74 79 70 65 31 20 3d 3d 20  se if (type1 == 
c260: 74 79 70 65 6f 66 28 73 74 72 69 6e 67 5b 5d 29  typeof(string[])
c270: 29 20 2f 2f 20 4d 75 6c 74 69 53 74 72 69 6e 67  ) // MultiString
c280: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c290: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c2a0: 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b           string[
c2b0: 5d 20 61 72 72 61 79 31 20 3d 20 28 73 74 72 69  ] array1 = (stri
c2c0: 6e 67 5b 5d 29 76 61 6c 75 65 31 3b 0d 0a 20 20  ng[])value1;..  
c2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c2e0: 20 20 73 74 72 69 6e 67 5b 5d 20 61 72 72 61 79    string[] array
c2f0: 32 20 3d 20 28 73 74 72 69 6e 67 5b 5d 29 76 61  2 = (string[])va
c300: 6c 75 65 32 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  lue2;....       
c310: 20 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74               int
c320: 20 6c 65 6e 67 74 68 31 20 3d 20 61 72 72 61 79   length1 = array
c330: 31 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20 20 20  1.Length;....   
c340: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c350: 20 69 66 20 28 6c 65 6e 67 74 68 31 20 21 3d 20   if (length1 != 
c360: 61 72 72 61 79 32 2e 4c 65 6e 67 74 68 29 0d 0a  array2.Length)..
c370: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c380: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
c390: 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
c3a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
c3b0: 20 28 69 6e 74 20 69 6e 64 65 78 31 20 3d 20 30   (int index1 = 0
c3c0: 3b 20 69 6e 64 65 78 31 20 3c 20 6c 65 6e 67 74  ; index1 < lengt
c3d0: 68 31 3b 20 69 6e 64 65 78 31 2b 2b 29 0d 0a 20  h1; index1++).. 
c3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c3f0: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
c400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
c410: 20 28 21 53 74 72 69 6e 67 2e 45 71 75 61 6c 73   (!String.Equals
c420: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
c430: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c440: 20 20 20 61 72 72 61 79 31 5b 69 6e 64 65 78 31     array1[index1
c450: 5d 2c 20 61 72 72 61 79 32 5b 69 6e 64 65 78 31  ], array2[index1
c460: 5d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ],..            
c470: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c480: 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72      StringCompar
c490: 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a  ison.Ordinal))..
c4a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4b0: 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
c4c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c4d0: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
c4e0: 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lse;..          
c4f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
c500: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c510: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
c520: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
c530: 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
c540: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
c550: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
c560: 6c 73 65 20 69 66 20 28 74 79 70 65 31 20 3d 3d  lse if (type1 ==
c570: 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 29   typeof(byte[]))
c580: 20 2f 2f 20 42 69 6e 61 72 79 0d 0a 20 20 20 20   // Binary..    
c590: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c5b0: 20 20 20 62 79 74 65 5b 5d 20 61 72 72 61 79 31     byte[] array1
c5c0: 20 3d 20 28 62 79 74 65 5b 5d 29 76 61 6c 75 65   = (byte[])value
c5d0: 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1;..            
c5e0: 20 20 20 20 20 20 20 20 62 79 74 65 5b 5d 20 61          byte[] a
c5f0: 72 72 61 79 32 20 3d 20 28 62 79 74 65 5b 5d 29  rray2 = (byte[])
c600: 76 61 6c 75 65 32 3b 0d 0a 0d 0a 20 20 20 20 20  value2;....     
c610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
c620: 6e 74 20 6c 65 6e 67 74 68 31 20 3d 20 61 72 72  nt length1 = arr
c630: 61 79 31 2e 4c 65 6e 67 74 68 3b 0d 0a 0d 0a 20  ay1.Length;.... 
c640: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c650: 20 20 20 69 66 20 28 6c 65 6e 67 74 68 31 20 21     if (length1 !
c660: 3d 20 61 72 72 61 79 32 2e 4c 65 6e 67 74 68 29  = array2.Length)
c670: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
c680: 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
c690: 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
c6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 66                 f
c6b0: 6f 72 20 28 69 6e 74 20 69 6e 64 65 78 31 20 3d  or (int index1 =
c6c0: 20 30 3b 20 69 6e 64 65 78 31 20 3c 20 6c 65 6e   0; index1 < len
c6d0: 67 74 68 31 3b 20 69 6e 64 65 78 31 2b 2b 29 0d  gth1; index1++).
c6e0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
c6f0: 20 20 20 20 20 20 20 20 20 69 66 20 28 61 72 72           if (arr
c700: 61 79 31 5b 69 6e 64 65 78 31 5d 20 21 3d 20 61  ay1[index1] != a
c710: 72 72 61 79 32 5b 69 6e 64 65 78 31 5d 29 0d 0a  rray2[index1])..
c720: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c730: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
c740: 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
c750: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c760: 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20   return true;.. 
c770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
c780: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c790: 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
c7a0: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
c7b0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
c7c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c7d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
c800: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
c810: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
c820: 20 69 6e 74 20 56 61 6c 75 65 48 61 73 68 43 6f   int ValueHashCo
c830: 64 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  de(..           
c840: 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
c850: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
c860: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
c870: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
c880: 20 20 20 20 20 69 6e 74 20 72 65 73 75 6c 74 20       int result 
c890: 3d 20 30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  = 0;....        
c8a0: 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
c8b0: 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e != null)..    
c8c0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
c8d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c8e0: 20 20 20 54 79 70 65 20 74 79 70 65 20 3d 20 76     Type type = v
c8f0: 61 6c 75 65 2e 47 65 74 54 79 70 65 28 29 3b 0d  alue.GetType();.
c900: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
c910: 20 20 20 20 20 20 20 69 66 20 28 28 74 79 70 65         if ((type
c920: 20 3d 3d 20 74 79 70 65 6f 66 28 69 6e 74 29 29   == typeof(int))
c930: 20 7c 7c 20 2f 2f 20 44 57 6f 72 64 0d 0a 20 20   || // DWord..  
c940: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c950: 20 20 20 20 20 20 28 74 79 70 65 20 3d 3d 20 74        (type == t
c960: 79 70 65 6f 66 28 6c 6f 6e 67 29 29 20 7c 7c 20  ypeof(long)) || 
c970: 2f 2f 20 51 57 6f 72 64 0d 0a 20 20 20 20 20 20  // QWord..      
c980: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c990: 20 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f    (type == typeo
c9a0: 66 28 73 74 72 69 6e 67 29 29 29 20 2f 2f 20 53  f(string))) // S
c9b0: 74 72 69 6e 67 20 2f 20 45 78 70 61 6e 64 53 74  tring / ExpandSt
c9c0: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  ring..          
c9d0: 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
c9e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
c9f0: 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 76 61       result = va
ca00: 6c 75 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28  lue.GetHashCode(
ca10: 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
ca20: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
ca30: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
ca40: 6c 73 65 20 69 66 20 28 28 74 79 70 65 20 3d 3d  lse if ((type ==
ca50: 20 74 79 70 65 6f 66 28 73 74 72 69 6e 67 5b 5d   typeof(string[]
ca60: 29 29 20 7c 7c 20 2f 2f 20 4d 75 6c 74 69 53 74  )) || // MultiSt
ca70: 72 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20  ring..          
ca80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28 74                (t
ca90: 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 62 79  ype == typeof(by
caa0: 74 65 5b 5d 29 29 29 20 2f 2f 20 42 69 6e 61 72  te[]))) // Binar
cab0: 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
cac0: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
cad0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cae0: 20 20 41 72 72 61 79 20 61 72 72 61 79 20 3d 20    Array array = 
caf0: 28 41 72 72 61 79 29 76 61 6c 75 65 3b 0d 0a 20  (Array)value;.. 
cb00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb10: 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
cb20: 68 20 3d 20 61 72 72 61 79 2e 4c 65 6e 67 74 68  h = array.Length
cb30: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
cb40: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
cb50: 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b   (int index = 0;
cb60: 20 69 6e 64 65 78 20 3c 20 6c 65 6e 67 74 68 3b   index < length;
cb70: 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20   index++)..     
cb80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cb90: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
cba0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbb0: 20 20 6f 62 6a 65 63 74 20 65 6c 65 6d 65 6e 74    object element
cbc0: 20 3d 20 61 72 72 61 79 2e 47 65 74 56 61 6c 75   = array.GetValu
cbd0: 65 28 69 6e 64 65 78 29 3b 0d 0a 0d 0a 20 20 20  e(index);....   
cbe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cbf0: 20 20 20 20 20 20 20 20 20 69 66 20 28 65 6c 65           if (ele
cc00: 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  ment == null).. 
cc10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
cc30: 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
cc40: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc50: 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 5e          result ^
cc60: 3d 20 65 6c 65 6d 65 6e 74 2e 47 65 74 48 61 73  = element.GetHas
cc70: 68 43 6f 64 65 28 29 3b 0d 0a 20 20 20 20 20 20  hCode();..      
cc80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cc90: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
cca0: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
ccb0: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
ccc0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
ccd0: 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d   return result;.
cce0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
ccf0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
cd00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
cd50: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 73   public static s
cd60: 74 72 69 6e 67 20 56 61 6c 75 65 54 6f 53 74 72  tring ValueToStr
cd70: 69 6e 67 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ing(..          
cd80: 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
cd90: 75 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue,..           
cda0: 20 20 20 20 20 73 74 72 69 6e 67 20 64 65 6c 69       string deli
cdb0: 6d 69 74 65 72 2c 0d 0a 20 20 20 20 20 20 20 20  miter,..        
cdc0: 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e          string n
cdd0: 75 6c 6c 56 61 6c 75 65 0d 0a 20 20 20 20 20 20  ullValue..      
cde0: 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
cdf0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ce00: 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
ce10: 6e 67 20 72 65 73 75 6c 74 20 3d 20 6e 75 6c 6c  ng result = null
ce20: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
ce30: 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 21       if (value !
ce40: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
ce50: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
ce60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ce70: 54 79 70 65 20 74 79 70 65 20 3d 20 76 61 6c 75  Type type = valu
ce80: 65 2e 47 65 74 54 79 70 65 28 29 3b 0d 0a 0d 0a  e.GetType();....
ce90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cea0: 20 20 20 20 69 66 20 28 28 74 79 70 65 20 3d 3d      if ((type ==
ceb0: 20 74 79 70 65 6f 66 28 69 6e 74 29 29 20 7c 7c   typeof(int)) ||
cec0: 20 2f 2f 20 44 57 6f 72 64 0d 0a 20 20 20 20 20   // DWord..     
ced0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cee0: 20 20 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65     (type == type
cef0: 6f 66 28 6c 6f 6e 67 29 29 20 7c 7c 20 2f 2f 20  of(long)) || // 
cf00: 51 57 6f 72 64 0d 0a 20 20 20 20 20 20 20 20 20  QWord..         
cf10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
cf20: 74 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 73  type == typeof(s
cf30: 74 72 69 6e 67 29 29 29 20 2f 2f 20 53 74 72 69  tring))) // Stri
cf40: 6e 67 20 2f 20 45 78 70 61 6e 64 53 74 72 69 6e  ng / ExpandStrin
cf50: 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  g..             
cf60: 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
cf70: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cf80: 20 20 72 65 73 75 6c 74 20 3d 20 76 61 6c 75 65    result = value
cf90: 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20  .ToString();..  
cfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
cfb0: 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
cfc0: 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
cfd0: 20 28 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f   ((type == typeo
cfe0: 66 28 73 74 72 69 6e 67 5b 5d 29 29 20 7c 7c 20  f(string[])) || 
cff0: 2f 2f 20 4d 75 6c 74 69 53 74 72 69 6e 67 0d 0a  // MultiString..
d000: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d010: 20 20 20 20 20 20 20 20 28 74 79 70 65 20 3d 3d          (type ==
d020: 20 74 79 70 65 6f 66 28 62 79 74 65 5b 5d 29 29   typeof(byte[]))
d030: 29 20 2f 2f 20 42 69 6e 61 72 79 0d 0a 20 20 20  ) // Binary..   
d040: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d050: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
d060: 20 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69              Stri
d070: 6e 67 42 75 69 6c 64 65 72 20 62 75 69 6c 64 65  ngBuilder builde
d080: 72 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75  r = new StringBu
d090: 69 6c 64 65 72 28 29 3b 0d 0a 20 20 20 20 20 20  ilder();..      
d0a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d0b0: 20 20 41 72 72 61 79 20 61 72 72 61 79 20 3d 20    Array array = 
d0c0: 28 41 72 72 61 79 29 76 61 6c 75 65 3b 0d 0a 20  (Array)value;.. 
d0d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d0e0: 20 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74         int lengt
d0f0: 68 20 3d 20 61 72 72 61 79 2e 4c 65 6e 67 74 68  h = array.Length
d100: 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
d110: 20 20 20 20 20 20 20 20 20 20 20 20 20 66 6f 72               for
d120: 20 28 69 6e 74 20 69 6e 64 65 78 20 3d 20 30 3b   (int index = 0;
d130: 20 69 6e 64 65 78 20 3c 20 6c 65 6e 67 74 68 3b   index < length;
d140: 20 69 6e 64 65 78 2b 2b 29 0d 0a 20 20 20 20 20   index++)..     
d150: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d160: 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
d170: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d180: 20 20 69 66 20 28 28 69 6e 64 65 78 20 3e 20 30    if ((index > 0
d190: 29 20 26 26 20 28 64 65 6c 69 6d 69 74 65 72 20  ) && (delimiter 
d1a0: 21 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  != null))..     
d1b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d1c0: 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64             build
d1d0: 65 72 2e 41 70 70 65 6e 64 28 64 65 6c 69 6d 69  er.Append(delimi
d1e0: 74 65 72 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ter);....       
d1f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d200: 20 20 20 20 20 6f 62 6a 65 63 74 20 65 6c 65 6d       object elem
d210: 65 6e 74 20 3d 20 61 72 72 61 79 2e 47 65 74 56  ent = array.GetV
d220: 61 6c 75 65 28 69 6e 64 65 78 29 3b 0d 0a 0d 0a  alue(index);....
d230: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d240: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
d250: 65 6c 65 6d 65 6e 74 20 3d 3d 20 6e 75 6c 6c 29  element == null)
d260: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d270: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
d280: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d290: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d2a0: 20 69 66 20 28 6e 75 6c 6c 56 61 6c 75 65 20 21   if (nullValue !
d2b0: 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
d2c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d2d0: 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69               bui
d2e0: 6c 64 65 72 2e 41 70 70 65 6e 64 28 6e 75 6c 6c  lder.Append(null
d2f0: 56 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  Value);....     
d300: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d310: 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
d320: 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
d330: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d340: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
d350: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d360: 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e     builder.Appen
d370: 64 28 65 6c 65 6d 65 6e 74 2e 54 6f 53 74 72 69  d(element.ToStri
d380: 6e 67 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  ng());..        
d390: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d3a0: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
d3b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73               res
d3c0: 75 6c 74 20 3d 20 62 75 69 6c 64 65 72 2e 54 6f  ult = builder.To
d3d0: 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20 20 20  String();..     
d3e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
d3f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d400: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
d410: 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72 65         return re
d420: 73 75 6c 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  sult;..         
d430: 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
d440: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
d450: 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
d490: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
d4a0: 61 74 69 63 20 62 6f 6f 6c 20 45 71 75 61 6c 73  atic bool Equals
d4b0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
d4c0: 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
d4d0: 65 79 20 6b 65 79 31 2c 0d 0a 20 20 20 20 20 20  ey key1,..      
d4e0: 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
d4f0: 67 69 73 74 72 79 4b 65 79 20 6b 65 79 32 0d 0a  gistryKey key2..
d500: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d510: 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
d520: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d530: 20 20 69 66 20 28 28 6b 65 79 31 20 3d 3d 20 6e    if ((key1 == n
d540: 75 6c 6c 29 20 7c 7c 20 28 6b 65 79 32 20 3d 3d  ull) || (key2 ==
d550: 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20 20 20   null))..       
d560: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d570: 75 72 6e 20 28 28 6b 65 79 31 20 3d 3d 20 6e 75  urn ((key1 == nu
d580: 6c 6c 29 20 26 26 20 28 6b 65 79 32 20 3d 3d 20  ll) && (key2 == 
d590: 6e 75 6c 6c 29 29 3b 0d 0a 0d 0a 20 20 20 20 20  null));....     
d5a0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 4f             if (O
d5b0: 62 6a 65 63 74 2e 52 65 66 65 72 65 6e 63 65 45  bject.ReferenceE
d5c0: 71 75 61 6c 73 28 6b 65 79 31 2c 20 6b 65 79 32  quals(key1, key2
d5d0: 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
d5e0: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
d5f0: 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
d600: 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4e          return N
d610: 61 6d 65 45 71 75 61 6c 73 28 6b 65 79 31 2e 4e  ameEquals(key1.N
d620: 61 6d 65 2c 20 6b 65 79 32 2e 4e 61 6d 65 29 3b  ame, key2.Name);
d630: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
d640: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
d650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d670: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d680: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d690: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
d6a0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
d6b0: 69 6e 74 20 47 65 74 48 61 73 68 43 6f 64 65 28  int GetHashCode(
d6c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
d6d0: 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
d6e0: 79 20 6b 65 79 0d 0a 20 20 20 20 20 20 20 20 20  y key..         
d6f0: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
d700: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
d710: 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
d720: 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
d730: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
d740: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d750: 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 20 3d 20    string name = 
d760: 6b 65 79 2e 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20  key.Name;....   
d770: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
d780: 20 69 66 20 28 6e 61 6d 65 20 21 3d 20 6e 75 6c   if (name != nul
d790: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
d7a0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
d7b0: 72 6e 20 6e 61 6d 65 2e 47 65 74 48 61 73 68 43  rn name.GetHashC
d7c0: 6f 64 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ode();..        
d7d0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
d7e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
d7f0: 75 72 6e 20 30 3b 0d 0a 20 20 20 20 20 20 20 20  urn 0;..        
d800: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
d810: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
d820: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
d830: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d840: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d850: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d860: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
d870: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
d880: 23 72 65 67 69 6f 6e 20 49 6d 70 6c 69 63 69 74  #region Implicit
d890: 20 43 6f 6e 76 65 72 73 69 6f 6e 20 4f 70 65 72   Conversion Oper
d8a0: 61 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20  ators..         
d8b0: 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
d8c0: 20 20 20 2f 2f 20 42 55 47 42 55 47 3a 20 52 65     // BUGBUG: Re
d8d0: 6d 6f 76 65 20 6d 65 3f 20 20 54 68 69 73 20 73  move me?  This s
d8e0: 68 6f 75 6c 64 20 62 65 20 73 61 66 65 20 62 65  hould be safe be
d8f0: 63 61 75 73 65 20 69 6e 20 22 77 68 61 74 2d 69  cause in "what-i
d900: 66 22 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f"..            
d910: 2f 2f 20 20 20 20 20 20 20 20 20 6d 6f 64 65 20  //         mode 
d920: 61 6c 6c 20 6b 65 79 73 20 61 72 65 20 6f 70 65  all keys are ope
d930: 6e 65 64 20 72 65 61 64 2d 6f 6e 6c 79 2e 0d 0a  ned read-only...
d940: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
d950: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
d960: 69 63 20 73 74 61 74 69 63 20 69 6d 70 6c 69 63  ic static implic
d970: 69 74 20 6f 70 65 72 61 74 6f 72 20 52 65 67 69  it operator Regi
d980: 73 74 72 79 4b 65 79 28 0d 0a 20 20 20 20 20 20  stryKey(..      
d990: 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
d9a0: 67 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a 20  gistryKey key.. 
d9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
d9c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
d9d0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
d9e0: 20 72 65 74 75 72 6e 20 28 6b 65 79 20 21 3d 20   return (key != 
d9f0: 6e 75 6c 6c 29 20 3f 20 6b 65 79 2e 4b 65 79 20  null) ? key.Key 
da00: 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20  : null;..       
da10: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
da20: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
da30: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
da40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
da80: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
da90: 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73   #region IDispos
daa0: 61 62 6c 65 20 22 50 61 74 74 65 72 6e 22 20 4d  able "Pattern" M
dab0: 65 6d 62 65 72 73 0d 0a 20 20 20 20 20 20 20 20  embers..        
dac0: 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c      private bool
dad0: 20 64 69 73 70 6f 73 65 64 3b 0d 0a 20 20 20 20   disposed;..    
dae0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
daf0: 76 6f 69 64 20 43 68 65 63 6b 44 69 73 70 6f 73  void CheckDispos
db00: 65 64 28 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  ed() /* throw */
db10: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
db20: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
db30: 20 69 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d   if (!disposed).
db40: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
db50: 20 20 20 20 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a       return;....
db60: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
db70: 74 68 72 6f 77 20 6e 65 77 20 4f 62 6a 65 63 74  throw new Object
db80: 44 69 73 70 6f 73 65 64 45 78 63 65 70 74 69 6f  DisposedExceptio
db90: 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
dba0: 20 20 20 20 20 20 20 20 74 79 70 65 6f 66 28 4d          typeof(M
dbb0: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 29 2e  ockRegistryKey).
dbc0: 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
dbd0: 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
dbe0: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
dbf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dc20: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
dc30: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
dc40: 2f 2a 20 70 72 6f 74 65 63 74 65 64 20 76 69 72  /* protected vir
dc50: 74 75 61 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73  tual */ void Dis
dc60: 70 6f 73 65 28 0d 0a 20 20 20 20 20 20 20 20 20  pose(..         
dc70: 20 20 20 20 20 20 20 62 6f 6f 6c 20 64 69 73 70         bool disp
dc80: 6f 73 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20  osing..         
dc90: 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
dca0: 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
dcb0: 20 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69           if (!di
dcc0: 73 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20  sposed)..       
dcd0: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
dce0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dcf0: 69 66 20 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a  if (disposing)..
dd00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dd10: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
dd20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
dd30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
dd50: 2f 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ///..           
dd60: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
dd70: 64 69 73 70 6f 73 65 20 6d 61 6e 61 67 65 64 20  dispose managed 
dd80: 72 65 73 6f 75 72 63 65 73 20 68 65 72 65 2e 2e  resources here..
dd90: 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dda0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
ddb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ddc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ddd0: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
dde0: 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b             if (k
ddf0: 65 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ey != null)..   
de00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de10: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
de20: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
de30: 20 20 20 20 69 66 20 28 21 6e 6f 43 6c 6f 73 65      if (!noClose
de40: 29 0d 0a 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 20 20 20 20 20                  
de60: 20 20 20 6b 65 79 2e 43 6c 6f 73 65 28 29 3b 0d     key.Close();.
de70: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
de80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6b                 k
de90: 65 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  ey = null;..    
dea0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
deb0: 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
dec0: 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
ded0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dee0: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
def0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20  //////////..    
df10: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
df20: 2f 2f 20 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e  // release unman
df30: 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20 68  aged resources h
df40: 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20  ere.....        
df50: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
df60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
df80: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
df90: 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
dfa0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
dfb0: 20 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20    // NOTE: This 
dfc0: 6f 62 6a 65 63 74 20 69 73 20 6e 6f 77 20 64 69  object is now di
dfd0: 73 70 6f 73 65 64 2e 0d 0a 20 20 20 20 20 20 20  sposed...       
dfe0: 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
dff0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e000: 20 20 20 20 20 64 69 73 70 6f 73 65 64 20 3d 20       disposed = 
e010: 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
e020: 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
e030: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
e040: 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
e050: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
e060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e080: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e090: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e0a0: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
e0b0: 20 20 23 72 65 67 69 6f 6e 20 49 44 69 73 70 6f    #region IDispo
e0c0: 73 61 62 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20  sable Members.. 
e0d0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
e0e0: 63 20 76 6f 69 64 20 44 69 73 70 6f 73 65 28 29  c void Dispose()
e0f0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
e100: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e110: 20 44 69 73 70 6f 73 65 28 74 72 75 65 29 3b 0d   Dispose(true);.
e120: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
e130: 20 47 43 2e 53 75 70 70 72 65 73 73 46 69 6e 61   GC.SuppressFina
e140: 6c 69 7a 65 28 74 68 69 73 29 3b 0d 0a 20 20 20  lize(this);..   
e150: 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
e160: 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
e170: 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
e180: 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
e190: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e1a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e1b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e1c0: 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
e1d0: 20 20 20 20 20 23 72 65 67 69 6f 6e 20 44 65 73       #region Des
e1e0: 74 72 75 63 74 6f 72 0d 0a 20 20 20 20 20 20 20  tructor..       
e1f0: 20 20 20 20 20 7e 4d 6f 63 6b 52 65 67 69 73 74       ~MockRegist
e200: 72 79 4b 65 79 28 29 0d 0a 20 20 20 20 20 20 20  ryKey()..       
e210: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
e220: 20 20 20 20 20 20 20 20 44 69 73 70 6f 73 65 28          Dispose(
e230: 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20  false);..       
e240: 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
e250: 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
e260: 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
e270: 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
e280: 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
e290: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e2d0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
e2e0: 69 6f 6e 20 52 65 67 69 73 74 72 79 52 6f 6f 74  ion RegistryRoot
e2f0: 4b 65 79 4e 61 6d 65 73 20 43 6c 61 73 73 0d 0a  KeyNames Class..
e300: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
e310: 73 74 61 74 69 63 20 63 6c 61 73 73 20 52 65 67  static class Reg
e320: 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65  istryRootKeyName
e330: 73 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  s..        {..  
e340: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
e350: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b   const string HK
e360: 45 59 5f 43 4c 41 53 53 45 53 5f 52 4f 4f 54 20  EY_CLASSES_ROOT 
e370: 3d 20 22 48 4b 45 59 5f 43 4c 41 53 53 45 53 5f  = "HKEY_CLASSES_
e380: 52 4f 4f 54 22 3b 0d 0a 20 20 20 20 20 20 20 20  ROOT";..        
e390: 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74      public const
e3a0: 20 73 74 72 69 6e 67 20 48 4b 43 52 20 3d 20 22   string HKCR = "
e3b0: 48 4b 43 52 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  HKCR";....      
e3c0: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
e3d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e3f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e400: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
e410: 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
e420: 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 45  const string HKE
e430: 59 5f 43 55 52 52 45 4e 54 5f 43 4f 4e 46 49 47  Y_CURRENT_CONFIG
e440: 20 3d 20 22 48 4b 45 59 5f 43 55 52 52 45 4e 54   = "HKEY_CURRENT
e450: 5f 43 4f 4e 46 49 47 22 3b 0d 0a 20 20 20 20 20  _CONFIG";..     
e460: 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f         public co
e470: 6e 73 74 20 73 74 72 69 6e 67 20 48 4b 43 43 20  nst string HKCC 
e480: 3d 20 22 48 4b 43 43 22 3b 0d 0a 0d 0a 20 20 20  = "HKCC";....   
e490: 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
e4a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e4d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
e4e0: 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
e4f0: 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  ic const string 
e500: 48 4b 45 59 5f 43 55 52 52 45 4e 54 5f 55 53 45  HKEY_CURRENT_USE
e510: 52 20 3d 20 22 48 4b 45 59 5f 43 55 52 52 45 4e  R = "HKEY_CURREN
e520: 54 5f 55 53 45 52 22 3b 0d 0a 20 20 20 20 20 20  T_USER";..      
e530: 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e        public con
e540: 73 74 20 73 74 72 69 6e 67 20 48 4b 43 55 20 3d  st string HKCU =
e550: 20 22 48 4b 43 55 22 3b 0d 0a 0d 0a 20 20 20 20   "HKCU";....    
e560: 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
e570: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e580: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e590: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e5a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
e5b0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
e5c0: 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48  c const string H
e5d0: 4b 45 59 5f 44 59 4e 5f 44 41 54 41 20 3d 20 22  KEY_DYN_DATA = "
e5e0: 48 4b 45 59 5f 44 59 4e 5f 44 41 54 41 22 3b 0d  HKEY_DYN_DATA";.
e5f0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
e600: 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  lic const string
e610: 20 48 4b 44 44 20 3d 20 22 48 4b 44 44 22 3b 0d   HKDD = "HKDD";.
e620: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
e630: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e640: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e650: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e660: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e670: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
e680: 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20 73    public const s
e690: 74 72 69 6e 67 20 48 4b 45 59 5f 4c 4f 43 41 4c  tring HKEY_LOCAL
e6a0: 5f 4d 41 43 48 49 4e 45 20 3d 20 22 48 4b 45 59  _MACHINE = "HKEY
e6b0: 5f 4c 4f 43 41 4c 5f 4d 41 43 48 49 4e 45 22 3b  _LOCAL_MACHINE";
e6c0: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
e6d0: 62 6c 69 63 20 63 6f 6e 73 74 20 73 74 72 69 6e  blic const strin
e6e0: 67 20 48 4b 4c 4d 20 3d 20 22 48 4b 4c 4d 22 3b  g HKLM = "HKLM";
e6f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
e700: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e710: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e720: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e730: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e740: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
e750: 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73 74 20     public const 
e760: 73 74 72 69 6e 67 20 48 4b 45 59 5f 50 45 52 46  string HKEY_PERF
e770: 4f 52 4d 41 4e 43 45 5f 44 41 54 41 20 3d 20 22  ORMANCE_DATA = "
e780: 48 4b 45 59 5f 50 45 52 46 4f 52 4d 41 4e 43 45  HKEY_PERFORMANCE
e790: 5f 44 41 54 41 22 3b 0d 0a 20 20 20 20 20 20 20  _DATA";..       
e7a0: 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e 73       public cons
e7b0: 74 20 73 74 72 69 6e 67 20 48 4b 50 44 20 3d 20  t string HKPD = 
e7c0: 22 48 4b 50 44 22 3b 0d 0a 0d 0a 20 20 20 20 20  "HKPD";....     
e7d0: 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
e7e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e7f0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e800: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e810: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
e820: 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
e830: 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 48 4b   const string HK
e840: 45 59 5f 55 53 45 52 53 20 3d 20 22 48 4b 45 59  EY_USERS = "HKEY
e850: 5f 55 53 45 52 53 22 3b 0d 0a 20 20 20 20 20 20  _USERS";..      
e860: 20 20 20 20 20 20 70 75 62 6c 69 63 20 63 6f 6e        public con
e870: 73 74 20 73 74 72 69 6e 67 20 48 4b 55 20 3d 20  st string HKU = 
e880: 22 48 4b 55 22 3b 0d 0a 20 20 20 20 20 20 20 20  "HKU";..        
e890: 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
e8a0: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
e8b0: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
e8c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8d0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8e0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e8f0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
e900: 20 20 20 20 23 72 65 67 69 6f 6e 20 52 65 67 69      #region Regi
e910: 73 74 72 79 48 65 6c 70 65 72 20 43 6c 61 73 73  stryHelper Class
e920: 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
e930: 6e 20 50 72 69 76 61 74 65 20 43 6f 6e 73 74 61  n Private Consta
e940: 6e 74 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69  nts..        pri
e950: 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20  vate const char 
e960: 4b 65 79 4e 61 6d 65 53 65 70 61 72 61 74 6f 72  KeyNameSeparator
e970: 20 3d 20 27 5c 5c 27 3b 0d 0a 0d 0a 20 20 20 20   = '\\';....    
e980: 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
e990: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9a0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9b0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
e9c0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
e9d0: 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
e9e0: 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 63  tatic readonly c
e9f0: 68 61 72 5b 5d 20 4b 65 79 4e 61 6d 65 53 65 70  har[] KeyNameSep
ea00: 61 72 61 74 6f 72 73 20 3d 20 7b 0d 0a 20 20 20  arators = {..   
ea10: 20 20 20 20 20 20 20 20 20 4b 65 79 4e 61 6d 65           KeyName
ea20: 53 65 70 61 72 61 74 6f 72 0d 0a 20 20 20 20 20  Separator..     
ea30: 20 20 20 7d 3b 0d 0a 20 20 20 20 20 20 20 20 23     };..        #
ea40: 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
ea50: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
ea60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ea90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
eaa0: 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
eab0: 73 74 61 74 69 63 20 63 6c 61 73 73 20 52 65 67  static class Reg
eac0: 69 73 74 72 79 48 65 6c 70 65 72 0d 0a 20 20 20  istryHelper..   
ead0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
eae0: 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
eaf0: 61 74 65 20 44 61 74 61 0d 0a 20 20 20 20 20 20  ate Data..      
eb00: 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
eb10: 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 54        // NOTE: T
eb20: 68 69 73 20 69 73 20 75 73 65 64 20 74 6f 20 73  his is used to s
eb30: 79 6e 63 68 72 6f 6e 69 7a 65 20 61 63 63 65 73  ynchronize acces
eb40: 73 20 74 6f 20 74 68 65 20 6c 69 73 74 20 6f 66  s to the list of
eb50: 20 6c 6f 67 67 65 64 0d 0a 20 20 20 20 20 20 20   logged..       
eb60: 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 72 65       //       re
eb70: 67 69 73 74 72 79 20 6f 70 65 72 61 74 69 6f 6e  gistry operation
eb80: 73 20 28 6a 75 73 74 20 62 65 6c 6f 77 29 2e 0d  s (just below)..
eb90: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d  .            //.
eba0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
ebb0: 76 61 74 65 20 73 74 61 74 69 63 20 6f 62 6a 65  vate static obje
ebc0: 63 74 20 73 79 6e 63 52 6f 6f 74 20 3d 20 6e 65  ct syncRoot = ne
ebd0: 77 20 6f 62 6a 65 63 74 28 29 3b 0d 0a 0d 0a 20  w object();.... 
ebe0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
ebf0: 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
ec00: 54 45 3a 20 54 68 69 73 20 69 73 20 74 68 65 20  TE: This is the 
ec10: 6c 69 73 74 20 6f 66 20 72 65 67 69 73 74 72 79  list of registry
ec20: 20 77 72 69 74 65 20 6f 70 65 72 61 74 69 6f 6e   write operation
ec30: 73 20 77 68 65 6e 20 69 74 20 69 73 0d 0a 20 20  s when it is..  
ec40: 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
ec50: 20 20 20 73 65 74 20 74 6f 20 6e 6f 6e 2d 6e 75     set to non-nu
ec60: 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll...           
ec70: 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
ec80: 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
ec90: 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f  RegistryOperatio
eca0: 6e 4c 69 73 74 20 6f 70 65 72 61 74 69 6f 6e 4c  nList operationL
ecb0: 69 73 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ist;..          
ecc0: 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
ecd0: 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
ece0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ecf0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed00: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ed10: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
ed20: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
ed30: 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20 53 74  region Public St
ed40: 61 74 69 63 20 50 72 6f 70 65 72 74 69 65 73 0d  atic Properties.
ed50: 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
ed60: 76 61 74 65 20 73 74 61 74 69 63 20 4d 6f 63 6b  vate static Mock
ed70: 52 65 67 69 73 74 72 79 20 72 65 61 64 4f 6e 6c  Registry readOnl
ed80: 79 52 65 67 69 73 74 72 79 3b 0d 0a 20 20 20 20  yRegistry;..    
ed90: 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
eda0: 74 61 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74  tatic MockRegist
edb0: 72 79 20 52 65 61 64 4f 6e 6c 79 52 65 67 69 73  ry ReadOnlyRegis
edc0: 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
edd0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
ede0: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
edf0: 20 72 65 61 64 4f 6e 6c 79 52 65 67 69 73 74 72   readOnlyRegistr
ee00: 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  y; }..          
ee10: 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
ee20: 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
ee30: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ee60: 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
ee70: 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
ee80: 61 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  atic MockRegistr
ee90: 79 20 72 65 61 64 57 72 69 74 65 52 65 67 69 73  y readWriteRegis
eea0: 74 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  try;..          
eeb0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
eec0: 4d 6f 63 6b 52 65 67 69 73 74 72 79 20 52 65 61  MockRegistry Rea
eed0: 64 57 72 69 74 65 52 65 67 69 73 74 72 79 0d 0a  dWriteRegistry..
eee0: 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
eef0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
ef00: 65 74 20 7b 20 72 65 74 75 72 6e 20 72 65 61 64  et { return read
ef10: 57 72 69 74 65 52 65 67 69 73 74 72 79 3b 20 7d  WriteRegistry; }
ef20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
ef30: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
ef40: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef50: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
ef80: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
ef90: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
efa0: 20 69 6e 74 20 73 75 62 4b 65 79 73 43 72 65 61   int subKeysCrea
efb0: 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ted;..          
efc0: 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
efd0: 69 6e 74 20 53 75 62 4b 65 79 73 43 72 65 61 74  int SubKeysCreat
efe0: 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ed..            
eff0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
f000: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
f010: 73 75 62 4b 65 79 73 43 72 65 61 74 65 64 3b 20  subKeysCreated; 
f020: 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
f030: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f040: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f050: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f060: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f070: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f080: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
f090: 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
f0a0: 63 20 69 6e 74 20 73 75 62 4b 65 79 73 44 65 6c  c int subKeysDel
f0b0: 65 74 65 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  eted;..         
f0c0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
f0d0: 20 69 6e 74 20 53 75 62 4b 65 79 73 44 65 6c 65   int SubKeysDele
f0e0: 74 65 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ted..           
f0f0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f100: 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
f110: 20 73 75 62 4b 65 79 73 44 65 6c 65 74 65 64 3b   subKeysDeleted;
f120: 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
f130: 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
f140: 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
f150: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f160: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f170: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f180: 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
f190: 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
f1a0: 69 63 20 69 6e 74 20 6b 65 79 56 61 6c 75 65 73  ic int keyValues
f1b0: 52 65 61 64 3b 0d 0a 20 20 20 20 20 20 20 20 20  Read;..         
f1c0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
f1d0: 20 69 6e 74 20 4b 65 79 56 61 6c 75 65 73 52 65   int KeyValuesRe
f1e0: 61 64 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ad..            
f1f0: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
f200: 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
f210: 6b 65 79 56 61 6c 75 65 73 52 65 61 64 3b 20 7d  keyValuesRead; }
f220: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
f230: 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
f240: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f250: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f260: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f270: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f280: 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
f290: 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
f2a0: 20 69 6e 74 20 6b 65 79 56 61 6c 75 65 73 57 72   int keyValuesWr
f2b0: 69 74 74 65 6e 3b 0d 0a 20 20 20 20 20 20 20 20  itten;..        
f2c0: 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
f2d0: 63 20 69 6e 74 20 4b 65 79 56 61 6c 75 65 73 57  c int KeyValuesW
f2e0: 72 69 74 74 65 6e 0d 0a 20 20 20 20 20 20 20 20  ritten..        
f2f0: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f300: 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
f310: 75 72 6e 20 6b 65 79 56 61 6c 75 65 73 57 72 69  urn keyValuesWri
f320: 74 74 65 6e 3b 20 7d 0d 0a 20 20 20 20 20 20 20  tten; }..       
f330: 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
f340: 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
f350: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f360: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f370: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f380: 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
f390: 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
f3a0: 20 73 74 61 74 69 63 20 69 6e 74 20 6b 65 79 56   static int keyV
f3b0: 61 6c 75 65 73 44 65 6c 65 74 65 64 3b 0d 0a 20  aluesDeleted;.. 
f3c0: 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
f3d0: 63 20 73 74 61 74 69 63 20 69 6e 74 20 4b 65 79  c static int Key
f3e0: 56 61 6c 75 65 73 44 65 6c 65 74 65 64 0d 0a 20  ValuesDeleted.. 
f3f0: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f400: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
f410: 74 20 7b 20 72 65 74 75 72 6e 20 6b 65 79 56 61  t { return keyVa
f420: 6c 75 65 73 44 65 6c 65 74 65 64 3b 20 7d 0d 0a  luesDeleted; }..
f430: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
f440: 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
f450: 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
f460: 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
f470: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f480: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f490: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f4a0: 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
f4b0: 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
f4c0: 50 75 62 6c 69 63 20 53 74 61 74 69 63 20 4d 65  Public Static Me
f4d0: 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20  thods..         
f4e0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
f4f0: 20 76 6f 69 64 20 45 6e 61 62 6c 65 4f 72 44 69   void EnableOrDi
f500: 73 61 62 6c 65 4f 70 65 72 61 74 69 6f 6e 4c 69  sableOperationLi
f510: 73 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  st(..           
f520: 20 20 20 20 20 62 6f 6f 6c 20 65 6e 61 62 6c 65       bool enable
f530: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f540: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
f550: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f560: 20 20 20 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f      lock (syncRo
f570: 6f 74 29 20 2f 2a 20 54 52 41 4e 53 41 43 54 49  ot) /* TRANSACTI
f580: 4f 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20  ONAL */..       
f590: 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
f5a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f5b0: 69 66 20 28 65 6e 61 62 6c 65 29 0d 0a 20 20 20  if (enable)..   
f5c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f5d0: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
f5e0: 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
f5f0: 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d 3d  operationList ==
f600: 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
f610: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f620: 20 20 20 20 6f 70 65 72 61 74 69 6f 6e 4c 69 73      operationLis
f630: 74 20 3d 20 6e 65 77 20 52 65 67 69 73 74 72 79  t = new Registry
f640: 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28 29 3b  OperationList();
f650: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
f660: 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
f670: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
f680: 65 20 69 66 20 28 6f 70 65 72 61 74 69 6f 6e 4c  e if (operationL
f690: 69 73 74 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ist != null)..  
f6a0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f6b0: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
f6c0: 20 20 20 20 20 20 20 20 20 20 20 20 20 6f 70 65               ope
f6d0: 72 61 74 69 6f 6e 4c 69 73 74 2e 44 69 73 70 6f  rationList.Dispo
f6e0: 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  se();..         
f6f0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
f700: 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d 20 6e  perationList = n
f710: 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ull;..          
f720: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
f730: 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
f740: 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
f750: 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
f760: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f770: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f780: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f790: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
f7a0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f7b0: 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
f7c0: 69 64 20 52 65 69 6e 69 74 69 61 6c 69 7a 65 44  id ReinitializeD
f7d0: 65 66 61 75 6c 74 52 65 67 69 73 74 72 69 65 73  efaultRegistries
f7e0: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
f7f0: 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d     bool whatIf,.
f800: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f810: 20 62 6f 6f 6c 20 73 61 66 65 0d 0a 20 20 20 20   bool safe..    
f820: 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
f830: 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
f840: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
f850: 20 28 72 65 61 64 4f 6e 6c 79 52 65 67 69 73 74   (readOnlyRegist
f860: 72 79 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ry != null)..   
f870: 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
f880: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
f890: 20 20 20 20 72 65 61 64 4f 6e 6c 79 52 65 67 69      readOnlyRegi
f8a0: 73 74 72 79 2e 44 69 73 70 6f 73 65 28 29 3b 0d  stry.Dispose();.
f8b0: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
f8c0: 20 20 20 20 20 72 65 61 64 4f 6e 6c 79 52 65 67       readOnlyReg
f8d0: 69 73 74 72 79 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  istry = null;.. 
f8e0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
f8f0: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
f900: 20 20 20 20 69 66 20 28 72 65 61 64 57 72 69 74      if (readWrit
f910: 65 52 65 67 69 73 74 72 79 20 21 3d 20 6e 75 6c  eRegistry != nul
f920: 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
f930: 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
f940: 20 20 20 20 20 20 20 20 20 20 20 72 65 61 64 57             readW
f950: 72 69 74 65 52 65 67 69 73 74 72 79 2e 44 69 73  riteRegistry.Dis
f960: 70 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20  pose();..       
f970: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61               rea
f980: 64 57 72 69 74 65 52 65 67 69 73 74 72 79 20 3d  dWriteRegistry =
f990: 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
f9a0: 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
f9b0: 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 61               rea
f9c0: 64 4f 6e 6c 79 52 65 67 69 73 74 72 79 20 3d 20  dOnlyRegistry = 
f9d0: 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  new MockRegistry
f9e0: 28 77 68 61 74 49 66 2c 20 74 72 75 65 2c 20 73  (whatIf, true, s
f9f0: 61 66 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  afe);..         
fa00: 20 20 20 20 20 20 20 72 65 61 64 57 72 69 74 65         readWrite
fa10: 52 65 67 69 73 74 72 79 20 3d 20 6e 65 77 20 4d  Registry = new M
fa20: 6f 63 6b 52 65 67 69 73 74 72 79 28 77 68 61 74  ockRegistry(what
fa30: 49 66 2c 20 66 61 6c 73 65 2c 20 73 61 66 65 29  If, false, safe)
fa40: 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
fa50: 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
fa60: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa70: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fa90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
faa0: 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
fab0: 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
fac0: 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
fad0: 20 47 65 74 52 65 61 64 4f 6e 6c 79 52 6f 6f 74   GetReadOnlyRoot
fae0: 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  Key(..          
faf0: 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d        string nam
fb00: 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
fb10: 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
fb20: 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
fb30: 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 52       return GetR
fb40: 6f 6f 74 4b 65 79 28 72 65 61 64 4f 6e 6c 79 52  ootKey(readOnlyR
fb50: 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 29 3b 0d  egistry, name);.
fb60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
fb70: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
fb80: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fb90: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fba0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fbc0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
fbd0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 4d   public static M
fbe0: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 47  ockRegistryKey G
fbf0: 65 74 52 65 61 64 57 72 69 74 65 52 6f 6f 74 4b  etReadWriteRootK
fc00: 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey(..           
fc10: 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65       string name
fc20: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
fc30: 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
fc40: 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
fc50: 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 52 6f      return GetRo
fc60: 6f 74 4b 65 79 28 72 65 61 64 57 72 69 74 65 52  otKey(readWriteR
fc70: 65 67 69 73 74 72 79 2c 20 6e 61 6d 65 29 3b 0d  egistry, name);.
fc80: 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
fc90: 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
fca0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcb0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcc0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fcd0: 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
fce0: 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
fcf0: 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 4d   public static M
fd00: 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 47  ockRegistryKey G
fd10: 65 74 52 6f 6f 74 4b 65 79 28 0d 0a 20 20 20 20  etRootKey(..    
fd20: 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b              Mock
fd30: 52 65 67 69 73 74 72 79 20 72 65 67 69 73 74 72  Registry registr
fd40: 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
fd50: 20 20 20 20 73 74 72 69 6e 67 20 6e 61 6d 65 0d      string name.
fd60: 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
fd70: 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
fd80: 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
fd90: 20 20 20 69 66 20 28 72 65 67 69 73 74 72 79 20     if (registry 
fda0: 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
fdb0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
fdc0: 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
fdd0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
fde0: 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65   (MockRegistryKe
fdf0: 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20  y.NameEquals(.. 
fe00: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe10: 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67         name, Reg
fe20: 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65  istryRootKeyName
fe30: 73 2e 48 4b 45 59 5f 43 4c 41 53 53 45 53 5f 52  s.HKEY_CLASSES_R
fe40: 4f 4f 54 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20  OOT) ||..       
fe50: 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63               Moc
fe60: 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d  kRegistryKey.Nam
fe70: 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20  eEquals(..      
fe80: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
fe90: 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72 79    name, Registry
fea0: 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 43  RootKeyNames.HKC
feb0: 52 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  R))..           
fec0: 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
fed0: 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
fee0: 72 6e 20 72 65 67 69 73 74 72 79 2e 43 6c 61 73  rn registry.Clas
fef0: 73 65 73 52 6f 6f 74 3b 0d 0a 20 20 20 20 20 20  sesRoot;..      
ff00: 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
ff10: 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
ff20: 65 20 69 66 20 28 4d 6f 63 6b 52 65 67 69 73 74  e if (MockRegist
ff30: 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73  ryKey.NameEquals
ff40: 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
ff50: 20 20 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c             name,
ff60: 20 52 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79   RegistryRootKey
ff70: 4e 61 6d 65 73 2e 48 4b 45 59 5f 43 55 52 52 45  Names.HKEY_CURRE
ff80: 4e 54 5f 43 4f 4e 46 49 47 29 20 7c 7c 0d 0a 20  NT_CONFIG) ||.. 
ff90: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ffa0: 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
ffb0: 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a  ey.NameEquals(..
ffc0: 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
ffd0: 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65          name, Re
ffe0: 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d  gistryRootKeyNam
fff0: 65 73 2e 48 4b 43 43 29 29 0d 0a 20 20 20 20 20  es.HKCC))..     
10000 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10020 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74 72    return registr
10030 79 2e 43 75 72 72 65 6e 74 43 6f 6e 66 69 67 3b  y.CurrentConfig;
10040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10050 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
10060 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 6f       else if (Mo
10070 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61  ckRegistryKey.Na
10080 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  meEquals(..     
10090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
100a0 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72     name, Registr
100b0 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b  yRootKeyNames.HK
100c0 45 59 5f 43 55 52 52 45 4e 54 5f 55 53 45 52 29  EY_CURRENT_USER)
100d0 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
100e0 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
100f0 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75  istryKey.NameEqu
10100 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  als(..          
10110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
10120 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f 74  me, RegistryRoot
10130 4b 65 79 4e 61 6d 65 73 2e 48 4b 43 55 29 29 0d  KeyNames.HKCU)).
10140 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10150 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
10160 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
10170 65 67 69 73 74 72 79 2e 43 75 72 72 65 6e 74 55  egistry.CurrentU
10180 73 65 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ser;..          
10190 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
101a0 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
101b0 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65   (MockRegistryKe
101c0 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20  y.NameEquals(.. 
101d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
101e0 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67         name, Reg
101f0 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65  istryRootKeyName
10200 73 2e 48 4b 45 59 5f 44 59 4e 5f 44 41 54 41 29  s.HKEY_DYN_DATA)
10210 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20 20   ||..           
10220 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
10230 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71 75  istryKey.NameEqu
10240 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  als(..          
10250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 61                na
10260 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f 74  me, RegistryRoot
10270 4b 65 79 4e 61 6d 65 73 2e 48 4b 44 44 29 29 0d  KeyNames.HKDD)).
10280 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10290 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
102a0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 72          return r
102b0 65 67 69 73 74 72 79 2e 44 79 6e 44 61 74 61 3b  egistry.DynData;
102c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
102d0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
102e0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 6f       else if (Mo
102f0 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 4e 61  ckRegistryKey.Na
10300 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20 20 20  meEquals(..     
10310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10320 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73 74 72     name, Registr
10330 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e 48 4b  yRootKeyNames.HK
10340 45 59 5f 4c 4f 43 41 4c 5f 4d 41 43 48 49 4e 45  EY_LOCAL_MACHINE
10350 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20 20  ) ||..          
10360 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
10370 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71  gistryKey.NameEq
10380 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
10390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6e                 n
103a0 61 6d 65 2c 20 52 65 67 69 73 74 72 79 52 6f 6f  ame, RegistryRoo
103b0 74 4b 65 79 4e 61 6d 65 73 2e 48 4b 4c 4d 29 29  tKeyNames.HKLM))
103c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
103d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
103e0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
103f0 72 65 67 69 73 74 72 79 2e 4c 6f 63 61 6c 4d 61  registry.LocalMa
10400 63 68 69 6e 65 3b 0d 0a 20 20 20 20 20 20 20 20  chine;..        
10410 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
10420 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
10430 69 66 20 28 4d 6f 63 6b 52 65 67 69 73 74 72 79  if (MockRegistry
10440 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d  Key.NameEquals(.
10450 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10460 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52           name, R
10470 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61  egistryRootKeyNa
10480 6d 65 73 2e 48 4b 45 59 5f 50 45 52 46 4f 52 4d  mes.HKEY_PERFORM
10490 41 4e 43 45 5f 44 41 54 41 29 20 7c 7c 0d 0a 20  ANCE_DATA) ||.. 
104a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104b0 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b     MockRegistryK
104c0 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a  ey.NameEquals(..
104d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
104e0 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52 65          name, Re
104f0 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d  gistryRootKeyNam
10500 65 73 2e 48 4b 50 44 29 29 0d 0a 20 20 20 20 20  es.HKPD))..     
10510 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10530 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74 72    return registr
10540 79 2e 50 65 72 66 6f 72 6d 61 6e 63 65 44 61 74  y.PerformanceDat
10550 61 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  a;..            
10560 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
10570 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
10580 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 2e  MockRegistryKey.
10590 4e 61 6d 65 45 71 75 61 6c 73 28 0d 0a 20 20 20  NameEquals(..   
105a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105b0 20 20 20 20 20 6e 61 6d 65 2c 20 52 65 67 69 73       name, Regis
105c0 74 72 79 52 6f 6f 74 4b 65 79 4e 61 6d 65 73 2e  tryRootKeyNames.
105d0 48 4b 45 59 5f 55 53 45 52 53 29 20 7c 7c 0d 0a  HKEY_USERS) ||..
105e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
105f0 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
10600 4b 65 79 2e 4e 61 6d 65 45 71 75 61 6c 73 28 0d  Key.NameEquals(.
10610 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10620 20 20 20 20 20 20 20 20 20 6e 61 6d 65 2c 20 52           name, R
10630 65 67 69 73 74 72 79 52 6f 6f 74 4b 65 79 4e 61  egistryRootKeyNa
10640 6d 65 73 2e 48 4b 55 29 29 0d 0a 20 20 20 20 20  mes.HKU))..     
10650 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10670 20 20 72 65 74 75 72 6e 20 72 65 67 69 73 74 72    return registr
10680 79 2e 55 73 65 72 73 3b 0d 0a 20 20 20 20 20 20  y.Users;..      
10690 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
106a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
106b0 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20  eturn null;..   
106c0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
106d0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
106e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
106f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
10720 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
10730 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69 6e  lic static strin
10740 67 20 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 0d  g JoinKeyNames(.
10750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10760 20 70 61 72 61 6d 73 20 73 74 72 69 6e 67 5b 5d   params string[]
10770 20 6e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20   names..        
10780 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
10790 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
107a0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 28 6e            if ((n
107b0 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  ames == null) ||
107c0 20 28 6e 61 6d 65 73 2e 4c 65 6e 67 74 68 20 3d   (names.Length =
107d0 3d 20 30 29 29 0d 0a 20 20 20 20 20 20 20 20 20  = 0))..         
107e0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
107f0 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  n null;....     
10800 20 20 20 20 20 20 20 20 20 20 20 53 74 72 69 6e             Strin
10810 67 42 75 69 6c 64 65 72 20 62 75 69 6c 64 65 72  gBuilder builder
10820 20 3d 20 6e 65 77 20 53 74 72 69 6e 67 42 75 69   = new StringBui
10830 6c 64 65 72 28 29 3b 0d 0a 0d 0a 20 20 20 20 20  lder();....     
10840 20 20 20 20 20 20 20 20 20 20 20 66 6f 72 65 61             forea
10850 63 68 20 28 73 74 72 69 6e 67 20 6e 61 6d 65 20  ch (string name 
10860 69 6e 20 6e 61 6d 65 73 29 0d 0a 20 20 20 20 20  in names)..     
10870 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
10880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10890 20 20 69 66 20 28 6e 61 6d 65 20 3d 3d 20 6e 75    if (name == nu
108a0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
108b0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
108c0 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  tinue;....      
108d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
108e0 72 69 6e 67 20 6e 65 77 4e 61 6d 65 20 3d 20 6e  ring newName = n
108f0 61 6d 65 2e 54 72 69 6d 28 4b 65 79 4e 61 6d 65  ame.Trim(KeyName
10900 53 65 70 61 72 61 74 6f 72 29 3b 0d 0a 0d 0a 20  Separator);.... 
10910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10920 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73     if (String.Is
10930 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 6e 65 77 4e  NullOrEmpty(newN
10940 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
10950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
10960 6f 6e 74 69 6e 75 65 3b 0d 0a 0d 0a 20 20 20 20  ontinue;....    
10970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10980 69 66 20 28 62 75 69 6c 64 65 72 2e 4c 65 6e 67  if (builder.Leng
10990 74 68 20 3e 20 30 29 0d 0a 20 20 20 20 20 20 20  th > 0)..       
109a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
109b0 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28   builder.Append(
109c0 4b 65 79 4e 61 6d 65 53 65 70 61 72 61 74 6f 72  KeyNameSeparator
109d0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
109e0 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65            builde
109f0 72 2e 41 70 70 65 6e 64 28 6e 65 77 4e 61 6d 65  r.Append(newName
10a00 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
10a10 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
10a20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
10a30 62 75 69 6c 64 65 72 2e 54 6f 53 74 72 69 6e 67  builder.ToString
10a40 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
10a50 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
10a60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
10a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10aa0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
10ab0 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
10ac0 69 63 20 73 74 72 69 6e 67 20 4a 6f 69 6e 4b 65  ic string JoinKe
10ad0 79 4e 61 6d 65 73 28 0d 0a 20 20 20 20 20 20 20  yNames(..       
10ae0 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
10af0 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20  istryKey key,.. 
10b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 70                 p
10b10 61 72 61 6d 73 20 73 74 72 69 6e 67 5b 5d 20 6e  arams string[] n
10b20 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20 20 20  ames..          
10b30 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
10b40 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
10b50 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 72          string r
10b60 65 73 75 6c 74 20 3d 20 4a 6f 69 6e 4b 65 79 4e  esult = JoinKeyN
10b70 61 6d 65 73 28 6e 61 6d 65 73 29 3b 0d 0a 0d 0a  ames(names);....
10b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10b90 69 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29  if (key != null)
10ba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10bb0 20 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 4a        result = J
10bc0 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 6b 65 79 2e  oinKeyNames(key.
10bd0 4e 61 6d 65 2c 20 72 65 73 75 6c 74 29 3b 0d 0a  Name, result);..
10be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
10bf0 20 20 72 65 74 75 72 6e 20 72 65 73 75 6c 74 3b    return result;
10c00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
10c10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
10c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10c60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
10c70 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
10c80 73 74 72 69 6e 67 5b 5d 20 53 70 6c 69 74 4b 65  string[] SplitKe
10c90 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  yName(..        
10ca0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6b          string k
10cb0 65 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  eyName..        
10cc0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
10cd0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
10ce0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65            if (ke
10cf0 79 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  yName == null)..
10d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10d10 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
10d20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10d30 20 20 20 20 72 65 74 75 72 6e 20 6b 65 79 4e 61      return keyNa
10d40 6d 65 2e 53 70 6c 69 74 28 0d 0a 20 20 20 20 20  me.Split(..     
10d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4b                 K
10d60 65 79 4e 61 6d 65 53 65 70 61 72 61 74 6f 72 73  eyNameSeparators
10d70 2c 20 53 74 72 69 6e 67 53 70 6c 69 74 4f 70 74  , StringSplitOpt
10d80 69 6f 6e 73 2e 52 65 6d 6f 76 65 45 6d 70 74 79  ions.RemoveEmpty
10d90 45 6e 74 72 69 65 73 29 3b 0d 0a 20 20 20 20 20  Entries);..     
10da0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
10db0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
10dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
10e00 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
10e10 63 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  c static string 
10e20 4c 61 73 74 53 75 62 4b 65 79 4e 61 6d 65 28 0d  LastSubKeyName(.
10e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10e40 20 73 74 72 69 6e 67 20 6b 65 79 4e 61 6d 65 0d   string keyName.
10e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10e60 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
10e70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
10e80 20 20 20 73 74 72 69 6e 67 5b 5d 20 73 75 62 4b     string[] subK
10e90 65 79 4e 61 6d 65 73 20 3d 20 53 70 6c 69 74 4b  eyNames = SplitK
10ea0 65 79 4e 61 6d 65 28 6b 65 79 4e 61 6d 65 29 3b  eyName(keyName);
10eb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
10ec0 20 20 20 20 69 66 20 28 28 73 75 62 4b 65 79 4e      if ((subKeyN
10ed0 61 6d 65 73 20 3d 3d 20 6e 75 6c 6c 29 20 7c 7c  ames == null) ||
10ee0 20 28 73 75 62 4b 65 79 4e 61 6d 65 73 2e 4c 65   (subKeyNames.Le
10ef0 6e 67 74 68 20 3d 3d 20 30 29 29 0d 0a 20 20 20  ngth == 0))..   
10f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
10f10 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d   return null;...
10f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
10f30 20 72 65 74 75 72 6e 20 73 75 62 4b 65 79 4e 61   return subKeyNa
10f40 6d 65 73 5b 73 75 62 4b 65 79 4e 61 6d 65 73 2e  mes[subKeyNames.
10f50 4c 65 6e 67 74 68 20 2d 20 31 5d 3b 0d 0a 20 20  Length - 1];..  
10f60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
10f70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
10f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
10fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
10fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d  ..            [M
10fd0 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64  ethodImpl(Method
10fe0 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e  ImplOptions.NoIn
10ff0 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20  lining)]..      
11000 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61        public sta
11010 74 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79  tic MockRegistry
11020 4b 65 79 20 4f 70 65 6e 53 75 62 4b 65 79 28 0d  Key OpenSubKey(.
11030 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11040 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
11050 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20 20 20 20   rootKey,..     
11060 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
11070 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20  g subKeyName,.. 
11080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
11090 6f 6f 6c 20 77 72 69 74 61 62 6c 65 2c 0d 0a 20  ool writable,.. 
110a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
110b0 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20  ool whatIf,..   
110c0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
110d0 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20 20  l verbose..     
110e0 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
110f0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11100 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
11110 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20  (verbose)..     
11120 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
11130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11140 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
11150 41 6e 64 54 72 61 63 65 28 77 72 69 74 61 62 6c  AndTrace(writabl
11160 65 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e ?..           
11170 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
11180 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65  cePriority.Highe
11190 73 74 20 3a 20 54 72 61 63 65 50 72 69 6f 72 69  st : TracePriori
111a0 74 79 2e 48 69 67 68 65 72 2c 0d 0a 20 20 20 20  ty.Higher,..    
111b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
111c0 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63      debugCallbac
111d0 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  k, traceCallback
111e0 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
111f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11200 20 20 20 20 20 20 20 20 20 20 22 72 6f 6f 74 4b            "rootK
11210 65 79 20 3d 20 7b 30 7d 2c 20 73 75 62 4b 65 79  ey = {0}, subKey
11220 4e 61 6d 65 20 3d 20 7b 31 7d 2c 20 77 72 69 74  Name = {1}, writ
11230 61 62 6c 65 20 3d 20 7b 32 7d 22 2c 0d 0a 20 20  able = {2}",..  
11240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11250 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
11260 28 72 6f 6f 74 4b 65 79 29 2c 20 46 6f 72 44 69  (rootKey), ForDi
11270 73 70 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d 65  splay(subKeyName
11280 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
11290 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
112a0 69 73 70 6c 61 79 28 77 72 69 74 61 62 6c 65 29  isplay(writable)
112b0 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79  ), traceCategory
112c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
112d0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
112e0 20 20 20 20 20 20 20 20 20 69 66 20 28 72 6f 6f           if (roo
112f0 74 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tKey == null).. 
11300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11310 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
11320 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11330 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
11340 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
11350 41 6c 77 61 79 73 20 66 6f 72 62 69 64 20 77 72  Always forbid wr
11360 69 74 61 62 6c 65 20 61 63 63 65 73 73 20 77 68  itable access wh
11370 65 6e 20 6f 70 65 72 61 74 69 6e 67 20 69 6e 0d  en operating in.
11380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11390 20 2f 2f 20 20 20 20 20 20 20 22 77 68 61 74 2d   //       "what-
113a0 69 66 22 20 6d 6f 64 65 2e 0d 0a 20 20 20 20 20  if" mode...     
113b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
113c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d                 M
113d0 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b  ockRegistryKey k
113e0 65 79 20 3d 20 72 6f 6f 74 4b 65 79 2e 4f 70 65  ey = rootKey.Ope
113f0 6e 53 75 62 4b 65 79 28 0d 0a 20 20 20 20 20 20  nSubKey(..      
11400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75                su
11410 62 4b 65 79 4e 61 6d 65 2c 20 77 68 61 74 49 66  bKeyName, whatIf
11420 20 3f 20 66 61 6c 73 65 20 3a 20 77 72 69 74 61   ? false : writa
11430 62 6c 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ble);....       
11440 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
11450 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d  (key != null) ?.
11460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11470 20 20 20 20 20 6e 65 77 20 4d 6f 63 6b 52 65 67       new MockReg
11480 69 73 74 72 79 4b 65 79 28 6b 65 79 2c 20 77 68  istryKey(key, wh
11490 61 74 49 66 2c 20 66 61 6c 73 65 2c 20 66 61 6c  atIf, false, fal
114a0 73 65 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 20 20 20  se) : null;..   
114b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
114c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
114d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
114f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
11510 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65  .            [Me
11520 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49  thodImpl(MethodI
11530 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c  mplOptions.NoInl
11540 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20  ining)]..       
11550 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74       public stat
11560 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
11570 65 79 20 43 72 65 61 74 65 53 75 62 4b 65 79 28  ey CreateSubKey(
11580 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11590 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
115a0 79 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20 20 20  y rootKey,..    
115b0 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
115c0 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a  ng subKeyName,..
115d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
115e0 62 6f 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20  bool whatIf,..  
115f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
11600 6f 6c 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20  ol verbose..    
11610 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
11620 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
11630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
11640 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20   (verbose)..    
11650 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
11660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11670 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75     TraceOps.Debu
11680 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50  gAndTrace(TraceP
11690 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c  riority.Highest,
116a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
116b0 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
116c0 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
116d0 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
116e0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
116f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11700 22 72 6f 6f 74 4b 65 79 20 3d 20 7b 30 7d 2c 20  "rootKey = {0}, 
11710 73 75 62 4b 65 79 4e 61 6d 65 20 3d 20 7b 31 7d  subKeyName = {1}
11720 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
11730 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
11740 69 73 70 6c 61 79 28 72 6f 6f 74 4b 65 79 29 2c  isplay(rootKey),
11750 20 46 6f 72 44 69 73 70 6c 61 79 28 73 75 62 4b   ForDisplay(subK
11760 65 79 4e 61 6d 65 29 29 2c 0d 0a 20 20 20 20 20  eyName)),..     
11770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11780 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
11790 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
117a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
117b0 20 20 20 20 20 20 20 20 20 69 66 20 28 72 6f 6f           if (roo
117c0 74 4b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  tKey == null).. 
117d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
117e0 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
117f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
11800 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
11810 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
11820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
11830 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
11840 20 20 20 20 20 20 20 2f 2f 20 48 41 43 4b 3a 20         // HACK: 
11850 41 6c 77 61 79 73 20 6f 70 65 6e 20 61 20 6b 65  Always open a ke
11860 79 2c 20 72 61 74 68 65 72 20 74 68 61 6e 20 63  y, rather than c
11870 72 65 61 74 69 6e 67 20 6f 6e 65 20 77 68 65 6e  reating one when
11880 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11890 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
118a0 70 65 72 61 74 69 6e 67 20 69 6e 20 22 77 68 61  perating in "wha
118b0 74 2d 69 66 22 20 6d 6f 64 65 2e 0d 0a 20 20 20  t-if" mode...   
118c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
118d0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
118e0 20 20 20 20 20 20 20 20 20 69 66 20 28 77 68 61           if (wha
118f0 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
11900 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
11910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11920 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
11930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11940 20 2f 2f 20 48 41 43 4b 3a 20 41 74 74 65 6d 70   // HACK: Attemp
11950 74 20 74 6f 20 6f 70 65 6e 20 74 68 65 20 73 70  t to open the sp
11960 65 63 69 66 69 65 64 20 73 75 62 2d 6b 65 79 2e  ecified sub-key.
11970 20 20 49 66 0d 0a 20 20 20 20 20 20 20 20 20 20    If..          
11980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
11990 20 20 20 20 20 20 20 74 68 69 73 20 66 61 69 6c         this fail
119a0 73 2c 20 77 65 20 77 69 6c 6c 20 73 69 6d 70 6c  s, we will simpl
119b0 79 20 72 65 74 75 72 6e 20 74 68 65 20 72 6f 6f  y return the roo
119c0 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  t..             
119d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
119e0 20 20 20 20 6b 65 79 20 69 74 73 65 6c 66 20 73      key itself s
119f0 69 6e 63 65 20 6e 6f 20 77 72 69 74 65 73 20 61  ince no writes a
11a00 72 65 20 61 6c 6c 6f 77 65 64 20 69 6e 0d 0a 20  re allowed in.. 
11a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
11a30 22 77 68 61 74 2d 69 66 22 20 6d 6f 64 65 20 61  "what-if" mode a
11a40 6e 79 68 6f 77 2e 0d 0a 20 20 20 20 20 20 20 20  nyhow...        
11a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11a60 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
11a70 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b              Mock
11a80 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65 79 20  RegistryKey key 
11a90 3d 20 72 6f 6f 74 4b 65 79 2e 4f 70 65 6e 53 75  = rootKey.OpenSu
11aa0 62 4b 65 79 28 73 75 62 4b 65 79 4e 61 6d 65 29  bKey(subKeyName)
11ab0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
11ac0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
11ad0 75 72 6e 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c  urn (key != null
11ae0 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
11af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b00 20 6b 65 79 20 3a 20 6e 65 77 20 4d 6f 63 6b 52   key : new MockR
11b10 65 67 69 73 74 72 79 4b 65 79 28 0d 0a 20 20 20  egistryKey(..   
11b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11b30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 6f 6f               roo
11b40 74 4b 65 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65  tKey, subKeyName
11b50 2c 20 77 68 61 74 49 66 2c 20 66 61 6c 73 65 2c  , whatIf, false,
11b60 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20   false);..      
11b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
11b80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11b90 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20       else..     
11ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
11bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11bc0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
11bd0 20 6e 65 77 20 4d 6f 63 6b 52 65 67 69 73 74 72   new MockRegistr
11be0 79 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  yKey(..         
11bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c00 20 20 20 72 6f 6f 74 4b 65 79 2e 43 72 65 61 74     rootKey.Creat
11c10 65 53 75 62 4b 65 79 28 73 75 62 4b 65 79 4e 61  eSubKey(subKeyNa
11c20 6d 65 29 2c 20 77 68 61 74 49 66 2c 20 66 61 6c  me), whatIf, fal
11c30 73 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se,..           
11c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11c50 20 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20   false);..      
11c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
11c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
11c80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
11c90 20 20 20 20 66 69 6e 61 6c 6c 79 0d 0a 20 20 20      finally..   
11ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
11cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11cc0 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72      MaybeLogOper
11cd0 61 74 69 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e  ation(GetMethodN
11ce0 61 6d 65 28 29 2c 20 72 6f 6f 74 4b 65 79 2c 20  ame(), rootKey, 
11cf0 73 75 62 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d 0a  subKeyName);....
11d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11d10 20 20 20 20 73 75 62 4b 65 79 73 43 72 65 61 74      subKeysCreat
11d20 65 64 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20  ed++;..         
11d30 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
11d40 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
11d50 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
11d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
11d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
11da0 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f            [Metho
11db0 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c  dImpl(MethodImpl
11dc0 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69  Options.NoInlini
11dd0 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20  ng)]..          
11de0 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63 20    public static 
11df0 76 6f 69 64 20 44 65 6c 65 74 65 53 75 62 4b 65  void DeleteSubKe
11e00 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
11e10 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
11e20 4b 65 79 20 72 6f 6f 74 4b 65 79 2c 0d 0a 20 20  Key rootKey,..  
11e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
11e40 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65 2c  ring subKeyName,
11e50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
11e60 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69    bool throwOnMi
11e70 73 73 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20  ssing,..        
11e80 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
11e90 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
11ea0 20 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f        bool verbo
11eb0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
11ec0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
11ed0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
11ee0 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
11ef0 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
11f00 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
11f10 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
11f20 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
11f30 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
11f40 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20  Highest,..      
11f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11f60 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
11f70 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
11f80 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
11f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11fa0 20 20 20 20 20 20 20 20 22 72 6f 6f 74 4b 65 79          "rootKey
11fb0 20 3d 20 7b 30 7d 2c 20 73 75 62 4b 65 79 4e 61   = {0}, subKeyNa
11fc0 6d 65 20 3d 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  me = {1}",..    
11fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
11fe0 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 72      ForDisplay(r
11ff0 6f 6f 74 4b 65 79 29 2c 20 46 6f 72 44 69 73 70  ootKey), ForDisp
12000 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d 65 29 29  lay(subKeyName))
12010 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
12020 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
12030 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  Category);..    
12040 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
12050 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12060 20 69 66 20 28 72 6f 6f 74 4b 65 79 20 3d 3d 20   if (rootKey == 
12070 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
12080 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
12090 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
120a0 20 20 20 20 20 20 69 66 20 28 21 77 68 61 74 49        if (!whatI
120b0 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f)..            
120c0 20 20 20 20 20 20 20 20 72 6f 6f 74 4b 65 79 2e          rootKey.
120d0 44 65 6c 65 74 65 53 75 62 4b 65 79 28 73 75 62  DeleteSubKey(sub
120e0 4b 65 79 4e 61 6d 65 2c 20 74 68 72 6f 77 4f 6e  KeyName, throwOn
120f0 4d 69 73 73 69 6e 67 29 3b 0d 0a 0d 0a 20 20 20  Missing);....   
12100 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 61 79               May
12110 62 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28 47  beLogOperation(G
12120 65 74 4d 65 74 68 6f 64 4e 61 6d 65 28 29 2c 20  etMethodName(), 
12130 72 6f 6f 74 4b 65 79 2c 20 73 75 62 4b 65 79 4e  rootKey, subKeyN
12140 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
12150 20 20 20 20 20 20 20 20 20 73 75 62 4b 65 79 73           subKeys
12160 44 65 6c 65 74 65 64 2b 2b 3b 0d 0a 20 20 20 20  Deleted++;..    
12170 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12180 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
12190 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
121c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
121d0 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74              [Met
121e0 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d  hodImpl(MethodIm
121f0 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69  plOptions.NoInli
12200 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20  ning)]..        
12210 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
12220 63 20 76 6f 69 64 20 44 65 6c 65 74 65 53 75 62  c void DeleteSub
12230 4b 65 79 54 72 65 65 28 0d 0a 20 20 20 20 20 20  KeyTree(..      
12240 20 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65            MockRe
12250 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65  gistryKey rootKe
12260 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
12270 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65      string subKe
12280 79 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  yName,..        
12290 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61          bool wha
122a0 74 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf,..          
122b0 20 20 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f        bool verbo
122c0 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  se..            
122d0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
122e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
122f0 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
12300 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
12310 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
12320 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
12330 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
12340 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
12350 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20  Highest,..      
12360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12370 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
12380 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
12390 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
123a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123b0 20 20 20 20 20 20 20 20 22 72 6f 6f 74 4b 65 79          "rootKey
123c0 20 3d 20 7b 30 7d 2c 20 73 75 62 4b 65 79 4e 61   = {0}, subKeyNa
123d0 6d 65 20 3d 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  me = {1}",..    
123e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
123f0 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 72      ForDisplay(r
12400 6f 6f 74 4b 65 79 29 2c 20 46 6f 72 44 69 73 70  ootKey), ForDisp
12410 6c 61 79 28 73 75 62 4b 65 79 4e 61 6d 65 29 29  lay(subKeyName))
12420 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
12430 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
12440 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20  Category);..    
12450 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
12460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12470 20 69 66 20 28 72 6f 6f 74 4b 65 79 20 3d 3d 20   if (rootKey == 
12480 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
12490 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
124a0 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  n;....          
124b0 20 20 20 20 20 20 69 66 20 28 21 77 68 61 74 49        if (!whatI
124c0 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f)..            
124d0 20 20 20 20 20 20 20 20 72 6f 6f 74 4b 65 79 2e          rootKey.
124e0 44 65 6c 65 74 65 53 75 62 4b 65 79 54 72 65 65  DeleteSubKeyTree
124f0 28 73 75 62 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d  (subKeyName);...
12500 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12510 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72 61 74 69   MaybeLogOperati
12520 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e 61 6d 65  on(GetMethodName
12530 28 29 2c 20 72 6f 6f 74 4b 65 79 2c 20 73 75 62  (), rootKey, sub
12540 4b 65 79 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  KeyName);....   
12550 20 20 20 20 20 20 20 20 20 20 20 20 20 73 75 62               sub
12560 4b 65 79 73 44 65 6c 65 74 65 64 2b 2b 3b 0d 0a  KeysDeleted++;..
12570 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
12580 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
12590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
125e0 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68  [MethodImpl(Meth
125f0 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f  odImplOptions.No
12600 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20  Inlining)]..    
12610 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
12620 74 61 74 69 63 20 73 74 72 69 6e 67 5b 5d 20 47  tatic string[] G
12630 65 74 53 75 62 4b 65 79 4e 61 6d 65 73 28 0d 0a  etSubKeyNames(..
12640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12650 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20  MockRegistryKey 
12660 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  key,..          
12670 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49        bool whatI
12680 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  f,..            
12690 20 20 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65      bool verbose
126a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
126b0 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
126c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
126d0 20 20 20 20 69 66 20 28 76 65 72 62 6f 73 65 29      if (verbose)
126e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
126f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
12700 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
12710 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
12720 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69  TracePriority.Hi
12730 67 68 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gh,..           
12740 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
12750 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63  ugCallback, trac
12760 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
12770 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
12780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12790 20 20 20 22 6b 65 79 20 3d 20 7b 30 7d 22 2c 20     "key = {0}", 
127a0 46 6f 72 44 69 73 70 6c 61 79 28 6b 65 79 29 29  ForDisplay(key))
127b0 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
127c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
127d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
127e0 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20          if (key 
127f0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
12800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12810 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20  turn null;....  
12820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
12830 74 75 72 6e 20 6b 65 79 2e 47 65 74 53 75 62 4b  turn key.GetSubK
12840 65 79 4e 61 6d 65 73 28 29 3b 0d 0a 20 20 20 20  eyNames();..    
12850 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
12860 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
12870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12880 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12890 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
128a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
128b0 20 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74              [Met
128c0 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d  hodImpl(MethodIm
128d0 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69  plOptions.NoInli
128e0 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20  ning)]..        
128f0 20 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69      public stati
12900 63 20 6f 62 6a 65 63 74 20 47 65 74 56 61 6c 75  c object GetValu
12910 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
12920 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
12930 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20  Key key,..      
12940 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
12950 20 6e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20   name,..        
12960 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 64          object d
12970 65 66 61 75 6c 74 56 61 6c 75 65 2c 0d 0a 20 20  efaultValue,..  
12980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
12990 6f 6c 20 77 68 61 74 49 66 2c 0d 0a 20 20 20 20  ol whatIf,..    
129a0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
129b0 20 76 65 72 62 6f 73 65 0d 0a 20 20 20 20 20 20   verbose..      
129c0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
129d0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
129e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
129f0 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20 20  verbose)..      
12a00 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
12a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
12a30 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
12a40 6f 72 69 74 79 2e 48 69 67 68 2c 0d 0a 20 20 20  ority.High,..   
12a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12a60 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
12a70 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
12a80 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
12a90 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
12aa0 20 20 20 20 20 20 20 20 20 20 20 22 6b 65 79 20             "key 
12ab0 3d 20 7b 30 7d 2c 20 6e 61 6d 65 20 3d 20 7b 31  = {0}, name = {1
12ac0 7d 2c 20 64 65 66 61 75 6c 74 56 61 6c 75 65 20  }, defaultValue 
12ad0 3d 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20  = {2}",..       
12ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12af0 20 46 6f 72 44 69 73 70 6c 61 79 28 6b 65 79 29   ForDisplay(key)
12b00 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 61 6d  , ForDisplay(nam
12b10 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
12b20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
12b30 44 69 73 70 6c 61 79 28 64 65 66 61 75 6c 74 56  Display(defaultV
12b40 61 6c 75 65 29 29 2c 20 74 72 61 63 65 43 61 74  alue)), traceCat
12b50 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20  egory);..       
12b60 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
12b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
12b80 20 28 6b 65 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a   (key == null)..
12b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ba0 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b      return null;
12bb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
12bc0 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75 65      object value
12bd0 20 3d 20 6b 65 79 2e 47 65 74 56 61 6c 75 65 28   = key.GetValue(
12be0 6e 61 6d 65 2c 20 64 65 66 61 75 6c 74 56 61 6c  name, defaultVal
12bf0 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ue);....        
12c00 20 20 20 20 20 20 20 20 6b 65 79 56 61 6c 75 65          keyValue
12c10 73 52 65 61 64 2b 2b 3b 0d 0a 0d 0a 20 20 20 20  sRead++;....    
12c20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
12c30 72 6e 20 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  rn value;..     
12c40 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
12c50 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
12c60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
12c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
12ca0 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68             [Meth
12cb0 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70  odImpl(MethodImp
12cc0 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e  lOptions.NoInlin
12cd0 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20  ing)]..         
12ce0 20 20 20 70 75 62 6c 69 63 20 73 74 61 74 69 63     public static
12cf0 20 76 6f 69 64 20 53 65 74 56 61 6c 75 65 28 0d   void SetValue(.
12d00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
12d10 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
12d20 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20   key,..         
12d30 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
12d40 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
12d50 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
12d60 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
12d70 20 20 20 20 62 6f 6f 6c 20 77 68 61 74 49 66 2c      bool whatIf,
12d80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12d90 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a    bool verbose..
12da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12db0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
12dc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
12dd0 20 20 69 66 20 28 76 65 72 62 6f 73 65 29 0d 0a    if (verbose)..
12de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12df0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
12e00 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e         TraceOps.
12e10 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72  DebugAndTrace(Tr
12e20 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69 67 68  acePriority.High
12e30 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  est,..          
12e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
12e50 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
12e60 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
12e70 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
12e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12e90 20 20 20 20 22 6b 65 79 20 3d 20 7b 30 7d 2c 20      "key = {0}, 
12ea0 6e 61 6d 65 20 3d 20 7b 31 7d 2c 20 76 61 6c 75  name = {1}, valu
12eb0 65 20 3d 20 7b 32 7d 22 2c 0d 0a 20 20 20 20 20  e = {2}",..     
12ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12ed0 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 6b 65     ForDisplay(ke
12ee0 79 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  y), ForDisplay(n
12ef0 61 6d 65 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  ame), ForDisplay
12f00 28 76 61 6c 75 65 29 29 2c 0d 0a 20 20 20 20 20  (value)),..     
12f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
12f20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
12f30 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
12f40 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
12f50 20 20 20 20 20 20 20 20 20 69 66 20 28 6b 65 79           if (key
12f60 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
12f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
12f80 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20  eturn;....      
12f90 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 77            if (!w
12fa0 68 61 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20  hatIf)..        
12fb0 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e              key.
12fc0 53 65 74 56 61 6c 75 65 28 6e 61 6d 65 2c 20 76  SetValue(name, v
12fd0 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  alue);....      
12fe0 20 20 20 20 20 20 20 20 20 20 4d 61 79 62 65 4c            MaybeL
12ff0 6f 67 4f 70 65 72 61 74 69 6f 6e 28 47 65 74 4d  ogOperation(GetM
13000 65 74 68 6f 64 4e 61 6d 65 28 29 2c 20 6b 65 79  ethodName(), key
13010 2c 20 6e 61 6d 65 2c 20 76 61 6c 75 65 29 3b 0d  , name, value);.
13020 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
13030 20 20 20 6b 65 79 56 61 6c 75 65 73 57 72 69 74     keyValuesWrit
13040 74 65 6e 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20  ten++;..        
13050 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
13060 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
13070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
130a0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
130b0 20 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49          [MethodI
130c0 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70  mpl(MethodImplOp
130d0 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67  tions.NoInlining
130e0 29 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  )]..            
130f0 70 75 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f  public static vo
13100 69 64 20 44 65 6c 65 74 65 56 61 6c 75 65 28 0d  id DeleteValue(.
13110 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13120 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65 79   MockRegistryKey
13130 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20 20   key,..         
13140 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6e 61         string na
13150 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me,..           
13160 20 20 20 20 20 62 6f 6f 6c 20 74 68 72 6f 77 4f       bool throwO
13170 6e 4d 69 73 73 69 6e 67 2c 0d 0a 20 20 20 20 20  nMissing,..     
13180 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
13190 77 68 61 74 49 66 2c 0d 0a 20 20 20 20 20 20 20  whatIf,..       
131a0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 76 65           bool ve
131b0 72 62 6f 73 65 0d 0a 20 20 20 20 20 20 20 20 20  rbose..         
131c0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
131d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
131e0 20 20 20 20 20 20 20 20 20 69 66 20 28 76 65 72           if (ver
131f0 62 6f 73 65 29 0d 0a 20 20 20 20 20 20 20 20 20  bose)..         
13200 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
13210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
13220 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
13230 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69  race(TracePriori
13240 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20  ty.Highest,..   
13250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13260 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61       debugCallba
13270 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63  ck, traceCallbac
13280 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
13290 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
132a0 20 20 20 20 20 20 20 20 20 20 20 22 6b 65 79 20             "key 
132b0 3d 20 7b 30 7d 2c 20 6e 61 6d 65 20 3d 20 7b 31  = {0}, name = {1
132c0 7d 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6b  }", ForDisplay(k
132d0 65 79 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ey),..          
132e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
132f0 72 44 69 73 70 6c 61 79 28 6e 61 6d 65 29 29 2c  rDisplay(name)),
13300 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
13310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13320 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13330 20 20 20 20 20 20 20 69 66 20 28 6b 65 79 20 3d         if (key =
13340 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
13350 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
13360 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  urn;....        
13370 20 20 20 20 20 20 20 20 69 66 20 28 21 77 68 61          if (!wha
13380 74 49 66 29 0d 0a 20 20 20 20 20 20 20 20 20 20  tIf)..          
13390 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 44 65            key.De
133a0 6c 65 74 65 56 61 6c 75 65 28 6e 61 6d 65 2c 20  leteValue(name, 
133b0 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 29 3b  throwOnMissing);
133c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
133d0 20 20 20 20 4d 61 79 62 65 4c 6f 67 4f 70 65 72      MaybeLogOper
133e0 61 74 69 6f 6e 28 47 65 74 4d 65 74 68 6f 64 4e  ation(GetMethodN
133f0 61 6d 65 28 29 2c 20 6b 65 79 2c 20 6e 61 6d 65  ame(), key, name
13400 2c 20 6e 75 6c 6c 29 3b 0d 0a 0d 0a 20 20 20 20  , null);....    
13410 20 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 56              keyV
13420 61 6c 75 65 73 44 65 6c 65 74 65 64 2b 2b 3b 0d  aluesDeleted++;.
13430 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
13440 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
13450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13490 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
134a0 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74   [MethodImpl(Met
134b0 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e  hodImplOptions.N
134c0 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20  oInlining)]..   
134d0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
134e0 73 74 61 74 69 63 20 69 6e 74 20 57 72 69 74 65  static int Write
134f0 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28 0d 0a  OperationList(..
13500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13510 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d 65 2c  string fileName,
13520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13530 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 0d 0a    bool verbose..
13540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13550 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
13560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13570 20 20 69 6e 74 20 63 6f 75 6e 74 20 3d 20 30 3b    int count = 0;
13580 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13590 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49      if (String.I
135a0 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 66 69 6c  sNullOrEmpty(fil
135b0 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
135c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
135d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
135e0 69 66 20 28 76 65 72 62 6f 73 65 29 0d 0a 20 20  if (verbose)..  
135f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13600 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
13610 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
13620 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
13630 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74  ace(TracePriorit
13640 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20  y.Highest,..    
13650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13660 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
13670 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
13680 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
13690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
136a0 20 20 20 22 52 65 67 69 73 74 72 79 20 6f 70 65     "Registry ope
136b0 72 61 74 69 6f 6e 20 6c 6f 67 20 66 69 6c 65 20  ration log file 
136c0 6e 61 6d 65 20 6e 6f 74 20 73 65 74 2e 22 2c 0d  name not set.",.
136d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
136e0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
136f0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20  ceCategory);..  
13700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13710 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
13720 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
13730 6e 20 63 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20  n count;..      
13740 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
13750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
13760 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29 20 2f  ock (syncRoot) /
13770 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e 41 4c 20  * TRANSACTIONAL 
13780 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
13790 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
137a0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6f             if (o
137b0 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d 3d 20  perationList == 
137c0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
137d0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
137e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
137f0 20 20 20 20 20 20 69 66 20 28 76 65 72 62 6f 73        if (verbos
13800 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
13810 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
13820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13830 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
13840 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
13850 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
13860 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20  Highest,..      
13870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13880 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43            debugC
13890 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61  allback, traceCa
138a0 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
138b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
138c0 20 20 20 20 20 20 20 20 20 22 52 65 67 69 73 74           "Regist
138d0 72 79 20 6f 70 65 72 61 74 69 6f 6e 20 6c 69 73  ry operation lis
138e0 74 20 69 73 20 69 6e 76 61 6c 69 64 2e 22 2c 0d  t is invalid.",.
138f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13910 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
13920 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13930 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
13940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13950 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f         return co
13960 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  unt;..          
13970 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
13980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13990 20 20 20 75 73 69 6e 67 20 28 53 74 72 65 61 6d     using (Stream
139a0 57 72 69 74 65 72 20 73 74 72 65 61 6d 57 72 69  Writer streamWri
139b0 74 65 72 20 3d 20 6e 65 77 20 53 74 72 65 61 6d  ter = new Stream
139c0 57 72 69 74 65 72 28 0d 0a 20 20 20 20 20 20 20  Writer(..       
139d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
139e0 20 20 20 20 20 66 69 6c 65 4e 61 6d 65 29 29 0d       fileName)).
139f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13a00 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
13a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a20 66 6f 72 65 61 63 68 20 28 52 65 67 69 73 74 72  foreach (Registr
13a30 79 4f 70 65 72 61 74 69 6f 6e 20 6f 70 65 72 61  yOperation opera
13a40 74 69 6f 6e 20 69 6e 20 6f 70 65 72 61 74 69 6f  tion in operatio
13a50 6e 4c 69 73 74 29 0d 0a 20 20 20 20 20 20 20 20  nList)..        
13a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13a70 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
13a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
13a90 66 20 28 6f 70 65 72 61 74 69 6f 6e 20 3d 3d 20  f (operation == 
13aa0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
13ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13ac0 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
13ad0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
13ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13af0 73 74 72 65 61 6d 57 72 69 74 65 72 2e 57 72 69  streamWriter.Wri
13b00 74 65 4c 69 6e 65 28 6f 70 65 72 61 74 69 6f 6e  teLine(operation
13b10 2e 54 6f 53 74 72 69 6e 67 28 29 29 3b 0d 0a 20  .ToString());.. 
13b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13b30 20 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74             count
13b40 2b 2b 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++;..           
13b50 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
13b60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13b70 20 20 20 20 20 20 20 20 20 20 73 74 72 65 61 6d            stream
13b80 57 72 69 74 65 72 2e 46 6c 75 73 68 28 29 3b 0d  Writer.Flush();.
13b90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13ba0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
13bb0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
13bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
13bd0 28 76 65 72 62 6f 73 65 29 0d 0a 20 20 20 20 20  (verbose)..     
13be0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
13bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
13c00 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
13c10 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72  AndTrace(TracePr
13c20 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c 0d  iority.Highest,.
13c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
13c40 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61           debugCa
13c50 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c  llback, traceCal
13c60 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
13c70 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
13c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
13c90 57 72 6f 74 65 20 7b 30 7d 20 72 65 67 69 73 74  Wrote {0} regist
13ca0 72 79 20 6f 70 65 72 61 74 69 6f 6e 73 20 74 6f  ry operations to
13cb0 20 69 74 73 20 6c 6f 67 20 66 69 6c 65 2e 22 2c   its log file.",
13cc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
13cd0 20 20 20 20 20 20 20 20 20 20 63 6f 75 6e 74 29            count)
13ce0 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
13cf0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
13d00 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
13d10 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63          return c
13d20 6f 75 6e 74 3b 0d 0a 20 20 20 20 20 20 20 20 20  ount;..         
13d30 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
13d40 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
13d50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
13d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
13da0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
13db0 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 53  region Private S
13dc0 74 61 74 69 63 20 4d 65 74 68 6f 64 73 0d 0a 20  tatic Methods.. 
13dd0 20 20 20 20 20 20 20 20 20 20 20 5b 4d 65 74 68             [Meth
13de0 6f 64 49 6d 70 6c 28 4d 65 74 68 6f 64 49 6d 70  odImpl(MethodImp
13df0 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e  lOptions.NoInlin
13e00 69 6e 67 29 5d 0d 0a 20 20 20 20 20 20 20 20 20  ing)]..         
13e10 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
13e20 63 20 73 74 72 69 6e 67 20 47 65 74 4d 65 74 68  c string GetMeth
13e30 6f 64 4e 61 6d 65 28 29 0d 0a 20 20 20 20 20 20  odName()..      
13e40 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13e50 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
13e60 54 72 61 63 65 4f 70 73 2e 47 65 74 4d 65 74 68  TraceOps.GetMeth
13e70 6f 64 4e 61 6d 65 28 6e 75 6c 6c 2c 20 31 29 3b  odName(null, 1);
13e80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
13e90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
13ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13eb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
13ee0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
13ef0 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
13f00 20 76 6f 69 64 20 4d 61 79 62 65 4c 6f 67 4f 70   void MaybeLogOp
13f10 65 72 61 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  eration(..      
13f20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
13f30 20 6d 65 74 68 6f 64 4e 61 6d 65 2c 0d 0a 20 20   methodName,..  
13f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
13f50 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65  ckRegistryKey ke
13f60 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y,..            
13f70 20 20 20 20 73 74 72 69 6e 67 20 73 75 62 4b 65      string subKe
13f80 79 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  yName..         
13f90 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
13fa0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
13fb0 20 20 20 20 20 20 20 20 20 4d 61 79 62 65 4c 6f           MaybeLo
13fc0 67 4f 70 65 72 61 74 69 6f 6e 28 6d 65 74 68 6f  gOperation(metho
13fd0 64 4e 61 6d 65 2c 20 6b 65 79 2c 20 73 75 62 4b  dName, key, subK
13fe0 65 79 4e 61 6d 65 2c 20 6e 75 6c 6c 2c 20 6e 75  eyName, null, nu
13ff0 6c 6c 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ll);..          
14000 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
14010 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
14020 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14030 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14040 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14050 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
14060 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
14070 61 74 69 63 20 76 6f 69 64 20 4d 61 79 62 65 4c  atic void MaybeL
14080 6f 67 4f 70 65 72 61 74 69 6f 6e 28 0d 0a 20 20  ogOperation(..  
14090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
140a0 72 69 6e 67 20 6d 65 74 68 6f 64 4e 61 6d 65 2c  ring methodName,
140b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
140c0 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65    MockRegistryKe
140d0 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20 20 20  y key,..        
140e0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 76          string v
140f0 61 6c 75 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  alueName,..     
14100 20 20 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63             objec
14110 74 20 76 61 6c 75 65 0d 0a 20 20 20 20 20 20 20  t value..       
14120 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
14130 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14140 20 20 20 20 20 20 20 20 20 20 20 4d 61 79 62 65             Maybe
14150 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28 6d 65 74  LogOperation(met
14160 68 6f 64 4e 61 6d 65 2c 20 6b 65 79 2c 20 6e 75  hodName, key, nu
14170 6c 6c 2c 20 76 61 6c 75 65 4e 61 6d 65 2c 20 76  ll, valueName, v
14180 61 6c 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  alue);..        
14190 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
141a0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
141b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
141e0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
141f0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
14200 73 74 61 74 69 63 20 76 6f 69 64 20 4d 61 79 62  static void Mayb
14210 65 4c 6f 67 4f 70 65 72 61 74 69 6f 6e 28 0d 0a  eLogOperation(..
14220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14230 73 74 72 69 6e 67 20 6d 65 74 68 6f 64 4e 61 6d  string methodNam
14240 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
14250 20 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79      MockRegistry
14260 4b 65 79 20 6b 65 79 2c 0d 0a 20 20 20 20 20 20  Key key,..      
14270 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
14280 20 73 75 62 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20   subKeyName,..  
14290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
142a0 72 69 6e 67 20 76 61 6c 75 65 4e 61 6d 65 2c 0d  ring valueName,.
142b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
142c0 20 6f 62 6a 65 63 74 20 76 61 6c 75 65 0d 0a 20   object value.. 
142d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
142e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
142f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
14300 20 6c 6f 63 6b 20 28 73 79 6e 63 52 6f 6f 74 29   lock (syncRoot)
14310 20 2f 2a 20 54 52 41 4e 53 41 43 54 49 4f 4e 41   /* TRANSACTIONA
14320 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  L */..          
14330 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
14340 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
14350 28 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 20 3d  (operationList =
14360 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
14370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14380 20 72 65 74 75 72 6e 3b 0d 0a 0d 0a 20 20 20 20   return;....    
14390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
143a0 6f 70 65 72 61 74 69 6f 6e 4c 69 73 74 2e 41 64  operationList.Ad
143b0 64 28 6e 65 77 20 52 65 67 69 73 74 72 79 4f 70  d(new RegistryOp
143c0 65 72 61 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20  eration(..      
143d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
143e0 20 20 6d 65 74 68 6f 64 4e 61 6d 65 2c 20 6b 65    methodName, ke
143f0 79 2c 20 73 75 62 4b 65 79 4e 61 6d 65 2c 20 76  y, subKeyName, v
14400 61 6c 75 65 4e 61 6d 65 2c 20 76 61 6c 75 65 29  alueName, value)
14410 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
14420 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14430 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
14440 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20    #endregion..  
14450 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14460 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
14470 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
14480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
144b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
144c0 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
144d0 6e 20 52 65 67 69 73 74 72 79 4f 70 65 72 61 74  n RegistryOperat
144e0 69 6f 6e 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20  ionList Class.. 
144f0 20 20 20 20 20 20 20 5b 53 65 72 69 61 6c 69 7a         [Serializ
14500 61 62 6c 65 28 29 5d 0d 0a 20 20 20 20 20 20 20  able()]..       
14510 20 70 72 69 76 61 74 65 20 73 65 61 6c 65 64 20   private sealed 
14520 63 6c 61 73 73 20 52 65 67 69 73 74 72 79 4f 70  class RegistryOp
14530 65 72 61 74 69 6f 6e 4c 69 73 74 20 3a 0d 0a 20  erationList :.. 
14540 20 20 20 20 20 20 20 20 20 20 20 4c 69 73 74 3c             List<
14550 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f  RegistryOperatio
14560 6e 3e 2c 20 49 44 69 73 70 6f 73 61 62 6c 65 0d  n>, IDisposable.
14570 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
14580 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
14590 50 75 62 6c 69 63 20 43 6f 6e 73 74 72 75 63 74  Public Construct
145a0 6f 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ors..           
145b0 20 70 75 62 6c 69 63 20 52 65 67 69 73 74 72 79   public Registry
145c0 4f 70 65 72 61 74 69 6f 6e 4c 69 73 74 28 29 0d  OperationList().
145d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
145e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
145f0 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
14600 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
14610 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
14620 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
14630 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
14640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14670 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
14680 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
14690 49 44 69 73 70 6f 73 61 62 6c 65 20 22 50 61 74  IDisposable "Pat
146a0 74 65 72 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20  tern" Members.. 
146b0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
146c0 74 65 20 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64  te bool disposed
146d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
146e0 72 69 76 61 74 65 20 76 6f 69 64 20 43 68 65 63  rivate void Chec
146f0 6b 44 69 73 70 6f 73 65 64 28 29 20 2f 2a 20 74  kDisposed() /* t
14700 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
14710 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
14720 20 20 20 20 20 20 20 20 69 66 20 28 21 64 69 73          if (!dis
14730 70 6f 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20  posed)..        
14740 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
14750 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rn;....         
14760 20 20 20 20 20 20 20 74 68 72 6f 77 20 6e 65 77         throw new
14770 20 4f 62 6a 65 63 74 44 69 73 70 6f 73 65 64 45   ObjectDisposedE
14780 78 63 65 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20  xception(..     
14790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
147a0 79 70 65 6f 66 28 52 65 67 69 73 74 72 79 4f 70  ypeof(RegistryOp
147b0 65 72 61 74 69 6f 6e 4c 69 73 74 29 2e 4e 61 6d  erationList).Nam
147c0 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e);..           
147d0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
147e0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
147f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14820 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
14830 20 20 20 20 20 70 72 69 76 61 74 65 20 2f 2a 20       private /* 
14840 70 72 6f 74 65 63 74 65 64 20 76 69 72 74 75 61  protected virtua
14850 6c 20 2a 2f 20 76 6f 69 64 20 44 69 73 70 6f 73  l */ void Dispos
14860 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
14870 20 20 20 20 62 6f 6f 6c 20 64 69 73 70 6f 73 69      bool disposi
14880 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ng..            
14890 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
148a0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
148b0 20 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f        if (!dispo
148c0 73 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20  sed)..          
148d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
148e0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
148f0 28 64 69 73 70 6f 73 69 6e 67 29 0d 0a 20 20 20  (disposing)..   
14900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14910 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
14920 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
14930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14950 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14960 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 69 73            // dis
14970 70 6f 73 65 20 6d 61 6e 61 67 65 64 20 72 65 73  pose managed res
14980 6f 75 72 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a  ources here.....
14990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
149a0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
149b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
149c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
149d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
149e0 20 20 20 20 20 20 20 20 66 6f 72 65 61 63 68 20          foreach 
149f0 28 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69  (RegistryOperati
14a00 6f 6e 20 6f 70 65 72 61 74 69 6f 6e 20 69 6e 20  on operation in 
14a10 74 68 69 73 29 0d 0a 20 20 20 20 20 20 20 20 20  this)..         
14a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
14a30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
14a50 20 28 6f 70 65 72 61 74 69 6f 6e 20 3d 3d 20 6e   (operation == n
14a60 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
14a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14a80 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
14a90 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
14ab0 70 65 72 61 74 69 6f 6e 2e 44 69 73 70 6f 73 65  peration.Dispose
14ac0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
14ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
14ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
14af0 20 20 20 20 20 20 20 20 20 20 43 6c 65 61 72 28            Clear(
14b00 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
14b10 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
14b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14b30 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
14b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14b50 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20 20 20  ///////..       
14b60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
14b70 72 65 6c 65 61 73 65 20 75 6e 6d 61 6e 61 67 65  release unmanage
14b80 64 20 72 65 73 6f 75 72 63 65 73 20 68 65 72 65  d resources here
14b90 2e 2e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .....           
14ba0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
14bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14bc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14bd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
14be0 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
14bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
14c00 2f 20 4e 4f 54 45 3a 20 54 68 69 73 20 6f 62 6a  / NOTE: This obj
14c10 65 63 74 20 69 73 20 6e 6f 77 20 64 69 73 70 6f  ect is now dispo
14c20 73 65 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  sed...          
14c30 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
14c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
14c50 20 20 64 69 73 70 6f 73 65 64 20 3d 20 74 72 75    disposed = tru
14c60 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
14c70 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
14c80 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
14c90 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
14ca0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
14cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14cd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
14cf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  ...            #
14d00 72 65 67 69 6f 6e 20 49 44 69 73 70 6f 73 61 62  region IDisposab
14d10 6c 65 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  le Members..    
14d20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 76          public v
14d30 6f 69 64 20 44 69 73 70 6f 73 65 28 29 0d 0a 20  oid Dispose().. 
14d40 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
14d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44 69                Di
14d60 73 70 6f 73 65 28 74 72 75 65 29 3b 0d 0a 20 20  spose(true);..  
14d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 43                GC
14d80 2e 53 75 70 70 72 65 73 73 46 69 6e 61 6c 69 7a  .SuppressFinaliz
14d90 65 28 74 68 69 73 29 3b 0d 0a 20 20 20 20 20 20  e(this);..      
14da0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
14db0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
14dc0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
14dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14e10 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
14e20 20 20 23 72 65 67 69 6f 6e 20 44 65 73 74 72 75    #region Destru
14e30 63 74 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  ctor..          
14e40 20 20 7e 52 65 67 69 73 74 72 79 4f 70 65 72 61    ~RegistryOpera
14e50 74 69 6f 6e 4c 69 73 74 28 29 0d 0a 20 20 20 20  tionList()..    
14e60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14e70 20 20 20 20 20 20 20 20 20 20 20 44 69 73 70 6f             Dispo
14e80 73 65 28 66 61 6c 73 65 29 3b 0d 0a 20 20 20 20  se(false);..    
14e90 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
14ea0 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
14eb0 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20  n..        }..  
14ec0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
14ed0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f  ....        ////
14ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
14f20 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23  ///....        #
14f30 72 65 67 69 6f 6e 20 52 65 67 69 73 74 72 79 4f  region RegistryO
14f40 70 65 72 61 74 69 6f 6e 20 43 6c 61 73 73 0d 0a  peration Class..
14f50 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
14f60 73 65 61 6c 65 64 20 63 6c 61 73 73 20 52 65 67  sealed class Reg
14f70 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e 0d 0a  istryOperation..
14f80 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
14f90 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50         #region P
14fa0 72 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73  rivate Constants
14fb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
14fc0 69 76 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72  ivate const char
14fd0 20 46 69 65 6c 64 44 65 6c 69 6d 69 74 65 72 20   FieldDelimiter 
14fe0 3d 20 27 5c 74 27 3b 0d 0a 20 20 20 20 20 20 20  = '\t';..       
14ff0 20 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e       private con
15000 73 74 20 73 74 72 69 6e 67 20 4c 69 73 74 45 6c  st string ListEl
15010 65 6d 65 6e 74 44 65 6c 69 6d 69 74 65 72 20 3d  ementDelimiter =
15020 20 22 2c 20 22 3b 0d 0a 20 20 20 20 20 20 20 20   ", ";..        
15030 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
15040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
15050 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15090 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
150a0 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
150b0 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
150c0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
150d0 20 52 65 67 69 73 74 72 79 4f 70 65 72 61 74 69   RegistryOperati
150e0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
150f0 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65 74 68       string meth
15100 6f 64 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  odName,..       
15110 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
15120 69 73 74 72 79 4b 65 79 20 6b 65 79 2c 0d 0a 20  istryKey key,.. 
15130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
15140 74 72 69 6e 67 20 73 75 62 4b 65 79 4e 61 6d 65  tring subKeyName
15150 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
15160 20 20 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e     string valueN
15170 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
15180 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c        object val
15190 75 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ue..            
151a0 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
151b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
151c0 20 20 20 20 20 20 74 68 69 73 2e 6d 65 74 68 6f        this.metho
151d0 64 4e 61 6d 65 20 3d 20 6d 65 74 68 6f 64 4e 61  dName = methodNa
151e0 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
151f0 20 20 20 20 20 74 68 69 73 2e 73 75 62 4b 65 79       this.subKey
15200 4e 61 6d 65 20 3d 20 73 75 62 4b 65 79 4e 61 6d  Name = subKeyNam
15210 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
15220 20 20 20 20 74 68 69 73 2e 76 61 6c 75 65 4e 61      this.valueNa
15230 6d 65 20 3d 20 76 61 6c 75 65 4e 61 6d 65 3b 0d  me = valueName;.
15240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
15250 20 74 68 69 73 2e 76 61 6c 75 65 20 3d 20 76 61   this.value = va
15260 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lue;....        
15270 20 20 20 20 20 20 20 20 53 65 74 4b 65 79 28 6b          SetKey(k
15280 65 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ey);..          
15290 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
152a0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
152b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
152c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
152f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
15300 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
15310 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 4d 65  egion Private Me
15320 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20 20 20  thods..         
15330 20 20 20 70 72 69 76 61 74 65 20 76 6f 69 64 20     private void 
15340 53 65 74 4b 65 79 28 0d 0a 20 20 20 20 20 20 20  SetKey(..       
15350 20 20 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67           MockReg
15360 69 73 74 72 79 4b 65 79 20 6b 65 79 0d 0a 20 20  istryKey key..  
15370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
15380 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
15390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
153a0 69 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c 29  if (key != null)
153b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
153c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
153d0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
153e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
153f0 20 2f 2f 20 4e 4f 54 45 3a 20 4d 61 6b 65 20 73   // NOTE: Make s
15400 75 72 65 20 74 68 69 73 20 63 6f 70 79 20 6f 66  ure this copy of
15410 20 74 68 65 20 72 6f 6f 74 20 72 65 67 69 73 74   the root regist
15420 72 79 20 6b 65 79 0d 0a 20 20 20 20 20 20 20 20  ry key..        
15430 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
15440 20 20 20 20 20 63 61 6e 6e 6f 74 20 62 65 20 75       cannot be u
15450 73 65 64 20 74 6f 20 61 63 63 69 64 65 6e 74 61  sed to accidenta
15460 6c 6c 79 20 6d 61 6b 65 20 72 65 67 69 73 74 72  lly make registr
15470 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  y..             
15480 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
15490 63 68 61 6e 67 65 73 2e 20 20 41 6c 73 6f 2c 20  changes.  Also, 
154a0 70 72 65 76 65 6e 74 20 74 68 69 73 20 4d 6f 63  prevent this Moc
154b0 6b 52 65 67 69 73 74 72 79 4b 65 79 0d 0a 20 20  kRegistryKey..  
154c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
154d0 20 20 2f 2f 20 20 20 20 20 20 20 6f 62 6a 65 63    //       objec
154e0 74 20 66 72 6f 6d 20 63 6c 6f 73 69 6e 67 20 69  t from closing i
154f0 74 73 20 75 6e 64 65 72 6c 79 69 6e 67 20 72 65  ts underlying re
15500 67 69 73 74 72 79 0d 0a 20 20 20 20 20 20 20 20  gistry..        
15510 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
15520 20 20 20 20 20 6b 65 79 20 61 73 20 77 65 20 77       key as we w
15530 69 6c 6c 20 6e 65 65 64 20 69 74 20 6c 61 74 65  ill need it late
15540 72 2e 20 20 54 68 69 73 20 69 6e 73 74 61 6e 63  r.  This instanc
15550 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
15560 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
15570 77 69 6c 6c 20 63 6c 6f 73 65 20 69 74 2e 0d 0a  will close it...
15580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15590 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
155a0 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
155b0 2e 6b 65 79 20 3d 20 6b 65 79 2e 43 6c 6f 6e 65  .key = key.Clone
155c0 28 74 72 75 65 2c 20 74 72 75 65 2c 20 74 72 75  (true, true, tru
155d0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
155e0 20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 44             key.D
155f0 69 73 61 62 6c 65 43 6c 6f 73 65 28 29 3b 0d 0a  isableClose();..
15600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15610 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
15620 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
15630 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
15640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15650 74 68 69 73 2e 6b 65 79 20 3d 20 6e 75 6c 6c 3b  this.key = null;
15660 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15670 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
15680 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
15690 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
156a0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
156b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
156e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
156f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
15700 67 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70  gion Public Prop
15710 65 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20  erties..        
15720 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69      private stri
15730 6e 67 20 6d 65 74 68 6f 64 4e 61 6d 65 3b 0d 0a  ng methodName;..
15740 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
15750 69 63 20 73 74 72 69 6e 67 20 4d 65 74 68 6f 64  ic string Method
15760 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20 20  Name..          
15770 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
15780 20 20 20 20 20 67 65 74 20 7b 20 43 68 65 63 6b       get { Check
15790 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65 74 75  Disposed(); retu
157a0 72 6e 20 6d 65 74 68 6f 64 4e 61 6d 65 3b 20 7d  rn methodName; }
157b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
157c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
157d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
157f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15810 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
15820 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65    private MockRe
15830 67 69 73 74 72 79 4b 65 79 20 6b 65 79 3b 0d 0a  gistryKey key;..
15840 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
15850 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b  ic MockRegistryK
15860 65 79 20 4b 65 79 0d 0a 20 20 20 20 20 20 20 20  ey Key..        
15870 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
15880 20 20 20 20 20 20 20 67 65 74 20 7b 20 43 68 65         get { Che
15890 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 20 72 65  ckDisposed(); re
158a0 74 75 72 6e 20 6b 65 79 3b 20 7d 0d 0a 20 20 20  turn key; }..   
158b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
158c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
158d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
158f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15900 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15910 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
15920 76 61 74 65 20 73 74 72 69 6e 67 20 73 75 62 4b  vate string subK
15930 65 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  eyName;..       
15940 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72 69       public stri
15950 6e 67 20 53 75 62 4b 65 79 4e 61 6d 65 0d 0a 20  ng SubKeyName.. 
15960 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
15970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
15980 74 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65  t { CheckDispose
15990 64 28 29 3b 20 72 65 74 75 72 6e 20 73 75 62 4b  d(); return subK
159a0 65 79 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20  eyName; }..     
159b0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
159c0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
159d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
159f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15a00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
15a10 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
15a20 74 65 20 73 74 72 69 6e 67 20 76 61 6c 75 65 4e  te string valueN
15a30 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ame;..          
15a40 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
15a50 56 61 6c 75 65 4e 61 6d 65 0d 0a 20 20 20 20 20  ValueName..     
15a60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
15a70 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
15a80 43 68 65 63 6b 44 69 73 70 6f 73 65 64 28 29 3b  CheckDisposed();
15a90 20 72 65 74 75 72 6e 20 76 61 6c 75 65 4e 61 6d   return valueNam
15aa0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
15ab0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
15ac0 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
15ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15b00 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
15b10 20 20 20 20 20 20 70 72 69 76 61 74 65 20 6f 62        private ob
15b20 6a 65 63 74 20 76 61 6c 75 65 3b 0d 0a 20 20 20  ject value;..   
15b30 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
15b40 6f 62 6a 65 63 74 20 56 61 6c 75 65 0d 0a 20 20  object Value..  
15b50 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
15b60 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
15b70 20 7b 20 43 68 65 63 6b 44 69 73 70 6f 73 65 64   { CheckDisposed
15b80 28 29 3b 20 72 65 74 75 72 6e 20 76 61 6c 75 65  (); return value
15b90 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
15ba0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
15bb0 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
15bc0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
15bd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15be0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15bf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
15c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
15c10 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65  .            #re
15c20 67 69 6f 6e 20 53 79 73 74 65 6d 2e 4f 62 6a 65  gion System.Obje
15c30 63 74 20 4f 76 65 72 72 69 64 65 73 0d 0a 20 20  ct Overrides..  
15c40 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
15c50 20 6f 76 65 72 72 69 64 65 20 62 6f 6f 6c 20 45   override bool E
15c60 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
15c70 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 6f          object o
15c80 62 6a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  bj..            
15c90 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
15ca0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15cb0 20 20 20 20 20 20 43 68 65 63 6b 44 69 73 70 6f        CheckDispo
15cc0 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  sed();....      
15cd0 20 20 20 20 20 20 20 20 20 20 52 65 67 69 73 74            Regist
15ce0 72 79 4f 70 65 72 61 74 69 6f 6e 20 6f 70 65 72  ryOperation oper
15cf0 61 74 69 6f 6e 20 3d 20 6f 62 6a 20 61 73 20 52  ation = obj as R
15d00 65 67 69 73 74 72 79 4f 70 65 72 61 74 69 6f 6e  egistryOperation
15d10 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
15d20 20 20 20 20 20 69 66 20 28 6f 70 65 72 61 74 69       if (operati
15d30 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  on == null)..   
15d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15d50 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
15d60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
15d70 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 45 71    if (!String.Eq
15d80 75 61 6c 73 28 6f 70 65 72 61 74 69 6f 6e 2e 6d  uals(operation.m
15d90 65 74 68 6f 64 4e 61 6d 65 2c 20 6d 65 74 68 6f  ethodName, metho
15da0 64 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  dName))..       
15db0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
15dc0 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
15dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
15de0 20 28 21 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b   (!MockRegistryK
15df0 65 79 2e 45 71 75 61 6c 73 28 6f 70 65 72 61 74  ey.Equals(operat
15e00 69 6f 6e 2e 6b 65 79 2c 20 6b 65 79 29 29 0d 0a  ion.key, key))..
15e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
15e20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
15e30 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
15e40 20 20 20 20 20 69 66 20 28 21 4d 6f 63 6b 52 65       if (!MockRe
15e50 67 69 73 74 72 79 4b 65 79 2e 4e 61 6d 65 45 71  gistryKey.NameEq
15e60 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20 20  uals(..         
15e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
15e80 70 65 72 61 74 69 6f 6e 2e 73 75 62 4b 65 79 4e  peration.subKeyN
15e90 61 6d 65 2c 20 73 75 62 4b 65 79 4e 61 6d 65 29  ame, subKeyName)
15ea0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15eb0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
15ec0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
15ed0 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
15ee0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
15ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
15f00 20 28 21 53 74 72 69 6e 67 2e 45 71 75 61 6c 73   (!String.Equals
15f10 28 6f 70 65 72 61 74 69 6f 6e 2e 76 61 6c 75 65  (operation.value
15f20 4e 61 6d 65 2c 20 76 61 6c 75 65 4e 61 6d 65 29  Name, valueName)
15f30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15f40 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
15f50 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
15f60 20 20 20 20 20 20 20 20 69 66 20 28 21 4d 6f 63          if (!Moc
15f70 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 56 61 6c  kRegistryKey.Val
15f80 75 65 45 71 75 61 6c 73 28 6f 70 65 72 61 74 69  ueEquals(operati
15f90 6f 6e 2e 76 61 6c 75 65 2c 20 76 61 6c 75 65 29  on.value, value)
15fa0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
15fb0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
15fc0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
15fd0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
15fe0 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  rue;..          
15ff0 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
16000 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
16010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16020 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
16050 20 20 20 20 20 20 70 75 62 6c 69 63 20 6f 76 65        public ove
16060 72 72 69 64 65 20 69 6e 74 20 47 65 74 48 61 73  rride int GetHas
16070 68 43 6f 64 65 28 29 0d 0a 20 20 20 20 20 20 20  hCode()..       
16080 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
16090 20 20 20 20 20 20 20 20 43 68 65 63 6b 44 69 73          CheckDis
160a0 70 6f 73 65 64 28 29 3b 0d 0a 0d 0a 20 20 20 20  posed();....    
160b0 20 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20              int 
160c0 72 65 73 75 6c 74 20 3d 20 30 3b 0d 0a 0d 0a 20  result = 0;.... 
160d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
160e0 66 20 28 6d 65 74 68 6f 64 4e 61 6d 65 20 21 3d  f (methodName !=
160f0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
16100 20 20 20 20 20 20 20 20 20 20 20 20 72 65 73 75              resu
16110 6c 74 20 5e 3d 20 6d 65 74 68 6f 64 4e 61 6d 65  lt ^= methodName
16120 2e 47 65 74 48 61 73 68 43 6f 64 65 28 29 3b 0d  .GetHashCode();.
16130 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16140 20 20 20 72 65 73 75 6c 74 20 5e 3d 20 4d 6f 63     result ^= Moc
16150 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 47 65 74  kRegistryKey.Get
16160 48 61 73 68 43 6f 64 65 28 6b 65 79 29 3b 0d 0a  HashCode(key);..
16170 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
16180 20 20 69 66 20 28 73 75 62 4b 65 79 4e 61 6d 65    if (subKeyName
16190 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   != null)..     
161a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
161b0 65 73 75 6c 74 20 5e 3d 20 73 75 62 4b 65 79 4e  esult ^= subKeyN
161c0 61 6d 65 2e 47 65 74 48 61 73 68 43 6f 64 65 28  ame.GetHashCode(
161d0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
161e0 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 4e        if (valueN
161f0 61 6d 65 20 21 3d 20 6e 75 6c 6c 29 0d 0a 20 20  ame != null)..  
16200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16210 20 20 72 65 73 75 6c 74 20 5e 3d 20 76 61 6c 75    result ^= valu
16220 65 4e 61 6d 65 2e 47 65 74 48 61 73 68 43 6f 64  eName.GetHashCod
16230 65 28 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  e();....        
16240 20 20 20 20 20 20 20 20 72 65 73 75 6c 74 20 5e          result ^
16250 3d 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 4b 65  = MockRegistryKe
16260 79 2e 56 61 6c 75 65 48 61 73 68 43 6f 64 65 28  y.ValueHashCode(
16270 76 61 6c 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  value);....     
16280 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
16290 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20 20 20 20  n result;..     
162a0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
162b0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
162c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
162f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
16300 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
16310 63 20 6f 76 65 72 72 69 64 65 20 73 74 72 69 6e  c override strin
16320 67 20 54 6f 53 74 72 69 6e 67 28 29 0d 0a 20 20  g ToString()..  
16330 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16340 20 20 20 20 20 20 20 20 20 20 20 20 20 43 68 65               Che
16350 63 6b 44 69 73 70 6f 73 65 64 28 29 3b 0d 0a 0d  ckDisposed();...
16360 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16370 20 53 74 72 69 6e 67 42 75 69 6c 64 65 72 20 62   StringBuilder b
16380 75 69 6c 64 65 72 20 3d 20 6e 65 77 20 53 74 72  uilder = new Str
16390 69 6e 67 42 75 69 6c 64 65 72 28 29 3b 0d 0a 0d  ingBuilder();...
163a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
163b0 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28   builder.Append(
163c0 46 6f 72 44 69 73 70 6c 61 79 28 6d 65 74 68 6f  ForDisplay(metho
163d0 64 4e 61 6d 65 29 29 3b 0d 0a 20 20 20 20 20 20  dName));..      
163e0 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64 65            builde
163f0 72 2e 41 70 70 65 6e 64 28 46 69 65 6c 64 44 65  r.Append(FieldDe
16400 6c 69 6d 69 74 65 72 29 3b 0d 0a 20 20 20 20 20  limiter);..     
16410 20 20 20 20 20 20 20 20 20 20 20 62 75 69 6c 64             build
16420 65 72 2e 41 70 70 65 6e 64 28 46 6f 72 44 69 73  er.Append(ForDis
16430 70 6c 61 79 28 6b 65 79 29 29 3b 0d 0a 20 20 20  play(key));..   
16440 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75 69               bui
16450 6c 64 65 72 2e 41 70 70 65 6e 64 28 46 69 65 6c  lder.Append(Fiel
16460 64 44 65 6c 69 6d 69 74 65 72 29 3b 0d 0a 20 20  dDelimiter);..  
16470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 75                bu
16480 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 46 6f 72  ilder.Append(For
16490 44 69 73 70 6c 61 79 28 73 75 62 4b 65 79 4e 61  Display(subKeyNa
164a0 6d 65 29 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  me));..         
164b0 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e 41         builder.A
164c0 70 70 65 6e 64 28 46 69 65 6c 64 44 65 6c 69 6d  ppend(FieldDelim
164d0 69 74 65 72 29 3b 0d 0a 20 20 20 20 20 20 20 20  iter);..        
164e0 20 20 20 20 20 20 20 20 62 75 69 6c 64 65 72 2e          builder.
164f0 41 70 70 65 6e 64 28 46 6f 72 44 69 73 70 6c 61  Append(ForDispla
16500 79 28 76 61 6c 75 65 4e 61 6d 65 29 29 3b 0d 0a  y(valueName));..
16510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16520 62 75 69 6c 64 65 72 2e 41 70 70 65 6e 64 28 46  builder.Append(F
16530 69 65 6c 64 44 65 6c 69 6d 69 74 65 72 29 3b 0d  ieldDelimiter);.
16540 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
16550 20 20 20 62 75 69 6c 64 65 72 2e 41 70 70 65 6e     builder.Appen
16560 64 28 46 6f 72 44 69 73 70 6c 61 79 28 4d 6f 63  d(ForDisplay(Moc
16570 6b 52 65 67 69 73 74 72 79 4b 65 79 2e 56 61 6c  kRegistryKey.Val
16580 75 65 54 6f 53 74 72 69 6e 67 28 0d 0a 20 20 20  ueToString(..   
16590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
165a0 20 76 61 6c 75 65 2c 20 4c 69 73 74 45 6c 65 6d   value, ListElem
165b0 65 6e 74 44 65 6c 69 6d 69 74 65 72 2c 20 44 69  entDelimiter, Di
165c0 73 70 6c 61 79 4e 75 6c 6c 29 29 29 3b 0d 0a 0d  splayNull)));...
165d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
165e0 20 72 65 74 75 72 6e 20 62 75 69 6c 64 65 72 2e   return builder.
165f0 54 6f 53 74 72 69 6e 67 28 29 3b 0d 0a 20 20 20  ToString();..   
16600 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
16610 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
16620 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  on....          
16630 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
16640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16670 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
16680 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49 44 69       #region IDi
16690 73 70 6f 73 61 62 6c 65 20 22 50 61 74 74 65 72  sposable "Patter
166a0 6e 22 20 4d 65 6d 62 65 72 73 0d 0a 20 20 20 20  n" Members..    
166b0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
166c0 62 6f 6f 6c 20 64 69 73 70 6f 73 65 64 3b 0d 0a  bool disposed;..
166d0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
166e0 61 74 65 20 76 6f 69 64 20 43 68 65 63 6b 44 69  ate void CheckDi
166f0 73 70 6f 73 65 64 28 29 20 2f 2a 20 74 68 72 6f  sposed() /* thro
16700 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20  w */..          
16710 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
16720 20 20 20 20 20 69 66 20 28 21 64 69 73 70 6f 73       if (!dispos
16730 65 64 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ed)..           
16740 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 3b           return;
16750 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
16760 20 20 20 20 74 68 72 6f 77 20 6e 65 77 20 4f 62      throw new Ob
16770 6a 65 63 74 44 69 73 70 6f 73 65 64 45 78 63 65  jectDisposedExce
16780 70 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20  ption(..        
16790 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
167a0 6f 66 28 52 65 67 69 73 74 72 79 4f 70 65 72 61  of(RegistryOpera
167b0 74 69 6f 6e 29 2e 4e 61 6d 65 29 3b 0d 0a 20 20  tion).Name);..  
167c0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
167d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
167e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
167f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16800 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16810 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
16820 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
16830 69 76 61 74 65 20 2f 2a 20 70 72 6f 74 65 63 74  ivate /* protect
16840 65 64 20 76 69 72 74 75 61 6c 20 2a 2f 20 76 6f  ed virtual */ vo
16850 69 64 20 44 69 73 70 6f 73 65 28 0d 0a 20 20 20  id Dispose(..   
16860 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
16870 6c 20 64 69 73 70 6f 73 69 6e 67 0d 0a 20 20 20  l disposing..   
16880 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
16890 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
168a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
168b0 66 20 28 21 64 69 73 70 6f 73 65 64 29 0d 0a 20  f (!disposed).. 
168c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
168d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
168e0 20 20 20 20 20 20 69 66 20 28 64 69 73 70 6f 73        if (dispos
168f0 69 6e 67 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ing)..          
16900 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
16910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16920 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
16930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16940 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 20 20 20 20 20  /////////..     
16950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16960 20 20 20 2f 2f 20 64 69 73 70 6f 73 65 20 6d 61     // dispose ma
16970 6e 61 67 65 64 20 72 65 73 6f 75 72 63 65 73 20  naged resources 
16980 68 65 72 65 2e 2e 2e 0d 0a 20 20 20 20 20 20 20  here.....       
16990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
169a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
169b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
169c0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
169d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
169e0 20 69 66 20 28 6b 65 79 20 21 3d 20 6e 75 6c 6c   if (key != null
169f0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
16a00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
16a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16a20 20 20 20 20 20 20 20 20 20 20 6b 65 79 2e 43 6c            key.Cl
16a30 6f 73 65 28 29 3b 0d 0a 20 20 20 20 20 20 20 20  ose();..        
16a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16a50 20 20 20 20 6b 65 79 20 3d 20 6e 75 6c 6c 3b 0d      key = null;.
16a60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16a70 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
16a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16a90 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
16aa0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
16ab0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
16ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16ae0 20 20 20 20 20 2f 2f 20 72 65 6c 65 61 73 65 20       // release 
16af0 75 6e 6d 61 6e 61 67 65 64 20 72 65 73 6f 75 72  unmanaged resour
16b00 63 65 73 20 68 65 72 65 2e 2e 2e 0d 0a 20 20 20  ces here.....   
16b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16b20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
16b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16b40 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
16b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
16b60 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
16b70 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20         // NOTE: 
16b80 54 68 69 73 20 6f 62 6a 65 63 74 20 69 73 20 6e  This object is n
16b90 6f 77 20 64 69 73 70 6f 73 65 64 2e 0d 0a 20 20  ow disposed...  
16ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
16bb0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
16bc0 20 20 20 20 20 20 20 20 20 20 64 69 73 70 6f 73            dispos
16bd0 65 64 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  ed = true;..    
16be0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
16bf0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
16c00 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
16c10 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
16c20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
16c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16c60 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
16c70 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 49         #region I
16c80 44 69 73 70 6f 73 61 62 6c 65 20 4d 65 6d 62 65  Disposable Membe
16c90 72 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  rs..            
16ca0 70 75 62 6c 69 63 20 76 6f 69 64 20 44 69 73 70  public void Disp
16cb0 6f 73 65 28 29 0d 0a 20 20 20 20 20 20 20 20 20  ose()..         
16cc0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
16cd0 20 20 20 20 20 20 44 69 73 70 6f 73 65 28 74 72        Dispose(tr
16ce0 75 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ue);..          
16cf0 20 20 20 20 20 20 47 43 2e 53 75 70 70 72 65 73        GC.Suppres
16d00 73 46 69 6e 61 6c 69 7a 65 28 74 68 69 73 29 3b  sFinalize(this);
16d10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
16d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
16d30 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
16d40 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
16d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16d60 2f 2f 2f 2f 2f 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 2f 0d 0a 0d 0a 20 20  //////////....  
16d90 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69 6f            #regio
16da0 6e 20 44 65 73 74 72 75 63 74 6f 72 0d 0a 20 20  n Destructor..  
16db0 20 20 20 20 20 20 20 20 20 20 7e 52 65 67 69 73            ~Regis
16dc0 74 72 79 4f 70 65 72 61 74 69 6f 6e 28 29 0d 0a  tryOperation()..
16dd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
16de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 44                 D
16df0 69 73 70 6f 73 65 28 66 61 6c 73 65 29 3b 0d 0a  ispose(false);..
16e00 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
16e10 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72             #endr
16e20 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d  egion..        }
16e30 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
16e40 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
16e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16e90 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
16ea0 20 20 20 23 72 65 67 69 6f 6e 20 53 74 72 69 6e     #region Strin
16eb0 67 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20 20 20  gList Class..   
16ec0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65 61       private sea
16ed0 6c 65 64 20 63 6c 61 73 73 20 53 74 72 69 6e 67  led class String
16ee0 4c 69 73 74 20 3a 20 4c 69 73 74 3c 73 74 72 69  List : List<stri
16ef0 6e 67 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a  ng>..        {..
16f00 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
16f10 69 63 20 53 74 72 69 6e 67 4c 69 73 74 28 29 0d  ic StringList().
16f20 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
16f30 20 3a 20 62 61 73 65 28 29 0d 0a 20 20 20 20 20   : base()..     
16f40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
16f50 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
16f60 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
16f70 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
16f80 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
16f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
16fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
16fd0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
16fe0 20 53 74 72 69 6e 67 4c 69 73 74 28 49 45 6e 75   StringList(IEnu
16ff0 6d 65 72 61 62 6c 65 3c 73 74 72 69 6e 67 3e 20  merable<string> 
17000 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d 0a 20 20 20  collection)..   
17010 20 20 20 20 20 20 20 20 20 20 20 20 20 3a 20 62               : b
17020 61 73 65 28 63 6f 6c 6c 65 63 74 69 6f 6e 29 0d  ase(collection).
17030 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
17040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
17050 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a  // do nothing...
17060 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
17070 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
17080 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a    #endregion....
17090 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
170a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
170d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
170e0 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69  ...        #regi
170f0 6f 6e 20 53 74 72 69 6e 67 44 69 63 74 69 6f 6e  on StringDiction
17100 61 72 79 20 43 6c 61 73 73 0d 0a 20 20 20 20 20  ary Class..     
17110 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65     private seale
17120 64 20 63 6c 61 73 73 20 53 74 72 69 6e 67 44 69  d class StringDi
17130 63 74 69 6f 6e 61 72 79 20 3a 20 44 69 63 74 69  ctionary : Dicti
17140 6f 6e 61 72 79 3c 73 74 72 69 6e 67 2c 20 73 74  onary<string, st
17150 72 69 6e 67 3e 0d 0a 20 20 20 20 20 20 20 20 7b  ring>..        {
17160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
17170 62 6c 69 63 20 53 74 72 69 6e 67 44 69 63 74 69  blic StringDicti
17180 6f 6e 61 72 79 28 29 0d 0a 20 20 20 20 20 20 20  onary()..       
17190 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
171a0 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
171b0 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
171c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d      }..        }
171d0 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65  ..        #endre
171e0 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20  gion....        
171f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17230 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
17240 20 20 20 23 72 65 67 69 6f 6e 20 56 65 72 73 69     #region Versi
17250 6f 6e 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20 20  onList Class..  
17260 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 65        private se
17270 61 6c 65 64 20 63 6c 61 73 73 20 56 65 72 73 69  aled class Versi
17280 6f 6e 4c 69 73 74 20 3a 20 4c 69 73 74 3c 56 65  onList : List<Ve
17290 72 73 69 6f 6e 3e 0d 0a 20 20 20 20 20 20 20 20  rsion>..        
172a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  {..            p
172b0 75 62 6c 69 63 20 56 65 72 73 69 6f 6e 4c 69 73  ublic VersionLis
172c0 74 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t()..           
172d0 20 20 20 20 20 3a 20 62 61 73 65 28 29 0d 0a 20       : base().. 
172e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
172f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
17300 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
17310 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
17320 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
17330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
17370 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
17380 62 6c 69 63 20 56 65 72 73 69 6f 6e 4c 69 73 74  blic VersionList
17390 28 49 45 6e 75 6d 65 72 61 62 6c 65 3c 56 65 72  (IEnumerable<Ver
173a0 73 69 6f 6e 3e 20 63 6f 6c 6c 65 63 74 69 6f 6e  sion> collection
173b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
173c0 20 20 20 3a 20 62 61 73 65 28 63 6f 6c 6c 65 63     : base(collec
173d0 74 69 6f 6e 29 0d 0a 20 20 20 20 20 20 20 20 20  tion)..         
173e0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
173f0 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68        // do noth
17400 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ing...          
17410 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a    }..        }..
17420 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
17430 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
17440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17480 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
17490 20 23 72 65 67 69 6f 6e 20 56 65 72 73 69 6f 6e   #region Version
174a0 4d 61 70 20 43 6c 61 73 73 0d 0a 20 20 20 20 20  Map Class..     
174b0 20 20 20 70 72 69 76 61 74 65 20 73 65 61 6c 65     private seale
174c0 64 20 63 6c 61 73 73 20 56 65 72 73 69 6f 6e 4d  d class VersionM
174d0 61 70 20 3a 20 44 69 63 74 69 6f 6e 61 72 79 3c  ap : Dictionary<
174e0 73 74 72 69 6e 67 2c 20 56 65 72 73 69 6f 6e 4c  string, VersionL
174f0 69 73 74 3e 0d 0a 20 20 20 20 20 20 20 20 7b 0d  ist>..        {.
17500 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
17510 6c 69 63 20 56 65 72 73 69 6f 6e 4d 61 70 28 29  lic VersionMap()
17520 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
17530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17540 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d   // do nothing..
17550 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
17560 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
17570 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
17580 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
17590 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
175a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
175b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
175c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
175d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67  ....        #reg
175e0 69 6f 6e 20 50 61 63 6b 61 67 65 20 43 6c 61 73  ion Package Clas
175f0 73 0d 0a 20 20 20 20 20 20 20 20 69 6e 74 65 72  s..        inter
17600 6e 61 6c 20 73 65 61 6c 65 64 20 63 6c 61 73 73  nal sealed class
17610 20 50 61 63 6b 61 67 65 0d 0a 20 20 20 20 20 20   Package..      
17620 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
17630 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63 20   #region Public 
17640 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
17650 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
17660 20 50 61 63 6b 61 67 65 28 29 0d 0a 20 20 20 20   Package()..    
17670 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
17680 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f             // do
17690 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20   nothing...     
176a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
176b0 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
176c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
176d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
176f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17710 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
17720 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
17730 63 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20  c Properties..  
17740 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
17750 65 20 73 74 72 69 6e 67 20 70 72 6f 76 69 64 65  e string provide
17760 72 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65 3b 0d  rInvariantName;.
17770 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
17780 6c 69 63 20 73 74 72 69 6e 67 20 50 72 6f 76 69  lic string Provi
17790 64 65 72 49 6e 76 61 72 69 61 6e 74 4e 61 6d 65  derInvariantName
177a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
177b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
177c0 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 70 72   get { return pr
177d0 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e  oviderInvariantN
177e0 61 6d 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  ame; }..        
177f0 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 70 72          set { pr
17800 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74 4e  oviderInvariantN
17810 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  ame = value; }..
17820 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
17830 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
17840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17860 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17870 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17880 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
17890 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 66  private string f
178a0 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 3b 0d  actoryTypeName;.
178b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
178c0 6c 69 63 20 73 74 72 69 6e 67 20 46 61 63 74 6f  lic string Facto
178d0 72 79 54 79 70 65 4e 61 6d 65 0d 0a 20 20 20 20  ryTypeName..    
178e0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
178f0 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
17900 20 72 65 74 75 72 6e 20 66 61 63 74 6f 72 79 54   return factoryT
17910 79 70 65 4e 61 6d 65 3b 20 7d 0d 0a 20 20 20 20  ypeName; }..    
17920 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
17930 7b 20 66 61 63 74 6f 72 79 54 79 70 65 4e 61 6d  { factoryTypeNam
17940 65 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  e = value; }..  
17950 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
17960 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
17970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
179a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
179b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
179c0 69 76 61 74 65 20 41 73 73 65 6d 62 6c 79 4e 61  ivate AssemblyNa
179d0 6d 65 20 70 72 6f 76 69 64 65 72 41 73 73 65 6d  me providerAssem
179e0 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20  blyName;..      
179f0 20 20 20 20 20 20 70 75 62 6c 69 63 20 41 73 73        public Ass
17a00 65 6d 62 6c 79 4e 61 6d 65 20 50 72 6f 76 69 64  emblyName Provid
17a10 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 0d 0a  erAssemblyName..
17a20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
17a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
17a40 65 74 20 7b 20 72 65 74 75 72 6e 20 70 72 6f 76  et { return prov
17a50 69 64 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65  iderAssemblyName
17a60 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
17a70 20 20 20 20 20 73 65 74 20 7b 20 70 72 6f 76 69       set { provi
17a80 64 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20  derAssemblyName 
17a90 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
17aa0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
17ab0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
17ac0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
17b00 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
17b10 61 74 65 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65  ate AssemblyName
17b20 20 64 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c   designerAssembl
17b30 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  yName;..        
17b40 20 20 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d      public Assem
17b50 62 6c 79 4e 61 6d 65 20 44 65 73 69 67 6e 65 72  blyName Designer
17b60 41 73 73 65 6d 62 6c 79 4e 61 6d 65 0d 0a 20 20  AssemblyName..  
17b70 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
17b80 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
17b90 20 7b 20 72 65 74 75 72 6e 20 64 65 73 69 67 6e   { return design
17ba0 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 20  erAssemblyName; 
17bb0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
17bc0 20 20 20 73 65 74 20 7b 20 64 65 73 69 67 6e 65     set { designe
17bd0 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20  rAssemblyName = 
17be0 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20  value; }..      
17bf0 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
17c00 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
17c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17c40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
17c50 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
17c60 65 20 62 6f 6f 6c 20 67 6c 6f 62 61 6c 41 73 73  e bool globalAss
17c70 65 6d 62 6c 79 43 61 63 68 65 3b 0d 0a 20 20 20  emblyCache;..   
17c80 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
17c90 62 6f 6f 6c 20 47 6c 6f 62 61 6c 41 73 73 65 6d  bool GlobalAssem
17ca0 62 6c 79 43 61 63 68 65 0d 0a 20 20 20 20 20 20  blyCache..      
17cb0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
17cc0 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
17cd0 65 74 75 72 6e 20 67 6c 6f 62 61 6c 41 73 73 65  eturn globalAsse
17ce0 6d 62 6c 79 43 61 63 68 65 3b 20 7d 0d 0a 20 20  mblyCache; }..  
17cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
17d00 74 20 7b 20 67 6c 6f 62 61 6c 41 73 73 65 6d 62  t { globalAssemb
17d10 6c 79 43 61 63 68 65 20 3d 20 76 61 6c 75 65 3b  lyCache = value;
17d20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
17d30 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
17d40 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
17d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17d80 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
17d90 20 20 20 20 70 72 69 76 61 74 65 20 47 75 69 64      private Guid
17da0 20 70 61 63 6b 61 67 65 49 64 3b 0d 0a 20 20 20   packageId;..   
17db0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
17dc0 47 75 69 64 20 50 61 63 6b 61 67 65 49 64 0d 0a  Guid PackageId..
17dd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
17de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
17df0 65 74 20 7b 20 72 65 74 75 72 6e 20 70 61 63 6b  et { return pack
17e00 61 67 65 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20  ageId; }..      
17e10 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
17e20 70 61 63 6b 61 67 65 49 64 20 3d 20 76 61 6c 75  packageId = valu
17e30 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
17e40 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
17e50 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
17e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17e90 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
17ea0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 47 75        private Gu
17eb0 69 64 20 73 65 72 76 69 63 65 49 64 3b 0d 0a 20  id serviceId;.. 
17ec0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
17ed0 63 20 47 75 69 64 20 53 65 72 76 69 63 65 49 64  c Guid ServiceId
17ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
17ef0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
17f00 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 73 65   get { return se
17f10 72 76 69 63 65 49 64 3b 20 7d 0d 0a 20 20 20 20  rviceId; }..    
17f20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
17f30 7b 20 73 65 72 76 69 63 65 49 64 20 3d 20 76 61  { serviceId = va
17f40 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
17f50 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
17f60 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
17f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
17f80 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20  ////////....    
17fb0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
17fc0 47 75 69 64 20 64 61 74 61 53 6f 75 72 63 65 49  Guid dataSourceI
17fd0 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d;..            
17fe0 70 75 62 6c 69 63 20 47 75 69 64 20 44 61 74 61  public Guid Data
17ff0 53 6f 75 72 63 65 49 64 0d 0a 20 20 20 20 20 20  SourceId..      
18000 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
18010 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
18020 65 74 75 72 6e 20 64 61 74 61 53 6f 75 72 63 65  eturn dataSource
18030 49 64 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  Id; }..         
18040 20 20 20 20 20 20 20 73 65 74 20 7b 20 64 61 74         set { dat
18050 61 53 6f 75 72 63 65 49 64 20 3d 20 76 61 6c 75  aSourceId = valu
18060 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
18070 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
18080 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
18090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
180c0 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
180d0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 47 75        private Gu
180e0 69 64 20 64 61 74 61 50 72 6f 76 69 64 65 72 49  id dataProviderI
180f0 64 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d;..            
18100 70 75 62 6c 69 63 20 47 75 69 64 20 44 61 74 61  public Guid Data
18110 50 72 6f 76 69 64 65 72 49 64 0d 0a 20 20 20 20  ProviderId..    
18120 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
18130 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b             get {
18140 20 72 65 74 75 72 6e 20 64 61 74 61 50 72 6f 76   return dataProv
18150 69 64 65 72 49 64 3b 20 7d 0d 0a 20 20 20 20 20  iderId; }..     
18160 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
18170 20 64 61 74 61 50 72 6f 76 69 64 65 72 49 64 20   dataProviderId 
18180 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20  = value; }..    
18190 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
181a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
181b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
181e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
181f0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
18200 61 74 65 20 47 75 69 64 20 61 64 6f 4e 65 74 54  ate Guid adoNetT
18210 65 63 68 6e 6f 6c 6f 67 79 49 64 3b 0d 0a 20 20  echnologyId;..  
18220 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
18230 20 47 75 69 64 20 41 64 6f 4e 65 74 54 65 63 68   Guid AdoNetTech
18240 6e 6f 6c 6f 67 79 49 64 0d 0a 20 20 20 20 20 20  nologyId..      
18250 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
18260 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72           get { r
18270 65 74 75 72 6e 20 61 64 6f 4e 65 74 54 65 63 68  eturn adoNetTech
18280 6e 6f 6c 6f 67 79 49 64 3b 20 7d 0d 0a 20 20 20  nologyId; }..   
18290 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
182a0 20 7b 20 61 64 6f 4e 65 74 54 65 63 68 6e 6f 6c   { adoNetTechnol
182b0 6f 67 79 49 64 20 3d 20 76 61 6c 75 65 3b 20 7d  ogyId = value; }
182c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
182d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e  .            #en
182e0 64 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20  dregion..       
182f0 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64   }..        #end
18300 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20  region....      
18310 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
18320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18350 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
18360 20 20 20 20 20 23 72 65 67 69 6f 6e 20 43 6f 6e       #region Con
18370 66 69 67 75 72 61 74 69 6f 6e 20 43 6c 61 73 73  figuration Class
18380 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
18390 65 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 43  e sealed class C
183a0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 0d 0a 20 20  onfiguration..  
183b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
183c0 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69       #region Pri
183d0 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 73 0d 0a  vate Constants..
183e0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
183f0 61 74 65 20 63 6f 6e 73 74 20 63 68 61 72 20 53  ate const char S
18400 77 69 74 63 68 20 3d 20 27 2d 27 3b 0d 0a 20 20  witch = '-';..  
18410 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
18420 65 20 63 6f 6e 73 74 20 63 68 61 72 20 41 6c 74  e const char Alt
18430 53 77 69 74 63 68 20 3d 20 27 2f 27 3b 0d 0a 0d  Switch = '/';...
18440 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
18450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18490 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
184a0 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 72  private static r
184b0 65 61 64 6f 6e 6c 79 20 63 68 61 72 5b 5d 20 53  eadonly char[] S
184c0 77 69 74 63 68 43 68 61 72 73 20 3d 20 7b 0d 0a  witchChars = {..
184d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
184e0 53 77 69 74 63 68 2c 20 41 6c 74 53 77 69 74 63  Switch, AltSwitc
184f0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  h..            }
18500 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
18510 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
18520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18550 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ////....        
18560 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
18570 74 20 73 74 72 69 6e 67 20 49 6e 76 61 72 69 61  t string Invaria
18580 6e 74 4e 61 6d 65 20 3d 20 22 53 79 73 74 65 6d  ntName = "System
18590 2e 44 61 74 61 2e 53 51 4c 69 74 65 22 3b 0d 0a  .Data.SQLite";..
185a0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
185b0 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
185c0 20 45 66 36 49 6e 76 61 72 69 61 6e 74 4e 61 6d   Ef6InvariantNam
185d0 65 20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74 61  e = "System.Data
185e0 2e 53 51 4c 69 74 65 2e 45 46 36 22 3b 0d 0a 0d  .SQLite.EF6";...
185f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
18600 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
18650 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74  private const st
18660 72 69 6e 67 20 46 61 63 74 6f 72 79 54 79 70 65  ring FactoryType
18670 4e 61 6d 65 20 3d 0d 0a 20 20 20 20 20 20 20 20  Name =..        
18680 20 20 20 20 20 20 20 20 22 53 79 73 74 65 6d 2e          "System.
18690 44 61 74 61 2e 53 51 4c 69 74 65 2e 53 51 4c 69  Data.SQLite.SQLi
186a0 74 65 46 61 63 74 6f 72 79 22 3b 0d 0a 0d 0a 20  teFactory";.... 
186b0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
186c0 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
186d0 45 66 36 46 61 63 74 6f 72 79 54 79 70 65 4e 61  Ef6FactoryTypeNa
186e0 6d 65 20 3d 0d 0a 20 20 20 20 20 20 20 20 20 20  me =..          
186f0 20 20 20 20 20 20 22 53 79 73 74 65 6d 2e 44 61        "System.Da
18700 74 61 2e 53 51 4c 69 74 65 2e 45 46 36 2e 53 51  ta.SQLite.EF6.SQ
18710 4c 69 74 65 50 72 6f 76 69 64 65 72 46 61 63 74  LiteProviderFact
18720 6f 72 79 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  ory";..         
18730 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
18740 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
18750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18790 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
187a0 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
187b0 53 74 61 74 69 63 20 44 61 74 61 0d 0a 20 20 20  Static Data..   
187c0 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
187d0 20 73 74 61 74 69 63 20 41 73 73 65 6d 62 6c 79   static Assembly
187e0 20 73 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62   systemEf6Assemb
187f0 6c 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ly;..           
18800 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
18810 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
18820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
18860 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 72  ..            #r
18870 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20 44 61  egion Private Da
18880 74 61 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ta..            
18890 70 72 69 76 61 74 65 20 41 73 73 65 6d 62 6c 79  private Assembly
188a0 4e 61 6d 65 20 63 6f 72 65 41 73 73 65 6d 62 6c  Name coreAssembl
188b0 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  yName;..        
188c0 20 20 20 20 70 72 69 76 61 74 65 20 41 73 73 65      private Asse
188d0 6d 62 6c 79 4e 61 6d 65 20 6c 69 6e 71 41 73 73  mblyName linqAss
188e0 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20  emblyName;..    
188f0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
18900 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 65 66 36  AssemblyName ef6
18910 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d 0a 20  AssemblyName;.. 
18920 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
18930 74 65 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20  te AssemblyName 
18940 64 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79  designerAssembly
18950 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
18960 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
18970 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
18980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
18990 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
189c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
189d0 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
189e0 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d 0a 20 20  Constructors..  
189f0 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74            privat
18a00 65 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 28  e Configuration(
18a10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18a20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d    Assembly assem
18a30 62 6c 79 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  bly,..          
18a40 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c 6f 67        string log
18a50 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  FileName,..     
18a60 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
18a70 67 20 72 65 67 69 73 74 72 79 4c 6f 67 46 69 6c  g registryLogFil
18a80 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20  eName,..        
18a90 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
18aa0 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20  irectory,..     
18ab0 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e             strin
18ac0 67 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65 2c 0d  g coreFileName,.
18ad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18ae0 20 73 74 72 69 6e 67 20 6c 69 6e 71 46 69 6c 65   string linqFile
18af0 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
18b00 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 65 66         string ef
18b10 36 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20  6FileName,..    
18b20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
18b30 6e 67 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e  ng designerFileN
18b40 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ame,..          
18b50 20 20 20 20 20 20 73 74 72 69 6e 67 20 72 65 67        string reg
18b60 69 73 74 72 79 56 65 72 73 69 6f 6e 2c 0d 0a 20  istryVersion,.. 
18b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
18b80 74 72 69 6e 67 20 63 6f 6e 66 69 67 56 65 72 73  tring configVers
18b90 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ion,..          
18ba0 20 20 20 20 20 20 73 74 72 69 6e 67 20 76 73 56        string vsV
18bb0 65 72 73 69 6f 6e 53 75 66 66 69 78 2c 0d 0a 20  ersionSuffix,.. 
18bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
18bd0 74 72 69 6e 67 20 64 65 62 75 67 46 6f 72 6d 61  tring debugForma
18be0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
18bf0 20 20 20 20 73 74 72 69 6e 67 20 74 72 61 63 65      string trace
18c00 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
18c10 20 20 20 20 20 20 20 20 20 49 6e 73 74 61 6c 6c           Install
18c20 46 6c 61 67 73 20 69 6e 73 74 61 6c 6c 46 6c 61  Flags installFla
18c30 67 73 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  gs,..           
18c40 20 20 20 20 20 50 72 6f 76 69 64 65 72 46 6c 61       ProviderFla
18c50 67 73 20 70 72 6f 76 69 64 65 72 46 6c 61 67 73  gs providerFlags
18c60 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18c70 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
18c80 20 64 65 62 75 67 50 72 69 6f 72 69 74 79 2c 0d   debugPriority,.
18c90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18ca0 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 74   TracePriority t
18cb0 72 61 63 65 50 72 69 6f 72 69 74 79 2c 0d 0a 20  racePriority,.. 
18cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
18cd0 6f 6f 6c 20 70 65 72 55 73 65 72 2c 0d 0a 20 20  ool perUser,..  
18ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
18cf0 6f 6c 20 69 6e 73 74 61 6c 6c 2c 0d 0a 20 20 20  ol install,..   
18d00 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
18d10 6c 20 77 6f 77 36 34 2c 0d 0a 20 20 20 20 20 20  l wow64,..      
18d20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e            bool n
18d30 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 2c  oRuntimeVersion,
18d40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18d50 20 20 62 6f 6f 6c 20 6e 6f 44 65 73 6b 74 6f 70    bool noDesktop
18d60 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
18d70 20 20 20 62 6f 6f 6c 20 6e 6f 43 6f 6d 70 61 63     bool noCompac
18d80 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
18d90 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78      bool noNetFx
18da0 32 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  20,..           
18db0 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46       bool noNetF
18dc0 78 33 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  x35,..          
18dd0 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74        bool noNet
18de0 46 78 34 30 2c 0d 0a 20 20 20 20 20 20 20 20 20  Fx40,..         
18df0 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e 65         bool noNe
18e00 74 46 78 34 35 2c 0d 0a 20 20 20 20 20 20 20 20  tFx45,..        
18e10 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e 6f 4e          bool noN
18e20 65 74 46 78 34 35 31 2c 0d 0a 20 20 20 20 20 20  etFx451,..      
18e30 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 6e            bool n
18e40 6f 4e 65 74 46 78 34 35 32 2c 0d 0a 20 20 20 20  oNetFx452,..    
18e50 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
18e60 20 6e 6f 4e 65 74 46 78 34 36 2c 0d 0a 20 20 20   noNetFx46,..   
18e70 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
18e80 6c 20 6e 6f 4e 65 74 46 78 34 36 31 2c 0d 0a 20  l noNetFx461,.. 
18e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
18ea0 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 36 32 2c 0d  ool noNetFx462,.
18eb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
18ec0 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 2c   bool noNetFx47,
18ed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
18ee0 20 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 37    bool noNetFx47
18ef0 31 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  1,..            
18f00 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30      bool noVs200
18f10 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  5,..            
18f20 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 30      bool noVs200
18f30 38 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  8,..            
18f40 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31      bool noVs201
18f50 30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  0,..            
18f60 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31      bool noVs201
18f70 32 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  2,..            
18f80 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31      bool noVs201
18f90 33 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  3,..            
18fa0 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31      bool noVs201
18fb0 35 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  5,..            
18fc0 20 20 20 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31      bool noVs201
18fd0 37 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  7,..            
18fe0 20 20 20 20 62 6f 6f 6c 20 6e 6f 54 72 61 63 65      bool noTrace
18ff0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
19000 20 20 20 62 6f 6f 6c 20 6e 6f 43 6f 6e 73 6f 6c     bool noConsol
19010 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e,..            
19020 20 20 20 20 62 6f 6f 6c 20 6e 6f 4c 6f 67 2c 0d      bool noLog,.
19030 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19040 20 62 6f 6f 6c 20 74 68 72 6f 77 4f 6e 4d 69 73   bool throwOnMis
19050 73 69 6e 67 2c 0d 0a 20 20 20 20 20 20 20 20 20  sing,..         
19060 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 68 61 74         bool what
19070 49 66 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  If,..           
19080 20 20 20 20 20 62 6f 6f 6c 20 64 65 62 75 67 2c       bool debug,
19090 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
190a0 20 20 62 6f 6f 6c 20 76 65 72 62 6f 73 65 2c 0d    bool verbose,.
190b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
190c0 20 62 6f 6f 6c 20 63 6f 6e 66 69 72 6d 0d 0a 20   bool confirm.. 
190d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
190e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
190f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19100 20 74 68 69 73 2e 61 73 73 65 6d 62 6c 79 20 3d   this.assembly =
19110 20 61 73 73 65 6d 62 6c 79 3b 0d 0a 20 20 20 20   assembly;..    
19120 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
19130 2e 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20 6c  .logFileName = l
19140 6f 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  ogFileName;..   
19150 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
19160 73 2e 72 65 67 69 73 74 72 79 4c 6f 67 46 69 6c  s.registryLogFil
19170 65 4e 61 6d 65 20 3d 20 72 65 67 69 73 74 72 79  eName = registry
19180 4c 6f 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  LogFileName;..  
19190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
191a0 69 73 2e 64 69 72 65 63 74 6f 72 79 20 3d 20 64  is.directory = d
191b0 69 72 65 63 74 6f 72 79 3b 0d 0a 20 20 20 20 20  irectory;..     
191c0 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
191d0 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20 63  coreFileName = c
191e0 6f 72 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20  oreFileName;..  
191f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19200 69 73 2e 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20  is.linqFileName 
19210 3d 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d  = linqFileName;.
19220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19230 20 74 68 69 73 2e 65 66 36 46 69 6c 65 4e 61 6d   this.ef6FileNam
19240 65 20 3d 20 65 66 36 46 69 6c 65 4e 61 6d 65 3b  e = ef6FileName;
19250 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19260 20 20 74 68 69 73 2e 64 65 73 69 67 6e 65 72 46    this.designerF
19270 69 6c 65 4e 61 6d 65 20 3d 20 64 65 73 69 67 6e  ileName = design
19280 65 72 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20  erFileName;..   
19290 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
192a0 73 2e 72 65 67 69 73 74 72 79 56 65 72 73 69 6f  s.registryVersio
192b0 6e 20 3d 20 72 65 67 69 73 74 72 79 56 65 72 73  n = registryVers
192c0 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ion;..          
192d0 20 20 20 20 20 20 74 68 69 73 2e 63 6f 6e 66 69        this.confi
192e0 67 56 65 72 73 69 6f 6e 20 3d 20 63 6f 6e 66 69  gVersion = confi
192f0 67 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20  gVersion;..     
19300 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
19310 76 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78 20  vsVersionSuffix 
19320 3d 20 76 73 56 65 72 73 69 6f 6e 53 75 66 66 69  = vsVersionSuffi
19330 78 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  x;..            
19340 20 20 20 20 74 68 69 73 2e 64 65 62 75 67 46 6f      this.debugFo
19350 72 6d 61 74 20 3d 20 64 65 62 75 67 46 6f 72 6d  rmat = debugForm
19360 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at;..           
19370 20 20 20 20 20 74 68 69 73 2e 74 72 61 63 65 46       this.traceF
19380 6f 72 6d 61 74 20 3d 20 74 72 61 63 65 46 6f 72  ormat = traceFor
19390 6d 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  mat;..          
193a0 20 20 20 20 20 20 74 68 69 73 2e 69 6e 73 74 61        this.insta
193b0 6c 6c 46 6c 61 67 73 20 3d 20 69 6e 73 74 61 6c  llFlags = instal
193c0 6c 46 6c 61 67 73 3b 0d 0a 20 20 20 20 20 20 20  lFlags;..       
193d0 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 72           this.pr
193e0 6f 76 69 64 65 72 46 6c 61 67 73 20 3d 20 70 72  oviderFlags = pr
193f0 6f 76 69 64 65 72 46 6c 61 67 73 3b 0d 0a 20 20  oviderFlags;..  
19400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19410 69 73 2e 64 65 62 75 67 50 72 69 6f 72 69 74 79  is.debugPriority
19420 20 3d 20 64 65 62 75 67 50 72 69 6f 72 69 74 79   = debugPriority
19430 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
19440 20 20 20 74 68 69 73 2e 74 72 61 63 65 50 72 69     this.tracePri
19450 6f 72 69 74 79 20 3d 20 74 72 61 63 65 50 72 69  ority = tracePri
19460 6f 72 69 74 79 3b 0d 0a 20 20 20 20 20 20 20 20  ority;..        
19470 20 20 20 20 20 20 20 20 74 68 69 73 2e 70 65 72          this.per
19480 55 73 65 72 20 3d 20 70 65 72 55 73 65 72 3b 0d  User = perUser;.
19490 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
194a0 20 74 68 69 73 2e 69 6e 73 74 61 6c 6c 20 3d 20   this.install = 
194b0 69 6e 73 74 61 6c 6c 3b 0d 0a 20 20 20 20 20 20  install;..      
194c0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 77            this.w
194d0 6f 77 36 34 20 3d 20 77 6f 77 36 34 3b 0d 0a 20  ow64 = wow64;.. 
194e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
194f0 68 69 73 2e 6e 6f 52 75 6e 74 69 6d 65 56 65 72  his.noRuntimeVer
19500 73 69 6f 6e 20 3d 20 6e 6f 52 75 6e 74 69 6d 65  sion = noRuntime
19510 56 65 72 73 69 6f 6e 3b 0d 0a 20 20 20 20 20 20  Version;..      
19520 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e            this.n
19530 6f 44 65 73 6b 74 6f 70 20 3d 20 6e 6f 44 65 73  oDesktop = noDes
19540 6b 74 6f 70 3b 0d 0a 20 20 20 20 20 20 20 20 20  ktop;..         
19550 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 43 6f         this.noCo
19560 6d 70 61 63 74 20 3d 20 6e 6f 43 6f 6d 70 61 63  mpact = noCompac
19570 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
19580 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78      this.noNetFx
19590 32 30 20 3d 20 6e 6f 4e 65 74 46 78 32 30 3b 0d  20 = noNetFx20;.
195a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
195b0 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 33 35 20   this.noNetFx35 
195c0 3d 20 6e 6f 4e 65 74 46 78 33 35 3b 0d 0a 20 20  = noNetFx35;..  
195d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
195e0 69 73 2e 6e 6f 4e 65 74 46 78 34 30 20 3d 20 6e  is.noNetFx40 = n
195f0 6f 4e 65 74 46 78 34 30 3b 0d 0a 20 20 20 20 20  oNetFx40;..     
19600 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e             this.
19610 6e 6f 4e 65 74 46 78 34 35 20 3d 20 6e 6f 4e 65  noNetFx45 = noNe
19620 74 46 78 34 35 3b 0d 0a 20 20 20 20 20 20 20 20  tFx45;..        
19630 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e          this.noN
19640 65 74 46 78 34 35 31 20 3d 20 6e 6f 4e 65 74 46  etFx451 = noNetF
19650 78 34 35 31 3b 0d 0a 20 20 20 20 20 20 20 20 20  x451;..         
19660 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65         this.noNe
19670 74 46 78 34 35 32 20 3d 20 6e 6f 4e 65 74 46 78  tFx452 = noNetFx
19680 34 35 32 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  452;..          
19690 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74        this.noNet
196a0 46 78 34 36 20 3d 20 6e 6f 4e 65 74 46 78 34 36  Fx46 = noNetFx46
196b0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
196c0 20 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34     this.noNetFx4
196d0 36 31 20 3d 20 6e 6f 4e 65 74 46 78 34 36 31 3b  61 = noNetFx461;
196e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
196f0 20 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34 36    this.noNetFx46
19700 32 20 3d 20 6e 6f 4e 65 74 46 78 34 36 32 3b 0d  2 = noNetFx462;.
19710 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
19720 20 74 68 69 73 2e 6e 6f 4e 65 74 46 78 34 37 20   this.noNetFx47 
19730 3d 20 6e 6f 4e 65 74 46 78 34 37 3b 0d 0a 20 20  = noNetFx47;..  
19740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19750 69 73 2e 6e 6f 4e 65 74 46 78 34 37 31 20 3d 20  is.noNetFx471 = 
19760 6e 6f 4e 65 74 46 78 34 37 31 3b 0d 0a 20 20 20  noNetFx471;..   
19770 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69               thi
19780 73 2e 6e 6f 56 73 32 30 30 35 20 3d 20 6e 6f 56  s.noVs2005 = noV
19790 73 32 30 30 35 3b 0d 0a 20 20 20 20 20 20 20 20  s2005;..        
197a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f 56          this.noV
197b0 73 32 30 30 38 20 3d 20 6e 6f 56 73 32 30 30 38  s2008 = noVs2008
197c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
197d0 20 20 20 74 68 69 73 2e 6e 6f 56 73 32 30 31 30     this.noVs2010
197e0 20 3d 20 6e 6f 56 73 32 30 31 30 3b 0d 0a 20 20   = noVs2010;..  
197f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 68                th
19800 69 73 2e 6e 6f 56 73 32 30 31 32 20 3d 20 6e 6f  is.noVs2012 = no
19810 56 73 32 30 31 32 3b 0d 0a 20 20 20 20 20 20 20  Vs2012;..       
19820 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e 6f           this.no
19830 56 73 32 30 31 33 20 3d 20 6e 6f 56 73 32 30 31  Vs2013 = noVs201
19840 33 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  3;..            
19850 20 20 20 20 74 68 69 73 2e 6e 6f 56 73 32 30 31      this.noVs201
19860 35 20 3d 20 6e 6f 56 73 32 30 31 35 3b 0d 0a 20  5 = noVs2015;.. 
19870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
19880 68 69 73 2e 6e 6f 56 73 32 30 31 37 20 3d 20 6e  his.noVs2017 = n
19890 6f 56 73 32 30 31 37 3b 0d 0a 20 20 20 20 20 20  oVs2017;..      
198a0 20 20 20 20 20 20 20 20 20 20 74 68 69 73 2e 6e            this.n
198b0 6f 54 72 61 63 65 20 3d 20 6e 6f 54 72 61 63 65  oTrace = noTrace
198c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
198d0 20 20 20 74 68 69 73 2e 6e 6f 43 6f 6e 73 6f 6c     this.noConsol
198e0 65 20 3d 20 6e 6f 43 6f 6e 73 6f 6c 65 3b 0d 0a  e = noConsole;..
198f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19900 74 68 69 73 2e 6e 6f 4c 6f 67 20 3d 20 6e 6f 4c  this.noLog = noL
19910 6f 67 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  og;..           
19920 20 20 20 20 20 74 68 69 73 2e 74 68 72 6f 77 4f       this.throwO
19930 6e 4d 69 73 73 69 6e 67 20 3d 20 74 68 72 6f 77  nMissing = throw
19940 4f 6e 4d 69 73 73 69 6e 67 3b 0d 0a 20 20 20 20  OnMissing;..    
19950 20 20 20 20 20 20 20 20 20 20 20 20 74 68 69 73              this
19960 2e 77 68 61 74 49 66 20 3d 20 77 68 61 74 49 66  .whatIf = whatIf
19970 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
19980 20 20 20 74 68 69 73 2e 64 65 62 75 67 20 3d 20     this.debug = 
19990 64 65 62 75 67 3b 0d 0a 20 20 20 20 20 20 20 20  debug;..        
199a0 20 20 20 20 20 20 20 20 74 68 69 73 2e 76 65 72          this.ver
199b0 62 6f 73 65 20 3d 20 76 65 72 62 6f 73 65 3b 0d  bose = verbose;.
199c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
199d0 20 74 68 69 73 2e 63 6f 6e 66 69 72 6d 20 3d 20   this.confirm = 
199e0 63 6f 6e 66 69 72 6d 3b 0d 0a 20 20 20 20 20 20  confirm;..      
199f0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
19a00 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
19a10 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
19a20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19a60 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
19a70 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74    #region Privat
19a80 65 20 53 74 61 74 69 63 20 4d 65 74 68 6f 64 73  e Static Methods
19a90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
19aa0 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f 69  ivate static voi
19ab0 64 20 47 65 74 44 65 66 61 75 6c 74 46 69 6c 65  d GetDefaultFile
19ac0 4e 61 6d 65 73 28 0d 0a 20 20 20 20 20 20 20 20  Names(..        
19ad0 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72 69          ref stri
19ae0 6e 67 20 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20  ng directory,.. 
19af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
19b00 65 66 20 73 74 72 69 6e 67 20 63 6f 72 65 46 69  ef string coreFi
19b10 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  leName,..       
19b20 20 20 20 20 20 20 20 20 20 72 65 66 20 73 74 72           ref str
19b30 69 6e 67 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65  ing linqFileName
19b40 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
19b50 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65 66     ref string ef
19b60 36 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20  6FileName,..    
19b70 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
19b80 73 74 72 69 6e 67 20 64 65 73 69 67 6e 65 72 46  string designerF
19b90 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ileName..       
19ba0 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
19bb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
19bc0 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 74             if (t
19bd0 68 69 73 41 73 73 65 6d 62 6c 79 20 3d 3d 20 6e  hisAssembly == n
19be0 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
19bf0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
19c00 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
19c10 20 20 20 20 20 64 69 72 65 63 74 6f 72 79 20 3d       directory =
19c20 20 50 61 74 68 2e 47 65 74 44 69 72 65 63 74 6f   Path.GetDirecto
19c30 72 79 4e 61 6d 65 28 74 68 69 73 41 73 73 65 6d  ryName(thisAssem
19c40 62 6c 79 2e 4c 6f 63 61 74 69 6f 6e 29 3b 0d 0a  bly.Location);..
19c50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
19c60 20 20 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e    if (String.IsN
19c70 75 6c 6c 4f 72 45 6d 70 74 79 28 64 69 72 65 63  ullOrEmpty(direc
19c80 74 6f 72 79 29 29 0d 0a 20 20 20 20 20 20 20 20  tory))..        
19c90 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
19ca0 72 6e 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rn;....         
19cb0 20 20 20 20 20 20 20 63 6f 72 65 46 69 6c 65 4e         coreFileN
19cc0 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69  ame = Path.Combi
19cd0 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20  ne(directory,.. 
19ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19cf0 20 20 20 49 6e 73 74 61 6c 6c 65 72 2e 43 6f 72     Installer.Cor
19d00 65 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20  eFileName);.... 
19d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
19d20 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61  inqFileName = Pa
19d30 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72 65 63  th.Combine(direc
19d40 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20 20 20  tory,..         
19d50 20 20 20 20 20 20 20 20 20 20 20 49 6e 73 74 61             Insta
19d60 6c 6c 65 72 2e 4c 69 6e 71 46 69 6c 65 4e 61 6d  ller.LinqFileNam
19d70 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
19d80 20 20 20 20 20 20 20 65 66 36 46 69 6c 65 4e 61         ef6FileNa
19d90 6d 65 20 3d 20 50 61 74 68 2e 43 6f 6d 62 69 6e  me = Path.Combin
19da0 65 28 64 69 72 65 63 74 6f 72 79 2c 0d 0a 20 20  e(directory,..  
19db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19dc0 20 20 49 6e 73 74 61 6c 6c 65 72 2e 45 66 36 46    Installer.Ef6F
19dd0 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20  ileName);....   
19de0 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73               des
19df0 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20  ignerFileName = 
19e00 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 64 69 72  Path.Combine(dir
19e10 65 63 74 6f 72 79 2c 0d 0a 20 20 20 20 20 20 20  ectory,..       
19e20 20 20 20 20 20 20 20 20 20 20 20 20 20 49 6e 73               Ins
19e30 74 61 6c 6c 65 72 2e 44 65 73 69 67 6e 65 72 46  taller.DesignerF
19e40 69 6c 65 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20  ileName);..     
19e50 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
19e60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
19e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
19ea0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
19eb0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
19ec0 74 65 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 43  te static bool C
19ed0 68 65 63 6b 4f 70 74 69 6f 6e 28 0d 0a 20 20 20  heckOption(..   
19ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
19ef0 20 73 74 72 69 6e 67 20 61 72 67 0d 0a 20 20 20   string arg..   
19f00 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a               )..
19f10 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
19f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
19f30 74 72 69 6e 67 20 72 65 73 75 6c 74 20 3d 20 61  tring result = a
19f40 72 67 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  rg;....         
19f50 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72 69         if (!Stri
19f60 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79  ng.IsNullOrEmpty
19f70 28 72 65 73 75 6c 74 29 29 0d 0a 20 20 20 20 20  (result))..     
19f80 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
19f90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
19fa0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
19fb0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
19fc0 45 3a 20 52 65 6d 6f 76 65 20 61 6c 6c 20 6c 65  E: Remove all le
19fd0 61 64 69 6e 67 20 73 77 69 74 63 68 20 63 68 61  ading switch cha
19fe0 72 73 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  rs...           
19ff0 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1a000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a010 20 72 65 73 75 6c 74 20 3d 20 72 65 73 75 6c 74   result = result
1a020 2e 54 72 69 6d 53 74 61 72 74 28 53 77 69 74 63  .TrimStart(Switc
1a030 68 43 68 61 72 73 29 3b 0d 0a 0d 0a 20 20 20 20  hChars);....    
1a040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a050 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1a060 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
1a070 20 48 6f 77 20 6d 61 6e 79 20 63 68 61 72 73 20   How many chars 
1a080 77 65 72 65 20 72 65 6d 6f 76 65 64 3f 0d 0a 20  were removed?.. 
1a090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a0a0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1a0b0 20 20 20 20 20 20 20 20 20 20 20 69 6e 74 20 63             int c
1a0c0 6f 75 6e 74 20 3d 20 61 72 67 2e 4c 65 6e 67 74  ount = arg.Lengt
1a0d0 68 20 2d 20 72 65 73 75 6c 74 2e 4c 65 6e 67 74  h - result.Lengt
1a0e0 68 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  h;....          
1a0f0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
1a100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a110 20 20 2f 2f 20 4e 4f 54 45 3a 20 57 61 73 20 74    // NOTE: Was t
1a120 68 65 72 65 20 61 74 20 6c 65 61 73 74 20 6f 6e  here at least on
1a130 65 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e?..            
1a140 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1a150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a160 69 66 20 28 63 6f 75 6e 74 20 3e 20 30 29 0d 0a  if (count > 0)..
1a170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a180 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1a190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1a1a0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
1a1b0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
1a1c0 54 45 3a 20 4f 6b 2c 20 72 65 70 6c 61 63 65 20  TE: Ok, replace 
1a1d0 74 68 65 69 72 20 6f 72 69 67 69 6e 61 6c 0d 0a  their original..
1a1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a1f0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1a200 20 61 72 67 75 6d 65 6e 74 2e 0d 0a 20 20 20 20   argument...    
1a210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a220 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
1a230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a240 61 72 67 20 3d 20 72 65 73 75 6c 74 3b 0d 0a 0d  arg = result;...
1a250 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a260 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1a270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a280 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 59 65       // NOTE: Ye
1a290 73 2c 20 74 68 69 73 20 69 73 20 61 20 73 77 69  s, this is a swi
1a2a0 74 63 68 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  tch...          
1a2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1a2c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a2d0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1a2e0 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20   true;..        
1a2f0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
1a300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1a310 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1a320 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
1a330 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1a340 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1a350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a390 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1a3a0 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1a3b0 63 20 62 6f 6f 6c 20 4d 61 74 63 68 4f 70 74 69  c bool MatchOpti
1a3c0 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  on(..           
1a3d0 20 20 20 20 20 73 74 72 69 6e 67 20 61 72 67 2c       string arg,
1a3e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a3f0 20 20 73 74 72 69 6e 67 20 6f 70 74 69 6f 6e 0d    string option.
1a400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a410 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   )..            
1a420 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1a430 20 20 20 69 66 20 28 28 61 72 67 20 3d 3d 20 6e     if ((arg == n
1a440 75 6c 6c 29 20 7c 7c 20 28 6f 70 74 69 6f 6e 20  ull) || (option 
1a450 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20 20  == null))..     
1a460 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1a470 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
1a480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a490 72 65 74 75 72 6e 20 53 74 72 69 6e 67 2e 43 6f  return String.Co
1a4a0 6d 70 61 72 65 28 61 72 67 2c 20 30 2c 20 6f 70  mpare(arg, 0, op
1a4b0 74 69 6f 6e 2c 20 30 2c 0d 0a 20 20 20 20 20 20  tion, 0,..      
1a4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 61 72                ar
1a4d0 67 2e 4c 65 6e 67 74 68 2c 20 53 74 72 69 6e 67  g.Length, String
1a4e0 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f 72 64 69 6e  Comparison.Ordin
1a4f0 61 6c 49 67 6e 6f 72 65 43 61 73 65 29 20 3d 3d  alIgnoreCase) ==
1a500 20 30 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20   0;..           
1a510 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
1a520 20 20 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 2f 2f 2f 2f 2f  ////////////////
1a550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a560 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
1a570 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61       private sta
1a580 74 69 63 20 62 6f 6f 6c 3f 20 50 61 72 73 65 42  tic bool? ParseB
1a590 6f 6f 6c 65 61 6e 28 0d 0a 20 20 20 20 20 20 20  oolean(..       
1a5a0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
1a5b0 74 65 78 74 0d 0a 20 20 20 20 20 20 20 20 20 20  text..          
1a5c0 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
1a5d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a5e0 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
1a5f0 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
1a600 79 28 74 65 78 74 29 29 0d 0a 20 20 20 20 20 20  y(text))..      
1a610 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1a620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a630 20 62 6f 6f 6c 20 76 61 6c 75 65 3b 0d 0a 0d 0a   bool value;....
1a640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a650 20 20 20 20 69 66 20 28 62 6f 6f 6c 2e 54 72 79      if (bool.Try
1a660 50 61 72 73 65 28 74 65 78 74 2c 20 6f 75 74 20  Parse(text, out 
1a670 76 61 6c 75 65 29 29 0d 0a 20 20 20 20 20 20 20  value))..       
1a680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a690 20 72 65 74 75 72 6e 20 76 61 6c 75 65 3b 0d 0a   return value;..
1a6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a6b0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1a6c0 20 20 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c       return null
1a6d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
1a6e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1a6f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a700 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1a730 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1a740 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69     private stati
1a750 63 20 6f 62 6a 65 63 74 20 50 61 72 73 65 45 6e  c object ParseEn
1a760 75 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  um(..           
1a770 20 20 20 20 20 54 79 70 65 20 65 6e 75 6d 54 79       Type enumTy
1a780 70 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  pe,..           
1a790 20 20 20 20 20 73 74 72 69 6e 67 20 74 65 78 74       string text
1a7a0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1a7b0 20 20 20 62 6f 6f 6c 20 6e 6f 43 61 73 65 0d 0a     bool noCase..
1a7c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a7d0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
1a7e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1a7f0 20 20 69 66 20 28 28 65 6e 75 6d 54 79 70 65 20    if ((enumType 
1a800 3d 3d 20 6e 75 6c 6c 29 20 7c 7c 20 21 65 6e 75  == null) || !enu
1a810 6d 54 79 70 65 2e 49 73 45 6e 75 6d 29 0d 0a 20  mType.IsEnum).. 
1a820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a830 20 20 20 72 65 74 75 72 6e 20 6e 75 6c 6c 3b 0d     return null;.
1a840 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1a850 20 20 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49     if (!String.I
1a860 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 74 65 78  sNullOrEmpty(tex
1a870 74 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t))..           
1a880 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a890 20 20 20 20 20 20 20 20 20 20 20 20 74 72 79 0d              try.
1a8a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1a8b0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1a8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a8d0 72 65 74 75 72 6e 20 45 6e 75 6d 2e 50 61 72 73  return Enum.Pars
1a8e0 65 28 65 6e 75 6d 54 79 70 65 2c 20 74 65 78 74  e(enumType, text
1a8f0 2c 20 6e 6f 43 61 73 65 29 3b 0d 0a 20 20 20 20  , noCase);..    
1a900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a910 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1a920 20 20 20 20 20 20 20 63 61 74 63 68 0d 0a 20 20         catch..  
1a930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a940 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1a950 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1a960 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20  do nothing...   
1a970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1a980 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
1a990 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1a9a0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
1a9b0 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 20  null;..         
1a9c0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1a9d0 20 20 20 20 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 2f 2f  ////////////////
1aa10 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1aa20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
1aa30 74 61 74 69 63 20 62 6f 6f 6c 20 49 73 53 79 73  tatic bool IsSys
1aa40 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 47 6c  temEf6AssemblyGl
1aa50 6f 62 61 6c 28 29 0d 0a 20 20 20 20 20 20 20 20  obal()..        
1aa60 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1aa70 20 20 20 20 20 20 20 69 66 20 28 73 79 73 74 65         if (syste
1aa80 6d 45 66 36 41 73 73 65 6d 62 6c 79 20 3d 3d 20  mEf6Assembly == 
1aa90 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1aaa0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1aab0 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
1aac0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1aad0 72 6e 20 73 79 73 74 65 6d 45 66 36 41 73 73 65  rn systemEf6Asse
1aae0 6d 62 6c 79 2e 47 6c 6f 62 61 6c 41 73 73 65 6d  mbly.GlobalAssem
1aaf0 62 6c 79 43 61 63 68 65 3b 0d 0a 20 20 20 20 20  blyCache;..     
1ab00 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
1ab10 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e        #endregion
1ab20 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ab30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ab70 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
1ab80 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69     #region Publi
1ab90 63 20 53 74 61 74 69 63 20 4d 65 74 68 6f 64 73  c Static Methods
1aba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
1abb0 62 6c 69 63 20 73 74 61 74 69 63 20 76 6f 69 64  blic static void
1abc0 20 42 72 65 61 6b 49 6e 74 6f 44 65 62 75 67 67   BreakIntoDebugg
1abd0 65 72 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20  er()..          
1abe0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1abf0 20 20 20 20 20 43 6f 6e 73 6f 6c 65 2e 57 72 69       Console.Wri
1ac00 74 65 4c 69 6e 65 28 0d 0a 20 20 20 20 20 20 20  teLine(..       
1ac10 20 20 20 20 20 20 20 20 20 20 20 20 20 22 41 74               "At
1ac20 74 61 63 68 20 61 20 64 65 62 75 67 67 65 72 20  tach a debugger 
1ac30 74 6f 20 70 72 6f 63 65 73 73 20 7b 30 7d 20 61  to process {0} a
1ac40 6e 64 20 70 72 65 73 73 20 22 20 2b 0d 0a 20 20  nd press " +..  
1ac50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ac60 20 20 22 61 6e 79 20 6b 65 79 20 74 6f 20 63 6f    "any key to co
1ac70 6e 74 69 6e 75 65 2e 22 2c 20 28 74 68 69 73 50  ntinue.", (thisP
1ac80 72 6f 63 65 73 73 20 21 3d 20 6e 75 6c 6c 29 20  rocess != null) 
1ac90 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ?..             
1aca0 20 20 20 20 20 20 20 74 68 69 73 50 72 6f 63 65         thisProce
1acb0 73 73 2e 49 64 2e 54 6f 53 74 72 69 6e 67 28 29  ss.Id.ToString()
1acc0 20 3a 20 22 3c 75 6e 6b 6e 6f 77 6e 3e 22 29 3b   : "<unknown>");
1acd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1ace0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
1acf0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1ad00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ad10 43 6f 6e 73 6f 6c 65 2e 52 65 61 64 4b 65 79 28  Console.ReadKey(
1ad20 74 72 75 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20  true); /* throw 
1ad30 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
1ad40 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1ad50 20 20 20 20 20 20 20 63 61 74 63 68 20 28 49 6e         catch (In
1ad60 76 61 6c 69 64 4f 70 65 72 61 74 69 6f 6e 45 78  validOperationEx
1ad70 63 65 70 74 69 6f 6e 29 20 2f 2f 20 43 6f 6e 73  ception) // Cons
1ad80 6f 6c 65 2e 52 65 61 64 4b 65 79 0d 0a 20 20 20  ole.ReadKey..   
1ad90 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1ada0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1adb0 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
1adc0 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
1add0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1ade0 20 20 20 20 20 20 20 20 20 44 65 62 75 67 67 65           Debugge
1adf0 72 2e 42 72 65 61 6b 28 29 3b 0d 0a 20 20 20 20  r.Break();..    
1ae00 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1ae10 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1ae50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
1ae60 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
1ae70 69 63 20 73 74 61 74 69 63 20 43 6f 6e 66 69 67  ic static Config
1ae80 75 72 61 74 69 6f 6e 20 43 72 65 61 74 65 44 65  uration CreateDe
1ae90 66 61 75 6c 74 28 29 0d 0a 20 20 20 20 20 20 20  fault()..       
1aea0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1aeb0 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
1aec0 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c 3b  irectory = null;
1aed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1aee0 20 20 73 74 72 69 6e 67 20 63 6f 72 65 46 69 6c    string coreFil
1aef0 65 4e 61 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20  eName = null;.. 
1af00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
1af10 74 72 69 6e 67 20 6c 69 6e 71 46 69 6c 65 4e 61  tring linqFileNa
1af20 6d 65 20 3d 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  me = null;..    
1af30 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1af40 6e 67 20 65 66 36 46 69 6c 65 4e 61 6d 65 20 3d  ng ef6FileName =
1af50 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20   null;..        
1af60 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 64          string d
1af70 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20  esignerFileName 
1af80 3d 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20 20 20 20 20  = null;....     
1af90 20 20 20 20 20 20 20 20 20 20 20 47 65 74 44 65             GetDe
1afa0 66 61 75 6c 74 46 69 6c 65 4e 61 6d 65 73 28 0d  faultFileNames(.
1afb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1afc0 20 20 20 20 20 72 65 66 20 64 69 72 65 63 74 6f       ref directo
1afd0 72 79 2c 20 72 65 66 20 63 6f 72 65 46 69 6c 65  ry, ref coreFile
1afe0 4e 61 6d 65 2c 20 72 65 66 20 6c 69 6e 71 46 69  Name, ref linqFi
1aff0 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20  leName,..       
1b000 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1b010 20 65 66 36 46 69 6c 65 4e 61 6d 65 2c 20 72 65   ef6FileName, re
1b020 66 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61  f designerFileNa
1b030 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  me);....        
1b040 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
1b050 65 77 20 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e  ew Configuration
1b060 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1b070 20 20 20 20 20 20 20 74 68 69 73 41 73 73 65 6d         thisAssem
1b080 62 6c 79 2c 20 6e 75 6c 6c 2c 20 6e 75 6c 6c 2c  bly, null, null,
1b090 20 64 69 72 65 63 74 6f 72 79 2c 20 63 6f 72 65   directory, core
1b0a0 46 69 6c 65 4e 61 6d 65 2c 0d 0a 20 20 20 20 20  FileName,..     
1b0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6c                 l
1b0c0 69 6e 71 46 69 6c 65 4e 61 6d 65 2c 20 65 66 36  inqFileName, ef6
1b0d0 46 69 6c 65 4e 61 6d 65 2c 20 64 65 73 69 67 6e  FileName, design
1b0e0 65 72 46 69 6c 65 4e 61 6d 65 2c 20 6e 75 6c 6c  erFileName, null
1b0f0 2c 20 6e 75 6c 6c 2c 0d 0a 20 20 20 20 20 20 20  , null,..       
1b100 20 20 20 20 20 20 20 20 20 20 20 20 20 6e 75 6c               nul
1b110 6c 2c 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75  l, TraceOps.Debu
1b120 67 46 6f 72 6d 61 74 2c 20 54 72 61 63 65 4f 70  gFormat, TraceOp
1b130 73 2e 54 72 61 63 65 46 6f 72 6d 61 74 2c 0d 0a  s.TraceFormat,..
1b140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b150 20 20 20 20 49 6e 73 74 61 6c 6c 46 6c 61 67 73      InstallFlags
1b160 2e 44 65 66 61 75 6c 74 2c 20 50 72 6f 76 69 64  .Default, Provid
1b170 65 72 46 6c 61 67 73 2e 44 65 66 61 75 6c 74 2c  erFlags.Default,
1b180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b190 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
1b1a0 69 74 79 2e 44 65 66 61 75 6c 74 2c 20 54 72 61  ity.Default, Tra
1b1b0 63 65 50 72 69 6f 72 69 74 79 2e 44 65 66 61 75  cePriority.Defau
1b1c0 6c 74 2c 20 66 61 6c 73 65 2c 20 74 72 75 65 2c  lt, false, true,
1b1d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b1e0 20 20 20 20 20 20 66 61 6c 73 65 2c 20 66 61 6c        false, fal
1b1f0 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65  se, false, false
1b200 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20  , false, false, 
1b210 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 0d 0a 20  false, false,.. 
1b220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b230 20 20 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c     false, false,
1b240 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66   false, false, f
1b250 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c  alse, false, fal
1b260 73 65 2c 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20  se, false,..    
1b270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b280 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61  false, false, fa
1b290 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73  lse, false, fals
1b2a0 65 2c 20 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c  e, false, false,
1b2b0 20 66 61 6c 73 65 2c 0d 0a 20 20 20 20 20 20 20   false,..       
1b2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 66 61 6c               fal
1b2d0 73 65 2c 20 74 72 75 65 2c 20 74 72 75 65 2c 20  se, true, true, 
1b2e0 66 61 6c 73 65 2c 20 66 61 6c 73 65 2c 20 66 61  false, false, fa
1b2f0 6c 73 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  lse);..         
1b300 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
1b310 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
1b320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
1b350 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
1b360 20 20 20 20 20 20 20 5b 4d 65 74 68 6f 64 49 6d         [MethodIm
1b370 70 6c 28 4d 65 74 68 6f 64 49 6d 70 6c 4f 70 74  pl(MethodImplOpt
1b380 69 6f 6e 73 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29  ions.NoInlining)
1b390 5d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ]..            p
1b3a0 75 62 6c 69 63 20 73 74 61 74 69 63 20 62 6f 6f  ublic static boo
1b3b0 6c 20 46 72 6f 6d 41 72 67 73 28 0d 0a 20 20 20  l FromArgs(..   
1b3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72               str
1b3d0 69 6e 67 5b 5d 20 61 72 67 73 2c 0d 0a 20 20 20  ing[] args,..   
1b3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
1b3f0 6c 20 73 74 72 69 63 74 2c 0d 0a 20 20 20 20 20  l strict,..     
1b400 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20 43             ref C
1b410 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 63 6f 6e  onfiguration con
1b420 66 69 67 75 72 61 74 69 6f 6e 2c 0d 0a 20 20 20  figuration,..   
1b430 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66               ref
1b440 20 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20   string error.. 
1b450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29                 )
1b460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
1b470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b480 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
1b490 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1b4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1b4b0 28 61 72 67 73 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  (args == null)..
1b4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b4d0 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74          return t
1b4e0 72 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  rue;....        
1b4f0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1b500 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 3d 3d  configuration ==
1b510 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1b520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b530 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 3d 20  configuration = 
1b540 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 43 72  Configuration.Cr
1b550 65 61 74 65 44 65 66 61 75 6c 74 28 29 3b 0d 0a  eateDefault();..
1b560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b570 20 20 20 20 20 20 69 6e 74 20 6c 65 6e 67 74 68        int length
1b580 20 3d 20 61 72 67 73 2e 4c 65 6e 67 74 68 3b 0d   = args.Length;.
1b590 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1b5a0 20 20 20 20 20 20 20 66 6f 72 20 28 69 6e 74 20         for (int 
1b5b0 69 6e 64 65 78 20 3d 20 30 3b 20 69 6e 64 65 78  index = 0; index
1b5c0 20 3c 20 6c 65 6e 67 74 68 3b 20 69 6e 64 65 78   < length; index
1b5d0 2b 2b 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ++)..           
1b5e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1b5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b600 20 20 20 20 73 74 72 69 6e 67 20 61 72 67 20 3d      string arg =
1b610 20 61 72 67 73 5b 69 6e 64 65 78 5d 3b 0d 0a 0d   args[index];...
1b620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b630 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
1b640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b650 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53 6b       // NOTE: Sk
1b660 69 70 20 61 6e 79 20 61 72 67 75 6d 65 6e 74 20  ip any argument 
1b670 74 68 61 74 20 69 73 20 6e 75 6c 6c 20 28 3f 29  that is null (?)
1b680 20 6f 72 20 61 6e 20 65 6d 70 74 79 0d 0a 20 20   or an empty..  
1b690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6a0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 73        //       s
1b6b0 74 72 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  tring...        
1b6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b6d0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1b6e0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1b6f0 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45  String.IsNullOrE
1b700 6d 70 74 79 28 61 72 67 29 29 0d 0a 20 20 20 20  mpty(arg))..    
1b710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b720 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
1b730 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1b740 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
1b750 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1b760 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45           // NOTE
1b770 3a 20 57 65 20 61 72 65 20 67 6f 69 6e 67 20 74  : We are going t
1b780 6f 20 6d 6f 64 69 66 79 20 74 68 65 20 6f 72 69  o modify the ori
1b790 67 69 6e 61 6c 20 61 72 67 75 6d 65 6e 74 0d 0a  ginal argument..
1b7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b7b0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1b7c0 20 62 79 20 72 65 6d 6f 76 69 6e 67 20 61 6e 79   by removing any
1b7d0 20 6c 65 61 64 69 6e 67 20 6f 70 74 69 6f 6e 20   leading option 
1b7e0 63 68 61 72 61 63 74 65 72 73 3b 0d 0a 20 20 20  characters;..   
1b7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b800 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 68       //       th
1b810 65 72 65 66 6f 72 65 2c 20 77 65 20 75 73 65 20  erefore, we use 
1b820 61 20 6e 65 77 20 73 74 72 69 6e 67 20 74 6f 20  a new string to 
1b830 68 6f 6c 64 20 74 68 65 0d 0a 20 20 20 20 20 20  hold the..      
1b840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b850 20 20 2f 2f 20 20 20 20 20 20 20 6d 6f 64 69 66    //       modif
1b860 69 65 64 20 61 72 67 75 6d 65 6e 74 2e 0d 0a 20  ied argument... 
1b870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b880 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20         //..     
1b890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b8a0 20 20 20 73 74 72 69 6e 67 20 6e 65 77 41 72 67     string newArg
1b8b0 20 3d 20 61 72 67 3b 0d 0a 0d 0a 20 20 20 20 20   = arg;....     
1b8c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1b8d0 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
1b8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
1b8f0 2f 20 4e 4f 54 45 3a 20 41 6c 6c 20 74 68 65 20  / NOTE: All the 
1b900 73 75 70 70 6f 72 74 65 64 20 63 6f 6d 6d 61 6e  supported comman
1b910 64 20 6c 69 6e 65 20 6f 70 74 69 6f 6e 73 20 6d  d line options m
1b920 75 73 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ust..           
1b930 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1b940 20 20 20 20 20 20 62 65 67 69 6e 20 77 69 74 68        begin with
1b950 20 61 6e 20 6f 70 74 69 6f 6e 20 63 68 61 72 61   an option chara
1b960 63 74 65 72 20 28 65 2e 67 2e 20 61 20 6d 69 6e  cter (e.g. a min
1b970 75 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  us..            
1b980 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
1b990 20 20 20 20 20 6f 72 20 66 6f 72 77 61 72 64 20       or forward 
1b9a0 73 6c 61 73 68 29 3b 20 61 74 74 65 6d 70 74 20  slash); attempt 
1b9b0 74 6f 20 76 61 6c 69 64 61 74 65 20 74 68 61 74  to validate that
1b9c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1b9d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1b9e0 20 20 20 6e 6f 77 2e 20 20 49 66 20 77 65 20 66     now.  If we f
1b9f0 61 69 6c 20 69 6e 20 73 74 72 69 63 74 20 6d 6f  ail in strict mo
1ba00 64 65 2c 20 77 65 20 61 72 65 20 64 6f 6e 65 3b  de, we are done;
1ba10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ba20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
1ba30 20 20 20 6f 74 68 65 72 77 69 73 65 2c 20 6a 75     otherwise, ju
1ba40 73 74 20 73 6b 69 70 20 74 68 69 73 20 61 72 67  st skip this arg
1ba50 75 6d 65 6e 74 20 61 6e 64 20 61 64 76 61 6e 63  ument and advanc
1ba60 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
1ba70 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
1ba80 20 20 20 20 74 6f 20 74 68 65 20 6e 65 78 74 20      to the next 
1ba90 6f 6e 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  one...          
1baa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1bab0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1bac0 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 43            if (!C
1bad0 68 65 63 6b 4f 70 74 69 6f 6e 28 72 65 66 20 6e  heckOption(ref n
1bae0 65 77 41 72 67 29 29 0d 0a 20 20 20 20 20 20 20  ewArg))..       
1baf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb00 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1bb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
1bb30 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
1bb40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bb60 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
1bb70 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
1bb80 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
1bb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bba0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
1bbb0 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
1bbc0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
1bbd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bbe0 20 20 20 20 20 20 22 55 6e 73 75 70 70 6f 72 74        "Unsupport
1bbf0 65 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20  ed command line 
1bc00 61 72 67 75 6d 65 6e 74 3a 20 7b 30 7d 22 2c 0d  argument: {0}",.
1bc10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1bc20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc30 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
1bc40 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79  ), traceCategory
1bc50 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1bc60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc70 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
1bc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
1bca0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
1bcb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bcc0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74              cont
1bcd0 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
1bce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1bcf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1bd00 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1bd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
1bd30 20 41 6c 6c 20 74 68 65 20 73 75 70 70 6f 72 74   All the support
1bd40 65 64 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65 20  ed command line 
1bd50 6f 70 74 69 6f 6e 73 20 6d 75 73 74 0d 0a 20 20  options must..  
1bd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bd70 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 68        //       h
1bd80 61 76 65 20 61 20 76 61 6c 75 65 3b 20 74 68 65  ave a value; the
1bd90 72 65 66 6f 72 65 2c 20 61 74 74 65 6d 70 74 20  refore, attempt 
1bda0 74 6f 20 61 64 76 61 6e 63 65 0d 0a 20 20 20 20  to advance..    
1bdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bdc0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 74 6f 20      //       to 
1bdd0 69 74 20 6e 6f 77 2e 20 20 49 66 20 77 65 20 66  it now.  If we f
1bde0 61 69 6c 2c 20 77 65 20 61 72 65 20 64 6f 6e 65  ail, we are done
1bdf0 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1be00 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
1be10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be20 20 20 20 20 20 20 20 69 6e 64 65 78 2b 2b 3b 0d         index++;.
1be30 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1be40 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 69             if (i
1be50 6e 64 65 78 20 3e 3d 20 6c 65 6e 67 74 68 29 0d  ndex >= length).
1be60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1be70 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1be80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1be90 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
1bea0 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
1beb0 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
1bec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bed0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
1bee0 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
1bef0 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
1bf00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1bf20 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
1bf30 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
1bf40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4d                "M
1bf60 69 73 73 69 6e 67 20 76 61 6c 75 65 20 66 6f 72  issing value for
1bf70 20 6f 70 74 69 6f 6e 3a 20 7b 30 7d 22 2c 0d 0a   option: {0}",..
1bf80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bf90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfa0 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 29  ForDisplay(arg))
1bfb0 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
1bfc0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1bfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1bfe0 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
1bff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1c010 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
1c020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c030 20 20 20 20 20 20 20 20 20 20 20 62 72 65 61 6b             break
1c040 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1c050 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
1c060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c070 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
1c080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c090 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 47 72 61      // NOTE: Gra
1c0a0 62 20 74 68 65 20 74 65 78 74 75 61 6c 20 76 61  b the textual va
1c0b0 6c 75 65 20 6f 66 20 74 68 69 73 20 63 6f 6d 6d  lue of this comm
1c0c0 61 6e 64 20 6c 69 6e 65 0d 0a 20 20 20 20 20 20  and line..      
1c0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c0e0 20 20 2f 2f 20 20 20 20 20 20 20 6f 70 74 69 6f    //       optio
1c0f0 6e 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n...            
1c100 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1c110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c120 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74          string t
1c130 65 78 74 20 3d 20 61 72 67 73 5b 69 6e 64 65 78  ext = args[index
1c140 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  ];....          
1c150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
1c160 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1c170 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
1c180 45 3a 20 46 69 67 75 72 65 20 6f 75 74 20 77 68  E: Figure out wh
1c190 69 63 68 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e 65  ich command line
1c1a0 20 6f 70 74 69 6f 6e 20 74 68 69 73 20 69 73 0d   option this is.
1c1b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c1c0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1c1d0 20 20 28 62 61 73 65 64 20 6f 6e 20 61 20 70 61    (based on a pa
1c1e0 72 74 69 61 6c 20 6e 61 6d 65 20 6d 61 74 63 68  rtial name match
1c1f0 29 20 61 6e 64 20 74 68 65 6e 20 74 72 79 0d 0a  ) and then try..
1c200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c210 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1c220 20 74 6f 20 69 6e 74 65 72 70 72 65 74 20 74 68   to interpret th
1c230 65 20 74 65 78 74 75 61 6c 20 76 61 6c 75 65 20  e textual value 
1c240 61 73 20 74 68 65 20 63 6f 72 72 65 63 74 0d 0a  as the correct..
1c250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c260 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
1c270 20 74 79 70 65 2e 0d 0a 20 20 20 20 20 20 20 20   type...        
1c280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c290 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
1c2a0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1c2b0 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
1c2c0 72 67 2c 20 22 62 72 65 61 6b 22 29 29 0d 0a 20  rg, "break")).. 
1c2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c2e0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1c2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c300 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
1c310 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
1c320 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
1c330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c340 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65         if (value
1c350 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
1c360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c370 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1c380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c390 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
1c3a0 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
1c3b0 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
1c3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
1c3e0 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
1c3f0 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
1c400 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
1c410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c420 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
1c430 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
1c440 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
1c450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c460 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
1c470 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
1c480 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
1c490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c4b0 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
1c4c0 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
1c4d0 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
1c4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c4f0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
1c500 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
1c510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1c530 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
1c540 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c560 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
1c570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c590 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
1c5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c5b0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
1c5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c5d0 20 20 20 20 20 20 20 20 20 69 66 20 28 28 62 6f           if ((bo
1c5e0 6f 6c 29 76 61 6c 75 65 29 0d 0a 20 20 20 20 20  ol)value)..     
1c5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c600 20 20 20 20 20 20 20 20 20 20 20 42 72 65 61 6b             Break
1c610 49 6e 74 6f 44 65 62 75 67 67 65 72 28 29 3b 0d  IntoDebugger();.
1c620 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1c630 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
1c640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c650 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
1c660 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
1c670 20 22 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e 22   "configVersion"
1c680 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
1c690 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1c6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6b0 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
1c6c0 67 75 72 61 74 69 6f 6e 2e 63 6f 6e 66 69 67 56  guration.configV
1c6d0 65 72 73 69 6f 6e 20 3d 20 74 65 78 74 3b 0d 0a  ersion = text;..
1c6e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c6f0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1c700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c710 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
1c720 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
1c730 22 63 6f 6e 66 69 72 6d 22 29 29 0d 0a 20 20 20  "confirm"))..   
1c740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c750 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c770 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20      bool? value 
1c780 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74  = ParseBoolean(t
1c790 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ext);....       
1c7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c7b0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
1c7c0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1c7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c7e0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1c7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c800 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
1c810 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
1c820 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
1c830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c840 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1c850 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
1c860 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
1c870 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1c880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c890 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
1c8a0 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
1c8b0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
1c8c0 20 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 20 22 49 6e 76 61 6c            "Inval
1c8e0 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76  id {0} boolean v
1c8f0 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
1c900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c920 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
1c930 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
1c940 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
1c950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c960 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
1c970 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
1c980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c990 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1c9a0 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
1c9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
1c9d0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
1c9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1c9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1ca00 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
1ca10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
1ca30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca40 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
1ca50 74 69 6f 6e 2e 63 6f 6e 66 69 72 6d 20 3d 20 28  tion.confirm = (
1ca60 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
1ca70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ca80 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1ca90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1caa0 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
1cab0 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 63 6f  tion(newArg, "co
1cac0 72 65 46 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20  reFileName")).. 
1cad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cae0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
1caf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb00 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
1cb10 69 6f 6e 2e 63 6f 72 65 46 69 6c 65 4e 61 6d 65  ion.coreFileName
1cb20 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20 20 20   = text;..      
1cb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cb40 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
1cb50 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
1cb60 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
1cb70 6e 28 6e 65 77 41 72 67 2c 20 22 64 65 62 75 67  n(newArg, "debug
1cb80 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
1cb90 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1cba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cbb0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
1cbc0 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
1cbd0 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
1cbe0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1cc00 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
1cc10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cc20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1cc30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc50 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
1cc60 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
1cc70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1cc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cc90 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
1cca0 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
1ccb0 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
1ccc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ccd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
1cce0 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
1ccf0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
1cd00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cd10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cd20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
1cd30 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
1cd40 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
1cd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cd60 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
1cd70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
1cd80 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
1cd90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cdb0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
1cdc0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1cdd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cde0 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
1cdf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ce00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce10 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
1ce20 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
1ce30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ce40 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
1ce50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1ce60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1ce70 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1ce80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1ce90 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65 62  onfiguration.deb
1cea0 75 67 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65  ug = (bool)value
1ceb0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1cec0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1ced0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cee0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
1cef0 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
1cf00 67 2c 20 22 64 65 62 75 67 46 6f 72 6d 61 74 22  g, "debugFormat"
1cf10 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
1cf20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
1cf30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf40 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
1cf50 67 75 72 61 74 69 6f 6e 2e 64 65 62 75 67 46 6f  guration.debugFo
1cf60 72 6d 61 74 20 3d 20 74 65 78 74 3b 0d 0a 20 20  rmat = text;..  
1cf70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cf80 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
1cf90 70 73 2e 44 65 62 75 67 46 6f 72 6d 61 74 20 3d  ps.DebugFormat =
1cfa0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64   configuration.d
1cfb0 65 62 75 67 46 6f 72 6d 61 74 3b 0d 0a 20 20 20  ebugFormat;..   
1cfc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cfd0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1cfe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1cff0 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
1d000 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 64 65  tion(newArg, "de
1d010 62 75 67 50 72 69 6f 72 69 74 79 22 29 29 0d 0a  bugPriority"))..
1d020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d030 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1d040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d050 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61         object va
1d060 6c 75 65 20 3d 20 50 61 72 73 65 45 6e 75 6d 28  lue = ParseEnum(
1d070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d090 20 20 74 79 70 65 6f 66 28 54 72 61 63 65 50 72    typeof(TracePr
1d0a0 69 6f 72 69 74 79 29 2c 20 74 65 78 74 2c 20 74  iority), text, t
1d0b0 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  rue);....       
1d0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d0d0 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d       if (value =
1d0e0 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20  = null)..       
1d0f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d100 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d120 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
1d130 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
1d140 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20  dTrace(..       
1d150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d160 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61               Tra
1d170 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73  cePriority.Lowes
1d180 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b  t, debugCallback
1d190 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
1d1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d1b0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
1d1c0 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
1d1d0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
1d1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d1f0 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c            "Inval
1d200 69 64 20 7b 30 7d 20 76 61 6c 75 65 3a 20 7b 31  id {0} value: {1
1d210 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
1d220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d230 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
1d240 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
1d250 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
1d260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d280 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
1d290 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1d2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2b0 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
1d2c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d2d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d2e0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
1d2f0 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
1d300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d310 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
1d320 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
1d340 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1d350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1d360 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 65 62  onfiguration.deb
1d370 75 67 50 72 69 6f 72 69 74 79 20 3d 20 28 54 72  ugPriority = (Tr
1d380 61 63 65 50 72 69 6f 72 69 74 79 29 76 61 6c 75  acePriority)valu
1d390 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1d3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d3b0 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 50 72  TraceOps.DebugPr
1d3c0 69 6f 72 69 74 79 20 3d 20 63 6f 6e 66 69 67 75  iority = configu
1d3d0 72 61 74 69 6f 6e 2e 64 65 62 75 67 50 72 69 6f  ration.debugPrio
1d3e0 72 69 74 79 3b 0d 0a 20 20 20 20 20 20 20 20 20  rity;..         
1d3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1d400 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d410 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
1d420 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
1d430 65 77 41 72 67 2c 20 22 64 65 73 69 67 6e 65 72  ewArg, "designer
1d440 46 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20 20  FileName"))..   
1d450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d460 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
1d470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d480 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
1d490 6e 2e 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61  n.designerFileNa
1d4a0 6d 65 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20  me = text;..    
1d4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d4c0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
1d4d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
1d4e0 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
1d4f0 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 64 69 72  ion(newArg, "dir
1d500 65 63 74 6f 72 79 22 29 29 0d 0a 20 20 20 20 20  ectory"))..     
1d510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d520 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1d530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d540 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
1d550 64 69 72 65 63 74 6f 72 79 20 3d 20 74 65 78 74  directory = text
1d560 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1d570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d580 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   //..           
1d590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d5a0 20 2f 2f 20 4e 4f 54 45 3a 20 2a 53 50 45 43 49   // NOTE: *SPECI
1d5b0 41 4c 2a 20 4d 75 73 74 20 72 65 66 72 65 73 68  AL* Must refresh
1d5c0 20 74 68 65 20 66 69 6c 65 20 6e 61 6d 65 73 0d   the file names.
1d5d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
1d5f0 20 20 20 20 20 20 68 65 72 65 20 62 65 63 61 75        here becau
1d600 73 65 20 74 68 65 20 75 6e 64 65 72 6c 79 69 6e  se the underlyin
1d610 67 20 64 69 72 65 63 74 6f 72 79 0d 0a 20 20 20  g directory..   
1d620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d630 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
1d640 20 20 68 61 73 20 63 68 61 6e 67 65 64 2e 0d 0a    has changed...
1d650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d660 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
1d670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d680 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72 69              stri
1d690 6e 67 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20  ng coreFileName 
1d6a0 3d 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  = configuration.
1d6b0 63 6f 72 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d  coreFileName;...
1d6c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1d6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
1d6e0 28 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f  (!String.IsNullO
1d6f0 72 45 6d 70 74 79 28 63 6f 72 65 46 69 6c 65 4e  rEmpty(coreFileN
1d700 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20  ame))..         
1d710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d720 20 20 20 20 20 20 20 63 6f 72 65 46 69 6c 65 4e         coreFileN
1d730 61 6d 65 20 3d 20 50 61 74 68 2e 47 65 74 46 69  ame = Path.GetFi
1d740 6c 65 4e 61 6d 65 28 63 6f 72 65 46 69 6c 65 4e  leName(coreFileN
1d750 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ame);....       
1d760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d770 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67 2e       if (String.
1d780 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f  IsNullOrEmpty(co
1d790 72 65 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  reFileName))..  
1d7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
1d7c0 72 65 46 69 6c 65 4e 61 6d 65 20 3d 20 49 6e 73  reFileName = Ins
1d7d0 74 61 6c 6c 65 72 2e 43 6f 72 65 46 69 6c 65 4e  taller.CoreFileN
1d7e0 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ame;....        
1d7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d800 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
1d810 6e 2e 63 6f 72 65 46 69 6c 65 4e 61 6d 65 20 3d  n.coreFileName =
1d820 20 50 61 74 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a   Path.Combine(..
1d830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d850 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 64 69  configuration.di
1d860 72 65 63 74 6f 72 79 2c 20 63 6f 72 65 46 69 6c  rectory, coreFil
1d870 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20  eName);....     
1d880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d890 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 6c 69         string li
1d8a0 6e 71 46 69 6c 65 4e 61 6d 65 20 3d 20 63 6f 6e  nqFileName = con
1d8b0 66 69 67 75 72 61 74 69 6f 6e 2e 6c 69 6e 71 46  figuration.linqF
1d8c0 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20 20 20 20  ileName;....    
1d8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d8e0 20 20 20 20 20 20 20 20 69 66 20 28 21 53 74 72          if (!Str
1d8f0 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
1d900 79 28 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 29 29  y(linqFileName))
1d910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1d920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d930 20 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 20 3d    linqFileName =
1d940 20 50 61 74 68 2e 47 65 74 46 69 6c 65 4e 61 6d   Path.GetFileNam
1d950 65 28 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 29 3b  e(linqFileName);
1d960 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1d970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d980 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
1d990 6c 4f 72 45 6d 70 74 79 28 6c 69 6e 71 46 69 6c  lOrEmpty(linqFil
1d9a0 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20  eName))..       
1d9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1d9c0 20 20 20 20 20 20 20 20 20 6c 69 6e 71 46 69 6c           linqFil
1d9d0 65 4e 61 6d 65 20 3d 20 49 6e 73 74 61 6c 6c 65  eName = Installe
1d9e0 72 2e 4c 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d  r.LinqFileName;.
1d9f0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1da00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
1da10 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6c 69 6e  onfiguration.lin
1da20 71 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68  qFileName = Path
1da30 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20  .Combine(..     
1da40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1da50 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
1da60 67 75 72 61 74 69 6f 6e 2e 64 69 72 65 63 74 6f  guration.directo
1da70 72 79 2c 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65  ry, linqFileName
1da80 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1da90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1daa0 20 20 73 74 72 69 6e 67 20 65 66 36 46 69 6c 65    string ef6File
1dab0 4e 61 6d 65 20 3d 20 63 6f 6e 66 69 67 75 72 61  Name = configura
1dac0 74 69 6f 6e 2e 65 66 36 46 69 6c 65 4e 61 6d 65  tion.ef6FileName
1dad0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
1dae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1daf0 20 69 66 20 28 21 53 74 72 69 6e 67 2e 49 73 4e   if (!String.IsN
1db00 75 6c 6c 4f 72 45 6d 70 74 79 28 65 66 36 46 69  ullOrEmpty(ef6Fi
1db10 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
1db20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db30 20 20 20 20 20 20 20 20 20 20 65 66 36 46 69 6c            ef6Fil
1db40 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 47 65 74  eName = Path.Get
1db50 46 69 6c 65 4e 61 6d 65 28 65 66 36 46 69 6c 65  FileName(ef6File
1db60 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  Name);....      
1db70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1db80 20 20 20 20 20 20 69 66 20 28 53 74 72 69 6e 67        if (String
1db90 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 65  .IsNullOrEmpty(e
1dba0 66 36 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20  f6FileName))..  
1dbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 66                ef
1dbd0 36 46 69 6c 65 4e 61 6d 65 20 3d 20 49 6e 73 74  6FileName = Inst
1dbe0 61 6c 6c 65 72 2e 45 66 36 46 69 6c 65 4e 61 6d  aller.Ef6FileNam
1dbf0 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
1dc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc10 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
1dc20 65 66 36 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61  ef6FileName = Pa
1dc30 74 68 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20  th.Combine(..   
1dc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dc50 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
1dc60 66 69 67 75 72 61 74 69 6f 6e 2e 64 69 72 65 63  figuration.direc
1dc70 74 6f 72 79 2c 20 65 66 36 46 69 6c 65 4e 61 6d  tory, ef6FileNam
1dc80 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
1dc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dca0 20 20 20 73 74 72 69 6e 67 20 64 65 73 69 67 6e     string design
1dcb0 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 63 6f 6e  erFileName = con
1dcc0 66 69 67 75 72 61 74 69 6f 6e 2e 64 65 73 69 67  figuration.desig
1dcd0 6e 65 72 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a  nerFileName;....
1dce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dcf0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1dd00 21 53 74 72 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72  !String.IsNullOr
1dd10 45 6d 70 74 79 28 64 65 73 69 67 6e 65 72 46 69  Empty(designerFi
1dd20 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20  leName))..      
1dd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dd40 20 20 20 20 20 20 20 20 20 20 64 65 73 69 67 6e            design
1dd50 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74  erFileName = Pat
1dd60 68 2e 47 65 74 46 69 6c 65 4e 61 6d 65 28 64 65  h.GetFileName(de
1dd70 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 29 3b  signerFileName);
1dd80 0d 0a 0d 0a 20 20 20 20 20 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 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
1ddb0 6c 4f 72 45 6d 70 74 79 28 64 65 73 69 67 6e 65  lOrEmpty(designe
1ddc0 72 46 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20  rFileName))..   
1ddd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dde0 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 73               des
1ddf0 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 20 3d 20  ignerFileName = 
1de00 49 6e 73 74 61 6c 6c 65 72 2e 44 65 73 69 67 6e  Installer.Design
1de10 65 72 46 69 6c 65 4e 61 6d 65 3b 0d 0a 0d 0a 20  erFileName;.... 
1de20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de30 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
1de40 67 75 72 61 74 69 6f 6e 2e 64 65 73 69 67 6e 65  guration.designe
1de50 72 46 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68  rFileName = Path
1de60 2e 43 6f 6d 62 69 6e 65 28 0d 0a 20 20 20 20 20  .Combine(..     
1de70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1de80 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
1de90 67 75 72 61 74 69 6f 6e 2e 64 69 72 65 63 74 6f  guration.directo
1dea0 72 79 2c 20 64 65 73 69 67 6e 65 72 46 69 6c 65  ry, designerFile
1deb0 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
1dec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ded0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1dee0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
1def0 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
1df00 6e 65 77 41 72 67 2c 20 22 65 66 36 46 69 6c 65  newArg, "ef6File
1df10 4e 61 6d 65 22 29 29 0d 0a 20 20 20 20 20 20 20  Name"))..       
1df20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
1df40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1df50 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 65 66  configuration.ef
1df60 36 46 69 6c 65 4e 61 6d 65 20 3d 20 74 65 78 74  6FileName = text
1df70 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1df80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1df90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dfa0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
1dfb0 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
1dfc0 67 2c 20 22 69 6e 73 74 61 6c 6c 22 29 29 0d 0a  g, "install"))..
1dfd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1dfe0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1dff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e000 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c         bool? val
1e010 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61  ue = ParseBoolea
1e020 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20  n(text);....    
1e030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e040 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
1e050 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
1e060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e070 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
1e080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e090 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
1e0a0 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75   = TraceOps.Debu
1e0b0 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20  gAndTrace(..    
1e0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e0d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e0e0 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f  TracePriority.Lo
1e0f0 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62  west, debugCallb
1e100 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
1e110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e120 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
1e130 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
1e140 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
1e150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e160 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e               "In
1e170 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61  valid {0} boolea
1e180 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a  n value: {1}",..
1e190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1b0 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61      ForDisplay(a
1e1c0 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  rg), ForDisplay(
1e1d0 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  text)),..       
1e1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
1e200 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
1e210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e230 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
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 20 20 20 20                  
1e260 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
1e270 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e290 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20    continue;..   
1e2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
1e2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e2d0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
1e2e0 75 72 61 74 69 6f 6e 2e 69 6e 73 74 61 6c 6c 20  uration.install 
1e2f0 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
1e300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e310 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1e320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e330 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
1e340 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
1e350 22 69 6e 73 74 61 6c 6c 46 6c 61 67 73 22 29 29  "installFlags"))
1e360 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1e370 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
1e380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e390 20 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20           object 
1e3a0 76 61 6c 75 65 20 3d 20 50 61 72 73 65 45 6e 75  value = ParseEnu
1e3b0 6d 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m(..            
1e3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e3d0 20 20 20 20 74 79 70 65 6f 66 28 49 6e 73 74 61      typeof(Insta
1e3e0 6c 6c 46 6c 61 67 73 29 2c 20 74 65 78 74 2c 20  llFlags), text, 
1e3f0 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  true);....      
1e400 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e410 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
1e420 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
1e430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e440 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
1e450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e460 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
1e470 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
1e480 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
1e490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
1e4b0 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
1e4c0 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
1e4d0 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
1e4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e4f0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
1e500 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
1e510 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
1e520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e530 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61             "Inva
1e540 6c 69 64 20 7b 30 7d 20 76 61 6c 75 65 3a 20 7b  lid {0} value: {
1e550 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
1e560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e570 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
1e580 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
1e590 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
1e5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5c0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
1e5d0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1e5e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e5f0 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
1e600 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1e610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e620 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1e630 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
1e640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e650 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
1e660 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1e670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1e680 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1e690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e6a0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 69 6e  configuration.in
1e6b0 73 74 61 6c 6c 46 6c 61 67 73 20 3d 20 28 49 6e  stallFlags = (In
1e6c0 73 74 61 6c 6c 46 6c 61 67 73 29 76 61 6c 75 65  stallFlags)value
1e6d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
1e6e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
1e6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e700 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
1e710 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
1e720 67 2c 20 22 6c 69 6e 71 46 69 6c 65 4e 61 6d 65  g, "linqFileName
1e730 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
1e740 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
1e750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e760 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
1e770 69 67 75 72 61 74 69 6f 6e 2e 6c 69 6e 71 46 69  iguration.linqFi
1e780 6c 65 4e 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a  leName = text;..
1e790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7a0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
1e7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e7c0 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
1e7d0 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
1e7e0 22 6c 6f 67 46 69 6c 65 4e 61 6d 65 22 29 29 0d  "logFileName")).
1e7f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1e800 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
1e810 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e820 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
1e830 61 74 69 6f 6e 2e 6c 6f 67 46 69 6c 65 4e 61 6d  ation.logFileNam
1e840 65 20 3d 20 74 65 78 74 3b 0d 0a 20 20 20 20 20  e = text;..     
1e850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e860 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
1e870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
1e880 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
1e890 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 43 6f  on(newArg, "noCo
1e8a0 6d 70 61 63 74 22 29 29 0d 0a 20 20 20 20 20 20  mpact"))..      
1e8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8c0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1e8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e8e0 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50   bool? value = P
1e8f0 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74  arseBoolean(text
1e900 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1e910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e920 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e    if (value == n
1e930 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ull)..          
1e940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e950 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
1e960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1e970 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61       error = Tra
1e980 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72  ceOps.DebugAndTr
1e990 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ace(..          
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 54 72 61 63 65 50            TraceP
1e9c0 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20  riority.Lowest, 
1e9d0 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a  debugCallback,..
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 20 20 20 20                  
1ea00 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
1ea10 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  k, String.Format
1ea20 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 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 22 49 6e 76 61 6c 69 64 20         "Invalid 
1ea50 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75  {0} boolean valu
1ea60 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20  e: {1}",..      
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 46 6f                Fo
1ea90 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46  rDisplay(arg), F
1eaa0 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29  orDisplay(text))
1eab0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
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 74 72 61 63 65 43 61 74 65         traceCate
1eae0 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
1eaf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb00 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74            if (st
1eb10 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20  rict)..         
1eb20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb30 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
1eb40 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20  n false;....    
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 20 20 20 20 63 6f 6e 74              cont
1eb70 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  inue;..         
1eb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eb90 20 20 20 7d 0d 0a 0d 0a 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 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
1ebc0 6e 2e 6e 6f 43 6f 6d 70 61 63 74 20 3d 20 28 62  n.noCompact = (b
1ebd0 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ool)value;..    
1ebe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ebf0 20 20 20 20 7d 0d 0a 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 65                 e
1ec10 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
1ec20 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 43  ion(newArg, "noC
1ec30 6f 6e 73 6f 6c 65 22 29 29 0d 0a 20 20 20 20 20  onsole"))..     
1ec40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec50 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1ec60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ec70 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20    bool? value = 
1ec80 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78  ParseBoolean(tex
1ec90 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
1eca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ecb0 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
1ecc0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
1ecd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ece0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
1ecf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed00 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
1ed10 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
1ed20 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
1ed30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed40 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
1ed50 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
1ed60 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
1ed70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1ed80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ed90 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
1eda0 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
1edb0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
1edc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1edd0 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
1ede0 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c   {0} boolean val
1edf0 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
1ee00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ee10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
1ee20 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
1ee30 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
1ee40 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
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 74 72 61 63 65 43 61 74          traceCat
1ee70 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
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 20 69 66 20 28 73             if (s
1eea0 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
1eeb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1eec0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
1eed0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
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 63 6f 6e               con
1ef00 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
1ef10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
1ef30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef40 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
1ef50 6f 6e 2e 6e 6f 43 6f 6e 73 6f 6c 65 20 3d 20 28  on.noConsole = (
1ef60 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20  bool)value;..   
1ef70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ef80 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
1ef90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1efa0 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70  else if (MatchOp
1efb0 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f  tion(newArg, "no
1efc0 44 65 73 6b 74 6f 70 22 29 29 0d 0a 20 20 20 20  Desktop"))..    
1efd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1efe0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1eff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f000 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d     bool? value =
1f010 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65   ParseBoolean(te
1f020 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
1f030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f040 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
1f050 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
1f060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f070 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
1f080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f090 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54         error = T
1f0a0 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
1f0b0 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
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 20 54 72 61 63              Trac
1f0e0 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
1f0f0 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
1f100 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f120 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
1f130 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
1f140 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
1f150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f160 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69           "Invali
1f170 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61  d {0} boolean va
1f180 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
1f190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f1b0 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
1f1c0 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
1f1d0 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
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 20 20 74 72 61 63 65 43 61           traceCa
1f200 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
1f210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f220 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
1f230 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
1f240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f250 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
1f260 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
1f270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
1f290 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
1f2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f2b0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
1f2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f2d0 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
1f2e0 69 6f 6e 2e 6e 6f 44 65 73 6b 74 6f 70 20 3d 20  ion.noDesktop = 
1f2f0 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20  (bool)value;..  
1f300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f310 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
1f320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f330 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
1f340 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e  ption(newArg, "n
1f350 6f 4c 6f 67 22 29 29 0d 0a 20 20 20 20 20 20 20  oLog"))..       
1f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f370 20 7b 0d 0a 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 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61  bool? value = Pa
1f3a0 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29  rseBoolean(text)
1f3b0 3b 0d 0a 0d 0a 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 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
1f3e0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
1f3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f400 20 7b 0d 0a 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 20 20                  
1f420 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
1f430 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
1f440 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
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 20 20 54 72 61 63 65 50 72           TracePr
1f470 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
1f480 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
1f490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f4a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f4b0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
1f4c0 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
1f4d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f4f0 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b        "Invalid {
1f500 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  0} boolean value
1f510 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
1f520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f530 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
1f540 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f  Display(arg), Fo
1f550 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c  rDisplay(text)),
1f560 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f570 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f580 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
1f590 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
1f5a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f5b0 20 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72           if (str
1f5c0 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ict)..          
1f5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f5e0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
1f5f0 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
1f600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f610 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
1f620 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
1f630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f640 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
1f650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f660 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
1f670 2e 6e 6f 4c 6f 67 20 3d 20 28 62 6f 6f 6c 29 76  .noLog = (bool)v
1f680 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
1f690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
1f6a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f6b0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
1f6c0 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
1f6d0 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 32  ewArg, "noNetFx2
1f6e0 30 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  0"))..          
1f6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
1f700 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f710 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
1f720 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
1f730 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
1f740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
1f760 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
1f770 0d 0a 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 20 20 20 20 7b 0d                {.
1f790 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
1f7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7b0 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
1f7c0 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
1f7d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1f7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f7f0 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
1f800 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
1f810 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
1f820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f840 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
1f850 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
1f860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f880 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
1f890 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
1f8a0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
1f8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f8c0 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
1f8d0 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
1f8e0 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
1f8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f910 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
1f920 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
1f930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f940 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
1f950 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1f960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f970 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
1f980 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
1f990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9a0 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
1f9b0 3b 0d 0a 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 20 20 20 7d                 }
1f9d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1f9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1f9f0 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
1fa00 4e 65 74 46 78 32 30 20 3d 20 28 62 6f 6f 6c 29  NetFx20 = (bool)
1fa10 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
1fa20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fa30 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
1fa40 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
1fa50 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
1fa60 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78  newArg, "noNetFx
1fa70 33 35 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  35"))..         
1fa80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1fa90 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1faa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
1fab0 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73  ol? value = Pars
1fac0 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d  eBoolean(text);.
1fad0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
1fae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
1faf0 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
1fb00 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
1fb10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
1fb20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
1fb30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb40 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f    error = TraceO
1fb50 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
1fb60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
1fb70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fb80 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f         TracePrio
1fb90 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62  rity.Lowest, deb
1fba0 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ugCallback,..   
1fbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fbc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fbd0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
1fbe0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
1fbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc10 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d      "Invalid {0}
1fc20 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20   boolean value: 
1fc30 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
1fc40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc50 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
1fc60 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
1fc70 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
1fc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fc90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fca0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
1fcb0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
1fcc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fcd0 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63         if (stric
1fce0 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
1fcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd00 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
1fd10 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
1fd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd30 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
1fd40 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
1fd50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd60 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
1fd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fd80 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
1fd90 6f 4e 65 74 46 78 33 35 20 3d 20 28 62 6f 6f 6c  oNetFx35 = (bool
1fda0 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
1fdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fdc0 20 7d 0d 0a 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 65 6c 73 65              else
1fde0 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
1fdf0 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46  (newArg, "noNetF
1fe00 78 34 30 22 29 29 0d 0a 20 20 20 20 20 20 20 20  x40"))..        
1fe10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1fe30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
1fe40 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
1fe50 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
1fe60 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
1fe70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fe80 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
1fe90 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
1fea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1feb0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
1fec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1fed0 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
1fee0 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
1fef0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
1ff00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff10 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
1ff20 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
1ff30 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
1ff40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
1ff60 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
1ff70 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
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 20 20 20                  
1ffa0 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
1ffb0 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
1ffc0 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
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 20 20 20 20 20 46 6f 72 44              ForD
1fff0 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
20000 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
20010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20030 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
20040 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
20050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20060 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
20070 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
20080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20090 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
200a0 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
200b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
200c0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
200d0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
200e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
200f0 20 7d 0d 0a 0d 0a 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 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
20120 6e 6f 4e 65 74 46 78 34 30 20 3d 20 28 62 6f 6f  noNetFx40 = (boo
20130 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
20140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20150 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
20160 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
20170 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
20180 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74  n(newArg, "noNet
20190 46 78 34 35 22 29 29 0d 0a 20 20 20 20 20 20 20  Fx45"))..       
201a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
201b0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
201c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
201d0 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61  bool? value = Pa
201e0 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29  rseBoolean(text)
201f0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
20200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20210 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
20220 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
20230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20240 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
20250 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20260 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
20270 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
20280 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
20290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
202a0 20 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72           TracePr
202b0 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
202c0 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
202d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
202e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
202f0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
20300 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
20310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20330 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b        "Invalid {
20340 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  0} boolean value
20350 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
20360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20370 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
20380 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f  Display(arg), Fo
20390 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c  rDisplay(text)),
203a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
203b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
203c0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
203d0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
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 69 66 20 28 73 74 72           if (str
20400 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ict)..          
20410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20420 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
20430 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
20440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20450 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
20460 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
20470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20480 20 20 7d 0d 0a 0d 0a 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 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
204b0 2e 6e 6f 4e 65 74 46 78 34 35 20 3d 20 28 62 6f  .noNetFx45 = (bo
204c0 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
204d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
204e0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
204f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
20500 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
20510 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65  on(newArg, "noNe
20520 74 46 78 34 35 31 22 29 29 0d 0a 20 20 20 20 20  tFx451"))..     
20530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20540 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
20550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20560 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20    bool? value = 
20570 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78  ParseBoolean(tex
20580 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
20590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205a0 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
205b0 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
205c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205d0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
205e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
205f0 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
20600 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
20610 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
20620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20630 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
20640 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
20650 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
20660 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20680 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
20690 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
206a0 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
206b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
206c0 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
206d0 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c   {0} boolean val
206e0 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
206f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46                 F
20710 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
20720 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
20730 29 2c 0d 0a 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 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
20760 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
20770 20 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 69 66 20 28 73             if (s
20790 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
207a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207b0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
207c0 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
207d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
207e0 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
207f0 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
20800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20810 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
20820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20830 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
20840 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35 31 20 3d 20  on.noNetFx451 = 
20850 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20  (bool)value;..  
20860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20870 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
20880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20890 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
208a0 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e  ption(newArg, "n
208b0 6f 4e 65 74 46 78 34 35 32 22 29 29 0d 0a 20 20  oNetFx452"))..  
208c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
208d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
208e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
208f0 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65       bool? value
20900 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28   = ParseBoolean(
20910 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  text);....      
20920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20930 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
20940 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
20950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20960 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
20970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20980 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
20990 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
209a0 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
209b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
209c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
209d0 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
209e0 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
209f0 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
20a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a10 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
20a20 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
20a30 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
20a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a50 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61             "Inva
20a60 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20  lid {0} boolean 
20a70 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20  value: {1}",..  
20a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20aa0 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
20ab0 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65  ), ForDisplay(te
20ac0 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  xt)),..         
20ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ae0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
20af0 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
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 69 66                if
20b20 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
20b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
20b50 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
20b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20b80 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20  continue;..     
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 7d 0d 0a 0d 0a 20 20 20 20         }....    
20bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20bc0 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
20bd0 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35 32  ation.noNetFx452
20be0 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d   = (bool)value;.
20bf0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
20c00 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
20c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
20c30 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
20c40 20 22 6e 6f 4e 65 74 46 78 34 36 22 29 29 0d 0a   "noNetFx46"))..
20c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c60 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
20c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20c80 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c         bool? val
20c90 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61  ue = ParseBoolea
20ca0 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20  n(text);....    
20cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20cc0 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
20cd0 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
20ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20cf0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
20d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d10 20 20 20 20 20 20 20 20 20 20 20 65 72 72 6f 72             error
20d20 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75   = TraceOps.Debu
20d30 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20  gAndTrace(..    
20d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20d60 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f  TracePriority.Lo
20d70 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62  west, debugCallb
20d80 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
20d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20da0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
20db0 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
20dc0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
20dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20de0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e               "In
20df0 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61  valid {0} boolea
20e00 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a  n value: {1}",..
20e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20e30 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61      ForDisplay(a
20e40 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  rg), ForDisplay(
20e50 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  text)),..       
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 20 20 20 20 20 74 72 61               tra
20e80 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
20e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20eb0 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
20ec0 20 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 20 20 20                  
20ee0 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
20ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f10 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20    continue;..   
20f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f30 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
20f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20f50 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
20f60 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34  uration.noNetFx4
20f70 36 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  6 = (bool)value;
20f80 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20f90 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
20fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
20fb0 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
20fc0 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
20fd0 2c 20 22 6e 6f 4e 65 74 46 78 34 36 31 22 29 29  , "noNetFx461"))
20fe0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
20ff0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
21000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21010 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
21020 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
21030 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
21040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21050 20 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61            if (va
21060 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
21070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21080 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
21090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210a0 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72 72               err
210b0 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
210c0 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
210d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
210f0 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
21100 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
21110 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
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 74 72 61 63              trac
21140 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
21150 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
21160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
21180 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
21190 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
211a0 0d 0a 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 20                  
211c0 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
211d0 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
211e0 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
211f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
21210 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
21220 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21240 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
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 20 20 20 20 20 20 20                  
21270 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
21280 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
21290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
212a0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
212b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
212c0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
212d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
212e0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
212f0 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46  iguration.noNetF
21300 78 34 36 31 20 3d 20 28 62 6f 6f 6c 29 76 61 6c  x461 = (bool)val
21310 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
21320 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
21330 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21340 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
21350 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
21360 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78 34 36 32  Arg, "noNetFx462
21370 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
21380 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
21390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
213a0 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
213b0 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
213c0 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
213d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
213e0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
213f0 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
21400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21410 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
21420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21440 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
21450 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
21460 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
21470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21480 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
21490 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
214a0 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
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 74                 t
214d0 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
214e0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
214f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21510 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
21520 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
21530 7d 22 2c 0d 0a 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 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
21560 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
21570 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
21580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
215a0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
215b0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
215c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
215d0 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
215e0 0d 0a 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 20 20 20 20 20 20                  
21600 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
21610 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
21620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21630 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
21640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
21660 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
21670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
21680 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e  onfiguration.noN
21690 65 74 46 78 34 36 32 20 3d 20 28 62 6f 6f 6c 29  etFx462 = (bool)
216a0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
216b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
216c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
216d0 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
216e0 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
216f0 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46 78  newArg, "noNetFx
21700 34 37 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20  47"))..         
21710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
21720 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
21740 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73  ol? value = Pars
21750 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d  eBoolean(text);.
21760 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
21770 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
21780 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c  f (value == null
21790 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
217a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
217b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
217c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
217d0 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f    error = TraceO
217e0 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
217f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
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 54 72 61 63 65 50 72 69 6f         TracePrio
21820 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62  rity.Lowest, deb
21830 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ugCallback,..   
21840 20 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 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20   traceCallback, 
21870 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
21880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
218a0 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d      "Invalid {0}
218b0 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20   boolean value: 
218c0 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  {1}",..         
218d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
218e0 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69             ForDi
218f0 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44  splay(arg), ForD
21900 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a  isplay(text)),..
21910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21930 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
21940 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
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 69 66 20 28 73 74 72 69 63         if (stric
21970 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t)..            
21980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21990 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
219a0 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  alse;....       
219b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
219c0 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75           continu
219d0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
219e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
219f0 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
21a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a10 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
21a20 6f 4e 65 74 46 78 34 37 20 3d 20 28 62 6f 6f 6c  oNetFx47 = (bool
21a30 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20  )value;..       
21a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21a50 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
21a60 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
21a70 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e   if (MatchOption
21a80 28 6e 65 77 41 72 67 2c 20 22 6e 6f 4e 65 74 46  (newArg, "noNetF
21a90 78 34 37 31 22 29 29 0d 0a 20 20 20 20 20 20 20  x471"))..       
21aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ab0 20 7b 0d 0a 20 20 20 20 20 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 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61  bool? value = Pa
21ae0 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29  rseBoolean(text)
21af0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
21b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b10 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75   if (value == nu
21b20 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
21b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b40 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
21b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21b60 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63      error = Trac
21b70 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
21b80 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce(..           
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 54 72 61 63 65 50 72           TracePr
21bb0 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64  iority.Lowest, d
21bc0 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20  ebugCallback,.. 
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 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
21c00 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  , String.Format(
21c10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c30 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b        "Invalid {
21c40 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65  0} boolean value
21c50 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20  : {1}",..       
21c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21c70 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72               For
21c80 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f  Display(arg), Fo
21c90 72 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c  rDisplay(text)),
21ca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21cb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21cc0 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67        traceCateg
21cd0 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ory);....       
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 20 20 69 66 20 28 73 74 72           if (str
21d00 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20  ict)..          
21d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
21d30 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20   false;....     
21d40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d50 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69             conti
21d60 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  nue;..          
21d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21d80 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
21d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21da0 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
21db0 2e 6e 6f 4e 65 74 46 78 34 37 31 20 3d 20 28 62  .noNetFx471 = (b
21dc0 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ool)value;..    
21dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21de0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
21df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
21e00 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
21e10 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 52  ion(newArg, "noR
21e20 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 22 29 29  untimeVersion"))
21e30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
21e40 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 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 20 20 20 62 6f 6f 6c 3f 20 76           bool? v
21e70 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
21e80 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
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 69 66 20 28 76 61            if (va
21eb0 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
21ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21ed0 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 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 20 20 20 20 20 20 20 20 65 72 72               err
21f00 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
21f10 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
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 20 20 20 20 20 20 20 20                  
21f40 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
21f50 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
21f60 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
21f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
21f80 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
21f90 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
21fa0 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
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 20 20 20 20 20 20 20 22                 "
21fd0 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
21fe0 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
21ff0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22010 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
22020 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
22030 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
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 20 20 74                 t
22060 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
22070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22090 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
220a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220c0 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
220d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
220e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
220f0 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
22100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22110 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
22120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22130 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
22140 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 52 75 6e 74  iguration.noRunt
22150 69 6d 65 56 65 72 73 69 6f 6e 20 3d 20 28 62 6f  imeVersion = (bo
22160 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
22170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22180 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
22190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
221a0 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
221b0 6f 6e 28 6e 65 77 41 72 67 2c 20 22 6e 6f 54 72  on(newArg, "noTr
221c0 61 63 65 22 29 29 0d 0a 20 20 20 20 20 20 20 20  ace"))..        
221d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
221e0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
221f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
22200 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72  ool? value = Par
22210 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b  seBoolean(text);
22220 0d 0a 0d 0a 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 20 20 20 20                  
22240 69 66 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c  if (value == nul
22250 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
22260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22270 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
22280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22290 20 20 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
222a0 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
222b0 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
222c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
222d0 20 20 20 20 20 20 20 20 54 72 61 63 65 50 72 69          TracePri
222e0 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65  ority.Lowest, de
222f0 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  bugCallback,..  
22300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22320 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c    traceCallback,
22330 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
22340 0a 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 20 20 20 20 20 20 20                  
22360 20 20 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30       "Invalid {0
22370 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a  } boolean value:
22380 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20   {1}",..        
22390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
223a0 20 20 20 20 20 20 20 20 20 20 20 20 46 6f 72 44              ForD
223b0 69 73 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72  isplay(arg), For
223c0 44 69 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d  Display(text)),.
223d0 0a 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 20 20                  
223f0 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
22400 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
22410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22420 20 20 20 20 20 20 20 20 69 66 20 28 73 74 72 69          if (stri
22430 63 74 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ct)..           
22440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22450 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
22460 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  false;....      
22470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22480 20 20 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e            contin
22490 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
224a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
224b0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
224c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
224d0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
224e0 6e 6f 54 72 61 63 65 20 3d 20 28 62 6f 6f 6c 29  noTrace = (bool)
224f0 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  value;..        
22500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22510 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
22520 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20             else 
22530 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28  if (MatchOption(
22540 6e 65 77 41 72 67 2c 20 22 6e 6f 56 73 32 30 30  newArg, "noVs200
22550 35 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20  5"))..          
22560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
22570 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22580 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
22590 6c 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65  l? value = Parse
225a0 42 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a  Boolean(text);..
225b0 0d 0a 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 20 69 66                if
225d0 20 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29   (value == null)
225e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
225f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
22600 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22620 20 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70   error = TraceOp
22630 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
22640 0d 0a 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 20 20 20 20 20 20                  
22660 20 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72        TracePrior
22670 69 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75  ity.Lowest, debu
22680 67 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20  gCallback,..    
22690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
226a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
226b0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53  traceCallback, S
226c0 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20  tring.Format(.. 
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 20 20 20 20 20 20                  
226f0 20 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20     "Invalid {0} 
22700 62 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b  boolean value: {
22710 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
22720 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22730 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
22740 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
22750 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
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 20                  
22780 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
22790 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
227a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
227b0 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
227c0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
227d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
227e0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
227f0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
22800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22810 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
22820 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
22830 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
22840 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22860 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f  configuration.no
22870 56 73 32 30 30 35 20 3d 20 28 62 6f 6f 6c 29 76  Vs2005 = (bool)v
22880 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alue;..         
22890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
228a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
228b0 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
228c0 66 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e  f (MatchOption(n
228d0 65 77 41 72 67 2c 20 22 6e 6f 56 73 32 30 30 38  ewArg, "noVs2008
228e0 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
228f0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
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 20 20 20 62 6f 6f 6c              bool
22920 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
22930 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
22940 0a 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 69 66 20               if 
22960 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
22970 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22980 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
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 20 20 20 20 20 20 20 20                  
229b0 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
229c0 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
229d0 0a 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 20 20 20 20 20                  
229f0 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
22a00 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
22a10 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
22a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
22a40 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
22a50 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
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 20 20 20 20 20                  
22a80 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
22a90 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
22aa0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
22ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ac0 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
22ad0 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
22ae0 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
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 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
22b20 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
22b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b40 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
22b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22b70 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
22b80 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
22b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ba0 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b         continue;
22bb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22bc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
22bd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
22be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
22bf0 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56  onfiguration.noV
22c00 73 32 30 30 38 20 3d 20 28 62 6f 6f 6c 29 76 61  s2008 = (bool)va
22c10 6c 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  lue;..          
22c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
22c30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22c40 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
22c50 20 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65   (MatchOption(ne
22c60 77 41 72 67 2c 20 22 6e 6f 56 73 32 30 31 30 22  wArg, "noVs2010"
22c70 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
22c80 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 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 62 6f 6f 6c 3f             bool?
22cb0 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
22cc0 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
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 69 66 20 28              if (
22cf0 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
22d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22d10 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
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 20 20 20 20 20 65                 e
22d40 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
22d50 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
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 20 20 20                  
22d80 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
22d90 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
22da0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
22db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
22dd0 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
22de0 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
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 20 20 20                  
22e10 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
22e20 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
22e30 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
22e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22e50 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c          ForDispl
22e60 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
22e70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
22e80 20 20 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 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
22eb0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
22ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22ed0 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
22ee0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f00 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
22f10 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
22f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22f30 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
22f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
22f50 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
22f60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
22f70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
22f80 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73  nfiguration.noVs
22f90 32 30 31 30 20 3d 20 28 62 6f 6f 6c 29 76 61 6c  2010 = (bool)val
22fa0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
22fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
22fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
22fd0 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
22fe0 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
22ff0 41 72 67 2c 20 22 6e 6f 56 73 32 30 31 32 22 29  Arg, "noVs2012")
23000 29 0d 0a 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 62 6f 6f 6c 3f 20            bool? 
23040 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f  value = ParseBoo
23050 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20  lean(text);.... 
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 69 66 20 28 76             if (v
23080 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  alue == null).. 
23090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
230a0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
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 20 65 72                er
230d0 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44  ror = TraceOps.D
230e0 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20  ebugAndTrace(.. 
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 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74 79     TracePriority
23120 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61  .Lowest, debugCa
23130 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20  llback,..       
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 20 20 20 20 20 20 74 72 61               tra
23160 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69  ceCallback, Stri
23170 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
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 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f  "Invalid {0} boo
231b0 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22  lean value: {1}"
231c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
231d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
231e0 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
231f0 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c  y(arg), ForDispl
23200 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20  ay(text)),..    
23210 20 20 20 20 20 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 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
23240 0a 0d 0a 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 20 20 20 20                  
23260 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
23270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23280 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23290 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
232a0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
232b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
232c0 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a       continue;..
232d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
232e0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
232f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23300 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e               con
23310 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32  figuration.noVs2
23320 30 31 32 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75  012 = (bool)valu
23330 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
23340 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
23350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23360 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28         else if (
23370 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41  MatchOption(newA
23380 72 67 2c 20 22 6e 6f 56 73 32 30 31 33 22 29 29  rg, "noVs2013"))
23390 0d 0a 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 7b 0d 0a 20 20 20            {..   
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 62 6f 6f 6c 3f 20 76           bool? v
233d0 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c  alue = ParseBool
233e0 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20  ean(text);....  
233f0 20 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 69 66 20 28 76 61            if (va
23410 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20  lue == null)..  
23420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23430 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
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 65 72 72               err
23460 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65  or = TraceOps.De
23470 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20  bugAndTrace(..  
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 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e    TracePriority.
234b0 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c  Lowest, debugCal
234c0 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
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 20 20 20 74 72 61 63              trac
234f0 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
23500 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
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 22                 "
23530 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c  Invalid {0} bool
23540 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c  ean value: {1}",
23550 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23570 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79        ForDisplay
23580 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61  (arg), ForDispla
23590 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20  y(text)),..     
235a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
235b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
235c0 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
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 20 20                  
235f0 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20    if (strict).. 
23600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23620 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b     return false;
23630 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
23640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23650 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20      continue;.. 
23660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23670 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
23680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23690 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
236a0 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30  iguration.noVs20
236b0 31 33 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65  13 = (bool)value
236c0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
236d0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
236e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
236f0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
23700 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
23710 67 2c 20 22 6e 6f 56 73 32 30 31 35 22 29 29 0d  g, "noVs2015")).
23720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23730 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
23740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23750 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61          bool? va
23760 6c 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65  lue = ParseBoole
23770 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20  an(text);....   
23780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23790 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
237a0 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
237b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
237c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
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 65 72 72 6f              erro
237f0 72 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62  r = TraceOps.Deb
23800 75 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20  ugAndTrace(..   
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 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c   TracePriority.L
23840 6f 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c  owest, debugCall
23850 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
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 74 72 61 63 65             trace
23880 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67  Callback, String
23890 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20  .Format(..      
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 22 49                "I
238c0 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65  nvalid {0} boole
238d0 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d  an value: {1}",.
238e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
238f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23900 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28       ForDisplay(
23910 61 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79  arg), ForDisplay
23920 28 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20  (text)),..      
23930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
23950 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
23960 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23980 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20   if (strict)..  
23990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239b0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
239c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
239d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
239e0 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20     continue;..  
239f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a00 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
23a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
23a30 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31  guration.noVs201
23a40 35 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b  5 = (bool)value;
23a50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23a60 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
23a70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23a80 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61       else if (Ma
23a90 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67  tchOption(newArg
23aa0 2c 20 22 6e 6f 56 73 32 30 31 37 22 29 29 0d 0a  , "noVs2017"))..
23ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ac0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
23ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ae0 20 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c         bool? val
23af0 75 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61  ue = ParseBoolea
23b00 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20  n(text);....    
23b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c 75          if (valu
23b30 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20  e == null)..    
23b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23b50 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
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 65 72 72 6f 72             error
23b80 20 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75   = TraceOps.Debu
23b90 67 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20  gAndTrace(..    
23ba0 20 20 20 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 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f  TracePriority.Lo
23bd0 77 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62  west, debugCallb
23be0 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
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 74 72 61 63 65 43            traceC
23c10 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
23c20 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
23c30 20 20 20 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 22 49 6e               "In
23c50 76 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61  valid {0} boolea
23c60 6e 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a  n value: {1}",..
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 20 20 20 20 20 20                  
23c90 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61      ForDisplay(a
23ca0 72 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  rg), ForDisplay(
23cb0 74 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20  text)),..       
23cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
23ce0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
23cf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d10 69 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20  if (strict)..   
23d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d40 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a   return false;..
23d50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
23d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d70 20 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20    continue;..   
23d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23d90 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
23da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23db0 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
23dc0 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 31 37  uration.noVs2017
23dd0 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d   = (bool)value;.
23de0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
23df0 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
23e00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e10 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74      else if (Mat
23e20 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c  chOption(newArg,
23e30 20 22 70 65 72 55 73 65 72 22 29 29 0d 0a 20 20   "perUser"))..  
23e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e50 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
23e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23e70 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65       bool? value
23e80 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28   = ParseBoolean(
23e90 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  text);....      
23ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23eb0 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
23ec0 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
23ed0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23ee0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
23ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f00 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
23f10 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
23f20 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
23f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
23f50 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
23f60 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
23f70 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
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 74 72 61 63 65 43 61 6c          traceCal
23fa0 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
23fb0 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
23fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
23fd0 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76 61             "Inva
23fe0 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20  lid {0} boolean 
23ff0 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20  value: {1}",..  
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 20 20 20 20                  
24020 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
24030 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65  ), ForDisplay(te
24040 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  xt)),..         
24050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24060 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
24070 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
24080 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
240a0 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20   (strict)..     
240b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
240d0 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a  eturn false;....
240e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
240f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24100 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20  continue;..     
24110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24120 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
24130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24140 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
24150 61 74 69 6f 6e 2e 70 65 72 55 73 65 72 20 3d 20  ation.perUser = 
24160 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20  (bool)value;..  
24170 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24180 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
24190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
241a0 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f   else if (MatchO
241b0 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 70  ption(newArg, "p
241c0 72 6f 76 69 64 65 72 46 6c 61 67 73 22 29 29 0d  roviderFlags")).
241d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
241e0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
241f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24200 20 20 20 20 20 20 20 20 6f 62 6a 65 63 74 20 76          object v
24210 61 6c 75 65 20 3d 20 50 61 72 73 65 45 6e 75 6d  alue = ParseEnum
24220 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
24230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24240 20 20 20 74 79 70 65 6f 66 28 50 72 6f 76 69 64     typeof(Provid
24250 65 72 46 6c 61 67 73 29 2c 20 74 65 78 74 2c 20  erFlags), text, 
24260 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  true);....      
24270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24280 20 20 20 20 20 20 69 66 20 28 76 61 6c 75 65 20        if (value 
24290 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
242a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242b0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
242c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
242d0 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d           error =
242e0 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
242f0 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20  ndTrace(..      
24300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
24320 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65  acePriority.Lowe
24330 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63  st, debugCallbac
24340 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  k,..            
24350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24360 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
24370 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
24380 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
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 22 49 6e 76 61             "Inva
243b0 6c 69 64 20 7b 30 7d 20 76 61 6c 75 65 3a 20 7b  lid {0} value: {
243c0 31 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  1}",..          
243d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
243e0 20 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73            ForDis
243f0 70 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69  play(arg), ForDi
24400 73 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20  splay(text)),.. 
24410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24430 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
24440 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
24450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24460 20 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74        if (strict
24470 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
24480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24490 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61         return fa
244a0 6c 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  lse;....        
244b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
244c0 20 20 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65          continue
244d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
244e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
244f0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24510 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 70 72  configuration.pr
24520 6f 76 69 64 65 72 46 6c 61 67 73 20 3d 20 28 50  oviderFlags = (P
24530 72 6f 76 69 64 65 72 46 6c 61 67 73 29 76 61 6c  roviderFlags)val
24540 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
24550 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
24560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24570 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
24580 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
24590 41 72 67 2c 20 22 72 65 67 69 73 74 72 79 4c 6f  Arg, "registryLo
245a0 67 46 69 6c 65 4e 61 6d 65 22 29 29 0d 0a 20 20  gFileName"))..  
245b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
245c0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
245d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
245e0 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
245f0 6f 6e 2e 72 65 67 69 73 74 72 79 4c 6f 67 46 69  on.registryLogFi
24600 6c 65 4e 61 6d 65 20 3d 20 74 65 78 74 3b 0d 0a  leName = text;..
24610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24620 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
24630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24640 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
24650 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
24660 22 72 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e  "registryVersion
24670 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
24680 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
24690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
246a0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
246b0 69 67 75 72 61 74 69 6f 6e 2e 72 65 67 69 73 74  iguration.regist
246c0 72 79 56 65 72 73 69 6f 6e 20 3d 20 74 65 78 74  ryVersion = text
246d0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
246e0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
246f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24700 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 4d        else if (M
24710 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72  atchOption(newAr
24720 67 2c 20 22 73 74 72 69 63 74 22 29 29 0d 0a 20  g, "strict")).. 
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 7b 0d 0a 20 20 20 20 20 20         {..      
24750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24760 20 20 20 20 20 20 62 6f 6f 6c 3f 20 76 61 6c 75        bool? valu
24770 65 20 3d 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e  e = ParseBoolean
24780 28 74 65 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20  (text);....     
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 69 66 20 28 76 61 6c 75 65         if (value
247b0 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20   == null)..     
247c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
247d0 20 20 20 20 20 20 20 7b 0d 0a 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 20 20 20 20 20 20 20 20 20 65 72 72 6f 72 20            error 
24800 3d 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67  = TraceOps.Debug
24810 41 6e 64 54 72 61 63 65 28 0d 0a 20 20 20 20 20  AndTrace(..     
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 20 20 20 20 20 20 20 54                 T
24840 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77  racePriority.Low
24850 65 73 74 2c 20 64 65 62 75 67 43 61 6c 6c 62 61  est, debugCallba
24860 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ck,..           
24870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24880 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
24890 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46  llback, String.F
248a0 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20  ormat(..        
248b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
248c0 20 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 76              "Inv
248d0 61 6c 69 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e  alid {0} boolean
248e0 20 76 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20   value: {1}",.. 
248f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24910 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72     ForDisplay(ar
24920 67 29 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74  g), ForDisplay(t
24930 65 78 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ext)),..        
24940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24950 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
24960 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
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 20 20 69                 i
24990 66 20 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20  f (strict)..    
249a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
249b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
249c0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d  return false;...
249d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
249e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
249f0 20 63 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20   continue;..    
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 7d 0d 0a 0d 0a 20 20 20          }....   
24a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24a30 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
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 2f 2f 20 4e 4f 54 45           // NOTE
24a60 3a 20 41 6c 6c 6f 77 20 74 68 65 20 63 6f 6d 6d  : Allow the comm
24a70 61 6e 64 20 6c 69 6e 65 20 61 72 67 75 6d 65 6e  and line argumen
24a80 74 73 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 20  ts to..         
24a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24aa0 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 76 65 72     //       over
24ab0 72 69 64 65 20 74 68 65 20 22 73 74 72 69 63 74  ride the "strict
24ac0 6e 65 73 73 22 20 73 65 74 74 69 6e 67 0d 0a 20  ness" setting.. 
24ad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24ae0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
24af0 20 20 20 20 70 72 6f 76 69 64 65 64 20 62 79 20      provided by 
24b00 6f 75 72 20 63 61 6c 6c 65 72 2e 0d 0a 20 20 20  our caller...   
24b10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
24b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b40 20 20 20 20 20 20 20 20 20 73 74 72 69 63 74 20           strict 
24b50 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a  = (bool)value;..
24b60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b70 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
24b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24b90 20 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63     else if (Matc
24ba0 68 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20  hOption(newArg, 
24bb0 22 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 22  "throwOnMissing"
24bc0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
24bd0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24bf0 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 3f             bool?
24c00 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42 6f   value = ParseBo
24c10 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d 0a  olean(text);....
24c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
24c40 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  value == null)..
24c50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c60 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
24c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
24c90 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73 2e  rror = TraceOps.
24ca0 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d 0a  DebugAndTrace(..
24cb0 20 20 20 20 20 20 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 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
24ce0 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
24cf0 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
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 20 20 20 74 72                tr
24d20 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
24d30 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
24d40 20 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 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62 6f   "Invalid {0} bo
24d70 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31 7d  olean value: {1}
24d80 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
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 46 6f 72 44 69 73 70 6c          ForDispl
24db0 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73 70  ay(arg), ForDisp
24dc0 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20 20  lay(text)),..   
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 20                  
24df0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
24e00 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
24e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d      if (strict).
24e30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e50 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
24e60 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
24e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24e80 20 20 20 20 20 20 63 6f 6e 74 69 6e 75 65 3b 0d        continue;.
24e90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
24ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
24eb0 0d 0a 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 20 63 6f                co
24ed0 6e 66 69 67 75 72 61 74 69 6f 6e 2e 74 68 72 6f  nfiguration.thro
24ee0 77 4f 6e 4d 69 73 73 69 6e 67 20 3d 20 28 62 6f  wOnMissing = (bo
24ef0 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20  ol)value;..     
24f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f10 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
24f20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c                el
24f30 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69  se if (MatchOpti
24f40 6f 6e 28 6e 65 77 41 72 67 2c 20 22 74 72 61 63  on(newArg, "trac
24f50 65 46 6f 72 6d 61 74 22 29 29 0d 0a 20 20 20 20  eFormat"))..    
24f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f70 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
24f80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24f90 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
24fa0 2e 74 72 61 63 65 46 6f 72 6d 61 74 20 3d 20 74  .traceFormat = t
24fb0 65 78 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ext;..          
24fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
24fd0 20 20 54 72 61 63 65 4f 70 73 2e 54 72 61 63 65    TraceOps.Trace
24fe0 46 6f 72 6d 61 74 20 3d 20 63 6f 6e 66 69 67 75  Format = configu
24ff0 72 61 74 69 6f 6e 2e 74 72 61 63 65 46 6f 72 6d  ration.traceForm
25000 61 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at;..           
25010 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
25020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25030 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66 20          else if 
25040 28 4d 61 74 63 68 4f 70 74 69 6f 6e 28 6e 65 77  (MatchOption(new
25050 41 72 67 2c 20 22 74 72 61 63 65 50 72 69 6f 72  Arg, "tracePrior
25060 69 74 79 22 29 29 0d 0a 20 20 20 20 20 20 20 20  ity"))..        
25070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25080 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
25090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 6f                 o
250a0 62 6a 65 63 74 20 76 61 6c 75 65 20 3d 20 50 61  bject value = Pa
250b0 72 73 65 45 6e 75 6d 28 0d 0a 20 20 20 20 20 20  rseEnum(..      
250c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
250d0 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f 66            typeof
250e0 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 29 2c  (TracePriority),
250f0 20 74 65 78 74 2c 20 74 72 75 65 29 3b 0d 0a 0d   text, true);...
25100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25110 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
25120 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
25130 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25140 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
25150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25170 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
25180 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
25190 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
251a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
251b0 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
251c0 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
251d0 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
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 20 20 20 20 20 74                 t
25200 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
25210 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
25220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25240 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 76    "Invalid {0} v
25250 61 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20  alue: {1}",..   
25260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25280 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29   ForDisplay(arg)
25290 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78  , ForDisplay(tex
252a0 74 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  t)),..          
252b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252c0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
252d0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
252e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
252f0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
25300 28 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20  (strict)..      
25310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
25330 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
25340 20 20 20 20 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 63                 c
25360 6f 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20  ontinue;..      
25370 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25380 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20        }....     
25390 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253a0 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61         configura
253b0 74 69 6f 6e 2e 74 72 61 63 65 50 72 69 6f 72 69  tion.tracePriori
253c0 74 79 20 3d 20 28 54 72 61 63 65 50 72 69 6f 72  ty = (TracePrior
253d0 69 74 79 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ity)value;..    
253e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
253f0 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70 73          TraceOps
25400 2e 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 3d  .TracePriority =
25410 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 74   configuration.t
25420 72 61 63 65 50 72 69 6f 72 69 74 79 3b 0d 0a 20  racePriority;.. 
25430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25440 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
25450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25460 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
25470 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
25480 76 65 72 62 6f 73 65 22 29 29 0d 0a 20 20 20 20  verbose"))..    
25490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
254a0 20 20 20 20 7b 0d 0a 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 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d     bool? value =
254d0 20 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65   ParseBoolean(te
254e0 78 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  xt);....        
254f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25500 20 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d      if (value ==
25510 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
25520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25530 20 20 20 20 7b 0d 0a 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 20 65 72 72 6f 72 20 3d 20 54         error = T
25560 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
25570 54 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20  Trace(..        
25580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25590 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
255a0 65 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74  ePriority.Lowest
255b0 2c 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c  , debugCallback,
255c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
255d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
255e0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
255f0 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
25600 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
25610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25620 20 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69           "Invali
25630 64 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61  d {0} boolean va
25640 6c 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20  lue: {1}",..    
25650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25660 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25670 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c  ForDisplay(arg),
25680 20 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74   ForDisplay(text
25690 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
256a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
256b0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
256c0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
256d0 20 20 20 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 69 66 20 28              if (
256f0 73 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20  strict)..       
25700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25710 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
25720 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
25730 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
25750 6e 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20  ntinue;..       
25760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25770 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
25780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25790 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
257a0 69 6f 6e 2e 76 65 72 62 6f 73 65 20 3d 20 28 62  ion.verbose = (b
257b0 6f 6f 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20  ool)value;..    
257c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
257d0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
257e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
257f0 6c 73 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74  lse if (MatchOpt
25800 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22 76 73 56  ion(newArg, "vsV
25810 65 72 73 69 6f 6e 53 75 66 66 69 78 22 29 29 0d  ersionSuffix")).
25820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25830 20 20 20 20 20 20 20 20 20 7b 0d 0a 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 20 20 20 63 6f 6e 66 69 67 75 72          configur
25860 61 74 69 6f 6e 2e 76 73 56 65 72 73 69 6f 6e 53  ation.vsVersionS
25870 75 66 66 69 78 20 3d 20 74 65 78 74 3b 0d 0a 20  uffix = text;.. 
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 7d 0d 0a 20 20 20 20 20 20         }..      
258a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
258b0 20 20 65 6c 73 65 20 69 66 20 28 4d 61 74 63 68    else if (Match
258c0 4f 70 74 69 6f 6e 28 6e 65 77 41 72 67 2c 20 22  Option(newArg, "
258d0 77 68 61 74 49 66 22 29 29 0d 0a 20 20 20 20 20  whatIf"))..     
258e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
258f0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25910 20 20 62 6f 6f 6c 3f 20 76 61 6c 75 65 20 3d 20    bool? value = 
25920 50 61 72 73 65 42 6f 6f 6c 65 61 6e 28 74 65 78  ParseBoolean(tex
25930 74 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  t);....         
25940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25950 20 20 20 69 66 20 28 76 61 6c 75 65 20 3d 3d 20     if (value == 
25960 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20  null)..         
25970 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25980 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
25990 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
259a0 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 54 72        error = Tr
259b0 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
259c0 72 61 63 65 28 0d 0a 20 20 20 20 20 20 20 20 20  race(..         
259d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
259e0 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
259f0 50 72 69 6f 72 69 74 79 2e 4c 6f 77 65 73 74 2c  Priority.Lowest,
25a00 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 0d   debugCallback,.
25a10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a30 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
25a40 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ck, String.Forma
25a50 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t(..            
25a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25a70 20 20 20 20 20 20 20 20 22 49 6e 76 61 6c 69 64          "Invalid
25a80 20 7b 30 7d 20 62 6f 6f 6c 65 61 6e 20 76 61 6c   {0} boolean val
25a90 75 65 3a 20 7b 31 7d 22 2c 0d 0a 20 20 20 20 20  ue: {1}",..     
25aa0 20 20 20 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 46                 F
25ac0 6f 72 44 69 73 70 6c 61 79 28 61 72 67 29 2c 20  orDisplay(arg), 
25ad0 46 6f 72 44 69 73 70 6c 61 79 28 74 65 78 74 29  ForDisplay(text)
25ae0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
25af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b00 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
25b10 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
25b20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b30 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 73             if (s
25b40 74 72 69 63 74 29 0d 0a 20 20 20 20 20 20 20 20  trict)..        
25b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25b60 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
25b70 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20 20  rn false;....   
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 63 6f 6e               con
25ba0 74 69 6e 75 65 3b 0d 0a 20 20 20 20 20 20 20 20  tinue;..        
25bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25bc0 20 20 20 20 7d 0d 0a 0d 0a 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 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
25bf0 6f 6e 2e 77 68 61 74 49 66 20 3d 20 28 62 6f 6f  on.whatIf = (boo
25c00 6c 29 76 61 6c 75 65 3b 0d 0a 20 20 20 20 20 20  l)value;..      
25c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
25c30 20 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73               els
25c40 65 20 69 66 20 28 4d 61 74 63 68 4f 70 74 69 6f  e if (MatchOptio
25c50 6e 28 6e 65 77 41 72 67 2c 20 22 77 6f 77 36 34  n(newArg, "wow64
25c60 22 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  "))..           
25c70 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
25c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25c90 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
25ca0 3f 20 76 61 6c 75 65 20 3d 20 50 61 72 73 65 42  ? value = ParseB
25cb0 6f 6f 6c 65 61 6e 28 74 65 78 74 29 3b 0d 0a 0d  oolean(text);...
25cc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25cd0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
25ce0 28 76 61 6c 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d  (value == null).
25cf0 0a 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 20 20 20 20 7b 0d 0a               {..
25d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d30 65 72 72 6f 72 20 3d 20 54 72 61 63 65 4f 70 73  error = TraceOps
25d40 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28 0d  .DebugAndTrace(.
25d50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
25d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25d70 20 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69       TracePriori
25d80 74 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67  ty.Lowest, debug
25d90 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20  Callback,..     
25da0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25db0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
25dc0 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
25dd0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
25de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e00 20 20 22 49 6e 76 61 6c 69 64 20 7b 30 7d 20 62    "Invalid {0} b
25e10 6f 6f 6c 65 61 6e 20 76 61 6c 75 65 3a 20 7b 31  oolean value: {1
25e20 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
25e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e40 20 20 20 20 20 20 20 20 20 46 6f 72 44 69 73 70           ForDisp
25e50 6c 61 79 28 61 72 67 29 2c 20 46 6f 72 44 69 73  lay(arg), ForDis
25e60 70 6c 61 79 28 74 65 78 74 29 29 2c 0d 0a 20 20  play(text)),..  
25e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25e90 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
25ea0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
25eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ec0 20 20 20 20 20 69 66 20 28 73 74 72 69 63 74 29       if (strict)
25ed0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25ee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25ef0 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
25f00 73 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  se;....         
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 63 6f 6e 74 69 6e 75 65 3b         continue;
25f30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
25f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
25f50 0a 0d 0a 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 63                 c
25f70 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 77 6f 77  onfiguration.wow
25f80 36 34 20 3d 20 28 62 6f 6f 6c 29 76 61 6c 75 65  64 = (bool)value
25f90 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
25fa0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
25fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25fc0 20 20 20 20 20 20 65 6c 73 65 0d 0a 20 20 20 20        else..    
25fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
25fe0 20 20 20 20 7b 0d 0a 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 65 72 72 6f 72 20 3d 20 54 72 61 63 65     error = Trace
26010 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
26020 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
26030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26040 20 20 20 20 54 72 61 63 65 50 72 69 6f 72 69 74      TracePriorit
26050 79 2e 4c 6f 77 65 73 74 2c 20 64 65 62 75 67 43  y.Lowest, debugC
26060 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20  allback,..      
26070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26080 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
26090 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
260a0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
260b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
260c0 20 20 20 20 20 20 20 20 20 22 55 6e 73 75 70 70           "Unsupp
260d0 6f 72 74 65 64 20 63 6f 6d 6d 61 6e 64 20 6c 69  orted command li
260e0 6e 65 20 6f 70 74 69 6f 6e 3a 20 7b 30 7d 22 2c  ne option: {0}",
260f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26110 20 20 46 6f 72 44 69 73 70 6c 61 79 28 61 72 67    ForDisplay(arg
26120 29 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72  )), traceCategor
26130 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
26140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26150 20 20 20 69 66 20 28 73 74 72 69 63 74 29 0d 0a     if (strict)..
26160 20 20 20 20 20 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 20 20 20                  
26180 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
26190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
261a0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
261b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
261c0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
261d0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 74 72         return tr
261e0 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ue;..           
261f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
26200 20 20 20 20 20 20 20 20 63 61 74 63 68 20 28 45          catch (E
26210 78 63 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20  xception e)..   
26220 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
26230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26240 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62      TraceOps.Deb
26250 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65  ugAndTrace(Trace
26260 50 72 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74  Priority.Highest
26270 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
26280 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
26290 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
262a0 61 6c 6c 62 61 63 6b 2c 20 65 2c 20 74 72 61 63  allback, e, trac
262b0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
262c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
262d0 20 20 20 65 72 72 6f 72 20 3d 20 22 46 61 69 6c     error = "Fail
262e0 65 64 20 74 6f 20 6d 6f 64 69 66 79 20 63 6f 6e  ed to modify con
262f0 66 69 67 75 72 61 74 69 6f 6e 2e 22 3b 0d 0a 20  figuration.";.. 
26300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
26310 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
26320 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
26330 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
26340 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
26350 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26360 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26370 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26380 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
26390 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
263a0 20 20 20 5b 4d 65 74 68 6f 64 49 6d 70 6c 28 4d     [MethodImpl(M
263b0 65 74 68 6f 64 49 6d 70 6c 4f 70 74 69 6f 6e 73  ethodImplOptions
263c0 2e 4e 6f 49 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20  .NoInlining)].. 
263d0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
263e0 63 20 73 74 61 74 69 63 20 62 6f 6f 6c 20 50 72  c static bool Pr
263f0 6f 63 65 73 73 28 0d 0a 20 20 20 20 20 20 20 20  ocess(..        
26400 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 5b 5d          string[]
26410 20 61 72 67 73 2c 0d 0a 20 20 20 20 20 20 20 20   args,..        
26420 20 20 20 20 20 20 20 20 43 6f 6e 66 69 67 75 72          Configur
26430 61 74 69 6f 6e 20 63 6f 6e 66 69 67 75 72 61 74  ation configurat
26440 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ion,..          
26450 20 20 20 20 20 20 62 6f 6f 6c 20 73 74 72 69 63        bool stric
26460 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
26470 20 20 20 20 72 65 66 20 73 74 72 69 6e 67 20 65      ref string e
26480 72 72 6f 72 0d 0a 20 20 20 20 20 20 20 20 20 20  rror..          
26490 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20        )..       
264a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
264b0 20 20 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20          try..   
264c0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
264d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
264e0 20 20 20 20 69 66 20 28 63 6f 6e 66 69 67 75 72      if (configur
264f0 61 74 69 6f 6e 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  ation == null)..
26500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26510 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
26520 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
26530 72 72 6f 72 20 3d 20 22 49 6e 76 61 6c 69 64 20  rror = "Invalid 
26540 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 22 3b  configuration.";
26550 0d 0a 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 72 65 74 75 72 6e            return
26570 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20   false;..       
26580 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
26590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
265a0 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79 20 61        Assembly a
265b0 73 73 65 6d 62 6c 79 20 3d 20 63 6f 6e 66 69 67  ssembly = config
265c0 75 72 61 74 69 6f 6e 2e 61 73 73 65 6d 62 6c 79  uration.assembly
265d0 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
265e0 20 20 20 20 20 20 20 20 20 69 66 20 28 61 73 73           if (ass
265f0 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29 0d 0a  embly == null)..
26600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26610 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
26620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
26630 72 72 6f 72 20 3d 20 22 49 6e 76 61 6c 69 64 20  rror = "Invalid 
26640 61 73 73 65 6d 62 6c 79 2e 22 3b 0d 0a 20 20 20  assembly.";..   
26650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26660 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
26670 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
26680 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
26690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
266a0 20 69 66 20 28 21 63 6f 6e 66 69 67 75 72 61 74   if (!configurat
266b0 69 6f 6e 2e 6e 6f 54 72 61 63 65 29 0d 0a 20 20  ion.noTrace)..  
266c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
266d0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
266e0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
266f0 28 21 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  (!configuration.
26700 6e 6f 4c 6f 67 20 26 26 0d 0a 20 20 20 20 20 20  noLog &&..      
26710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26720 20 20 20 20 20 20 53 74 72 69 6e 67 2e 49 73 4e        String.IsN
26730 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f 6e 66 69  ullOrEmpty(confi
26740 67 75 72 61 74 69 6f 6e 2e 6c 6f 67 46 69 6c 65  guration.logFile
26750 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20 20 20 20  Name))..        
26760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26770 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
26780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
26790 2f 0d 0a 20 20 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 2f                 /
267b0 2f 20 4e 4f 54 45 3a 20 55 73 65 20 74 68 65 20  / NOTE: Use the 
267c0 64 65 66 61 75 6c 74 20 6c 6f 67 20 66 69 6c 65  default log file
267d0 20 6e 61 6d 65 2e 0d 0a 20 20 20 20 20 20 20 20   name...        
267e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
267f0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
26800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26810 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
26820 6e 2e 6c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d 20  n.logFileName = 
26830 47 65 74 4c 6f 67 46 69 6c 65 4e 61 6d 65 28 0d  GetLogFileName(.
26840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
26850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26860 20 22 74 72 61 63 65 22 29 3b 0d 0a 20 20 20 20   "trace");..    
26870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26880 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
26890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
268a0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
268b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
268d0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
268e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
268f0 20 20 20 20 69 66 20 28 21 63 6f 6e 66 69 67 75      if (!configu
26900 72 61 74 69 6f 6e 2e 6e 6f 43 6f 6e 73 6f 6c 65  ration.noConsole
26910 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
26920 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
26930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26940 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
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 2f 2f 20 4e 4f 54            // NOT
26970 45 3a 20 49 6e 20 76 65 72 62 6f 73 65 20 6d 6f  E: In verbose mo
26980 64 65 2c 20 64 65 62 75 67 20 6f 75 74 70 75 74  de, debug output
26990 20 28 74 68 61 74 20 6d 65 65 74 73 0d 0a 20 20   (that meets..  
269a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
269b0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
269c0 20 20 20 74 68 65 20 63 6f 6e 66 69 67 75 72 65     the configure
269d0 64 20 70 72 69 6f 72 69 74 79 20 63 72 69 74 65  d priority crite
269e0 72 69 61 29 20 77 69 6c 6c 20 62 65 0d 0a 20 20  ria) will be..  
269f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26a00 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
26a10 20 20 20 64 69 73 70 6c 61 79 65 64 20 74 6f 20     displayed to 
26a20 74 68 65 20 63 6f 6e 73 6f 6c 65 3b 20 6f 74 68  the console; oth
26a30 65 72 77 69 73 65 2c 20 74 72 61 63 65 0d 0a 20  erwise, trace.. 
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 2f 2f 20 20 20             //   
26a60 20 20 20 20 6f 75 74 70 75 74 20 28 74 68 61 74      output (that
26a70 20 6d 65 65 74 73 20 74 68 65 20 63 6f 6e 66 69   meets the confi
26a80 67 75 72 65 64 20 70 72 69 6f 72 69 74 79 0d 0a  gured priority..
26a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26aa0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
26ab0 20 20 20 20 20 63 72 69 74 65 72 69 61 29 20 77       criteria) w
26ac0 69 6c 6c 20 62 65 20 64 69 73 70 6c 61 79 65 64  ill be displayed
26ad0 20 74 6f 20 74 68 65 20 63 6f 6e 73 6f 6c 65 2e   to the console.
26ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
26af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
26b00 0d 0a 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 20 20 20 69 66                if
26b20 20 28 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e   (configuration.
26b30 64 65 62 75 67 29 0d 0a 20 20 20 20 20 20 20 20  debug)..        
26b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b50 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
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 2f 2f 0d 0a 20 20 20 20 20         //..     
26b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26b90 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
26ba0 54 45 3a 20 41 64 64 20 74 68 65 20 63 6f 6e 73  TE: Add the cons
26bb0 6f 6c 65 20 74 72 61 63 65 20 6c 69 73 74 65 6e  ole trace listen
26bc0 65 72 20 74 6f 20 74 68 65 0d 0a 20 20 20 20 20  er to the..     
26bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26be0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
26bf0 20 20 20 20 6c 69 73 74 20 6f 66 20 74 72 61 63      list of trac
26c00 65 20 6c 69 73 74 65 6e 65 72 73 20 6d 61 69 6e  e listeners main
26c10 74 61 69 6e 65 64 20 62 79 0d 0a 20 20 20 20 20  tained by..     
26c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c30 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
26c40 20 20 20 20 74 68 65 20 54 72 61 63 65 4f 70 73      the TraceOps
26c50 20 63 6c 61 73 73 20 28 69 2e 65 2e 20 6f 6e 6c   class (i.e. onl
26c60 79 20 6d 65 73 73 61 67 65 73 0d 0a 20 20 20 20  y messages..    
26c70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26c80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
26c90 20 20 20 20 20 74 68 61 74 20 6d 65 65 74 20 74       that meet t
26ca0 68 65 20 64 65 62 75 67 20 70 72 69 6f 72 69 74  he debug priorit
26cb0 79 20 77 69 6c 6c 20 62 65 0d 0a 20 20 20 20 20  y will be..     
26cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26cd0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
26ce0 20 20 20 20 73 65 65 6e 20 6f 6e 20 74 68 65 20      seen on the 
26cf0 63 6f 6e 73 6f 6c 65 29 2e 0d 0a 20 20 20 20 20  console)...     
26d00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d10 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
26d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
26d40 72 61 63 65 4f 70 73 2e 53 65 74 75 70 44 65 62  raceOps.SetupDeb
26d50 75 67 4c 69 73 74 65 6e 65 72 73 28 29 3b 0d 0a  ugListeners();..
26d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d70 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
26d80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26d90 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d             else.
26da0 0a 20 20 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 20 20 7b 0d 0a               {..
26dc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26dd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26de0 2f 2f 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 20 20 20 20                  
26e00 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 41 64 64      // NOTE: Add
26e10 20 74 68 65 20 63 6f 6e 73 6f 6c 65 20 74 72 61   the console tra
26e20 63 65 20 6c 69 73 74 65 6e 65 72 20 74 6f 20 74  ce listener to t
26e30 68 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  he..            
26e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26e50 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6c 69 73      //       lis
26e60 74 20 6f 66 20 62 75 69 6c 74 2d 69 6e 20 74 72  t of built-in tr
26e70 61 63 65 20 6c 69 73 74 65 6e 65 72 73 20 28 69  ace listeners (i
26e80 2e 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .e...           
26e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26ea0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f 6e       //       on
26eb0 6c 79 20 6d 65 73 73 61 67 65 73 20 74 68 61 74  ly messages that
26ec0 20 6d 65 65 74 20 74 68 65 20 74 72 61 63 65 0d   meet the trace.
26ed0 0a 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 2f 2f 20 20 20 20 20 20 20 70 72 69 6f 72 69   //       priori
26f00 74 79 20 77 69 6c 6c 20 62 65 20 73 65 65 6e 20  ty will be seen 
26f10 6f 6e 20 74 68 65 20 63 6f 6e 73 6f 6c 65 29 2e  on the console).
26f20 0d 0a 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 20 20                  
26f40 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
26f50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26f60 20 20 20 20 20 20 54 72 61 63 65 2e 4c 69 73 74        Trace.List
26f70 65 6e 65 72 73 2e 41 64 64 28 6e 65 77 20 43 6f  eners.Add(new Co
26f80 6e 73 6f 6c 65 54 72 61 63 65 4c 69 73 74 65 6e  nsoleTraceListen
26f90 65 72 28 29 29 3b 0d 0a 20 20 20 20 20 20 20 20  er());..        
26fa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
26fb0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
26fc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
26fd0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
26fe0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
26ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
27020 2f 2f 2f 0d 0a 0d 0a 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 69                 i
27040 66 20 28 21 63 6f 6e 66 69 67 75 72 61 74 69 6f  f (!configuratio
27050 6e 2e 6e 6f 4c 6f 67 20 26 26 0d 0a 20 20 20 20  n.noLog &&..    
27060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27070 20 20 20 20 20 20 20 20 21 53 74 72 69 6e 67 2e          !String.
27080 49 73 4e 75 6c 6c 4f 72 45 6d 70 74 79 28 63 6f  IsNullOrEmpty(co
27090 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6c 6f 67 46  nfiguration.logF
270a0 69 6c 65 4e 61 6d 65 29 29 0d 0a 20 20 20 20 20  ileName))..     
270b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
270c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
270d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
270e0 20 20 54 72 61 63 65 2e 4c 69 73 74 65 6e 65 72    Trace.Listener
270f0 73 2e 41 64 64 28 6e 65 77 20 54 65 78 74 57 72  s.Add(new TextWr
27100 69 74 65 72 54 72 61 63 65 4c 69 73 74 65 6e 65  iterTraceListene
27110 72 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r(..            
27120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27130 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
27140 6e 2e 6c 6f 67 46 69 6c 65 4e 61 6d 65 29 29 3b  n.logFileName));
27150 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
27160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27170 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27190 2f 2f 20 4e 4f 54 45 3a 20 54 65 63 68 6e 69 63  // NOTE: Technic
271a0 61 6c 6c 79 2c 20 77 65 20 63 72 65 61 74 65 64  ally, we created
271b0 20 74 68 65 20 6c 6f 67 20 66 69 6c 65 2e 0d 0a   the log file...
271c0 20 20 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 2f 2f 0d 0a              //..
271e0 20 20 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 66 69 6c 65              file
27200 73 43 72 65 61 74 65 64 2b 2b 3b 0d 0a 20 20 20  sCreated++;..   
27210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27220 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
27230 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
27240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27250 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
27260 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
27270 4e 4f 54 45 3a 20 44 75 6d 70 20 74 68 65 20 63  NOTE: Dump the c
27280 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 6e 6f 77  onfiguration now
27290 20 69 6e 20 63 61 73 65 20 77 65 20 6e 65 65 64   in case we need
272a0 20 74 6f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   to..           
272b0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
272c0 20 20 74 72 6f 75 62 6c 65 73 68 6f 6f 74 20 61    troubleshoot a
272d0 6e 79 20 69 73 73 75 65 73 2e 0d 0a 20 20 20 20  ny issues...    
272e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
272f0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27300 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 66          if (conf
27310 69 67 75 72 61 74 69 6f 6e 2e 64 65 62 75 67 50  iguration.debugP
27320 72 69 6f 72 69 74 79 20 3c 3d 20 54 72 61 63 65  riority <= Trace
27330 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 29  Priority.Medium)
27340 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27350 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
27360 75 72 61 74 69 6f 6e 2e 44 75 6d 70 28 64 65 62  uration.Dump(deb
27370 75 67 43 61 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a  ugCallback);....
27380 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27390 20 20 20 20 69 66 20 28 63 6f 6e 66 69 67 75 72      if (configur
273a0 61 74 69 6f 6e 2e 74 72 61 63 65 50 72 69 6f 72  ation.tracePrior
273b0 69 74 79 20 3c 3d 20 54 72 61 63 65 50 72 69 6f  ity <= TracePrio
273c0 72 69 74 79 2e 4d 65 64 69 75 6d 29 0d 0a 20 20  rity.Medium)..  
273d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
273e0 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
273f0 69 6f 6e 2e 44 75 6d 70 28 74 72 61 63 65 43 61  ion.Dump(traceCa
27400 6c 6c 62 61 63 6b 29 3b 0d 0a 0d 0a 20 20 20 20  llback);....    
27410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27420 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27430 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
27440 20 53 68 6f 77 20 77 68 65 72 65 20 77 65 20 61   Show where we a
27450 72 65 20 72 75 6e 6e 69 6e 67 20 66 72 6f 6d 20  re running from 
27460 61 6e 64 20 68 6f 77 20 77 65 20 77 65 72 65 0d  and how we were.
27470 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27480 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 69 6e       //       in
27490 76 6f 6b 65 64 2e 0d 0a 20 20 20 20 20 20 20 20  voked...        
274a0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
274b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
274c0 20 20 20 20 73 74 72 69 6e 67 20 6c 6f 63 61 74      string locat
274d0 69 6f 6e 20 3d 20 61 73 73 65 6d 62 6c 79 2e 4c  ion = assembly.L
274e0 6f 63 61 74 69 6f 6e 3b 0d 0a 0d 0a 20 20 20 20  ocation;....    
274f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27500 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
27510 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f  dTrace(TracePrio
27520 72 69 74 79 2e 4d 65 64 69 75 6d 4c 6f 77 2c 0d  rity.MediumLow,.
27530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27540 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61           debugCa
27550 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c  llback, traceCal
27560 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f  lback, String.Fo
27570 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20  rmat(..         
27580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
27590 52 75 6e 6e 69 6e 67 20 65 78 65 63 75 74 61 62  Running executab
275a0 6c 65 20 69 73 3a 20 7b 30 7d 22 2c 20 46 6f 72  le is: {0}", For
275b0 44 69 73 70 6c 61 79 28 6c 6f 63 61 74 69 6f 6e  Display(location
275c0 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
275d0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
275e0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
275f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27600 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62      TraceOps.Deb
27610 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63 65  ugAndTrace(Trace
27620 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d 4c  Priority.MediumL
27630 6f 77 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ow,..           
27640 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65 62               deb
27650 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63  ugCallback, trac
27660 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e  eCallback, Strin
27670 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20  g.Format(..     
27680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27690 20 20 20 22 4f 72 69 67 69 6e 61 6c 20 63 6f 6d     "Original com
276a0 6d 61 6e 64 20 6c 69 6e 65 20 69 73 3a 20 7b 30  mand line is: {0
276b0 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }",..           
276c0 20 20 20 20 20 20 20 20 20 20 20 20 20 45 6e 76               Env
276d0 69 72 6f 6e 6d 65 6e 74 2e 43 6f 6d 6d 61 6e 64  ironment.Command
276e0 4c 69 6e 65 29 2c 20 74 72 61 63 65 43 61 74 65  Line), traceCate
276f0 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
27700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54 72                Tr
27710 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54  aceOps.DebugAndT
27720 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72 69  race(TracePriori
27730 74 79 2e 4d 65 64 69 75 6d 4c 6f 77 2c 0d 0a 20  ty.MediumLow,.. 
27740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27750 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c         debugCall
27760 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
27770 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72 6d  ack, String.Form
27780 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at(..           
27790 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52 75               "Ru
277a0 6e 6e 69 6e 67 20 70 72 6f 63 65 73 73 20 69 73  nning process is
277b0 20 7b 30 7d 2e 22 2c 20 49 73 36 34 42 69 74 50   {0}.", Is64BitP
277c0 72 6f 63 65 73 73 28 29 20 3f 0d 0a 20 20 20 20  rocess() ?..    
277d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
277e0 20 20 20 20 20 20 20 20 22 36 34 2d 62 69 74 22          "64-bit"
277f0 20 3a 20 22 33 32 2d 62 69 74 22 29 2c 20 74 72   : "32-bit"), tr
27800 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
27810 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27820 20 20 20 20 20 69 66 20 28 21 63 6f 6e 66 69 67       if (!config
27830 75 72 61 74 69 6f 6e 2e 77 68 61 74 49 66 29 0d  uration.whatIf).
27840 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27850 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
27860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27870 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27880 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e              // N
27890 4f 54 45 3a 20 49 66 20 74 68 65 20 64 65 62 75  OTE: If the debu
278a0 67 67 65 72 20 69 73 20 61 74 74 61 63 68 65 64  gger is attached
278b0 20 61 6e 64 20 22 77 68 61 74 2d 69 66 22 0d 0a   and "what-if"..
278c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
278d0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
278e0 20 6d 6f 64 65 20 69 73 20 5b 6e 6f 77 5d 20 64   mode is [now] d
278f0 69 73 61 62 6c 65 64 2c 20 69 73 73 75 65 20 61  isabled, issue a
27900 20 77 61 72 6e 69 6e 67 2e 0d 0a 20 20 20 20 20   warning...     
27910 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27920 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
27930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
27940 66 20 28 44 65 62 75 67 67 65 72 2e 49 73 41 74  f (Debugger.IsAt
27950 74 61 63 68 65 64 29 0d 0a 20 20 20 20 20 20 20  tached)..       
27960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27970 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
27980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27990 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
279a0 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f  dTrace(TracePrio
279b0 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c  rity.MediumHigh,
279c0 0d 0a 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 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c    debugCallback,
279f0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d   traceCallback,.
27a00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27a10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a20 20 22 46 6f 72 63 65 64 20 74 6f 20 64 69 73 61   "Forced to disa
27a30 62 6c 65 20 5c 22 77 68 61 74 2d 69 66 5c 22 20  ble \"what-if\" 
27a40 6d 6f 64 65 20 77 69 74 68 20 22 20 2b 0d 0a 20  mode with " +.. 
27a50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
27a70 64 65 62 75 67 67 65 72 20 61 74 74 61 63 68 65  debugger attache
27a80 64 2e 22 2c 20 74 72 61 63 65 43 61 74 65 67 6f  d.", traceCatego
27a90 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ry);..          
27aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
27ab0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27ac0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
27ad0 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73 65              else
27ae0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
27af0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
27b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27b10 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
27b20 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
27b30 6f 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68  ority.MediumHigh
27b40 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
27b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
27b60 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72  ebugCallback, tr
27b70 61 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20  aceCallback,..  
27b80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27b90 20 20 20 20 20 20 20 20 20 20 22 4e 6f 20 61 63            "No ac
27ba0 74 75 61 6c 20 63 68 61 6e 67 65 73 20 77 69 6c  tual changes wil
27bb0 6c 20 62 65 20 6d 61 64 65 20 74 6f 20 74 68 69  l be made to thi
27bc0 73 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20  s " +..         
27bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27be0 20 20 20 22 73 79 73 74 65 6d 20 62 65 63 61 75     "system becau
27bf0 73 65 20 5c 22 77 68 61 74 2d 69 66 5c 22 20 6d  se \"what-if\" m
27c00 6f 64 65 20 69 73 20 65 6e 61 62 6c 65 64 2e 22  ode is enabled."
27c10 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
27c20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
27c30 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
27c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27c50 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
27c60 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
27c70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27c80 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49 66       // NOTE: If
27c90 20 74 68 65 20 72 65 67 69 73 74 72 79 20 6c 6f   the registry lo
27ca0 67 20 66 69 6c 65 20 6e 61 6d 65 20 68 61 73 20  g file name has 
27cb0 62 65 65 6e 20 73 65 74 2c 20 69 74 73 0d 0a 20  been set, its.. 
27cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27cd0 20 20 20 2f 2f 20 20 20 20 20 20 20 76 61 6c 75     //       valu
27ce0 65 20 77 69 6c 6c 20 62 65 20 75 73 65 64 20 76  e will be used v
27cf0 65 72 62 61 74 69 6d 20 61 73 20 74 68 65 20 70  erbatim as the p
27d00 6c 61 63 65 20 77 68 65 72 65 0d 0a 20 20 20 20  lace where..    
27d10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27d20 2f 2f 20 20 20 20 20 20 20 61 6c 6c 20 72 65 67  //       all reg
27d30 69 73 74 72 79 20 77 72 69 74 65 20 6f 70 65 72  istry write oper
27d40 61 74 69 6f 6e 73 20 77 69 6c 6c 20 28 65 76 65  ations will (eve
27d50 6e 74 75 61 6c 6c 79 29 0d 0a 20 20 20 20 20 20  ntually)..      
27d60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
27d70 20 20 20 20 20 20 20 62 65 20 6c 6f 67 67 65 64         be logged
27d80 2e 20 20 4d 61 6b 65 20 73 75 72 65 20 74 68 65  .  Make sure the
27d90 20 72 65 67 69 73 74 72 79 20 68 65 6c 70 65 72   registry helper
27da0 20 63 6c 61 73 73 0d 0a 20 20 20 20 20 20 20 20   class..        
27db0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
27dc0 20 20 20 20 20 68 61 73 20 61 20 76 61 6c 69 64       has a valid
27dd0 20 6f 70 65 72 61 74 69 6f 6e 20 6c 69 73 74 3b   operation list;
27de0 20 6f 74 68 65 72 77 69 73 65 2c 20 69 74 20 77   otherwise, it w
27df0 69 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ill..           
27e00 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
27e10 20 20 6e 6f 74 20 70 65 72 66 6f 72 6d 20 61 6e    not perform an
27e20 79 20 6c 6f 67 67 69 6e 67 2e 0d 0a 20 20 20 20  y logging...    
27e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27e40 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
27e50 20 20 20 20 20 20 20 20 69 66 20 28 63 6f 6e 66          if (conf
27e60 69 67 75 72 61 74 69 6f 6e 2e 72 65 67 69 73 74  iguration.regist
27e70 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 20 21 3d  ryLogFileName !=
27e80 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
27e90 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
27ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27eb0 20 20 20 20 20 20 20 52 65 67 69 73 74 72 79 48         RegistryH
27ec0 65 6c 70 65 72 2e 45 6e 61 62 6c 65 4f 72 44 69  elper.EnableOrDi
27ed0 73 61 62 6c 65 4f 70 65 72 61 74 69 6f 6e 4c 69  sableOperationLi
27ee0 73 74 28 74 72 75 65 29 3b 0d 0a 0d 0a 20 20 20  st(true);....   
27ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f00 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65       TraceOps.De
27f10 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63  bugAndTrace(Trac
27f20 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d  ePriority.Medium
27f30 48 69 67 68 2c 0d 0a 20 20 20 20 20 20 20 20 20  High,..         
27f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27f50 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b     debugCallback
27f60 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c  , traceCallback,
27f70 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d   String.Format(.
27f80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
27f90 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65               "Re
27fa0 67 69 73 74 72 79 20 6c 6f 67 67 69 6e 67 20 74  gistry logging t
27fb0 6f 20 66 69 6c 65 20 7b 30 7d 20 65 6e 61 62 6c  o file {0} enabl
27fc0 65 64 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20  ed.",..         
27fd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
27fe0 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 63 6f     ForDisplay(co
27ff0 6e 66 69 67 75 72 61 74 69 6f 6e 2e 72 65 67 69  nfiguration.regi
28000 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 29  stryLogFileName)
28010 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
28020 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28030 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
28040 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28050 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
28060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
28070 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28080 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 49        // NOTE: I
28090 66 20 74 68 65 20 63 6f 6d 6d 61 6e 64 20 6c 69  f the command li
280a0 6e 65 20 68 61 73 20 6e 6f 74 20 62 65 65 6e 20  ne has not been 
280b0 6d 61 6e 75 61 6c 6c 79 0d 0a 20 20 20 20 20 20  manually..      
280c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
280d0 20 20 20 20 20 20 20 63 6f 6e 66 69 72 6d 65 64         confirmed
280e0 20 28 69 2e 65 2e 20 76 69 61 20 74 68 65 20 65   (i.e. via the e
280f0 78 70 6c 69 63 69 74 20 63 6f 6d 6d 61 6e 64 20  xplicit command 
28100 6c 69 6e 65 0d 0a 20 20 20 20 20 20 20 20 20 20  line..          
28110 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20            //    
28120 20 20 20 6f 70 74 69 6f 6e 29 2c 20 74 68 65 6e     option), then
28130 20 73 74 6f 70 20 70 72 6f 63 65 73 73 69 6e 67   stop processing
28140 20 6e 6f 77 2e 20 20 57 65 20 65 6e 66 6f 72 63   now.  We enforc
28150 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
28160 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
28170 74 68 69 73 20 72 75 6c 65 20 73 6f 20 74 68 61  this rule so tha
28180 74 20 73 69 6d 70 6c 79 20 64 6f 75 62 6c 65 2d  t simply double-
28190 63 6c 69 63 6b 69 6e 67 20 74 68 65 0d 0a 20 20  clicking the..  
281a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
281b0 20 20 2f 2f 20 20 20 20 20 20 20 65 78 65 63 75    //       execu
281c0 74 61 62 6c 65 20 77 69 6c 6c 20 6e 6f 74 20 72  table will not r
281d0 65 73 75 6c 74 20 69 6e 20 61 6e 79 20 63 68 61  esult in any cha
281e0 6e 67 65 73 20 62 65 69 6e 67 0d 0a 20 20 20 20  nges being..    
281f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28200 2f 2f 20 20 20 20 20 20 20 6d 61 64 65 20 74 6f  //       made to
28210 20 74 68 65 20 73 79 73 74 65 6d 2e 0d 0a 20 20   the system...  
28220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28230 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
28240 20 20 20 20 20 20 20 20 20 20 69 66 20 28 21 63            if (!c
28250 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 63 6f 6e  onfiguration.con
28260 66 69 72 6d 29 0d 0a 20 20 20 20 20 20 20 20 20  firm)..         
28270 20 20 20 20 20 20 20 20 20 20 20 7b 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 65 72 72 6f 72 20 3d 20 22 43        error = "C
282a0 61 6e 6e 6f 74 20 63 6f 6e 74 69 6e 75 65 2c 20  annot continue, 
282b0 74 68 65 20 5c 22 63 6f 6e 66 69 72 6d 5c 22 20  the \"confirm\" 
282c0 6f 70 74 69 6f 6e 20 69 73 20 22 20 2b 0d 0a 20  option is " +.. 
282d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
282e0 20 20 20 20 20 20 20 20 20 20 20 22 6e 6f 74 20             "not 
282f0 65 6e 61 62 6c 65 64 2e 22 3b 0d 0a 0d 0a 20 20  enabled.";....  
28300 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28310 20 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c        return fal
28320 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  se;..           
28330 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
28340 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28350 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
28360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28370 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
28380 20 20 20 63 61 74 63 68 20 28 45 78 63 65 70 74     catch (Except
28390 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20 20 20 20  ion e)..        
283a0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
283b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
283c0 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e 64  raceOps.DebugAnd
283d0 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f 72  Trace(TracePrior
283e0 69 74 79 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20  ity.Highest,..  
283f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28400 20 20 20 20 20 20 64 65 62 75 67 43 61 6c 6c 62        debugCallb
28410 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62 61  ack, traceCallba
28420 63 6b 2c 20 65 2c 20 74 72 61 63 65 43 61 74 65  ck, e, traceCate
28430 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
28440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65 72                er
28450 72 6f 72 20 3d 20 22 46 61 69 6c 65 64 20 74 6f  ror = "Failed to
28460 20 70 72 6f 63 65 73 73 20 63 6f 6e 66 69 67 75   process configu
28470 72 61 74 69 6f 6e 2e 22 3b 0d 0a 20 20 20 20 20  ration.";..     
28480 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
28490 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
284a0 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20  return false;.. 
284b0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
284c0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
284d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
284e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
284f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
28500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
28510 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 5b  ...            [
28520 4d 65 74 68 6f 64 49 6d 70 6c 28 4d 65 74 68 6f  MethodImpl(Metho
28530 64 49 6d 70 6c 4f 70 74 69 6f 6e 73 2e 4e 6f 49  dImplOptions.NoI
28540 6e 6c 69 6e 69 6e 67 29 5d 0d 0a 20 20 20 20 20  nlining)]..     
28550 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
28560 61 74 69 63 20 62 6f 6f 6c 20 43 68 65 63 6b 52  atic bool CheckR
28570 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 28 0d 0a  untimeVersion(..
28580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28590 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 63 6f  Configuration co
285a0 6e 66 69 67 75 72 61 74 69 6f 6e 2c 0d 0a 20 20  nfiguration,..  
285b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
285c0 6f 6c 20 73 74 72 69 63 74 2c 0d 0a 20 20 20 20  ol strict,..    
285d0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 66 20              ref 
285e0 73 74 72 69 6e 67 20 65 72 72 6f 72 0d 0a 20 20  string error..  
285f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 0d                ).
28600 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
28610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28620 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  try..           
28630 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
28640 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
28650 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20 3d 3d  configuration ==
28660 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
28670 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
28680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28690 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20 22         error = "
286a0 49 6e 76 61 6c 69 64 20 63 6f 6e 66 69 67 75 72  Invalid configur
286b0 61 74 69 6f 6e 2e 22 3b 0d 0a 20 20 20 20 20 20  ation.";..      
286c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
286d0 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d    return false;.
286e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
286f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
28700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
28710 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28720 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 57        // NOTE: W
28730 68 61 74 20 76 65 72 73 69 6f 6e 20 6f 66 20 74  hat version of t
28740 68 65 20 72 75 6e 74 69 6d 65 20 77 61 73 20 74  he runtime was t
28750 68 65 20 63 6f 72 65 20 28 70 72 69 6d 61 72 79  he core (primary
28760 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
28770 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
28780 61 73 73 65 6d 62 6c 79 20 63 6f 6d 70 69 6c 65  assembly compile
28790 64 20 61 67 61 69 6e 73 74 20 28 65 2e 67 2e 20  d against (e.g. 
287a0 22 76 32 2e 30 2e 35 30 37 32 37 22 20 6f 72 0d  "v2.0.50727" or.
287b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
287c0 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 22 76       //       "v
287d0 34 2e 30 2e 33 30 33 31 39 22 29 2e 0d 0a 20 20  4.0.30319")...  
287e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
287f0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
28800 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
28810 20 63 6f 72 65 49 6d 61 67 65 52 75 6e 74 69 6d   coreImageRuntim
28820 65 56 65 72 73 69 6f 6e 20 3d 20 47 65 74 49 6d  eVersion = GetIm
28830 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f  ageRuntimeVersio
28840 6e 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  n(..            
28850 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
28860 69 67 75 72 61 74 69 6f 6e 2e 63 6f 72 65 46 69  iguration.coreFi
28870 6c 65 4e 61 6d 65 29 3b 0d 0a 0d 0a 20 20 20 20  leName);....    
28880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28890 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
288a0 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
288b0 20 57 65 20 61 6c 6c 6f 77 20 74 68 65 20 61 63   We allow the ac
288c0 74 75 61 6c 20 69 6d 61 67 65 20 72 75 6e 74 69  tual image runti
288d0 6d 65 20 63 68 65 63 6b 69 6e 67 20 74 6f 20 62  me checking to b
288e0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
288f0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
28900 62 79 70 61 73 73 65 64 20 76 69 61 20 74 68 65  bypassed via the
28910 20 22 2d 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73   "-noRuntimeVers
28920 69 6f 6e 22 20 63 6f 6d 6d 61 6e 64 20 6c 69 6e  ion" command lin
28930 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
28940 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
28950 6f 70 74 69 6f 6e 2e 20 20 54 68 65 20 63 6f 6d  option.  The com
28960 6d 61 6e 64 20 6c 69 6e 65 20 6f 70 74 69 6f 6e  mand line option
28970 20 69 73 20 69 6e 74 65 6e 64 65 64 20 66 6f 72   is intended for
28980 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28990 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 65        //       e
289a0 78 70 65 72 74 20 75 73 65 20 6f 6e 6c 79 2e 0d  xpert use only..
289b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
289c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
289d0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
289e0 28 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e  (configuration.n
289f0 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 29  oRuntimeVersion)
28a00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28a10 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
28a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28a30 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41   TraceOps.DebugA
28a40 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69  ndTrace(TracePri
28a50 6f 72 69 74 79 2e 4d 65 64 69 75 6d 2c 0d 0a 20  ority.Medium,.. 
28a60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28a70 20 20 20 20 20 20 20 20 20 20 20 64 65 62 75 67             debug
28a80 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43  Callback, traceC
28a90 61 6c 6c 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e  allback, String.
28aa0 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20 20 20 20  Format(..       
28ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28ac0 20 20 20 20 20 22 41 73 73 65 6d 62 6c 79 20 69       "Assembly i
28ad0 73 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20 74  s compiled for t
28ae0 68 65 20 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72  he .NET Framewor
28af0 6b 20 7b 30 7d 3b 20 22 20 2b 0d 0a 20 20 20 20  k {0}; " +..    
28b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28b10 20 20 20 20 20 20 20 20 22 68 6f 77 65 76 65 72          "however
28b20 2c 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 20 72  , installation r
28b30 65 73 74 72 69 63 74 69 6f 6e 73 20 62 61 73 65  estrictions base
28b40 64 20 6f 6e 20 74 68 69 73 20 22 20 2b 0d 0a 20  d on this " +.. 
28b50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28b60 20 20 20 20 20 20 20 20 20 20 20 22 66 61 63 74             "fact
28b70 20 68 61 76 65 20 62 65 65 6e 20 64 69 73 61 62   have been disab
28b80 6c 65 64 20 76 69 61 20 74 68 65 20 63 6f 6d 6d  led via the comm
28b90 61 6e 64 20 6c 69 6e 65 2e 22 2c 0d 0a 20 20 20  and line.",..   
28ba0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28bb0 20 20 20 20 20 20 20 20 20 63 6f 72 65 49 6d 61           coreIma
28bc0 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  geRuntimeVersion
28bd0 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79  ), traceCategory
28be0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
28bf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
28c00 74 75 72 6e 20 74 72 75 65 3b 0d 0a 20 20 20 20  turn true;..    
28c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28c20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  }....           
28c30 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
28c40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28c50 20 2f 2f 20 54 4f 44 4f 3a 20 52 65 73 74 72 69   // TODO: Restri
28c60 63 74 20 74 68 65 20 63 6f 6e 66 69 67 75 72 61  ct the configura
28c70 74 69 6f 6e 20 62 61 73 65 64 20 6f 6e 20 77 68  tion based on wh
28c80 69 63 68 20 69 6d 61 67 65 0d 0a 20 20 20 20 20  ich image..     
28c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
28ca0 2f 20 20 20 20 20 20 20 72 75 6e 74 69 6d 65 20  /       runtime 
28cb0 76 65 72 73 69 6f 6e 73 20 28 77 68 69 63 68 20  versions (which 
28cc0 6d 6f 72 65 2d 6f 72 2d 6c 65 73 73 20 63 6f 72  more-or-less cor
28cd0 72 65 73 70 6f 6e 64 0d 0a 20 20 20 20 20 20 20  respond..       
28ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
28cf0 20 20 20 20 20 20 74 6f 20 2e 4e 45 54 20 46 72        to .NET Fr
28d00 61 6d 65 77 6f 72 6b 20 76 65 72 73 69 6f 6e 73  amework versions
28d10 29 20 61 72 65 20 73 75 70 70 6f 72 74 65 64 20  ) are supported 
28d20 62 79 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20  by the..        
28d30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
28d40 20 20 20 20 20 76 65 72 73 69 6f 6e 73 20 6f 66       versions of
28d50 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20 74   Visual Studio t
28d60 68 61 74 20 61 72 65 20 69 6e 73 74 61 6c 6c 65  hat are installe
28d70 64 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  d...            
28d80 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
28d90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28da0 69 66 20 28 53 74 72 69 6e 67 2e 49 73 4e 75 6c  if (String.IsNul
28db0 6c 4f 72 45 6d 70 74 79 28 63 6f 72 65 49 6d 61  lOrEmpty(coreIma
28dc0 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  geRuntimeVersion
28dd0 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
28de0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
28df0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e00 20 20 20 65 72 72 6f 72 20 3d 20 22 69 6e 76 61     error = "inva
28e10 6c 69 64 20 63 6f 72 65 20 66 69 6c 65 20 69 6d  lid core file im
28e20 61 67 65 20 72 75 6e 74 69 6d 65 20 76 65 72 73  age runtime vers
28e30 69 6f 6e 22 3b 0d 0a 20 20 20 20 20 20 20 20 20  ion";..         
28e40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
28e50 65 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20  eturn false;..  
28e60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28e70 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
28e80 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69 66           else if
28e90 20 28 53 74 72 69 6e 67 2e 45 71 75 61 6c 73 28   (String.Equals(
28ea0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28eb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 6f                co
28ec0 72 65 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65  reImageRuntimeVe
28ed0 72 73 69 6f 6e 2c 20 43 4c 52 76 32 49 6d 61 67  rsion, CLRv2Imag
28ee0 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 2c  eRuntimeVersion,
28ef0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
28f00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53 74                St
28f10 72 69 6e 67 43 6f 6d 70 61 72 69 73 6f 6e 2e 4f  ringComparison.O
28f20 72 64 69 6e 61 6c 29 29 0d 0a 20 20 20 20 20 20  rdinal))..      
28f30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
28f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
28f50 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
28f60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28f70 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 6f       // NOTE: Fo
28f80 72 20 74 68 65 20 43 4c 52 20 76 32 2e 30 20 72  r the CLR v2.0 r
28f90 75 6e 74 69 6d 65 2c 20 6d 61 6b 65 20 73 75 72  untime, make sur
28fa0 65 20 77 65 20 64 69 73 61 62 6c 65 0d 0a 20 20  e we disable..  
28fb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
28fc0 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
28fd0 6e 79 20 61 74 74 65 6d 70 74 20 74 6f 20 75 73  ny attempt to us
28fe0 65 20 69 74 20 66 6f 72 20 74 68 69 6e 67 73 20  e it for things 
28ff0 74 68 61 74 20 72 65 71 75 69 72 65 0d 0a 20 20  that require..  
29000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29010 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61        //       a
29020 6e 20 61 73 73 65 6d 62 6c 79 20 63 6f 6d 70 69  n assembly compi
29030 6c 65 64 20 66 6f 72 20 74 68 65 20 43 4c 52 20  led for the CLR 
29040 76 34 2e 30 2e 20 20 49 74 20 69 73 0d 0a 20 20  v4.0.  It is..  
29050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29060 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 75        //       u
29070 6e 63 65 72 74 61 69 6e 20 69 66 20 74 68 69 73  ncertain if this
29080 20 69 73 20 61 63 74 75 61 6c 6c 79 20 61 20 70   is actually a p
29090 72 6f 62 6c 65 6d 20 69 6e 0d 0a 20 20 20 20 20  roblem in..     
290a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
290b0 20 20 20 2f 2f 20 20 20 20 20 20 20 70 72 61 63     //       prac
290c0 74 69 63 65 20 61 73 20 74 68 65 20 43 4c 52 20  tice as the CLR 
290d0 76 34 2e 30 20 63 61 6e 20 6c 6f 61 64 20 61 6e  v4.0 can load an
290e0 64 20 75 73 65 20 61 6e 0d 0a 20 20 20 20 20 20  d use an..      
290f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29100 20 20 2f 2f 20 20 20 20 20 20 20 61 73 73 65 6d    //       assem
29110 62 6c 79 20 63 6f 6d 70 69 6c 65 64 20 77 69 74  bly compiled wit
29120 68 20 74 68 65 20 43 4c 52 20 76 32 2e 30 3b 20  h the CLR v2.0; 
29130 68 6f 77 65 76 65 72 2c 0d 0a 20 20 20 20 20 20  however,..      
29140 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29150 20 20 2f 2f 20 20 20 20 20 20 20 73 69 6e 63 65    //       since
29160 20 74 68 69 73 20 70 72 6f 6a 65 63 74 20 6f 66   this project of
29170 66 65 72 73 20 62 6f 74 68 20 63 6f 6e 66 69 67  fers both config
29180 75 72 61 74 69 6f 6e 73 2c 0d 0a 20 20 20 20 20  urations,..     
29190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
291a0 20 20 20 2f 2f 20 20 20 20 20 20 20 77 65 20 63     //       we c
291b0 75 72 72 65 6e 74 6c 79 20 64 69 73 61 6c 6c 6f  urrently disallo
291c0 77 20 74 68 69 73 20 6d 69 73 6d 61 74 63 68 2e  w this mismatch.
291d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
291e0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
291f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29200 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74        configurat
29210 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 30 20 3d 20  ion.noNetFx40 = 
29220 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
29230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
29240 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e  onfiguration.noN
29250 65 74 46 78 34 35 20 3d 20 74 72 75 65 3b 0d 0a  etFx45 = true;..
29260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29270 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75 72          configur
29280 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 35 31  ation.noNetFx451
29290 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
292a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
292b0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
292c0 6e 6f 4e 65 74 46 78 34 35 32 20 3d 20 74 72 75  noNetFx452 = tru
292d0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
292e0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
292f0 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46  iguration.noNetF
29300 78 34 36 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20  x46 = true;..   
29310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29320 20 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69       configurati
29330 6f 6e 2e 6e 6f 4e 65 74 46 78 34 36 31 20 3d 20  on.noNetFx461 = 
29340 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  true;..         
29350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
29360 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 4e  onfiguration.noN
29370 65 74 46 78 34 36 32 20 3d 20 74 72 75 65 3b 0d  etFx462 = true;.
29380 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29390 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67 75           configu
293a0 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 34 37  ration.noNetFx47
293b0 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20   = true;..      
293c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
293d0 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e    configuration.
293e0 6e 6f 4e 65 74 46 78 34 37 31 20 3d 20 74 72 75  noNetFx471 = tru
293f0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
29400 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
29410 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30  iguration.noVs20
29420 31 30 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  10 = true;..    
29430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29440 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
29450 6e 2e 6e 6f 56 73 32 30 31 32 20 3d 20 74 72 75  n.noVs2012 = tru
29460 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
29470 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
29480 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30  iguration.noVs20
29490 31 33 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20  13 = true;..    
294a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
294b0 20 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f      configuratio
294c0 6e 2e 6e 6f 56 73 32 30 31 35 20 3d 20 74 72 75  n.noVs2015 = tru
294d0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
294e0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66              conf
294f0 69 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30  iguration.noVs20
29500 31 37 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20  17 = true;....  
29510 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29520 20 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44        TraceOps.D
29530 65 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61  ebugAndTrace(Tra
29540 63 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75  cePriority.Mediu
29550 6d 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  m,..            
29560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29570 64 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74  debugCallback, t
29580 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74  raceCallback, St
29590 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20  ring.Format(..  
295a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
295b0 20 20 20 20 20 20 20 20 20 20 22 41 73 73 65 6d            "Assem
295c0 62 6c 79 20 69 73 20 63 6f 6d 70 69 6c 65 64 20  bly is compiled 
295d0 66 6f 72 20 74 68 65 20 2e 4e 45 54 20 46 72 61  for the .NET Fra
295e0 6d 65 77 6f 72 6b 20 7b 30 7d 2c 20 22 20 2b 0d  mework {0}, " +.
295f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29600 20 20 20 20 20 20 20 20 20 20 20 20 20 22 73 75               "su
29610 70 70 6f 72 74 20 66 6f 72 20 74 68 65 20 2e 4e  pport for the .N
29620 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 7b 31 7d  ET Framework {1}
29630 20 69 73 20 6e 6f 77 20 64 69 73 61 62 6c 65 64   is now disabled
29640 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
29650 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29660 20 43 4c 52 76 32 49 6d 61 67 65 52 75 6e 74 69   CLRv2ImageRunti
29670 6d 65 56 65 72 73 69 6f 6e 2c 20 43 4c 52 76 34  meVersion, CLRv4
29680 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73  ImageRuntimeVers
29690 69 6f 6e 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  ion),..         
296a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
296b0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
296c0 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
296d0 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
296e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 65                 e
296f0 6c 73 65 20 69 66 20 28 53 74 72 69 6e 67 2e 45  lse if (String.E
29700 71 75 61 6c 73 28 0d 0a 20 20 20 20 20 20 20 20  quals(..        
29710 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29720 20 20 20 20 63 6f 72 65 49 6d 61 67 65 52 75 6e      coreImageRun
29730 74 69 6d 65 56 65 72 73 69 6f 6e 2c 20 43 4c 52  timeVersion, CLR
29740 76 34 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65  v4ImageRuntimeVe
29750 72 73 69 6f 6e 2c 0d 0a 20 20 20 20 20 20 20 20  rsion,..        
29760 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29770 20 20 20 20 53 74 72 69 6e 67 43 6f 6d 70 61 72      StringCompar
29780 69 73 6f 6e 2e 4f 72 64 69 6e 61 6c 29 29 0d 0a  ison.Ordinal))..
29790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
297a0 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
297b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
297c0 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  /..             
297d0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f             // NO
297e0 54 45 3a 20 46 6f 72 20 74 68 65 20 43 4c 52 20  TE: For the CLR 
297f0 76 34 2e 30 20 72 75 6e 74 69 6d 65 2c 20 6d 61  v4.0 runtime, ma
29800 6b 65 20 73 75 72 65 20 77 65 20 64 69 73 61 62  ke sure we disab
29810 6c 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  le..            
29820 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
29830 20 20 20 20 20 61 6e 79 20 61 74 74 65 6d 70 74       any attempt
29840 20 74 6f 20 75 73 65 20 69 74 20 66 6f 72 20 74   to use it for t
29850 68 69 6e 67 73 20 74 68 61 74 20 72 65 71 75 69  hings that requi
29860 72 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  re..            
29870 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
29880 20 20 20 20 20 61 6e 20 61 73 73 65 6d 62 6c 79       an assembly
29890 20 63 6f 6d 70 69 6c 65 64 20 66 6f 72 20 74 68   compiled for th
298a0 65 20 43 4c 52 20 76 32 2e 30 2e 0d 0a 20 20 20  e CLR v2.0...   
298b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
298c0 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
298d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
298e0 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e 6e   configuration.n
298f0 6f 4e 65 74 46 78 32 30 20 3d 20 74 72 75 65 3b  oNetFx20 = true;
29900 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
29910 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69 67            config
29920 75 72 61 74 69 6f 6e 2e 6e 6f 4e 65 74 46 78 33  uration.noNetFx3
29930 35 20 3d 20 74 72 75 65 3b 0d 0a 20 20 20 20 20  5 = true;..     
29940 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29950 20 20 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e     configuration
29960 2e 6e 6f 56 73 32 30 30 35 20 3d 20 74 72 75 65  .noVs2005 = true
29970 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29980 20 20 20 20 20 20 20 20 20 20 20 63 6f 6e 66 69             confi
29990 67 75 72 61 74 69 6f 6e 2e 6e 6f 56 73 32 30 30  guration.noVs200
299a0 38 20 3d 20 74 72 75 65 3b 0d 0a 0d 0a 20 20 20  8 = true;....   
299b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
299c0 20 20 20 20 20 54 72 61 63 65 4f 70 73 2e 44 65       TraceOps.De
299d0 62 75 67 41 6e 64 54 72 61 63 65 28 54 72 61 63  bugAndTrace(Trac
299e0 65 50 72 69 6f 72 69 74 79 2e 4d 65 64 69 75 6d  ePriority.Medium
299f0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
29a00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64                 d
29a10 65 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72  ebugCallback, tr
29a20 61 63 65 43 61 6c 6c 62 61 63 6b 2c 20 53 74 72  aceCallback, Str
29a30 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20  ing.Format(..   
29a40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29a50 20 20 20 20 20 20 20 20 20 22 41 73 73 65 6d 62           "Assemb
29a60 6c 79 20 69 73 20 63 6f 6d 70 69 6c 65 64 20 66  ly is compiled f
29a70 6f 72 20 74 68 65 20 2e 4e 45 54 20 46 72 61 6d  or the .NET Fram
29a80 65 77 6f 72 6b 20 7b 30 7d 2c 20 22 20 2b 0d 0a  ework {0}, " +..
29a90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29aa0 20 20 20 20 20 20 20 20 20 20 20 20 22 73 75 70              "sup
29ab0 70 6f 72 74 20 66 6f 72 20 74 68 65 20 2e 4e 45  port for the .NE
29ac0 54 20 46 72 61 6d 65 77 6f 72 6b 20 7b 31 7d 20  T Framework {1} 
29ad0 69 73 20 6e 6f 77 20 64 69 73 61 62 6c 65 64 2e  is now disabled.
29ae0 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ",..            
29af0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b00 46 6f 72 44 69 73 70 6c 61 79 28 43 4c 52 76 34  ForDisplay(CLRv4
29b10 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73  ImageRuntimeVers
29b20 69 6f 6e 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  ion),..         
29b30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b40 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 43 4c     ForDisplay(CL
29b50 52 76 32 49 6d 61 67 65 52 75 6e 74 69 6d 65 56  Rv2ImageRuntimeV
29b60 65 72 73 69 6f 6e 29 29 2c 0d 0a 20 20 20 20 20  ersion)),..     
29b70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29b80 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
29b90 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20  gory);..        
29ba0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20              }.. 
29bb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29bc0 20 20 20 65 6c 73 65 0d 0a 20 20 20 20 20 20 20     else..       
29bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
29be0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29bf0 20 20 20 20 20 20 20 20 65 72 72 6f 72 20 3d 20          error = 
29c00 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
29c10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c20 20 20 20 20 20 20 20 20 20 20 20 20 22 75 6e 73              "uns
29c30 75 70 70 6f 72 74 65 64 20 63 6f 72 65 20 66 69  upported core fi
29c40 6c 65 20 69 6d 61 67 65 20 72 75 6e 74 69 6d 65  le image runtime
29c50 20 76 65 72 73 69 6f 6e 20 22 20 2b 0d 0a 20 20   version " +..  
29c60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29c70 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 2c 20            "{0}, 
29c80 6d 75 73 74 20 62 65 20 7b 31 7d 20 6f 72 20 7b  must be {1} or {
29c90 32 7d 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  2}",..          
29ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29cb0 20 20 46 6f 72 44 69 73 70 6c 61 79 28 63 6f 72    ForDisplay(cor
29cc0 65 49 6d 61 67 65 52 75 6e 74 69 6d 65 56 65 72  eImageRuntimeVer
29cd0 73 69 6f 6e 29 2c 0d 0a 20 20 20 20 20 20 20 20  sion),..        
29ce0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29cf0 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 43      ForDisplay(C
29d00 4c 52 76 32 49 6d 61 67 65 52 75 6e 74 69 6d 65  LRv2ImageRuntime
29d10 56 65 72 73 69 6f 6e 29 2c 0d 0a 20 20 20 20 20  Version),..     
29d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29d30 20 20 20 20 20 20 20 46 6f 72 44 69 73 70 6c 61         ForDispla
29d40 79 28 43 4c 52 76 34 49 6d 61 67 65 52 75 6e 74  y(CLRv4ImageRunt
29d50 69 6d 65 56 65 72 73 69 6f 6e 29 29 3b 0d 0a 0d  imeVersion));...
29d60 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29d70 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
29d80 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
29d90 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
29da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29db0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
29dc0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
29dd0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
29de0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
29df0 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20  eption e)..     
29e00 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
29e10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29e20 20 20 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67    TraceOps.Debug
29e30 41 6e 64 54 72 61 63 65 28 54 72 61 63 65 50 72  AndTrace(TracePr
29e40 69 6f 72 69 74 79 2e 48 69 67 68 65 73 74 2c 0d  iority.Highest,.
29e50 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
29e60 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61           debugCa
29e70 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c  llback, traceCal
29e80 6c 62 61 63 6b 2c 20 65 2c 20 74 72 61 63 65 43  lback, e, traceC
29e90 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
29ea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
29eb0 20 65 72 72 6f 72 20 3d 20 22 46 61 69 6c 65 64   error = "Failed
29ec0 20 74 6f 20 63 68 65 63 6b 20 69 6d 61 67 65 20   to check image 
29ed0 72 75 6e 74 69 6d 65 20 76 65 72 73 69 6f 6e 2e  runtime version.
29ee0 22 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ";..            
29ef0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
29f00 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
29f10 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20  false;..        
29f20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
29f30 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d     #endregion...
29f40 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
29f50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
29f90 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
29fa0 23 72 65 67 69 6f 6e 20 50 72 69 76 61 74 65 20  #region Private 
29fb0 4d 65 74 68 6f 64 73 0d 0a 20 20 20 20 20 20 20  Methods..       
29fc0 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72       private str
29fd0 69 6e 67 20 47 65 74 49 6e 76 61 72 69 61 6e 74  ing GetInvariant
29fe0 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Name(..         
29ff0 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63         bool trac
2a000 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
2a010 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2a020 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2a030 20 20 20 20 20 72 65 74 75 72 6e 20 55 73 65 45       return UseE
2a040 66 36 50 72 6f 76 69 64 65 72 28 74 72 61 63 65  f6Provider(trace
2a050 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ) ?..           
2a060 20 20 20 20 20 20 20 20 20 45 66 36 49 6e 76 61           Ef6Inva
2a070 72 69 61 6e 74 4e 61 6d 65 20 3a 20 49 6e 76 61  riantName : Inva
2a080 72 69 61 6e 74 4e 61 6d 65 3b 0d 0a 20 20 20 20  riantName;..    
2a090 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2a0a0 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
2a0b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a0e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2a0f0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76              priv
2a100 61 74 65 20 62 6f 6f 6c 20 49 73 53 79 73 74 65  ate bool IsSyste
2a110 6d 45 66 36 41 73 73 65 6d 62 6c 79 41 76 61 69  mEf6AssemblyAvai
2a120 6c 61 62 6c 65 28 0d 0a 20 20 20 20 20 20 20 20  lable(..        
2a130 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61          bool tra
2a140 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ce..            
2a150 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20      )..         
2a160 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a170 20 20 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20        try..     
2a180 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2a190 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a1a0 20 20 69 66 20 28 73 79 73 74 65 6d 45 66 36 41    if (systemEf6A
2a1b0 73 73 65 6d 62 6c 79 20 3d 3d 20 6e 75 6c 6c 29  ssembly == null)
2a1c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a1d0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2a1e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a1f0 20 73 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62   systemEf6Assemb
2a200 6c 79 20 3d 20 41 73 73 65 6d 62 6c 79 2e 52 65  ly = Assembly.Re
2a210 66 6c 65 63 74 69 6f 6e 4f 6e 6c 79 4c 6f 61 64  flectionOnlyLoad
2a220 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2a230 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 53                 S
2a240 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79  ystemEf6Assembly
2a250 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  Name);..        
2a260 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2a270 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2a280 20 20 20 20 20 69 66 20 28 73 79 73 74 65 6d 45       if (systemE
2a290 66 36 41 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75  f6Assembly != nu
2a2a0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2a2b0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2a2c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a2d0 20 20 20 20 69 66 20 28 74 72 61 63 65 20 26 26      if (trace &&
2a2e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 48                !H
2a300 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72  asFlags(Provider
2a310 46 6c 61 67 73 2e 44 69 64 45 66 36 52 65 73 6f  Flags.DidEf6Reso
2a320 6c 76 65 54 72 61 63 65 2c 20 74 72 75 65 29 29  lveTrace, true))
2a330 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a340 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2a350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a360 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
2a370 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
2a380 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 48 69  TracePriority.Hi
2a390 67 68 65 73 74 2c 0d 0a 20 20 20 20 20 20 20 20  ghest,..        
2a3a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a3b0 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
2a3c0 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
2a3d0 62 61 63 6b 2c 20 53 74 72 69 6e 67 2e 46 6f 72  back, String.For
2a3e0 6d 61 74 28 0d 0a 20 20 20 20 20 20 20 20 20 20  mat(..          
2a3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a400 20 20 20 20 20 20 22 45 6e 74 69 74 79 20 46 72        "Entity Fr
2a410 61 6d 65 77 6f 72 6b 20 36 20 61 73 73 65 6d 62  amework 6 assemb
2a420 6c 79 20 77 61 73 20 22 20 2b 0d 0a 20 20 20 20  ly was " +..    
2a430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a440 20 20 20 20 20 20 20 20 20 20 20 20 22 72 65 73              "res
2a450 6f 6c 76 65 64 20 74 6f 20 7b 30 7d 2e 22 2c 20  olved to {0}.", 
2a460 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20  ForDisplay(..   
2a470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a480 20 20 20 20 20 20 20 20 20 20 20 20 20 73 79 73               sys
2a490 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 2e 4c  temEf6Assembly.L
2a4a0 6f 63 61 74 69 6f 6e 29 29 2c 0d 0a 20 20 20 20  ocation)),..    
2a4b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a4c0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2a4d0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2a4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a4f0 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 76 69             provi
2a500 64 65 72 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76  derFlags |= Prov
2a510 69 64 65 72 46 6c 61 67 73 2e 44 69 64 45 66 36  iderFlags.DidEf6
2a520 52 65 73 6f 6c 76 65 54 72 61 63 65 3b 0d 0a 20  ResolveTrace;.. 
2a530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a540 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2a550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a560 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b      return true;
2a570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a580 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
2a590 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
2a5a0 20 20 20 20 20 20 20 20 20 20 20 20 63 61 74 63              catc
2a5b0 68 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  h..             
2a5c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2a5d0 20 20 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20            // do 
2a5e0 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20  nothing...      
2a5f0 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2a600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69                 i
2a610 66 20 28 74 72 61 63 65 20 26 26 0d 0a 20 20 20  f (trace &&..   
2a620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a630 20 21 48 61 73 46 6c 61 67 73 28 50 72 6f 76 69   !HasFlags(Provi
2a640 64 65 72 46 6c 61 67 73 2e 44 69 64 45 66 36 52  derFlags.DidEf6R
2a650 65 73 6f 6c 76 65 54 72 61 63 65 2c 20 74 72 75  esolveTrace, tru
2a660 65 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e))..           
2a670 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2a680 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
2a690 65 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61  eOps.DebugAndTra
2a6a0 63 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79  ce(TracePriority
2a6b0 2e 48 69 67 68 65 73 74 2c 0d 0a 20 20 20 20 20  .Highest,..     
2a6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a6d0 20 20 20 64 65 62 75 67 43 61 6c 6c 62 61 63 6b     debugCallback
2a6e0 2c 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 2c  , traceCallback,
2a6f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2a700 20 20 20 20 20 20 20 20 20 20 22 45 6e 74 69 74            "Entit
2a710 79 20 46 72 61 6d 65 77 6f 72 6b 20 36 20 61 73  y Framework 6 as
2a720 73 65 6d 62 6c 79 20 77 61 73 20 6e 6f 74 20 72  sembly was not r
2a730 65 73 6f 6c 76 65 64 2e 22 2c 0d 0a 20 20 20 20  esolved.",..    
2a740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a750 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2a760 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2a770 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 76 69             provi
2a780 64 65 72 46 6c 61 67 73 20 7c 3d 20 50 72 6f 76  derFlags |= Prov
2a790 69 64 65 72 46 6c 61 67 73 2e 44 69 64 45 66 36  iderFlags.DidEf6
2a7a0 52 65 73 6f 6c 76 65 54 72 61 63 65 3b 0d 0a 20  ResolveTrace;.. 
2a7b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
2a7c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2a7d0 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73 65      return false
2a7e0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  ;..            }
2a7f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23 65  ..            #e
2a800 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
2a810 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
2a820 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a830 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a840 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2a850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2a860 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
2a870 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f 64  on Public Method
2a880 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  s..            p
2a890 75 62 6c 69 63 20 62 6f 6f 6c 20 48 61 73 46 6c  ublic bool HasFl
2a8a0 61 67 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ags(..          
2a8b0 20 20 20 20 20 20 49 6e 73 74 61 6c 6c 46 6c 61        InstallFla
2a8c0 67 73 20 68 61 73 46 6c 61 67 73 2c 0d 0a 20 20  gs hasFlags,..  
2a8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
2a8e0 6f 6c 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20  ol all..        
2a8f0 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20          )..     
2a900 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2a910 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6c            if (al
2a920 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2a930 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28          return (
2a940 28 69 6e 73 74 61 6c 6c 46 6c 61 67 73 20 26 20  (installFlags & 
2a950 68 61 73 46 6c 61 67 73 29 20 3d 3d 20 68 61 73  hasFlags) == has
2a960 46 6c 61 67 73 29 3b 0d 0a 20 20 20 20 20 20 20  Flags);..       
2a970 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
2a980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2a990 20 20 20 72 65 74 75 72 6e 20 28 28 69 6e 73 74     return ((inst
2a9a0 61 6c 6c 46 6c 61 67 73 20 26 20 68 61 73 46 6c  allFlags & hasFl
2a9b0 61 67 73 29 20 21 3d 20 49 6e 73 74 61 6c 6c 46  ags) != InstallF
2a9c0 6c 61 67 73 2e 4e 6f 6e 65 29 3b 0d 0a 20 20 20  lags.None);..   
2a9d0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2a9e0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2a9f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2aa20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
2aa30 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2aa40 6c 69 63 20 62 6f 6f 6c 20 48 61 73 46 6c 61 67  lic bool HasFlag
2aa50 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  s(..            
2aa60 20 20 20 20 50 72 6f 76 69 64 65 72 46 6c 61 67      ProviderFlag
2aa70 73 20 68 61 73 46 6c 61 67 73 2c 0d 0a 20 20 20  s hasFlags,..   
2aa80 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
2aa90 6c 20 61 6c 6c 0d 0a 20 20 20 20 20 20 20 20 20  l all..         
2aaa0 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20         )..      
2aab0 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
2aac0 20 20 20 20 20 20 20 20 20 69 66 20 28 61 6c 6c           if (all
2aad0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2aae0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 28 28         return ((
2aaf0 70 72 6f 76 69 64 65 72 46 6c 61 67 73 20 26 20  providerFlags & 
2ab00 68 61 73 46 6c 61 67 73 29 20 3d 3d 20 68 61 73  hasFlags) == has
2ab10 46 6c 61 67 73 29 3b 0d 0a 20 20 20 20 20 20 20  Flags);..       
2ab20 20 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 20           else.. 
2ab30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ab40 20 20 20 72 65 74 75 72 6e 20 28 28 70 72 6f 76     return ((prov
2ab50 69 64 65 72 46 6c 61 67 73 20 26 20 68 61 73 46  iderFlags & hasF
2ab60 6c 61 67 73 29 20 21 3d 20 50 72 6f 76 69 64 65  lags) != Provide
2ab70 72 46 6c 61 67 73 2e 4e 6f 6e 65 29 3b 0d 0a 20  rFlags.None);.. 
2ab80 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2ab90 20 20 20 20 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2abd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
2abe0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
2abf0 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73 4c 69 6e  ublic bool IsLin
2ac00 71 53 75 70 70 6f 72 74 65 64 28 0d 0a 20 20 20  qSupported(..   
2ac10 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
2ac20 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20  l trace..       
2ac30 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20 20           )..    
2ac40 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2ac50 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20             //.. 
2ac60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2ac70 2f 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20 74 6f  / NOTE: Check to
2ac80 20 73 65 65 20 69 66 20 74 68 65 20 63 61 6c 6c   see if the call
2ac90 65 72 20 68 61 73 20 66 6f 72 63 65 64 20 4c 49  er has forced LI
2aca0 4e 51 20 73 75 70 70 6f 72 74 20 74 6f 0d 0a 20  NQ support to.. 
2acb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2acc0 2f 20 20 20 20 20 20 20 62 65 20 65 6e 61 62 6c  /       be enabl
2acd0 65 64 20 2d 4f 52 2d 20 64 69 73 61 62 6c 65 64  ed -OR- disabled
2ace0 2c 20 74 68 65 72 65 62 79 20 62 79 70 61 73 73  , thereby bypass
2acf0 69 6e 67 20 74 68 65 20 6e 65 65 64 0d 0a 20 20  ing the need..  
2ad00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2ad10 20 20 20 20 20 20 20 66 6f 72 20 22 61 75 74 6f         for "auto
2ad20 6d 61 74 69 63 20 64 65 74 65 63 74 69 6f 6e 22  matic detection"
2ad30 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64 2e   by this method.
2ad40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ad50 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
2ad60 20 20 20 20 20 20 69 66 20 28 48 61 73 46 6c 61        if (HasFla
2ad70 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73  gs(ProviderFlags
2ad80 2e 46 6f 72 63 65 4c 69 6e 71 45 6e 61 62 6c 65  .ForceLinqEnable
2ad90 64 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20  d, true))..     
2ada0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2adb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2adc0 20 20 69 66 20 28 74 72 61 63 65 20 26 26 0d 0a    if (trace &&..
2add0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ade0 20 20 20 20 20 20 20 20 21 48 61 73 46 6c 61 67          !HasFlag
2adf0 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e  s(ProviderFlags.
2ae00 44 69 64 4c 69 6e 71 46 6f 72 63 65 54 72 61 63  DidLinqForceTrac
2ae10 65 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20  e, true))..     
2ae20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2ae30 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ae40 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f            TraceO
2ae50 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65  ps.DebugAndTrace
2ae60 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4d  (TracePriority.M
2ae70 65 64 69 75 6d 48 69 67 68 2c 0d 0a 20 20 20 20  ediumHigh,..    
2ae80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ae90 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61 6c          debugCal
2aea0 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c  lback, traceCall
2aeb0 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20  back,..         
2aec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2aed0 20 20 20 22 46 6f 72 63 65 64 20 74 6f 20 65 6e     "Forced to en
2aee0 61 62 6c 65 20 73 75 70 70 6f 72 74 20 66 6f 72  able support for
2aef0 20 5c 22 4c 69 6e 71 5c 22 2e 22 2c 0d 0a 20 20   \"Linq\".",..  
2af00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af10 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2af20 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2af30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2af40 20 20 20 20 20 70 72 6f 76 69 64 65 72 46 6c 61       providerFla
2af50 67 73 20 7c 3d 20 50 72 6f 76 69 64 65 72 46 6c  gs |= ProviderFl
2af60 61 67 73 2e 44 69 64 4c 69 6e 71 46 6f 72 63 65  ags.DidLinqForce
2af70 54 72 61 63 65 3b 0d 0a 20 20 20 20 20 20 20 20  Trace;..        
2af80 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2af90 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2afa0 20 20 20 20 20 72 65 74 75 72 6e 20 74 72 75 65       return true
2afb0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2afc0 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20     }..          
2afd0 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 48        else if (H
2afe0 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72  asFlags(Provider
2aff0 46 6c 61 67 73 2e 46 6f 72 63 65 4c 69 6e 71 44  Flags.ForceLinqD
2b000 69 73 61 62 6c 65 64 2c 20 74 72 75 65 29 29 0d  isabled, true)).
2b010 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b020 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2b030 20 20 20 20 20 20 20 20 69 66 20 28 74 72 61 63          if (trac
2b040 65 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20 20  e &&..          
2b050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 21 48                !H
2b060 61 73 46 6c 61 67 73 28 50 72 6f 76 69 64 65 72  asFlags(Provider
2b070 46 6c 61 67 73 2e 44 69 64 4c 69 6e 71 46 6f 72  Flags.DidLinqFor
2b080 63 65 54 72 61 63 65 2c 20 74 72 75 65 29 29 0d  ceTrace, true)).
2b090 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b0a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2b0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b0c0 54 72 61 63 65 4f 70 73 2e 44 65 62 75 67 41 6e  TraceOps.DebugAn
2b0d0 64 54 72 61 63 65 28 54 72 61 63 65 50 72 69 6f  dTrace(TracePrio
2b0e0 72 69 74 79 2e 4d 65 64 69 75 6d 48 69 67 68 2c  rity.MediumHigh,
2b0f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b100 20 20 20 20 20 20 20 20 20 20 20 20 20 20 64 65                de
2b110 62 75 67 43 61 6c 6c 62 61 63 6b 2c 20 74 72 61  bugCallback, tra
2b120 63 65 43 61 6c 6c 62 61 63 6b 2c 0d 0a 20 20 20  ceCallback,..   
2b130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b140 20 20 20 20 20 20 20 20 20 22 46 6f 72 63 65 64           "Forced
2b150 20 74 6f 20 64 69 73 61 62 6c 65 20 73 75 70 70   to disable supp
2b160 6f 72 74 20 66 6f 72 20 5c 22 4c 69 6e 71 5c 22  ort for \"Linq\"
2b170 2e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  .",..           
2b180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b190 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
2b1a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2b1b0 20 20 20 20 20 20 20 20 20 20 20 20 70 72 6f 76              prov
2b1c0 69 64 65 72 46 6c 61 67 73 20 7c 3d 20 50 72 6f  iderFlags |= Pro
2b1d0 76 69 64 65 72 46 6c 61 67 73 2e 44 69 64 4c 69  viderFlags.DidLi
2b1e0 6e 71 46 6f 72 63 65 54 72 61 63 65 3b 0d 0a 20  nqForceTrace;.. 
2b1f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b200 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2b210 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2b220 72 6e 20 66 61 6c 73 65 3b 0d 0a 20 20 20 20 20  rn false;..     
2b230 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2b240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b250 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2b260 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 52 65 74      // NOTE: Ret
2b270 75 72 6e 20 6e 6f 6e 2d 7a 65 72 6f 20 69 66 20  urn non-zero if 
2b280 74 68 65 20 53 79 73 74 65 6d 2e 44 61 74 61 2e  the System.Data.
2b290 53 51 4c 69 74 65 2e 4c 69 6e 71 0d 0a 20 20 20  SQLite.Linq..   
2b2a0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2b2b0 20 20 20 20 20 20 61 73 73 65 6d 62 6c 79 20 73        assembly s
2b2c0 68 6f 75 6c 64 20 62 65 20 70 72 6f 63 65 73 73  hould be process
2b2d0 65 64 20 64 75 72 69 6e 67 20 74 68 65 20 69 6e  ed during the in
2b2e0 73 74 61 6c 6c 2e 0d 0a 20 20 20 20 20 20 20 20  stall...        
2b2f0 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2b300 20 49 66 20 74 68 65 20 74 61 72 67 65 74 20 69   If the target i
2b310 73 20 56 69 73 75 61 6c 20 53 74 75 64 69 6f 20  s Visual Studio 
2b320 32 30 30 35 2c 20 74 68 69 73 20 6d 75 73 74 0d  2005, this must.
2b330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b340 20 2f 2f 20 20 20 20 20 20 20 72 65 74 75 72 6e   //       return
2b350 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20   zero...        
2b360 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
2b370 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
2b380 72 6e 20 21 6e 6f 4e 65 74 46 78 33 35 20 7c 7c  rn !noNetFx35 ||
2b390 20 21 6e 6f 4e 65 74 46 78 34 30 20 7c 7c 20 21   !noNetFx40 || !
2b3a0 6e 6f 4e 65 74 46 78 34 35 20 7c 7c 0d 0a 20 20  noNetFx45 ||..  
2b3b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b3c0 20 20 21 6e 6f 4e 65 74 46 78 34 35 31 20 7c 7c    !noNetFx451 ||
2b3d0 20 21 6e 6f 4e 65 74 46 78 34 35 32 20 7c 7c 20   !noNetFx452 || 
2b3e0 21 6e 6f 4e 65 74 46 78 34 36 20 7c 7c 0d 0a 20  !noNetFx46 ||.. 
2b3f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b400 20 20 20 21 6e 6f 4e 65 74 46 78 34 36 31 20 7c     !noNetFx461 |
2b410 7c 20 21 6e 6f 4e 65 74 46 78 34 36 32 20 7c 7c  | !noNetFx462 ||
2b420 20 21 6e 6f 4e 65 74 46 78 34 37 20 7c 7c 0d 0a   !noNetFx47 ||..
2b430 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b440 20 20 20 20 21 6e 6f 4e 65 74 46 78 34 37 31 3b      !noNetFx471;
2b450 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2b460 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2b470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2b4b0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2b4c0 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 49 73    public bool Is
2b4d0 45 66 36 53 75 70 70 6f 72 74 65 64 28 0d 0a 20  Ef6Supported(.. 
2b4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
2b4f0 6f 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20  ool trace..     
2b500 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2b510 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2b520 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d               //.
2b530 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b540 20 2f 2f 20 4e 4f 54 45 3a 20 43 68 65 63 6b 20   // NOTE: Check 
2b550 74 6f 20 73 65 65 20 69 66 20 74 68 65 20 63 61  to see if the ca
2b560 6c 6c 65 72 20 68 61 73 20 66 6f 72 63 65 64 20  ller has forced 
2b570 45 46 36 20 73 75 70 70 6f 72 74 20 74 6f 0d 0a  EF6 support to..
2b580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b590 2f 2f 20 20 20 20 20 20 20 62 65 20 65 6e 61 62  //       be enab
2b5a0 6c 65 64 20 2d 4f 52 2d 20 64 69 73 61 62 6c 65  led -OR- disable
2b5b0 64 2c 20 74 68 65 72 65 62 79 20 62 79 70 61 73  d, thereby bypas
2b5c0 73 69 6e 67 20 74 68 65 20 6e 65 65 64 0d 0a 20  sing the need.. 
2b5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2b5e0 2f 20 20 20 20 20 20 20 66 6f 72 20 22 61 75 74  /       for "aut
2b5f0 6f 6d 61 74 69 63 20 64 65 74 65 63 74 69 6f 6e  omatic detection
2b600 22 20 62 79 20 74 68 69 73 20 6d 65 74 68 6f 64  " by this method
2b610 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
2b620 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20     //..         
2b630 20 20 20 20 20 20 20 69 66 20 28 48 61 73 46 6c         if (HasFl
2b640 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67  ags(ProviderFlag
2b650 73 2e 46 6f 72 63 65 45 66 36 45 6e 61 62 6c 65  s.ForceEf6Enable
2b660 64 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20  d, true))..     
2b670 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
2b680 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b690 20 20 69 66 20 28 74 72 61 63 65 20 26 26 0d 0a    if (trace &&..
2b6a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b6b0 20 20 20 20 20 20 20 20 21 48 61 73 46 6c 61 67          !HasFlag
2b6c0 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e  s(ProviderFlags.
2b6d0 44 69 64 45 66 36 46 6f 72 63 65 54 72 61 63 65  DidEf6ForceTrace
2b6e0 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20 20 20  , true))..      
2b6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
2b700 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2b710 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
2b720 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63 65 28  s.DebugAndTrace(
2b730 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e 4d 65  TracePriority.Me
2b740 64 69 75 6d 48 69 67 68 2c 0d 0a 20 20 20 20 20  diumHigh,..     
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 64 65 62 75 67 43 61 6c 6c         debugCall
2b770 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c 6c 62  back, traceCallb
2b780 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  ack,..          
2b790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b7a0 20 20 22 46 6f 72 63 65 64 20 74 6f 20 65 6e 61    "Forced to ena
2b7b0 62 6c 65 20 73 75 70 70 6f 72 74 20 66 6f 72 20  ble support for 
2b7c0 5c 22 45 66 36 5c 22 2e 22 2c 0d 0a 20 20 20 20  \"Ef6\".",..    
2b7d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b7e0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74          traceCat
2b7f0 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20  egory);....     
2b800 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b810 20 20 20 70 72 6f 76 69 64 65 72 46 6c 61 67 73     providerFlags
2b820 20 7c 3d 20 50 72 6f 76 69 64 65 72 46 6c 61 67   |= ProviderFlag
2b830 73 2e 44 69 64 45 66 36 46 6f 72 63 65 54 72 61  s.DidEf6ForceTra
2b840 63 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ce;..           
2b850 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2b860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b870 20 20 72 65 74 75 72 6e 20 74 72 75 65 3b 0d 0a    return true;..
2b880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b890 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  }..             
2b8a0 20 20 20 65 6c 73 65 20 69 66 20 28 48 61 73 46     else if (HasF
2b8b0 6c 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61  lags(ProviderFla
2b8c0 67 73 2e 46 6f 72 63 65 45 66 36 44 69 73 61 62  gs.ForceEf6Disab
2b8d0 6c 65 64 2c 20 74 72 75 65 29 29 0d 0a 20 20 20  led, true))..   
2b8e0 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2b8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b900 20 20 20 20 69 66 20 28 74 72 61 63 65 20 26 26      if (trace &&
2b910 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2b920 20 20 20 20 20 20 20 20 20 20 21 48 61 73 46 6c            !HasFl
2b930 61 67 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67  ags(ProviderFlag
2b940 73 2e 44 69 64 45 66 36 46 6f 72 63 65 54 72 61  s.DidEf6ForceTra
2b950 63 65 2c 20 74 72 75 65 29 29 0d 0a 20 20 20 20  ce, true))..    
2b960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b970 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2b980 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
2b990 4f 70 73 2e 44 65 62 75 67 41 6e 64 54 72 61 63  Ops.DebugAndTrac
2b9a0 65 28 54 72 61 63 65 50 72 69 6f 72 69 74 79 2e  e(TracePriority.
2b9b0 4d 65 64 69 75 6d 48 69 67 68 2c 0d 0a 20 20 20  MediumHigh,..   
2b9c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2b9d0 20 20 20 20 20 20 20 20 20 64 65 62 75 67 43 61           debugCa
2b9e0 6c 6c 62 61 63 6b 2c 20 74 72 61 63 65 43 61 6c  llback, traceCal
2b9f0 6c 62 61 63 6b 2c 0d 0a 20 20 20 20 20 20 20 20  lback,..        
2ba00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba10 20 20 20 20 22 46 6f 72 63 65 64 20 74 6f 20 64      "Forced to d
2ba20 69 73 61 62 6c 65 20 73 75 70 70 6f 72 74 20 66  isable support f
2ba30 6f 72 20 5c 22 45 66 36 5c 22 2e 22 2c 0d 0a 20  or \"Ef6\".",.. 
2ba40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba50 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2ba60 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2ba70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ba80 20 20 20 20 20 20 70 72 6f 76 69 64 65 72 46 6c        providerFl
2ba90 61 67 73 20 7c 3d 20 50 72 6f 76 69 64 65 72 46  ags |= ProviderF
2baa0 6c 61 67 73 2e 44 69 64 45 66 36 46 6f 72 63 65  lags.DidEf6Force
2bab0 54 72 61 63 65 3b 0d 0a 20 20 20 20 20 20 20 20  Trace;..        
2bac0 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
2bad0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bae0 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
2baf0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
2bb00 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2bb10 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20           //..   
2bb20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2bb30 4e 4f 54 45 3a 20 52 65 74 75 72 6e 20 6e 6f 6e  NOTE: Return non
2bb40 2d 7a 65 72 6f 20 69 66 20 74 68 65 20 53 79 73  -zero if the Sys
2bb50 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e  tem.Data.SQLite.
2bb60 45 46 36 0d 0a 20 20 20 20 20 20 20 20 20 20 20  EF6..           
2bb70 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 61 73       //       as
2bb80 73 65 6d 62 6c 79 20 73 68 6f 75 6c 64 20 62 65  sembly should be
2bb90 20 70 72 6f 63 65 73 73 65 64 20 64 75 72 69 6e   processed durin
2bba0 67 20 74 68 65 20 69 6e 73 74 61 6c 6c 2e 0d 0a  g the install...
2bbb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bbc0 2f 2f 20 20 20 20 20 20 20 49 66 20 74 68 65 20  //       If the 
2bbd0 74 61 72 67 65 74 20 69 73 20 56 69 73 75 61 6c  target is Visual
2bbe0 20 53 74 75 64 69 6f 20 32 30 30 35 20 6f 72 20   Studio 2005 or 
2bbf0 56 69 73 75 61 6c 0d 0a 20 20 20 20 20 20 20 20  Visual..        
2bc00 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
2bc10 20 53 74 75 64 69 6f 20 32 30 30 38 2c 20 74 68   Studio 2008, th
2bc20 69 73 20 6d 75 73 74 20 72 65 74 75 72 6e 20 7a  is must return z
2bc30 65 72 6f 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  ero...          
2bc40 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2bc50 20 20 20 20 20 20 20 20 20 20 69 66 20 28 6e 6f            if (no
2bc60 4e 65 74 46 78 34 30 20 26 26 0d 0a 20 20 20 20  NetFx40 &&..    
2bc70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bc80 6e 6f 4e 65 74 46 78 34 35 20 26 26 20 6e 6f 4e  noNetFx45 && noN
2bc90 65 74 46 78 34 35 31 20 26 26 20 6e 6f 4e 65 74  etFx451 && noNet
2bca0 46 78 34 35 32 20 26 26 20 6e 6f 4e 65 74 46 78  Fx452 && noNetFx
2bcb0 34 36 20 26 26 0d 0a 20 20 20 20 20 20 20 20 20  46 &&..         
2bcc0 20 20 20 20 20 20 20 20 20 20 20 6e 6f 4e 65 74             noNet
2bcd0 46 78 34 36 31 20 26 26 20 6e 6f 4e 65 74 46 78  Fx461 && noNetFx
2bce0 34 36 32 20 26 26 20 6e 6f 4e 65 74 46 78 34 37  462 && noNetFx47
2bcf0 20 26 26 20 6e 6f 4e 65 74 46 78 34 37 31 29 0d   && noNetFx471).
2bd00 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2bd10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2bd20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 66          return f
2bd30 61 6c 73 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  alse;..         
2bd40 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
2bd50 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2bd60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bd70 2f 2f 20 4e 4f 54 45 3a 20 41 6c 73 6f 2c 20 69  // NOTE: Also, i
2bd80 66 20 74 68 65 20 45 46 36 20 63 6f 72 65 20 61  f the EF6 core a
2bd90 73 73 65 6d 62 6c 79 20 69 73 20 75 6e 61 76 61  ssembly is unava
2bda0 69 6c 61 62 6c 65 2c 20 74 68 69 73 0d 0a 20 20  ilable, this..  
2bdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2bdc0 20 20 20 20 20 20 20 6d 75 73 74 20 72 65 74 75         must retu
2bdd0 72 6e 20 7a 65 72 6f 2e 0d 0a 20 20 20 20 20 20  rn zero...      
2bde0 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20            //..  
2bdf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
2be00 20 28 21 49 73 53 79 73 74 65 6d 45 66 36 41 73   (!IsSystemEf6As
2be10 73 65 6d 62 6c 79 41 76 61 69 6c 61 62 6c 65 28  semblyAvailable(
2be20 74 72 61 63 65 29 29 0d 0a 20 20 20 20 20 20 20  trace))..       
2be30 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2be40 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20 20  urn false;....  
2be50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2be60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2be70 20 20 2f 2f 20 4e 4f 54 45 3a 20 46 69 6e 61 6c    // NOTE: Final
2be80 6c 79 2c 20 69 66 20 74 68 65 20 45 46 36 20 63  ly, if the EF6 c
2be90 6f 72 65 20 61 73 73 65 6d 62 6c 79 20 69 73 20  ore assembly is 
2bea0 6e 6f 74 20 61 76 61 69 6c 61 62 6c 65 0d 0a 20  not available.. 
2beb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2bec0 2f 20 20 20 20 20 20 20 67 6c 6f 62 61 6c 6c 79  /       globally
2bed0 20 5b 61 6e 64 20 74 68 69 73 20 69 73 20 61 20   [and this is a 
2bee0 72 65 71 75 69 72 65 6d 65 6e 74 20 66 6f 72 20  requirement for 
2bef0 74 68 65 20 63 75 72 72 65 6e 74 0d 0a 20 20 20  the current..   
2bf00 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20               // 
2bf10 20 20 20 20 20 20 69 6e 73 74 61 6c 6c 5d 2c 20        install], 
2bf20 72 65 74 75 72 6e 20 7a 65 72 6f 2e 0d 0a 20 20  return zero...  
2bf30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2bf40 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2bf50 20 20 72 65 74 75 72 6e 20 48 61 73 46 6c 61 67    return HasFlag
2bf60 73 28 50 72 6f 76 69 64 65 72 46 6c 61 67 73 2e  s(ProviderFlags.
2bf70 53 79 73 74 65 6d 45 66 36 4d 75 73 74 42 65 47  SystemEf6MustBeG
2bf80 6c 6f 62 61 6c 2c 20 74 72 75 65 29 20 3f 0d 0a  lobal, true) ?..
2bf90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2bfa0 20 20 20 20 49 73 53 79 73 74 65 6d 45 66 36 41      IsSystemEf6A
2bfb0 73 73 65 6d 62 6c 79 47 6c 6f 62 61 6c 28 29 20  ssemblyGlobal() 
2bfc0 3a 20 74 72 75 65 3b 0d 0a 20 20 20 20 20 20 20  : true;..       
2bfd0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2bfe0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2bff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c010 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c020 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2c030 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
2c040 20 62 6f 6f 6c 20 49 73 45 66 36 41 73 73 65 6d   bool IsEf6Assem
2c050 62 6c 79 47 6c 6f 62 61 6c 28 29 0d 0a 20 20 20  blyGlobal()..   
2c060 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2c070 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2c080 65 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20  ef6AssemblyName 
2c090 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20  == null)..      
2c0a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2c0b0 74 75 72 6e 20 66 61 6c 73 65 3b 0d 0a 0d 0a 20  turn false;.... 
2c0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 41                 A
2c0d0 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62 6c 79  ssembly assembly
2c0e0 20 3d 20 41 73 73 65 6d 62 6c 79 2e 52 65 66 6c   = Assembly.Refl
2c0f0 65 63 74 69 6f 6e 4f 6e 6c 79 4c 6f 61 64 28 0d  ectionOnlyLoad(.
2c100 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c110 20 20 20 20 20 65 66 36 41 73 73 65 6d 62 6c 79       ef6Assembly
2c120 4e 61 6d 65 2e 54 6f 53 74 72 69 6e 67 28 29 29  Name.ToString())
2c130 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ;....           
2c140 20 20 20 20 20 72 65 74 75 72 6e 20 28 61 73 73       return (ass
2c150 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 20 26  embly != null) &
2c160 26 20 61 73 73 65 6d 62 6c 79 2e 47 6c 6f 62 61  & assembly.Globa
2c170 6c 41 73 73 65 6d 62 6c 79 43 61 63 68 65 3b 0d  lAssemblyCache;.
2c180 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2c190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c1a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c1e0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2c1f0 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 55 73 65   public bool Use
2c200 45 66 36 50 72 6f 76 69 64 65 72 28 0d 0a 20 20  Ef6Provider(..  
2c210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f                bo
2c220 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20  ol trace..      
2c230 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
2c240 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2c250 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
2c260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c270 2f 2f 20 4e 4f 54 45 3a 20 57 65 20 63 61 6e 6e  // NOTE: We cann
2c280 6f 74 20 75 73 65 20 74 68 65 20 45 46 36 20 61  ot use the EF6 a
2c290 73 73 65 6d 62 6c 79 20 61 73 20 74 68 65 20 70  ssembly as the p
2c2a0 72 6f 76 69 64 65 72 20 69 66 20 69 74 0d 0a 20  rovider if it.. 
2c2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f                 /
2c2c0 2f 20 20 20 20 20 20 20 69 73 20 6e 6f 74 20 73  /       is not s
2c2d0 75 70 70 6f 72 74 65 64 20 62 79 20 74 68 69 73  upported by this
2c2e0 20 69 6e 73 74 61 6c 6c 61 74 69 6f 6e 2e 0d 0a   installation...
2c2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c300 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  //..            
2c310 20 20 20 20 69 66 20 28 21 49 73 45 66 36 53 75      if (!IsEf6Su
2c320 70 70 6f 72 74 65 64 28 74 72 61 63 65 29 29 0d  pported(trace)).
2c330 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c340 20 20 20 20 20 72 65 74 75 72 6e 20 66 61 6c 73       return fals
2c350 65 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  e;....          
2c360 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20        //..      
2c370 20 20 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54            // NOT
2c380 45 3a 20 46 6f 72 20 74 68 65 20 45 46 36 20 61  E: For the EF6 a
2c390 73 73 65 6d 62 6c 79 20 74 6f 20 62 65 20 75 73  ssembly to be us
2c3a0 61 62 6c 65 20 61 73 20 61 20 70 72 6f 76 69 64  able as a provid
2c3b0 65 72 20 69 6e 0d 0a 20 20 20 20 20 20 20 20 20  er in..         
2c3c0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
2c3d0 74 68 65 20 6d 61 63 68 69 6e 65 20 63 6f 6e 66  the machine conf
2c3e0 69 67 75 72 61 74 69 6f 6e 20 66 69 6c 65 2c 20  iguration file, 
2c3f0 69 74 20 6d 75 73 74 20 62 65 20 69 6e 20 74 68  it must be in th
2c400 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
2c410 20 20 20 2f 2f 20 20 20 20 20 20 20 67 6c 6f 62     //       glob
2c420 61 6c 20 61 73 73 65 6d 62 6c 79 20 63 61 63 68  al assembly cach
2c430 65 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e...            
2c440 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
2c450 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 49          return I
2c460 73 45 66 36 41 73 73 65 6d 62 6c 79 47 6c 6f 62  sEf6AssemblyGlob
2c470 61 6c 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  al();..         
2c480 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2c490 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2c4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c4d0 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2c4e0 20 20 20 20 20 20 20 2f 2a 20 52 45 51 55 49 52         /* REQUIR
2c4f0 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
2c500 20 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62     public Assemb
2c510 6c 79 4e 61 6d 65 20 47 65 74 43 6f 72 65 41 73  lyName GetCoreAs
2c520 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20  semblyName(..   
2c530 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
2c540 6c 20 74 72 61 63 65 20 2f 2a 20 4e 4f 54 20 55  l trace /* NOT U
2c550 53 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  SED */..        
2c560 20 20 20 20 20 20 20 20 29 20 2f 2a 20 74 68 72          ) /* thr
2c570 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ow */..         
2c580 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
2c590 20 20 20 20 20 20 69 66 20 28 63 6f 72 65 41 73        if (coreAs
2c5a0 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 3d 20 6e 75  semblyName == nu
2c5b0 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ll)..           
2c5c0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
2c5d0 20 20 20 20 20 20 20 20 20 20 20 20 63 6f 72 65              core
2c5e0 41 73 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 41  AssemblyName = A
2c5f0 73 73 65 6d 62 6c 79 4e 61 6d 65 2e 47 65 74 41  ssemblyName.GetA
2c600 73 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20  ssemblyName(..  
2c610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c620 20 20 20 20 20 20 43 6f 72 65 46 69 6c 65 4e 61        CoreFileNa
2c630 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20 2a 2f  me); /* throw */
2c640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2c650 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2c660 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 63 6f         return co
2c670 72 65 41 73 73 65 6d 62 6c 79 4e 61 6d 65 3b 0d  reAssemblyName;.
2c680 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
2c690 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
2c6a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c6e0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
2c6f0 20 2f 2a 20 4f 50 54 49 4f 4e 41 4c 20 2a 2f 0d   /* OPTIONAL */.
2c700 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
2c710 6c 69 63 20 41 73 73 65 6d 62 6c 79 4e 61 6d 65  lic AssemblyName
2c720 20 47 65 74 4c 69 6e 71 41 73 73 65 6d 62 6c 79   GetLinqAssembly
2c730 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Name(..         
2c740 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63         bool trac
2c750 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
2c760 20 20 20 29 20 2f 2a 20 74 68 72 6f 77 20 2a 2f     ) /* throw */
2c770 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
2c780 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2c790 20 69 66 20 28 49 73 4c 69 6e 71 53 75 70 70 6f   if (IsLinqSuppo
2c7a0 72 74 65 64 28 74 72 61 63 65 29 20 26 26 20 28  rted(trace) && (
2c7b0 6c 69 6e 71 41 73 73 65 6d 62 6c 79 4e 61 6d 65  linqAssemblyName
2c7c0 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a 20 20 20 20   == null))..    
2c7d0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2c7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c7f0 20 20 20 6c 69 6e 71 41 73 73 65 6d 62 6c 79 4e     linqAssemblyN
2c800 61 6d 65 20 3d 20 41 73 73 65 6d 62 6c 79 4e 61  ame = AssemblyNa
2c810 6d 65 2e 47 65 74 41 73 73 65 6d 62 6c 79 4e 61  me.GetAssemblyNa
2c820 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me(..           
2c830 20 20 20 20 20 20 20 20 20 20 20 20 20 4c 69 6e               Lin
2c840 71 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20 74  qFileName); /* t
2c850 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20  hrow */..       
2c860 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
2c870 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65                re
2c880 74 75 72 6e 20 6c 69 6e 71 41 73 73 65 6d 62 6c  turn linqAssembl
2c890 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20  yName;..        
2c8a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2c8b0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2c8c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2c8f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2c900 20 20 20 20 20 20 20 20 2f 2a 20 4f 50 54 49 4f          /* OPTIO
2c910 4e 41 4c 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  NAL */..        
2c920 20 20 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d      public Assem
2c930 62 6c 79 4e 61 6d 65 20 47 65 74 45 66 36 41 73  blyName GetEf6As
2c940 73 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20  semblyName(..   
2c950 20 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f               boo
2c960 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20 20 20  l trace..       
2c970 20 20 20 20 20 20 20 20 20 29 20 2f 2a 20 74 68           ) /* th
2c980 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20  row */..        
2c990 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2c9a0 20 20 20 20 20 20 20 69 66 20 28 49 73 45 66 36         if (IsEf6
2c9b0 53 75 70 70 6f 72 74 65 64 28 74 72 61 63 65 29  Supported(trace)
2c9c0 20 26 26 20 28 65 66 36 41 73 73 65 6d 62 6c 79   && (ef6Assembly
2c9d0 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 29 0d 0a  Name == null))..
2c9e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2c9f0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2ca00 20 20 20 20 20 20 20 65 66 36 41 73 73 65 6d 62         ef6Assemb
2ca10 6c 79 4e 61 6d 65 20 3d 20 41 73 73 65 6d 62 6c  lyName = Assembl
2ca20 79 4e 61 6d 65 2e 47 65 74 41 73 73 65 6d 62 6c  yName.GetAssembl
2ca30 79 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20  yName(..        
2ca40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca50 45 66 36 46 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a  Ef6FileName); /*
2ca60 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20 20   throw */..     
2ca70 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
2ca80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ca90 72 65 74 75 72 6e 20 65 66 36 41 73 73 65 6d 62  return ef6Assemb
2caa0 6c 79 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20  lyName;..       
2cab0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2cac0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
2cad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2caf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cb00 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
2cb10 20 20 20 20 20 20 20 20 20 2f 2a 20 52 45 51 55           /* REQU
2cb20 49 52 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20  IRED */..       
2cb30 20 20 20 20 20 70 75 62 6c 69 63 20 41 73 73 65       public Asse
2cb40 6d 62 6c 79 4e 61 6d 65 20 47 65 74 44 65 73 69  mblyName GetDesi
2cb50 67 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65  gnerAssemblyName
2cb60 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
2cb70 20 20 20 62 6f 6f 6c 20 74 72 61 63 65 20 2f 2a     bool trace /*
2cb80 20 4e 4f 54 20 55 53 45 44 20 2a 2f 0d 0a 20 20   NOT USED */..  
2cb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 29 20                ) 
2cba0 2f 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20  /* throw */..   
2cbb0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
2cbc0 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
2cbd0 64 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79  designerAssembly
2cbe0 4e 61 6d 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20  Name == null).. 
2cbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
2cc00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2cc10 20 20 20 20 20 20 64 65 73 69 67 6e 65 72 41 73        designerAs
2cc20 73 65 6d 62 6c 79 4e 61 6d 65 20 3d 20 41 73 73  semblyName = Ass
2cc30 65 6d 62 6c 79 4e 61 6d 65 2e 47 65 74 41 73 73  emblyName.GetAss
2cc40 65 6d 62 6c 79 4e 61 6d 65 28 0d 0a 20 20 20 20  emblyName(..    
2cc50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2cc60 20 20 20 20 44 65 73 69 67 6e 65 72 46 69 6c 65      DesignerFile
2cc70 4e 61 6d 65 29 3b 20 2f 2a 20 74 68 72 6f 77 20  Name); /* throw 
2cc80 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  */..            
2cc90 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2cca0 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
2ccb0 64 65 73 69 67 6e 65 72 41 73 73 65 6d 62 6c 79  designerAssembly
2ccc0 4e 61 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20  Name;..         
2ccd0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
2cce0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
2ccf0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cd20 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
2cd30 20 20 20 20 20 20 20 2f 2a 20 52 45 51 55 49 52         /* REQUIR
2cd40 45 44 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20  ED */..         
2cd50 20 20 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62     public Assemb
2cd60 6c 79 4e 61 6d 65 20 47 65 74 50 72 6f 76 69 64  lyName GetProvid
2cd70 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 0d  erAssemblyName(.
2cd80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2cd90 20 62 6f 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20   bool trace..   
2cda0 20 20 20 20 20 20 20 20 20 20 20 20 20 29 20 2f               ) /
2cdb0 2a 20 74 68 72 6f 77 20 2a 2f 0d 0a 20 20 20 20  * throw */..    
2cdc0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2cdd0 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
2cde0 6e 20 55 73 65 45 66 36 50 72 6f 76 69 64 65 72  n UseEf6Provider
2cdf0 28 74 72 61 63 65 29 20 3f 0d 0a 20 20 20 20 20  (trace) ?..     
2ce00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
2ce10 65 74 45 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d  etEf6AssemblyNam
2ce20 65 28 74 72 61 63 65 29 20 3a 20 47 65 74 43 6f  e(trace) : GetCo
2ce30 72 65 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28 74  reAssemblyName(t
2ce40 72 61 63 65 29 3b 0d 0a 20 20 20 20 20 20 20 20  race);..        
2ce50 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
2ce60 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
2ce70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ce90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cea0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
2ceb0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
2cec0 74 72 69 6e 67 20 47 65 74 43 6f 6e 66 69 67 49  tring GetConfigI
2ced0 6e 76 61 72 69 61 6e 74 4e 61 6d 65 28 0d 0a 20  nvariantName(.. 
2cee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 62                 b
2cef0 6f 6f 6c 20 74 72 61 63 65 0d 0a 20 20 20 20 20  ool trace..     
2cf00 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20             )..  
2cf10 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
2cf20 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
2cf30 75 72 6e 20 47 65 74 49 6e 76 61 72 69 61 6e 74  urn GetInvariant
2cf40 4e 61 6d 65 28 74 72 61 63 65 29 3b 0d 0a 20 20  Name(trace);..  
2cf50 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
2cf60 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
2cf70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cf90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2cfa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
2cfb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
2cfc0 62 6c 69 63 20 73 74 72 69 6e 67 20 47 65 74 50  blic string GetP
2cfd0 72 6f 76 69 64 65 72 49 6e 76 61 72 69 61 6e 74  roviderInvariant
2cfe0 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20 20 20  Name(..         
2cff0 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72 61 63         bool trac
2d000 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  e..             
2d010 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20     )..          
2d020 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
2d030 20 20 20 20 20 72 65 74 75 72 6e 20 47 65 74 49       return GetI
2d040 6e 76 61 72 69 61 6e 74 4e 61 6d 65 28 74 72 61  nvariantName(tra
2d050 63 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ce);..          
2d060 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20    }....         
2d070 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
2d080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
2d0c0 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72        public str
2d0d0 69 6e 67 20 47 65 74 46 61 63 74 6f 72 79 54 79  ing GetFactoryTy
2d0e0 70 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20 20 20  peName(..       
2d0f0 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 74 72           bool tr
2d100 61 63 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ace..           
2d110 20 20 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20       )..        
2d120 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
2d130 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 55 73         return Us
2d140 65 45 66 36 50 72 6f 76 69 64 65 72 28 74 72 61  eEf6Provider(tra
2d150 63 65 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  ce) ?..         
2d160 20 20 20 20 20 20 20 20 20 20 20 45 66 36 46 61             Ef6Fa
2d170 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 20 3a 20  ctoryTypeName : 
2d180 46 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 3b  FactoryTypeName;
2d190 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
2d1a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
2d1b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2d1f0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
2d200 20 20 70 75 62 6c 69 63 20 76 6f 69 64 20 44 75    public void Du
2d210 6d 70 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  mp(..           
2d220 20 20 20 20 20 54 72 61 63 65 43 61 6c 6c 62 61       TraceCallba
2d230 63 6b 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b  ck traceCallback
2d240 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d250 20 20 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20    )..           
2d260 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
2d270 20 20 20 20 69 66 20 28 74 72 61 63 65 43 61 6c      if (traceCal
2d280 6c 62 61 63 6b 20 21 3d 20 6e 75 6c 6c 29 0d 0a  lback != null)..
2d290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d2a0 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
2d2b0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2d2c0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2d2d0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2d2e0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2d2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d300 22 41 73 73 65 6d 62 6c 79 22 2c 20 46 6f 72 44  "Assembly", ForD
2d310 69 73 70 6c 61 79 28 61 73 73 65 6d 62 6c 79 29  isplay(assembly)
2d320 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2d330 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2d340 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2d350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d360 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2d370 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2d380 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2d390 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2d3a0 20 20 20 20 20 20 20 20 20 20 20 20 22 4c 6f 67              "Log
2d3b0 46 69 6c 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69  FileName", ForDi
2d3c0 73 70 6c 61 79 28 6c 6f 67 46 69 6c 65 4e 61 6d  splay(logFileNam
2d3d0 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  e)),..          
2d3e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2d3f0 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d  aceCategory);...
2d400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d410 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61       traceCallba
2d420 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74  ck(String.Format
2d430 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72  (NameAndValueFor
2d440 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  mat,..          
2d450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52                "R
2d460 65 67 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61  egistryLogFileNa
2d470 6d 65 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  me",..          
2d480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
2d490 72 44 69 73 70 6c 61 79 28 72 65 67 69 73 74 72  rDisplay(registr
2d4a0 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 29 29 2c 0d  yLogFileName)),.
2d4b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d4c0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2d4d0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2d4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d4f0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2d500 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2d510 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2d520 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2d530 20 20 20 20 20 20 20 20 20 22 44 69 72 65 63 74           "Direct
2d540 6f 72 79 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  ory", ForDisplay
2d550 28 64 69 72 65 63 74 6f 72 79 29 29 2c 0d 0a 20  (directory)),.. 
2d560 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d570 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
2d580 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
2d590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2d5a0 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
2d5b0 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
2d5c0 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
2d5d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d5e0 20 20 20 20 20 20 20 22 43 6f 72 65 46 69 6c 65         "CoreFile
2d5f0 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  Name", ForDispla
2d600 79 28 63 6f 72 65 46 69 6c 65 4e 61 6d 65 29 29  y(coreFileName))
2d610 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2d620 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2d630 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2d640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d650 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2d660 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2d670 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2d680 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2d690 20 20 20 20 20 20 20 20 20 20 20 22 4c 69 6e 71             "Linq
2d6a0 46 69 6c 65 4e 61 6d 65 22 2c 20 46 6f 72 44 69  FileName", ForDi
2d6b0 73 70 6c 61 79 28 6c 69 6e 71 46 69 6c 65 4e 61  splay(linqFileNa
2d6c0 6d 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  me)),..         
2d6d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2d6e0 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
2d6f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2d700 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
2d710 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
2d720 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
2d730 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
2d740 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2d750 45 66 36 46 69 6c 65 4e 61 6d 65 22 2c 20 46 6f  Ef6FileName", Fo
2d760 72 44 69 73 70 6c 61 79 28 65 66 36 46 69 6c 65  rDisplay(ef6File
2d770 4e 61 6d 65 29 29 2c 0d 0a 20 20 20 20 20 20 20  Name)),..       
2d780 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d790 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
2d7a0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2d7b0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
2d7c0 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
2d7d0 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
2d7e0 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
2d7f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d800 20 22 44 65 73 69 67 6e 65 72 46 69 6c 65 4e 61   "DesignerFileNa
2d810 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  me", ForDisplay(
2d820 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65  designerFileName
2d830 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
2d840 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2d850 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
2d860 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d870 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
2d880 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
2d890 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
2d8a0 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
2d8b0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 52 65               "Re
2d8c0 67 69 73 74 72 79 56 65 72 73 69 6f 6e 22 2c 20  gistryVersion", 
2d8d0 46 6f 72 44 69 73 70 6c 61 79 28 72 65 67 69 73  ForDisplay(regis
2d8e0 74 72 79 56 65 72 73 69 6f 6e 29 29 2c 0d 0a 20  tryVersion)),.. 
2d8f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d900 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
2d910 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
2d920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2d930 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
2d940 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
2d950 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
2d960 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d970 20 20 20 20 20 20 20 22 43 6f 6e 66 69 67 56 65         "ConfigVe
2d980 72 73 69 6f 6e 22 2c 20 46 6f 72 44 69 73 70 6c  rsion", ForDispl
2d990 61 79 28 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e  ay(configVersion
2d9a0 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
2d9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2d9c0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
2d9d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2d9e0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
2d9f0 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
2da00 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
2da10 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
2da20 20 20 20 20 20 20 20 20 20 20 20 20 20 22 56 73               "Vs
2da30 56 65 72 73 69 6f 6e 53 75 66 66 69 78 22 2c 20  VersionSuffix", 
2da40 46 6f 72 44 69 73 70 6c 61 79 28 76 73 56 65 72  ForDisplay(vsVer
2da50 73 69 6f 6e 53 75 66 66 69 78 29 29 2c 0d 0a 20  sionSuffix)),.. 
2da60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2da70 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
2da80 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
2da90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2daa0 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
2dab0 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
2dac0 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
2dad0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dae0 20 20 20 20 20 20 20 22 44 65 62 75 67 46 6f 72         "DebugFor
2daf0 6d 61 74 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  mat", ForDisplay
2db00 28 64 65 62 75 67 46 6f 72 6d 61 74 29 29 2c 0d  (debugFormat)),.
2db10 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2db20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2db30 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2db40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2db50 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2db60 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2db70 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2db80 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2db90 20 20 20 20 20 20 20 20 20 22 54 72 61 63 65 46           "TraceF
2dba0 6f 72 6d 61 74 22 2c 20 46 6f 72 44 69 73 70 6c  ormat", ForDispl
2dbb0 61 79 28 74 72 61 63 65 46 6f 72 6d 61 74 29 29  ay(traceFormat))
2dbc0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2dbd0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2dbe0 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2dbf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dc00 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2dc10 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2dc20 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2dc30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2dc40 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 73 74             "Inst
2dc50 61 6c 6c 46 6c 61 67 73 22 2c 20 46 6f 72 44 69  allFlags", ForDi
2dc60 73 70 6c 61 79 28 69 6e 73 74 61 6c 6c 46 6c 61  splay(installFla
2dc70 67 73 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  gs)),..         
2dc80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2dc90 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
2dca0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2dcb0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
2dcc0 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
2dcd0 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
2dce0 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
2dcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2dd00 50 72 6f 76 69 64 65 72 46 6c 61 67 73 22 2c 20  ProviderFlags", 
2dd10 46 6f 72 44 69 73 70 6c 61 79 28 70 72 6f 76 69  ForDisplay(provi
2dd20 64 65 72 46 6c 61 67 73 29 29 2c 0d 0a 20 20 20  derFlags)),..   
2dd30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2dd40 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
2dd50 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
2dd60 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2dd70 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67  eCallback(String
2dd80 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56  .Format(NameAndV
2dd90 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  alueFormat,..   
2dda0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ddb0 20 20 20 20 20 22 44 65 62 75 67 50 72 69 6f 72       "DebugPrior
2ddc0 69 74 79 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  ity", ForDisplay
2ddd0 28 64 65 62 75 67 50 72 69 6f 72 69 74 79 29 29  (debugPriority))
2dde0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2ddf0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2de00 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2de10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2de20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2de30 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2de40 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2de50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2de60 20 20 20 20 20 20 20 20 20 20 20 22 54 72 61 63             "Trac
2de70 65 50 72 69 6f 72 69 74 79 22 2c 20 46 6f 72 44  ePriority", ForD
2de80 69 73 70 6c 61 79 28 74 72 61 63 65 50 72 69 6f  isplay(tracePrio
2de90 72 69 74 79 29 29 2c 0d 0a 20 20 20 20 20 20 20  rity)),..       
2dea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2deb0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
2dec0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2ded0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
2dee0 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
2def0 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
2df00 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
2df10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df20 20 22 50 65 72 55 73 65 72 22 2c 20 46 6f 72 44   "PerUser", ForD
2df30 69 73 70 6c 61 79 28 70 65 72 55 73 65 72 29 29  isplay(perUser))
2df40 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2df50 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2df60 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2df70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2df80 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2df90 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2dfa0 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2dfb0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2dfc0 20 20 20 20 20 20 20 20 20 20 20 22 49 6e 73 74             "Inst
2dfd0 61 6c 6c 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  all", ForDisplay
2dfe0 28 69 6e 73 74 61 6c 6c 29 29 2c 0d 0a 20 20 20  (install)),..   
2dff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e000 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
2e010 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
2e020 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2e030 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67  eCallback(String
2e040 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56  .Format(NameAndV
2e050 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  alueFormat,..   
2e060 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e070 20 20 20 20 20 22 57 6f 77 36 34 22 2c 20 46 6f       "Wow64", Fo
2e080 72 44 69 73 70 6c 61 79 28 77 6f 77 36 34 29 29  rDisplay(wow64))
2e090 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e0a0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2e0b0 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2e0c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e0d0 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2e0e0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2e0f0 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2e100 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e110 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 52 75             "NoRu
2e120 6e 74 69 6d 65 56 65 72 73 69 6f 6e 22 2c 20 46  ntimeVersion", F
2e130 6f 72 44 69 73 70 6c 61 79 28 6e 6f 52 75 6e 74  orDisplay(noRunt
2e140 69 6d 65 56 65 72 73 69 6f 6e 29 29 2c 0d 0a 20  imeVersion)),.. 
2e150 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e160 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
2e170 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
2e180 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2e190 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
2e1a0 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
2e1b0 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
2e1c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e1d0 20 20 20 20 20 20 20 22 4e 6f 44 65 73 6b 74 6f         "NoDeskto
2e1e0 70 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e  p", ForDisplay(n
2e1f0 6f 44 65 73 6b 74 6f 70 29 29 2c 0d 0a 20 20 20  oDesktop)),..   
2e200 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e210 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
2e220 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
2e230 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2e240 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67  eCallback(String
2e250 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56  .Format(NameAndV
2e260 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  alueFormat,..   
2e270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e280 20 20 20 20 20 22 4e 6f 43 6f 6d 70 61 63 74 22       "NoCompact"
2e290 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 43  , ForDisplay(noC
2e2a0 6f 6d 70 61 63 74 29 29 2c 0d 0a 20 20 20 20 20  ompact)),..     
2e2b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e2c0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
2e2d0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2e2e0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2e2f0 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46  allback(String.F
2e300 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c  ormat(NameAndVal
2e310 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20  ueFormat,..     
2e320 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e330 20 20 20 22 4e 6f 4e 65 74 46 78 32 30 22 2c 20     "NoNetFx20", 
2e340 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 4e 65 74  ForDisplay(noNet
2e350 46 78 32 30 29 29 2c 0d 0a 20 20 20 20 20 20 20  Fx20)),..       
2e360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e370 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
2e380 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2e390 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
2e3a0 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
2e3b0 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
2e3c0 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
2e3d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e3e0 20 22 4e 6f 4e 65 74 46 78 33 35 22 2c 20 46 6f   "NoNetFx35", Fo
2e3f0 72 44 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78  rDisplay(noNetFx
2e400 33 35 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  35)),..         
2e410 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2e420 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
2e430 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2e440 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
2e450 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
2e460 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
2e470 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
2e480 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2e490 4e 6f 4e 65 74 46 78 34 30 22 2c 20 46 6f 72 44  NoNetFx40", ForD
2e4a0 69 73 70 6c 61 79 28 6e 6f 4e 65 74 46 78 34 30  isplay(noNetFx40
2e4b0 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
2e4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2e4d0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
2e4e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e4f0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
2e500 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
2e510 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
2e520 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
2e530 20 20 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f               "No
2e540 4e 65 74 46 78 34 35 22 2c 20 46 6f 72 44 69 73  NetFx45", ForDis
2e550 70 6c 61 79 28 6e 6f 4e 65 74 46 78 34 35 29 29  play(noNetFx45))
2e560 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e570 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2e580 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2e590 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e5a0 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2e5b0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2e5c0 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2e5d0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e5e0 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65             "NoNe
2e5f0 74 46 78 34 35 31 22 2c 20 46 6f 72 44 69 73 70  tFx451", ForDisp
2e600 6c 61 79 28 6e 6f 4e 65 74 46 78 34 35 31 29 29  lay(noNetFx451))
2e610 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e620 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2e630 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2e640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e650 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2e660 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2e670 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2e680 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e690 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65             "NoNe
2e6a0 74 46 78 34 35 32 22 2c 20 46 6f 72 44 69 73 70  tFx452", ForDisp
2e6b0 6c 61 79 28 6e 6f 4e 65 74 46 78 34 35 32 29 29  lay(noNetFx452))
2e6c0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e6d0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2e6e0 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2e6f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e700 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2e710 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2e720 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2e730 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2e740 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65             "NoNe
2e750 74 46 78 34 36 22 2c 20 46 6f 72 44 69 73 70 6c  tFx46", ForDispl
2e760 61 79 28 6e 6f 4e 65 74 46 78 34 36 29 29 2c 0d  ay(noNetFx46)),.
2e770 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e780 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2e790 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2e7a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e7b0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2e7c0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2e7d0 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2e7e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e7f0 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46           "NoNetF
2e800 78 34 36 31 22 2c 20 46 6f 72 44 69 73 70 6c 61  x461", ForDispla
2e810 79 28 6e 6f 4e 65 74 46 78 34 36 31 29 29 2c 0d  y(noNetFx461)),.
2e820 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e830 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2e840 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2e850 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e860 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2e870 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2e880 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2e890 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e8a0 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46           "NoNetF
2e8b0 78 34 36 32 22 2c 20 46 6f 72 44 69 73 70 6c 61  x462", ForDispla
2e8c0 79 28 6e 6f 4e 65 74 46 78 34 36 32 29 29 2c 0d  y(noNetFx462)),.
2e8d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e8e0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2e8f0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2e900 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e910 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2e920 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2e930 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2e940 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2e950 20 20 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46           "NoNetF
2e960 78 34 37 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  x47", ForDisplay
2e970 28 6e 6f 4e 65 74 46 78 34 37 29 29 2c 0d 0a 20  (noNetFx47)),.. 
2e980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2e990 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
2e9a0 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
2e9b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2e9c0 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
2e9d0 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
2e9e0 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
2e9f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ea00 20 20 20 20 20 20 20 22 4e 6f 4e 65 74 46 78 34         "NoNetFx4
2ea10 37 31 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  71", ForDisplay(
2ea20 6e 6f 4e 65 74 46 78 34 37 31 29 29 2c 0d 0a 20  noNetFx471)),.. 
2ea30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ea40 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
2ea50 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
2ea60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2ea70 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
2ea80 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
2ea90 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
2eaa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eab0 20 20 20 20 20 20 20 22 4e 6f 56 73 32 30 30 35         "NoVs2005
2eac0 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f  ", ForDisplay(no
2ead0 56 73 32 30 30 35 29 29 2c 0d 0a 20 20 20 20 20  Vs2005)),..     
2eae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eaf0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
2eb00 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2eb10 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2eb20 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46  allback(String.F
2eb30 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c  ormat(NameAndVal
2eb40 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20  ueFormat,..     
2eb50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eb60 20 20 20 22 4e 6f 56 73 32 30 30 38 22 2c 20 46     "NoVs2008", F
2eb70 6f 72 44 69 73 70 6c 61 79 28 6e 6f 56 73 32 30  orDisplay(noVs20
2eb80 30 38 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  08)),..         
2eb90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2eba0 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
2ebb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ebc0 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
2ebd0 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
2ebe0 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
2ebf0 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
2ec00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2ec10 4e 6f 56 73 32 30 31 30 22 2c 20 46 6f 72 44 69  NoVs2010", ForDi
2ec20 73 70 6c 61 79 28 6e 6f 56 73 32 30 31 30 29 29  splay(noVs2010))
2ec30 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2ec40 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2ec50 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2ec60 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ec70 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2ec80 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2ec90 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2eca0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2ecb0 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 56 73             "NoVs
2ecc0 32 30 31 32 22 2c 20 46 6f 72 44 69 73 70 6c 61  2012", ForDispla
2ecd0 79 28 6e 6f 56 73 32 30 31 32 29 29 2c 0d 0a 20  y(noVs2012)),.. 
2ece0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ecf0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 74 65         traceCate
2ed00 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20  gory);....      
2ed10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72                tr
2ed20 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69  aceCallback(Stri
2ed30 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e  ng.Format(NameAn
2ed40 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20  dValueFormat,.. 
2ed50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ed60 20 20 20 20 20 20 20 22 4e 6f 56 73 32 30 31 33         "NoVs2013
2ed70 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f  ", ForDisplay(no
2ed80 56 73 32 30 31 33 29 29 2c 0d 0a 20 20 20 20 20  Vs2013)),..     
2ed90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2eda0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
2edb0 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2edc0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2edd0 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46  allback(String.F
2ede0 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c  ormat(NameAndVal
2edf0 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20  ueFormat,..     
2ee00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ee10 20 20 20 22 4e 6f 56 73 32 30 31 35 22 2c 20 46     "NoVs2015", F
2ee20 6f 72 44 69 73 70 6c 61 79 28 6e 6f 56 73 32 30  orDisplay(noVs20
2ee30 31 35 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  15)),..         
2ee40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2ee50 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
2ee60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2ee70 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
2ee80 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
2ee90 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
2eea0 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
2eeb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2eec0 4e 6f 56 73 32 30 31 37 22 2c 20 46 6f 72 44 69  NoVs2017", ForDi
2eed0 73 70 6c 61 79 28 6e 6f 56 73 32 30 31 37 29 29  splay(noVs2017))
2eee0 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2eef0 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65             trace
2ef00 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20  Category);....  
2ef10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ef20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2ef30 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2ef40 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2ef50 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2ef60 20 20 20 20 20 20 20 20 20 20 20 22 4e 6f 54 72             "NoTr
2ef70 61 63 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  ace", ForDisplay
2ef80 28 6e 6f 54 72 61 63 65 29 29 2c 0d 0a 20 20 20  (noTrace)),..   
2ef90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2efa0 20 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f       traceCatego
2efb0 72 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  ry);....        
2efc0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2efd0 65 43 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67  eCallback(String
2efe0 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56  .Format(NameAndV
2eff0 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20  alueFormat,..   
2f000 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f010 20 20 20 20 20 22 4e 6f 43 6f 6e 73 6f 6c 65 22       "NoConsole"
2f020 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 6e 6f 43  , ForDisplay(noC
2f030 6f 6e 73 6f 6c 65 29 29 2c 0d 0a 20 20 20 20 20  onsole)),..     
2f040 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f050 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
2f060 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2f070 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2f080 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46  allback(String.F
2f090 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c  ormat(NameAndVal
2f0a0 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20  ueFormat,..     
2f0b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f0c0 20 20 20 22 4e 6f 4c 6f 67 22 2c 20 46 6f 72 44     "NoLog", ForD
2f0d0 69 73 70 6c 61 79 28 6e 6f 4c 6f 67 29 29 2c 0d  isplay(noLog)),.
2f0e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f0f0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2f100 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2f110 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f120 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2f130 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2f140 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2f150 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f160 20 20 20 20 20 20 20 20 20 22 54 68 72 6f 77 4f           "ThrowO
2f170 6e 4d 69 73 73 69 6e 67 22 2c 20 46 6f 72 44 69  nMissing", ForDi
2f180 73 70 6c 61 79 28 74 68 72 6f 77 4f 6e 4d 69 73  splay(throwOnMis
2f190 73 69 6e 67 29 29 2c 0d 0a 20 20 20 20 20 20 20  sing)),..       
2f1a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f1b0 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
2f1c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
2f1d0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
2f1e0 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
2f1f0 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
2f200 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
2f210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f220 20 22 57 68 61 74 49 66 22 2c 20 46 6f 72 44 69   "WhatIf", ForDi
2f230 73 70 6c 61 79 28 77 68 61 74 49 66 29 29 2c 0d  splay(whatIf)),.
2f240 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f250 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2f260 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2f270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f280 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2f290 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2f2a0 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2f2b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f2c0 20 20 20 20 20 20 20 20 20 22 44 65 62 75 67 22           "Debug"
2f2d0 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 64 65 62  , ForDisplay(deb
2f2e0 75 67 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  ug)),..         
2f2f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f300 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
2f310 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f320 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
2f330 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
2f340 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
2f350 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
2f360 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2f370 56 65 72 62 6f 73 65 22 2c 20 46 6f 72 44 69 73  Verbose", ForDis
2f380 70 6c 61 79 28 76 65 72 62 6f 73 65 29 29 2c 0d  play(verbose)),.
2f390 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f3a0 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2f3b0 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2f3c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f3d0 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
2f3e0 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
2f3f0 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
2f400 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f410 20 20 20 20 20 20 20 20 20 22 43 6f 6e 66 69 72           "Confir
2f420 6d 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 63  m", ForDisplay(c
2f430 6f 6e 66 69 72 6d 29 29 2c 0d 0a 20 20 20 20 20  onfirm)),..     
2f440 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f450 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
2f460 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  );....          
2f470 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
2f480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f4a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f4b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
2f4c0 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
2f4d0 28 61 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c  (assembly != nul
2f4e0 6c 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  l)..            
2f4f0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
2f500 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f510 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2f520 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2f530 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2f540 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2f550 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f560 22 41 73 73 65 6d 62 6c 79 54 69 74 6c 65 22 2c  "AssemblyTitle",
2f570 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 46 6f                Fo
2f590 72 44 69 73 70 6c 61 79 28 47 65 74 41 73 73 65  rDisplay(GetAsse
2f5a0 6d 62 6c 79 54 69 74 6c 65 28 61 73 73 65 6d 62  mblyTitle(assemb
2f5b0 6c 79 29 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  ly))),..        
2f5c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f5d0 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
2f5e0 79 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  y);....         
2f5f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f600 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74 72  raceCallback(Str
2f610 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65 41  ing.Format(NameA
2f620 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d 0a  ndValueFormat,..
2f630 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f640 20 20 20 20 20 20 20 20 20 20 20 20 22 41 73 73              "Ass
2f650 65 6d 62 6c 79 43 6f 6e 66 69 67 75 72 61 74 69  emblyConfigurati
2f660 6f 6e 22 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  on",..          
2f670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f680 20 20 46 6f 72 44 69 73 70 6c 61 79 28 47 65 74    ForDisplay(Get
2f690 41 73 73 65 6d 62 6c 79 43 6f 6e 66 69 67 75 72  AssemblyConfigur
2f6a0 61 74 69 6f 6e 28 61 73 73 65 6d 62 6c 79 29 29  ation(assembly))
2f6b0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2f6c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f6d0 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d  traceCategory);.
2f6e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f6f0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
2f700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
2f710 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f720 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20  /////////....   
2f750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f760 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2f770 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2f780 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2f790 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f7a0 20 20 20 20 20 20 20 20 20 20 22 49 73 53 79 73            "IsSys
2f7b0 74 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 41 76  temEf6AssemblyAv
2f7c0 61 69 6c 61 62 6c 65 22 2c 20 46 6f 72 44 69 73  ailable", ForDis
2f7d0 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20  play(..         
2f7e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 49                 I
2f7f0 73 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d 62  sSystemEf6Assemb
2f800 6c 79 41 76 61 69 6c 61 62 6c 65 28 66 61 6c 73  lyAvailable(fals
2f810 65 29 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  e))),..         
2f820 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
2f830 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
2f840 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2f850 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62        traceCallb
2f860 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61  ack(String.Forma
2f870 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f  t(NameAndValueFo
2f880 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20  rmat,..         
2f890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2f8a0 49 73 53 79 73 74 65 6d 45 66 36 41 73 73 65 6d  IsSystemEf6Assem
2f8b0 62 6c 79 47 6c 6f 62 61 6c 22 2c 20 46 6f 72 44  blyGlobal", ForD
2f8c0 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
2f8d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f8e0 20 49 73 53 79 73 74 65 6d 45 66 36 41 73 73 65   IsSystemEf6Asse
2f8f0 6d 62 6c 79 47 6c 6f 62 61 6c 28 29 29 29 2c 0d  mblyGlobal())),.
2f900 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2f910 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2f920 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2f930 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2f970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2f980 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2f990 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2f9a0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2f9b0 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2f9c0 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2f9d0 20 20 20 20 20 20 20 20 20 20 20 20 22 49 73 4c              "IsL
2f9e0 69 6e 71 53 75 70 70 6f 72 74 65 64 22 2c 20 46  inqSupported", F
2f9f0 6f 72 44 69 73 70 6c 61 79 28 49 73 4c 69 6e 71  orDisplay(IsLinq
2fa00 53 75 70 70 6f 72 74 65 64 28 66 61 6c 73 65 29  Supported(false)
2fa10 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  )),..           
2fa20 20 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61               tra
2fa30 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
2fa40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fa50 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
2fa60 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
2fa70 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
2fa80 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
2fa90 20 20 20 20 20 20 20 20 20 20 20 20 20 22 49 73               "Is
2faa0 45 66 36 53 75 70 70 6f 72 74 65 64 22 2c 20 46  Ef6Supported", F
2fab0 6f 72 44 69 73 70 6c 61 79 28 49 73 45 66 36 53  orDisplay(IsEf6S
2fac0 75 70 70 6f 72 74 65 64 28 66 61 6c 73 65 29 29  upported(false))
2fad0 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ),..            
2fae0 20 20 20 20 20 20 20 20 20 20 20 20 74 72 61 63              trac
2faf0 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20  eCategory);.... 
2fb00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb10 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
2fb20 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
2fb30 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
2fb40 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
2fb50 20 20 20 20 20 20 20 20 20 20 20 20 22 49 73 45              "IsE
2fb60 66 36 41 73 73 65 6d 62 6c 79 47 6c 6f 62 61 6c  f6AssemblyGlobal
2fb70 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 0d 0a  ", ForDisplay(..
2fb80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fb90 20 20 20 20 20 20 20 20 49 73 45 66 36 41 73 73          IsEf6Ass
2fba0 65 6d 62 6c 79 47 6c 6f 62 61 6c 28 29 29 29 2c  emblyGlobal())),
2fbb0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fbc0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
2fbd0 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20  ategory);....   
2fbe0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fbf0 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53   traceCallback(S
2fc00 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d  tring.Format(Nam
2fc10 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c  eAndValueFormat,
2fc20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
2fc30 20 20 20 20 20 20 20 20 20 20 22 55 73 65 45 66            "UseEf
2fc40 36 50 72 6f 76 69 64 65 72 22 2c 20 46 6f 72 44  6Provider", ForD
2fc50 69 73 70 6c 61 79 28 55 73 65 45 66 36 50 72 6f  isplay(UseEf6Pro
2fc60 76 69 64 65 72 28 66 61 6c 73 65 29 29 29 2c 0d  vider(false))),.
2fc70 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
2fc80 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
2fc90 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
2fca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fcb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fcc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fcd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2fce0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
2fcf0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd00 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
2fd10 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
2fd20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd30 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
2fd40 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
2fd50 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
2fd60 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
2fd70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fd80 20 20 20 20 22 47 65 74 43 6f 72 65 41 73 73 65      "GetCoreAsse
2fd90 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44 69  mblyName", ForDi
2fda0 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20  splay(..        
2fdb0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fdc0 20 20 20 20 47 65 74 43 6f 72 65 41 73 73 65 6d      GetCoreAssem
2fdd0 62 6c 79 4e 61 6d 65 28 66 61 6c 73 65 29 29 29  blyName(false)))
2fde0 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
2fdf0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
2fe00 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
2fe10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
2fe20 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
2fe30 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
2fe40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
2fe50 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fe60 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
2fe70 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
2fe80 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
2fe90 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
2fea0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
2feb0 47 65 74 43 6f 72 65 41 73 73 65 6d 62 6c 79 4e  GetCoreAssemblyN
2fec0 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79  ame", ForDisplay
2fed0 28 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20  (e)),..         
2fee0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2fef0 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79     traceCategory
2ff00 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
2ff10 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
2ff20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff30 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
2ff40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
2ff60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
2ff70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ff80 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
2ff90 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a               {..
2ffa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
2ffb0 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c          traceCal
2ffc0 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
2ffd0 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
2ffe0 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
2fff0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30000 20 20 20 20 20 22 47 65 74 4c 69 6e 71 41 73 73       "GetLinqAss
30010 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44  emblyName", ForD
30020 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
30030 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30040 20 20 20 20 20 47 65 74 4c 69 6e 71 41 73 73 65       GetLinqAsse
30050 6d 62 6c 79 4e 61 6d 65 28 66 61 6c 73 65 29 29  mblyName(false))
30060 29 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79  ), traceCategory
30070 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  );..            
30080 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
30090 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63                 c
300a0 61 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20  atch (Exception 
300b0 65 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e)..            
300c0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
300d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
300e0 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b     traceCallback
300f0 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e  (String.Format(N
30100 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
30110 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t,..            
30120 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30130 22 47 65 74 4c 69 6e 71 41 73 73 65 6d 62 6c 79  "GetLinqAssembly
30140 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  Name", ForDispla
30150 79 28 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20  y(e)),..        
30160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30170 20 20 20 20 74 72 61 63 65 43 61 74 65 67 6f 72      traceCategor
30180 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  y);..           
30190 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
301a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
301b0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
301c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
301d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
301e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
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 79 0d 0a 20 20 20 20 20 20       try..      
30210 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d                {.
30220 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30230 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43 61           traceCa
30240 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f  llback(String.Fo
30250 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75  rmat(NameAndValu
30260 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20  eFormat,..      
30270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30280 20 20 20 20 20 20 22 47 65 74 45 66 36 41 73 73        "GetEf6Ass
30290 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46 6f 72 44  emblyName", ForD
302a0 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
302b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
302c0 20 20 20 20 20 47 65 74 45 66 36 41 73 73 65 6d       GetEf6Assem
302d0 62 6c 79 4e 61 6d 65 28 66 61 6c 73 65 29 29 29  blyName(false)))
302e0 2c 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29  , traceCategory)
302f0 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
30300 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
30310 20 20 20 20 20 20 20 20 20 20 20 20 20 20 63 61                ca
30320 74 63 68 20 28 45 78 63 65 70 74 69 6f 6e 20 65  tch (Exception e
30330 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
30340 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30350 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30360 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28    traceCallback(
30370 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61  String.Format(Na
30380 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74  meAndValueFormat
30390 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
303a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 22                 "
303b0 47 65 74 45 66 36 41 73 73 65 6d 62 6c 79 4e 61  GetEf6AssemblyNa
303c0 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61 79 28  me", ForDisplay(
303d0 65 29 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  e)),..          
303e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
303f0 20 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29    traceCategory)
30400 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ;..             
30410 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
30420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
30470 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30480 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
30490 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
304a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
304b0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
304c0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
304d0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
304e0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
304f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30500 20 20 20 20 22 47 65 74 44 65 73 69 67 6e 65 72      "GetDesigner
30510 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46  AssemblyName", F
30520 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20  orDisplay(..    
30530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30540 20 20 20 20 20 20 20 20 47 65 74 44 65 73 69 67          GetDesig
30550 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28  nerAssemblyName(
30560 66 61 6c 73 65 29 29 29 2c 20 74 72 61 63 65 43  false))), traceC
30570 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20  ategory);..     
30580 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
30590 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
305a0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
305b0 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20  eption e)..     
305c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
305d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
305e0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
305f0 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46  allback(String.F
30600 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c  ormat(NameAndVal
30610 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20  ueFormat,..     
30620 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30630 20 20 20 20 20 20 20 22 47 65 74 44 65 73 69 67         "GetDesig
30640 6e 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22  nerAssemblyName"
30650 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 65 29 29  , ForDisplay(e))
30660 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30670 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
30680 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
30690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
306a0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
306b0 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f               ///
306c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
306d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
306e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
306f0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
30700 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30710 74 72 61 63 65 43 61 6c 6c 62 61 63 6b 28 53 74  traceCallback(St
30720 72 69 6e 67 2e 46 6f 72 6d 61 74 28 4e 61 6d 65  ring.Format(Name
30730 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61 74 2c 0d  AndValueFormat,.
30740 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
30750 20 20 20 20 20 20 20 20 20 22 47 65 74 49 6e 76           "GetInv
30760 61 72 69 61 6e 74 4e 61 6d 65 22 2c 20 46 6f 72  ariantName", For
30770 44 69 73 70 6c 61 79 28 47 65 74 49 6e 76 61 72  Display(GetInvar
30780 69 61 6e 74 4e 61 6d 65 28 0d 0a 20 20 20 20 20  iantName(..     
30790 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307a0 20 20 20 66 61 6c 73 65 29 29 29 2c 20 74 72 61     false))), tra
307b0 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
307c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
307d0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
307e0 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
307f0 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
30800 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
30810 20 20 20 20 20 20 20 20 20 20 20 20 20 22 47 65               "Ge
30820 74 43 6f 6e 66 69 67 49 6e 76 61 72 69 61 6e 74  tConfigInvariant
30830 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  Name", ForDispla
30840 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
30850 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 43              GetC
30860 6f 6e 66 69 67 49 6e 76 61 72 69 61 6e 74 4e 61  onfigInvariantNa
30870 6d 65 28 66 61 6c 73 65 29 29 29 2c 20 74 72 61  me(false))), tra
30880 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a  ceCategory);....
30890 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
308a0 20 20 20 20 74 72 61 63 65 43 61 6c 6c 62 61 63      traceCallbac
308b0 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28  k(String.Format(
308c0 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d  NameAndValueForm
308d0 61 74 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  at,..           
308e0 20 20 20 20 20 20 20 20 20 20 20 20 20 22 47 65               "Ge
308f0 74 50 72 6f 76 69 64 65 72 49 6e 76 61 72 69 61  tProviderInvaria
30900 6e 74 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70  ntName", ForDisp
30910 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lay(..          
30920 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47 65                Ge
30930 74 50 72 6f 76 69 64 65 72 49 6e 76 61 72 69 61  tProviderInvaria
30940 6e 74 4e 61 6d 65 28 66 61 6c 73 65 29 29 29 2c  ntName(false))),
30950 20 74 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b   traceCategory);
30960 0d 0a 0d 0a 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 6c          traceCal
30980 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72  lback(String.For
30990 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65  mat(NameAndValue
309a0 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20  Format,..       
309b0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
309c0 20 22 47 65 74 46 61 63 74 6f 72 79 54 79 70 65   "GetFactoryType
309d0 4e 61 6d 65 22 2c 20 46 6f 72 44 69 73 70 6c 61  Name", ForDispla
309e0 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  y(..            
309f0 20 20 20 20 20 20 20 20 20 20 20 20 47 65 74 46              GetF
30a00 61 63 74 6f 72 79 54 79 70 65 4e 61 6d 65 28 66  actoryTypeName(f
30a10 61 6c 73 65 29 29 29 2c 20 74 72 61 63 65 43 61  alse))), traceCa
30a20 74 65 67 6f 72 79 29 3b 0d 0a 0d 0a 20 20 20 20  tegory);....    
30a30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
30a80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30a90 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20     try..        
30aa0 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
30ab0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30ac0 20 20 20 20 20 20 20 74 72 61 63 65 43 61 6c 6c         traceCall
30ad0 62 61 63 6b 28 53 74 72 69 6e 67 2e 46 6f 72 6d  back(String.Form
30ae0 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c 75 65 46  at(NameAndValueF
30af0 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20 20 20 20  ormat,..        
30b00 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b10 20 20 20 20 22 47 65 74 50 72 6f 76 69 64 65 72      "GetProvider
30b20 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22 2c 20 46  AssemblyName", F
30b30 6f 72 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20  orDisplay(..    
30b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30b50 20 20 20 20 20 20 20 20 47 65 74 50 72 6f 76 69          GetProvi
30b60 64 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 28  derAssemblyName(
30b70 66 61 6c 73 65 29 29 29 2c 20 74 72 61 63 65 43  false))), traceC
30b80 61 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20  ategory);..     
30b90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d                 }
30ba0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30bb0 20 20 20 20 20 20 63 61 74 63 68 20 28 45 78 63        catch (Exc
30bc0 65 70 74 69 6f 6e 20 65 29 0d 0a 20 20 20 20 20  eption e)..     
30bd0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
30be0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30bf0 20 20 20 20 20 20 20 20 20 20 74 72 61 63 65 43            traceC
30c00 61 6c 6c 62 61 63 6b 28 53 74 72 69 6e 67 2e 46  allback(String.F
30c10 6f 72 6d 61 74 28 4e 61 6d 65 41 6e 64 56 61 6c  ormat(NameAndVal
30c20 75 65 46 6f 72 6d 61 74 2c 0d 0a 20 20 20 20 20  ueFormat,..     
30c30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30c40 20 20 20 20 20 20 20 22 47 65 74 50 72 6f 76 69         "GetProvi
30c50 64 65 72 41 73 73 65 6d 62 6c 79 4e 61 6d 65 22  derAssemblyName"
30c60 2c 20 46 6f 72 44 69 73 70 6c 61 79 28 65 29 29  , ForDisplay(e))
30c70 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ,..             
30c80 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 74                 t
30c90 72 61 63 65 43 61 74 65 67 6f 72 79 29 3b 0d 0a  raceCategory);..
30ca0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
30cb0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
30cc0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
30cd0 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
30ce0 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d       #endregion.
30cf0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f  ...            /
30d00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30d40 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20  //....          
30d50 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c 69 63    #region Public
30d60 20 50 72 6f 70 65 72 74 69 65 73 0d 0a 20 20 20   Properties..   
30d70 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
30d80 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d 62   Assembly assemb
30d90 6c 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ly;..           
30da0 20 70 75 62 6c 69 63 20 41 73 73 65 6d 62 6c 79   public Assembly
30db0 20 41 73 73 65 6d 62 6c 79 0d 0a 20 20 20 20 20   Assembly..     
30dc0 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
30dd0 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
30de0 72 65 74 75 72 6e 20 61 73 73 65 6d 62 6c 79 3b  return assembly;
30df0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
30e00 20 20 20 20 73 65 74 20 7b 20 61 73 73 65 6d 62      set { assemb
30e10 6c 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  ly = value; }.. 
30e20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
30e30 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
30e40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
30e80 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
30e90 72 69 76 61 74 65 20 73 74 72 69 6e 67 20 6c 6f  rivate string lo
30ea0 67 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20 20 20 20  gFileName;..    
30eb0 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73          public s
30ec0 74 72 69 6e 67 20 4c 6f 67 46 69 6c 65 4e 61 6d  tring LogFileNam
30ed0 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  e..            {
30ee0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
30ef0 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6c    get { return l
30f00 6f 67 46 69 6c 65 4e 61 6d 65 3b 20 7d 0d 0a 20  ogFileName; }.. 
30f10 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
30f20 65 74 20 7b 20 6c 6f 67 46 69 6c 65 4e 61 6d 65  et { logFileName
30f30 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
30f40 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
30f50 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
30f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
30f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
30fa0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
30fb0 76 61 74 65 20 73 74 72 69 6e 67 20 72 65 67 69  vate string regi
30fc0 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 3b  stryLogFileName;
30fd0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
30fe0 62 6c 69 63 20 73 74 72 69 6e 67 20 52 65 67 69  blic string Regi
30ff0 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 0d  stryLogFileName.
31000 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
31010 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31020 67 65 74 20 7b 20 72 65 74 75 72 6e 20 72 65 67  get { return reg
31030 69 73 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65  istryLogFileName
31040 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
31050 20 20 20 20 20 73 65 74 20 7b 20 72 65 67 69 73       set { regis
31060 74 72 79 4c 6f 67 46 69 6c 65 4e 61 6d 65 20 3d  tryLogFileName =
31070 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
31080 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
31090 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
310a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
310d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
310e0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
310f0 74 65 20 73 74 72 69 6e 67 20 64 69 72 65 63 74  te string direct
31100 6f 72 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ory;..          
31110 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
31120 44 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20 20  Directory..     
31130 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31140 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
31150 72 65 74 75 72 6e 20 64 69 72 65 63 74 6f 72 79  return directory
31160 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
31170 20 20 20 20 20 73 65 74 20 7b 20 64 69 72 65 63       set { direc
31180 74 6f 72 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  tory = value; }.
31190 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
311a0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
311b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
311c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
311d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
311e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
311f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
31200 20 70 72 69 76 61 74 65 20 73 74 72 69 6e 67 20   private string 
31210 63 6f 72 65 46 69 6c 65 4e 61 6d 65 3b 0d 0a 20  coreFileName;.. 
31220 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
31230 63 20 73 74 72 69 6e 67 20 43 6f 72 65 46 69 6c  c string CoreFil
31240 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20 20  eName..         
31250 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31260 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
31270 72 6e 20 63 6f 72 65 46 69 6c 65 4e 61 6d 65 3b  rn coreFileName;
31280 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
31290 20 20 20 20 73 65 74 20 7b 20 63 6f 72 65 46 69      set { coreFi
312a0 6c 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20  leName = value; 
312b0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
312c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
312d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
312f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31310 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
31320 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e     private strin
31330 67 20 6c 69 6e 71 46 69 6c 65 4e 61 6d 65 3b 0d  g linqFileName;.
31340 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
31350 6c 69 63 20 73 74 72 69 6e 67 20 4c 69 6e 71 46  lic string LinqF
31360 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ileName..       
31370 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31380 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
31390 74 75 72 6e 20 6c 69 6e 71 46 69 6c 65 4e 61 6d  turn linqFileNam
313a0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
313b0 20 20 20 20 20 20 73 65 74 20 7b 20 6c 69 6e 71        set { linq
313c0 46 69 6c 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65  FileName = value
313d0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
313e0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
313f0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
31400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31430 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
31440 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72       private str
31450 69 6e 67 20 65 66 36 46 69 6c 65 4e 61 6d 65 3b  ing ef6FileName;
31460 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
31470 62 6c 69 63 20 73 74 72 69 6e 67 20 45 66 36 46  blic string Ef6F
31480 69 6c 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20  ileName..       
31490 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
314a0 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
314b0 74 75 72 6e 20 65 66 36 46 69 6c 65 4e 61 6d 65  turn ef6FileName
314c0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
314d0 20 20 20 20 20 73 65 74 20 7b 20 65 66 36 46 69       set { ef6Fi
314e0 6c 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65 3b 20  leName = value; 
314f0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
31500 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31550 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
31560 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e     private strin
31570 67 20 64 65 73 69 67 6e 65 72 46 69 6c 65 4e 61  g designerFileNa
31580 6d 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  me;..           
31590 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 44   public string D
315a0 65 73 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 0d  esignerFileName.
315b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
315c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
315d0 67 65 74 20 7b 20 72 65 74 75 72 6e 20 64 65 73  get { return des
315e0 69 67 6e 65 72 46 69 6c 65 4e 61 6d 65 3b 20 7d  ignerFileName; }
315f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31600 20 20 73 65 74 20 7b 20 64 65 73 69 67 6e 65 72    set { designer
31610 46 69 6c 65 4e 61 6d 65 20 3d 20 76 61 6c 75 65  FileName = value
31620 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
31630 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
31640 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
31650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31670 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31680 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
31690 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72       private str
316a0 69 6e 67 20 72 65 67 69 73 74 72 79 56 65 72 73  ing registryVers
316b0 69 6f 6e 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  ion;..          
316c0 20 20 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20    public string 
316d0 52 65 67 69 73 74 72 79 56 65 72 73 69 6f 6e 0d  RegistryVersion.
316e0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
316f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
31700 67 65 74 20 7b 20 72 65 74 75 72 6e 20 72 65 67  get { return reg
31710 69 73 74 72 79 56 65 72 73 69 6f 6e 3b 20 7d 0d  istryVersion; }.
31720 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
31730 20 73 65 74 20 7b 20 72 65 67 69 73 74 72 79 56   set { registryV
31740 65 72 73 69 6f 6e 20 3d 20 76 61 6c 75 65 3b 20  ersion = value; 
31750 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
31760 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31770 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31780 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31790 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
317a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
317b0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
317c0 20 20 20 70 72 69 76 61 74 65 20 73 74 72 69 6e     private strin
317d0 67 20 63 6f 6e 66 69 67 56 65 72 73 69 6f 6e 3b  g configVersion;
317e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
317f0 62 6c 69 63 20 73 74 72 69 6e 67 20 43 6f 6e 66  blic string Conf
31800 69 67 56 65 72 73 69 6f 6e 0d 0a 20 20 20 20 20  igVersion..     
31810 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31820 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
31830 72 65 74 75 72 6e 20 63 6f 6e 66 69 67 56 65 72  return configVer
31840 73 69 6f 6e 3b 20 7d 0d 0a 20 20 20 20 20 20 20  sion; }..       
31850 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 63           set { c
31860 6f 6e 66 69 67 56 65 72 73 69 6f 6e 20 3d 20 76  onfigVersion = v
31870 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
31880 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
31890 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
318a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
318b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
318c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
318d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
318e0 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
318f0 20 73 74 72 69 6e 67 20 76 73 56 65 72 73 69 6f   string vsVersio
31900 6e 53 75 66 66 69 78 3b 0d 0a 20 20 20 20 20 20  nSuffix;..      
31910 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74 72        public str
31920 69 6e 67 20 56 73 56 65 72 73 69 6f 6e 53 75 66  ing VsVersionSuf
31930 66 69 78 0d 0a 20 20 20 20 20 20 20 20 20 20 20  fix..           
31940 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
31950 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
31960 20 76 73 56 65 72 73 69 6f 6e 53 75 66 66 69 78   vsVersionSuffix
31970 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
31980 20 20 20 20 20 73 65 74 20 7b 20 76 73 56 65 72       set { vsVer
31990 73 69 6f 6e 53 75 66 66 69 78 20 3d 20 76 61 6c  sionSuffix = val
319a0 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
319b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
319c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
319d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
319e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
319f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31a00 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
31a10 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
31a20 74 72 69 6e 67 20 64 65 62 75 67 46 6f 72 6d 61  tring debugForma
31a30 74 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  t;..            
31a40 70 75 62 6c 69 63 20 73 74 72 69 6e 67 20 44 65  public string De
31a50 62 75 67 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20  bugFormat..     
31a60 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31a70 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
31a80 72 65 74 75 72 6e 20 64 65 62 75 67 46 6f 72 6d  return debugForm
31a90 61 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  at; }..         
31aa0 20 20 20 20 20 20 20 73 65 74 20 7b 20 64 65 62         set { deb
31ab0 75 67 46 6f 72 6d 61 74 20 3d 20 76 61 6c 75 65  ugFormat = value
31ac0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
31ad0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
31ae0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
31af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31b20 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
31b30 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74 72       private str
31b40 69 6e 67 20 74 72 61 63 65 46 6f 72 6d 61 74 3b  ing traceFormat;
31b50 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
31b60 62 6c 69 63 20 73 74 72 69 6e 67 20 54 72 61 63  blic string Trac
31b70 65 46 6f 72 6d 61 74 0d 0a 20 20 20 20 20 20 20  eFormat..       
31b80 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
31b90 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
31ba0 74 75 72 6e 20 74 72 61 63 65 46 6f 72 6d 61 74  turn traceFormat
31bb0 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
31bc0 20 20 20 20 20 73 65 74 20 7b 20 74 72 61 63 65       set { trace
31bd0 46 6f 72 6d 61 74 20 3d 20 76 61 6c 75 65 3b 20  Format = value; 
31be0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
31bf0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
31c00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c10 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31c40 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
31c50 20 20 20 70 72 69 76 61 74 65 20 49 6e 73 74 61     private Insta
31c60 6c 6c 46 6c 61 67 73 20 69 6e 73 74 61 6c 6c 46  llFlags installF
31c70 6c 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20 20  lags;..         
31c80 20 20 20 70 75 62 6c 69 63 20 49 6e 73 74 61 6c     public Instal
31c90 6c 46 6c 61 67 73 20 49 6e 73 74 61 6c 6c 46 6c  lFlags InstallFl
31ca0 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ags..           
31cb0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
31cc0 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
31cd0 20 69 6e 73 74 61 6c 6c 46 6c 61 67 73 3b 20 7d   installFlags; }
31ce0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
31cf0 20 20 73 65 74 20 7b 20 69 6e 73 74 61 6c 6c 46    set { installF
31d00 6c 61 67 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  lags = value; }.
31d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
31d20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
31d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31d70 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
31d80 20 70 72 69 76 61 74 65 20 50 72 6f 76 69 64 65   private Provide
31d90 72 46 6c 61 67 73 20 70 72 6f 76 69 64 65 72 46  rFlags providerF
31da0 6c 61 67 73 3b 0d 0a 20 20 20 20 20 20 20 20 20  lags;..         
31db0 20 20 20 70 75 62 6c 69 63 20 50 72 6f 76 69 64     public Provid
31dc0 65 72 46 6c 61 67 73 20 50 72 6f 76 69 64 65 72  erFlags Provider
31dd0 46 6c 61 67 73 0d 0a 20 20 20 20 20 20 20 20 20  Flags..         
31de0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
31df0 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
31e00 72 6e 20 70 72 6f 76 69 64 65 72 46 6c 61 67 73  rn providerFlags
31e10 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
31e20 20 20 20 20 20 73 65 74 20 7b 20 70 72 6f 76 69       set { provi
31e30 64 65 72 46 6c 61 67 73 20 3d 20 76 61 6c 75 65  derFlags = value
31e40 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
31e50 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
31e60 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
31e70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31e90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31ea0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
31eb0 20 20 20 20 20 70 72 69 76 61 74 65 20 54 72 61       private Tra
31ec0 63 65 50 72 69 6f 72 69 74 79 20 64 65 62 75 67  cePriority debug
31ed0 50 72 69 6f 72 69 74 79 3b 0d 0a 20 20 20 20 20  Priority;..     
31ee0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 54 72         public Tr
31ef0 61 63 65 50 72 69 6f 72 69 74 79 20 44 65 62 75  acePriority Debu
31f00 67 50 72 69 6f 72 69 74 79 0d 0a 20 20 20 20 20  gPriority..     
31f10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
31f20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
31f30 72 65 74 75 72 6e 20 64 65 62 75 67 50 72 69 6f  return debugPrio
31f40 72 69 74 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20  rity; }..       
31f50 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 64           set { d
31f60 65 62 75 67 50 72 69 6f 72 69 74 79 20 3d 20 76  ebugPriority = v
31f70 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
31f80 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
31f90 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
31fa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
31fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
31fe0 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
31ff0 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20 74   TracePriority t
32000 72 61 63 65 50 72 69 6f 72 69 74 79 3b 0d 0a 20  racePriority;.. 
32010 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
32020 63 20 54 72 61 63 65 50 72 69 6f 72 69 74 79 20  c TracePriority 
32030 54 72 61 63 65 50 72 69 6f 72 69 74 79 0d 0a 20  TracePriority.. 
32040 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
32050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
32060 74 20 7b 20 72 65 74 75 72 6e 20 74 72 61 63 65  t { return trace
32070 50 72 69 6f 72 69 74 79 3b 20 7d 0d 0a 20 20 20  Priority; }..   
32080 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
32090 20 7b 20 74 72 61 63 65 50 72 69 6f 72 69 74 79   { tracePriority
320a0 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
320b0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
320c0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
320d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
320e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
320f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32100 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
32110 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
32120 76 61 74 65 20 62 6f 6f 6c 20 70 65 72 55 73 65  vate bool perUse
32130 72 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  r;..            
32140 70 75 62 6c 69 63 20 62 6f 6f 6c 20 50 65 72 55  public bool PerU
32150 73 65 72 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ser..           
32160 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32170 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
32180 20 70 65 72 55 73 65 72 3b 20 7d 0d 0a 20 20 20   perUser; }..   
32190 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
321a0 20 7b 20 70 65 72 55 73 65 72 20 3d 20 76 61 6c   { perUser = val
321b0 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
321c0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
321d0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
321e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
321f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32210 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
32220 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
32230 6f 6f 6c 20 69 6e 73 74 61 6c 6c 3b 0d 0a 20 20  ool install;..  
32240 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
32250 20 62 6f 6f 6c 20 49 6e 73 74 61 6c 6c 0d 0a 20   bool Install.. 
32260 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
32270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
32280 74 20 7b 20 72 65 74 75 72 6e 20 69 6e 73 74 61  t { return insta
32290 6c 6c 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ll; }..         
322a0 20 20 20 20 20 20 20 73 65 74 20 7b 20 69 6e 73         set { ins
322b0 74 61 6c 6c 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  tall = value; }.
322c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
322d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
322e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
322f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32320 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
32330 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 77 6f   private bool wo
32340 77 36 34 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  w64;..          
32350 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 57 6f    public bool Wo
32360 77 36 34 0d 0a 20 20 20 20 20 20 20 20 20 20 20  w64..           
32370 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32380 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
32390 20 77 6f 77 36 34 3b 20 7d 0d 0a 20 20 20 20 20   wow64; }..     
323a0 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
323b0 20 77 6f 77 36 34 20 3d 20 76 61 6c 75 65 3b 20   wow64 = value; 
323c0 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
323d0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
323e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
323f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32410 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32420 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
32430 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
32440 6e 6f 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e  noRuntimeVersion
32450 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
32460 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 52 75 6e  ublic bool NoRun
32470 74 69 6d 65 56 65 72 73 69 6f 6e 0d 0a 20 20 20  timeVersion..   
32480 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
32490 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
324a0 7b 20 72 65 74 75 72 6e 20 6e 6f 52 75 6e 74 69  { return noRunti
324b0 6d 65 56 65 72 73 69 6f 6e 3b 20 7d 0d 0a 20 20  meVersion; }..  
324c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
324d0 74 20 7b 20 6e 6f 52 75 6e 74 69 6d 65 56 65 72  t { noRuntimeVer
324e0 73 69 6f 6e 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  sion = value; }.
324f0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
32500 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
32510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32520 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32550 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
32560 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f   private bool no
32570 44 65 73 6b 74 6f 70 3b 0d 0a 20 20 20 20 20 20  Desktop;..      
32580 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f        public boo
32590 6c 20 4e 6f 44 65 73 6b 74 6f 70 0d 0a 20 20 20  l NoDesktop..   
325a0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
325b0 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
325c0 7b 20 72 65 74 75 72 6e 20 6e 6f 44 65 73 6b 74  { return noDeskt
325d0 6f 70 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  op; }..         
325e0 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 44         set { noD
325f0 65 73 6b 74 6f 70 20 3d 20 76 61 6c 75 65 3b 20  esktop = value; 
32600 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
32610 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32620 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32660 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
32670 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
32680 6e 6f 43 6f 6d 70 61 63 74 3b 0d 0a 20 20 20 20  noCompact;..    
32690 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62          public b
326a0 6f 6f 6c 20 4e 6f 43 6f 6d 70 61 63 74 0d 0a 20  ool NoCompact.. 
326b0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
326c0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
326d0 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 43 6f 6d  t { return noCom
326e0 70 61 63 74 3b 20 7d 0d 0a 20 20 20 20 20 20 20  pact; }..       
326f0 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e           set { n
32700 6f 43 6f 6d 70 61 63 74 20 3d 20 76 61 6c 75 65  oCompact = value
32710 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
32720 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
32730 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
32740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32760 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32770 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
32780 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
32790 6c 20 6e 6f 4e 65 74 46 78 32 30 3b 0d 0a 20 20  l noNetFx20;..  
327a0 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
327b0 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 32 30 0d   bool NoNetFx20.
327c0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
327d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
327e0 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e  get { return noN
327f0 65 74 46 78 32 30 3b 20 7d 0d 0a 20 20 20 20 20  etFx20; }..     
32800 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b             set {
32810 20 6e 6f 4e 65 74 46 78 32 30 20 3d 20 76 61 6c   noNetFx20 = val
32820 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
32830 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
32840 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
32850 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32860 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
32890 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
328a0 6f 6f 6c 20 6e 6f 4e 65 74 46 78 33 35 3b 0d 0a  ool noNetFx35;..
328b0 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
328c0 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 33  ic bool NoNetFx3
328d0 35 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  5..            {
328e0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
328f0 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e    get { return n
32900 6f 4e 65 74 46 78 33 35 3b 20 7d 0d 0a 20 20 20  oNetFx35; }..   
32910 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
32920 20 7b 20 6e 6f 4e 65 74 46 78 33 35 20 3d 20 76   { noNetFx35 = v
32930 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
32940 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
32950 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
32960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32980 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32990 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
329a0 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
329b0 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 30 3b   bool noNetFx40;
329c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
329d0 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46  blic bool NoNetF
329e0 78 34 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x40..           
329f0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32a00 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
32a10 20 6e 6f 4e 65 74 46 78 34 30 3b 20 7d 0d 0a 20   noNetFx40; }.. 
32a20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
32a30 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 30 20 3d  et { noNetFx40 =
32a40 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
32a50 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
32a60 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
32a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
32ab0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
32ac0 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34  te bool noNetFx4
32ad0 35 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  5;..            
32ae0 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65  public bool NoNe
32af0 74 46 78 34 35 0d 0a 20 20 20 20 20 20 20 20 20  tFx45..         
32b00 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
32b10 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
32b20 72 6e 20 6e 6f 4e 65 74 46 78 34 35 3b 20 7d 0d  rn noNetFx45; }.
32b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
32b40 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 35   set { noNetFx45
32b50 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
32b60 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
32b70 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
32b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
32bc0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
32bd0 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46  vate bool noNetF
32be0 78 34 35 31 3b 0d 0a 20 20 20 20 20 20 20 20 20  x451;..         
32bf0 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e     public bool N
32c00 6f 4e 65 74 46 78 34 35 31 0d 0a 20 20 20 20 20  oNetFx451..     
32c10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
32c20 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
32c30 72 65 74 75 72 6e 20 6e 6f 4e 65 74 46 78 34 35  return noNetFx45
32c40 31 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  1; }..          
32c50 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 4e 65        set { noNe
32c60 74 46 78 34 35 31 20 3d 20 76 61 6c 75 65 3b 20  tFx451 = value; 
32c70 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
32c80 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
32c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32cd0 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
32ce0 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
32cf0 6e 6f 4e 65 74 46 78 34 35 32 3b 0d 0a 20 20 20  noNetFx452;..   
32d00 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
32d10 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34 35 32 0d  bool NoNetFx452.
32d20 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
32d30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
32d40 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e  get { return noN
32d50 65 74 46 78 34 35 32 3b 20 7d 0d 0a 20 20 20 20  etFx452; }..    
32d60 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
32d70 7b 20 6e 6f 4e 65 74 46 78 34 35 32 20 3d 20 76  { noNetFx452 = v
32d80 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
32d90 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
32da0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
32db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32dd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32de0 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
32df0 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
32e00 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 36 3b   bool noNetFx46;
32e10 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
32e20 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46  blic bool NoNetF
32e30 78 34 36 0d 0a 20 20 20 20 20 20 20 20 20 20 20  x46..           
32e40 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
32e50 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
32e60 20 6e 6f 4e 65 74 46 78 34 36 3b 20 7d 0d 0a 20   noNetFx46; }.. 
32e70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
32e80 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34 36 20 3d  et { noNetFx46 =
32e90 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
32ea0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
32eb0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
32ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ef0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
32f00 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
32f10 74 65 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34  te bool noNetFx4
32f20 36 31 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  61;..           
32f30 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e   public bool NoN
32f40 65 74 46 78 34 36 31 0d 0a 20 20 20 20 20 20 20  etFx461..       
32f50 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
32f60 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
32f70 74 75 72 6e 20 6e 6f 4e 65 74 46 78 34 36 31 3b  turn noNetFx461;
32f80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
32f90 20 20 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46      set { noNetF
32fa0 78 34 36 31 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  x461 = value; }.
32fb0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
32fc0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
32fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
32ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33000 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33010 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
33020 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f   private bool no
33030 4e 65 74 46 78 34 36 32 3b 0d 0a 20 20 20 20 20  NetFx462;..     
33040 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
33050 6f 6c 20 4e 6f 4e 65 74 46 78 34 36 32 0d 0a 20  ol NoNetFx462.. 
33060 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
33070 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
33080 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4e 65 74  t { return noNet
33090 46 78 34 36 32 3b 20 7d 0d 0a 20 20 20 20 20 20  Fx462; }..      
330a0 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
330b0 6e 6f 4e 65 74 46 78 34 36 32 20 3d 20 76 61 6c  noNetFx462 = val
330c0 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
330d0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
330e0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
330f0 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
33130 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
33140 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 3b 0d 0a  ool noNetFx47;..
33150 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
33160 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74 46 78 34  ic bool NoNetFx4
33170 37 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  7..            {
33180 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33190 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e    get { return n
331a0 6f 4e 65 74 46 78 34 37 3b 20 7d 0d 0a 20 20 20  oNetFx47; }..   
331b0 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
331c0 20 7b 20 6e 6f 4e 65 74 46 78 34 37 20 3d 20 76   { noNetFx47 = v
331d0 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
331e0 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
331f0 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
33200 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33210 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33230 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
33240 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
33250 20 62 6f 6f 6c 20 6e 6f 4e 65 74 46 78 34 37 31   bool noNetFx471
33260 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
33270 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4e 65 74  ublic bool NoNet
33280 46 78 34 37 31 0d 0a 20 20 20 20 20 20 20 20 20  Fx471..         
33290 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
332a0 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
332b0 72 6e 20 6e 6f 4e 65 74 46 78 34 37 31 3b 20 7d  rn noNetFx471; }
332c0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
332d0 20 20 73 65 74 20 7b 20 6e 6f 4e 65 74 46 78 34    set { noNetFx4
332e0 37 31 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  71 = value; }.. 
332f0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
33300 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
33310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
33350 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
33360 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 56 73  rivate bool noVs
33370 32 30 30 35 3b 0d 0a 20 20 20 20 20 20 20 20 20  2005;..         
33380 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e     public bool N
33390 6f 56 73 32 30 30 35 0d 0a 20 20 20 20 20 20 20  oVs2005..       
333a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
333b0 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
333c0 74 75 72 6e 20 6e 6f 56 73 32 30 30 35 3b 20 7d  turn noVs2005; }
333d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
333e0 20 20 73 65 74 20 7b 20 6e 6f 56 73 32 30 30 35    set { noVs2005
333f0 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
33400 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
33410 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
33420 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33430 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33440 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33450 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
33460 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
33470 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 56 73 32 30  vate bool noVs20
33480 30 38 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  08;..           
33490 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56   public bool NoV
334a0 73 32 30 30 38 0d 0a 20 20 20 20 20 20 20 20 20  s2008..         
334b0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
334c0 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
334d0 72 6e 20 6e 6f 56 73 32 30 30 38 3b 20 7d 0d 0a  rn noVs2008; }..
334e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
334f0 73 65 74 20 7b 20 6e 6f 56 73 32 30 30 38 20 3d  set { noVs2008 =
33500 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
33510 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
33520 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
33530 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
33570 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
33580 74 65 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 30  te bool noVs2010
33590 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ;..            p
335a0 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56 73 32  ublic bool NoVs2
335b0 30 31 30 0d 0a 20 20 20 20 20 20 20 20 20 20 20  010..           
335c0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
335d0 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
335e0 20 6e 6f 56 73 32 30 31 30 3b 20 7d 0d 0a 20 20   noVs2010; }..  
335f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65                se
33600 74 20 7b 20 6e 6f 56 73 32 30 31 30 20 3d 20 76  t { noVs2010 = v
33610 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20  alue; }..       
33620 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20       }....      
33630 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33670 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
33680 20 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65           private
33690 20 62 6f 6f 6c 20 6e 6f 56 73 32 30 31 32 3b 0d   bool noVs2012;.
336a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
336b0 6c 69 63 20 62 6f 6f 6c 20 4e 6f 56 73 32 30 31  lic bool NoVs201
336c0 32 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  2..            {
336d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
336e0 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e    get { return n
336f0 6f 56 73 32 30 31 32 3b 20 7d 0d 0a 20 20 20 20  oVs2012; }..    
33700 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74 20              set 
33710 7b 20 6e 6f 56 73 32 30 31 32 20 3d 20 76 61 6c  { noVs2012 = val
33720 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
33730 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
33740 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20  ///////....     
33790 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
337a0 6f 6f 6c 20 6e 6f 56 73 32 30 31 33 3b 0d 0a 20  ool noVs2013;.. 
337b0 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69             publi
337c0 63 20 62 6f 6f 6c 20 4e 6f 56 73 32 30 31 33 0d  c bool NoVs2013.
337d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
337e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
337f0 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 56  get { return noV
33800 73 32 30 31 33 3b 20 7d 0d 0a 20 20 20 20 20 20  s2013; }..      
33810 20 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20            set { 
33820 6e 6f 56 73 32 30 31 33 20 3d 20 76 61 6c 75 65  noVs2013 = value
33830 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
33840 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
33850 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
33860 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
338a0 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
338b0 6c 20 6e 6f 56 73 32 30 31 35 3b 0d 0a 20 20 20  l noVs2015;..   
338c0 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
338d0 62 6f 6f 6c 20 4e 6f 56 73 32 30 31 35 0d 0a 20  bool NoVs2015.. 
338e0 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
338f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
33900 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 56 73 32  t { return noVs2
33910 30 31 35 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  015; }..        
33920 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f          set { no
33930 56 73 32 30 31 35 20 3d 20 76 61 6c 75 65 3b 20  Vs2015 = value; 
33940 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
33950 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
33960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33980 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
339b0 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20     private bool 
339c0 6e 6f 56 73 32 30 31 37 3b 0d 0a 20 20 20 20 20  noVs2017;..     
339d0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
339e0 6f 6c 20 4e 6f 56 73 32 30 31 37 0d 0a 20 20 20  ol NoVs2017..   
339f0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
33a00 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74 20              get 
33a10 7b 20 72 65 74 75 72 6e 20 6e 6f 56 73 32 30 31  { return noVs201
33a20 37 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  7; }..          
33a30 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 56 73        set { noVs
33a40 32 30 31 37 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  2017 = value; }.
33a50 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
33a60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
33a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ab0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20  /....           
33ac0 20 70 72 69 76 61 74 65 20 62 6f 6f 6c 20 6e 6f   private bool no
33ad0 54 72 61 63 65 3b 0d 0a 20 20 20 20 20 20 20 20  Trace;..        
33ae0 20 20 20 20 70 75 62 6c 69 63 20 62 6f 6f 6c 20      public bool 
33af0 4e 6f 54 72 61 63 65 0d 0a 20 20 20 20 20 20 20  NoTrace..       
33b00 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
33b10 20 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65          get { re
33b20 74 75 72 6e 20 6e 6f 54 72 61 63 65 3b 20 7d 0d  turn noTrace; }.
33b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33b40 20 73 65 74 20 7b 20 6e 6f 54 72 61 63 65 20 3d   set { noTrace =
33b50 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
33b60 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
33b70 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
33b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33b90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ba0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
33bc0 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
33bd0 74 65 20 62 6f 6f 6c 20 6e 6f 43 6f 6e 73 6f 6c  te bool noConsol
33be0 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
33bf0 70 75 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 43 6f  public bool NoCo
33c00 6e 73 6f 6c 65 0d 0a 20 20 20 20 20 20 20 20 20  nsole..         
33c10 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
33c20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74 75        get { retu
33c30 72 6e 20 6e 6f 43 6f 6e 73 6f 6c 65 3b 20 7d 0d  rn noConsole; }.
33c40 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
33c50 20 73 65 74 20 7b 20 6e 6f 43 6f 6e 73 6f 6c 65   set { noConsole
33c60 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
33c70 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
33c80 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
33c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
33cd0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
33ce0 76 61 74 65 20 62 6f 6f 6c 20 6e 6f 4c 6f 67 3b  vate bool noLog;
33cf0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
33d00 62 6c 69 63 20 62 6f 6f 6c 20 4e 6f 4c 6f 67 0d  blic bool NoLog.
33d10 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
33d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
33d30 67 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 6f 4c  get { return noL
33d40 6f 67 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  og; }..         
33d50 20 20 20 20 20 20 20 73 65 74 20 7b 20 6e 6f 4c         set { noL
33d60 6f 67 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  og = value; }.. 
33d70 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a             }....
33d80 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f              ////
33d90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d  ///////////////.
33dd0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70  ...            p
33de0 72 69 76 61 74 65 20 62 6f 6f 6c 20 74 68 72 6f  rivate bool thro
33df0 77 4f 6e 4d 69 73 73 69 6e 67 3b 0d 0a 20 20 20  wOnMissing;..   
33e00 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20           public 
33e10 62 6f 6f 6c 20 54 68 72 6f 77 4f 6e 4d 69 73 73  bool ThrowOnMiss
33e20 69 6e 67 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ing..           
33e30 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
33e40 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
33e50 20 74 68 72 6f 77 4f 6e 4d 69 73 73 69 6e 67 3b   throwOnMissing;
33e60 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
33e70 20 20 20 20 73 65 74 20 7b 20 74 68 72 6f 77 4f      set { throwO
33e80 6e 4d 69 73 73 69 6e 67 20 3d 20 76 61 6c 75 65  nMissing = value
33e90 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
33ea0 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20   }....          
33eb0 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
33ec0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ed0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ee0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ef0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
33f00 20 20 20 20 20 70 72 69 76 61 74 65 20 62 6f 6f       private boo
33f10 6c 20 77 68 61 74 49 66 3b 0d 0a 20 20 20 20 20  l whatIf;..     
33f20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 62 6f         public bo
33f30 6f 6c 20 57 68 61 74 49 66 0d 0a 20 20 20 20 20  ol WhatIf..     
33f40 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
33f50 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
33f60 72 65 74 75 72 6e 20 77 68 61 74 49 66 3b 20 7d  return whatIf; }
33f70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
33f80 20 20 73 65 74 20 7b 20 77 68 61 74 49 66 20 3d    set { whatIf =
33f90 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20   value; }..     
33fa0 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
33fb0 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f          ////////
33fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33fe0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
33ff0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20  ///////////.... 
34000 20 20 20 20 20 20 20 20 20 20 20 70 72 69 76 61             priva
34010 74 65 20 62 6f 6f 6c 20 64 65 62 75 67 3b 0d 0a  te bool debug;..
34020 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62 6c              publ
34030 69 63 20 62 6f 6f 6c 20 44 65 62 75 67 0d 0a 20  ic bool Debug.. 
34040 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
34050 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
34060 74 20 7b 20 72 65 74 75 72 6e 20 64 65 62 75 67  t { return debug
34070 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ; }..           
34080 20 20 20 20 20 73 65 74 20 7b 20 64 65 62 75 67       set { debug
34090 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20 20   = value; }..   
340a0 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20           }....  
340b0 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f            //////
340c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
340f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
34100 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72 69  .            pri
34110 76 61 74 65 20 62 6f 6f 6c 20 76 65 72 62 6f 73  vate bool verbos
34120 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e;..            
34130 70 75 62 6c 69 63 20 62 6f 6f 6c 20 56 65 72 62  public bool Verb
34140 6f 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ose..           
34150 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34160 20 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e      get { return
34170 20 76 65 72 62 6f 73 65 3b 20 7d 0d 0a 20 20 20   verbose; }..   
34180 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
34190 20 7b 20 76 65 72 62 6f 73 65 20 3d 20 76 61 6c   { verbose = val
341a0 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  ue; }..         
341b0 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20     }....        
341c0 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
341d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
341f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34200 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20  ///////....     
34210 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 62         private b
34220 6f 6f 6c 20 63 6f 6e 66 69 72 6d 3b 0d 0a 20 20  ool confirm;..  
34230 20 20 20 20 20 20 20 20 20 20 70 75 62 6c 69 63            public
34240 20 62 6f 6f 6c 20 43 6f 6e 66 69 72 6d 0d 0a 20   bool Confirm.. 
34250 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
34260 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65                ge
34270 74 20 7b 20 72 65 74 75 72 6e 20 63 6f 6e 66 69  t { return confi
34280 72 6d 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20  rm; }..         
34290 20 20 20 20 20 20 20 73 65 74 20 7b 20 63 6f 6e         set { con
342a0 66 69 72 6d 20 3d 20 76 61 6c 75 65 3b 20 7d 0d  firm = value; }.
342b0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
342c0 20 20 20 20 20 20 20 20 20 20 20 20 23 65 6e 64              #end
342d0 72 65 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20  region..        
342e0 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  }..        #endr
342f0 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
34300 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
34310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34340 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34350 20 20 20 20 23 72 65 67 69 6f 6e 20 46 72 61 6d      #region Fram
34360 65 77 6f 72 6b 4c 69 73 74 20 43 6c 61 73 73 0d  eworkList Class.
34370 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
34380 20 73 65 61 6c 65 64 20 63 6c 61 73 73 20 46 72   sealed class Fr
34390 61 6d 65 77 6f 72 6b 4c 69 73 74 0d 0a 20 20 20  ameworkList..   
343a0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
343b0 20 20 20 20 23 72 65 67 69 6f 6e 20 50 75 62 6c      #region Publ
343c0 69 63 20 43 6f 6e 73 74 72 75 63 74 6f 72 73 0d  ic Constructors.
343d0 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75 62  .            pub
343e0 6c 69 63 20 46 72 61 6d 65 77 6f 72 6b 4c 69 73  lic FrameworkLis
343f0 74 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t()..           
34400 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34410 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
34420 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
34430 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
34440 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
34450 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
34460 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34470 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34480 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34490 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
344a0 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
344b0 69 6f 6e 20 50 75 62 6c 69 63 20 4d 65 74 68 6f  ion Public Metho
344c0 64 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ds..            
344d0 70 72 69 76 61 74 65 20 4d 6f 63 6b 52 65 67 69  private MockRegi
344e0 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79 3b  stryKey rootKey;
344f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
34500 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69 73 74 72  blic MockRegistr
34510 79 4b 65 79 20 52 6f 6f 74 4b 65 79 0d 0a 20 20  yKey RootKey..  
34520 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20            {..   
34530 20 20 20 20 20 20 20 20 20 20 20 20 20 67 65 74               get
34540 20 7b 20 72 65 74 75 72 6e 20 72 6f 6f 74 4b 65   { return rootKe
34550 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  y; }..          
34560 20 20 20 20 20 20 73 65 74 20 7b 20 72 6f 6f 74        set { root
34570 4b 65 79 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a  Key = value; }..
34580 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d              }...
34590 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f  .            ///
345a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
345b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
345c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
345d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
345e0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
345f0 70 72 69 76 61 74 65 20 53 74 72 69 6e 67 4c 69  private StringLi
34600 73 74 20 6e 61 6d 65 73 3b 0d 0a 20 20 20 20 20  st names;..     
34610 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 74         public St
34620 72 69 6e 67 4c 69 73 74 20 4e 61 6d 65 73 0d 0a  ringList Names..
34630 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
34640 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 67                 g
34650 65 74 20 7b 20 72 65 74 75 72 6e 20 6e 61 6d 65  et { return name
34660 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  s; }..          
34670 20 20 20 20 20 20 73 65 74 20 7b 20 6e 61 6d 65        set { name
34680 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20 20  s = value; }..  
34690 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
346a0 20 20 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f             /////
346b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
346c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
346d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
346e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
346f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 72  ..            pr
34700 69 76 61 74 65 20 56 65 72 73 69 6f 6e 4d 61 70  ivate VersionMap
34710 20 76 65 72 73 69 6f 6e 73 3b 0d 0a 20 20 20 20   versions;..    
34720 20 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 56          public V
34730 65 72 73 69 6f 6e 4d 61 70 20 56 65 72 73 69 6f  ersionMap Versio
34740 6e 73 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ns..            
34750 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  {..             
34760 20 20 20 67 65 74 20 7b 20 72 65 74 75 72 6e 20     get { return 
34770 76 65 72 73 69 6f 6e 73 3b 20 7d 0d 0a 20 20 20  versions; }..   
34780 20 20 20 20 20 20 20 20 20 20 20 20 20 73 65 74               set
34790 20 7b 20 76 65 72 73 69 6f 6e 73 20 3d 20 76 61   { versions = va
347a0 6c 75 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20  lue; }..        
347b0 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
347c0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
347d0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
347e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
347f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34800 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34810 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
34820 53 74 72 69 6e 67 4c 69 73 74 20 70 6c 61 74 66  StringList platf
34830 6f 72 6d 4e 61 6d 65 73 3b 0d 0a 20 20 20 20 20  ormNames;..     
34840 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 53 74         public St
34850 72 69 6e 67 4c 69 73 74 20 50 6c 61 74 66 6f 72  ringList Platfor
34860 6d 4e 61 6d 65 73 0d 0a 20 20 20 20 20 20 20 20  mNames..        
34870 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20      {..         
34880 20 20 20 20 20 20 20 67 65 74 20 7b 20 72 65 74         get { ret
34890 75 72 6e 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65  urn platformName
348a0 73 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  s; }..          
348b0 20 20 20 20 20 20 73 65 74 20 7b 20 70 6c 61 74        set { plat
348c0 66 6f 72 6d 4e 61 6d 65 73 20 3d 20 76 61 6c 75  formNames = valu
348d0 65 3b 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20  e; }..          
348e0 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20    }..           
348f0 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 20 20 20   #endregion..   
34900 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
34910 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20  #endregion....  
34920 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f        //////////
34930 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
34970 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
34980 20 56 73 4c 69 73 74 20 43 6c 61 73 73 0d 0a 20   VsList Class.. 
34990 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
349a0 65 61 6c 65 64 20 63 6c 61 73 73 20 56 73 4c 69  ealed class VsLi
349b0 73 74 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20  st..        {.. 
349c0 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67 69             #regi
349d0 6f 6e 20 50 75 62 6c 69 63 20 43 6f 6e 73 74 72  on Public Constr
349e0 75 63 74 6f 72 73 0d 0a 20 20 20 20 20 20 20 20  uctors..        
349f0 20 20 20 20 70 75 62 6c 69 63 20 56 73 4c 69 73      public VsLis
34a00 74 28 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20  t()..           
34a10 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
34a20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f 74 68 69 6e      // do nothin
34a30 67 2e 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  g...            
34a40 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 23  }..            #
34a50 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
34a60 20 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f           ///////
34a70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34a90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34aa0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
34ab0 20 20 20 20 20 20 20 20 20 20 20 20 23 72 65 67              #reg
34ac0 69 6f 6e 20 50 75 62 6c 69 63 20 50 72 6f 70 65  ion Public Prope
34ad0 72 74 69 65 73 0d 0a 20 20 20 20 20 20 20 20 20  rties..         
34ae0 20 20 20 70 72 69 76 61 74 65 20 4d 6f 63 6b 52     private MockR
34af0 65 67 69 73 74 72 79 4b 65 79 20 72 6f 6f 74 4b  egistryKey rootK
34b00 65 79 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ey;..           
34b10 20 70 75 62 6c 69 63 20 4d 6f 63 6b 52 65 67 69   public MockRegi
34b20 73 74 72 79 4b 65 79 20 52 6f 6f 74 4b 65 79 0d  stryKey RootKey.
34b30 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
34b40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
34b50 67 65 74 20 7b 20 72 65 74 75 72 6e 20 72 6f 6f  get { return roo
34b60 74 4b 65 79 3b 20 7d 0d 0a 20 20 20 20 20 20 20  tKey; }..       
34b70 20 20 20 20 20 20 20 20 20 73 65 74 20 7b 20 72           set { r
34b80 6f 6f 74 4b 65 79 20 3d 20 76 61 6c 75 65 3b 20  ootKey = value; 
34b90 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d  }..            }
34ba0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
34bb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34bc0 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  ///....         
34c00 20 20 20 70 72 69 76 61 74 65 20 56 65 72 73 69     private Versi
34c10 6f 6e 4c 69 73 74 20 76 65 72 73 69 6f 6e 73 3b  onList versions;
34c20 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 70 75  ..            pu
34c30 62 6c 69 63 20 56 65 72 73 69 6f 6e 4c 69 73 74  blic VersionList
34c40 20 56 65 72 73 69 6f 6e 73 0d 0a 20 20 20 20 20   Versions..     
34c50 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
34c60 20 20 20 20 20 20 20 20 20 20 67 65 74 20 7b 20            get { 
34c70 72 65 74 75 72 6e 20 76 65 72 73 69 6f 6e 73 3b  return versions;
34c80 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
34c90 20 20 20 20 73 65 74 20 7b 20 76 65 72 73 69 6f      set { versio
34ca0 6e 73 20 3d 20 76 61 6c 75 65 3b 20 7d 0d 0a 20  ns = value; }.. 
34cb0 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
34cc0 20 20 20 20 20 20 20 20 20 20 23 65 6e 64 72 65            #endre
34cd0 67 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 7d 0d  gion..        }.
34ce0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
34cf0 69 6f 6e 0d 0a 20 20 20 20 20 20 20 20 23 65 6e  ion..        #en
34d00 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
34d10 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f     /////////////
34d20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34d50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
34d60 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72        #region Pr
34d70 69 76 61 74 65 20 43 6f 6e 73 74 61 6e 74 20 44  ivate Constant D
34d80 61 74 61 0d 0a 20 20 20 20 20 20 20 20 23 72 65  ata..        #re
34d90 67 69 6f 6e 20 50 61 63 6b 61 67 65 20 26 20 50  gion Package & P
34da0 72 6f 76 69 64 65 72 20 4e 61 6d 65 73 0d 0a 20  rovider Names.. 
34db0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
34dc0 6f 6e 73 74 20 73 74 72 69 6e 67 20 43 6f 72 65  onst string Core
34dd0 46 69 6c 65 4e 61 6d 65 20 3d 20 22 53 79 73 74  FileName = "Syst
34de0 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65 2e 64  em.Data.SQLite.d
34df0 6c 6c 22 3b 0d 0a 20 20 20 20 20 20 20 20 70 72  ll";..        pr
34e00 69 76 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69  ivate const stri
34e10 6e 67 20 4c 69 6e 71 46 69 6c 65 4e 61 6d 65 20  ng LinqFileName 
34e20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74 61 2e 53  = "System.Data.S
34e30 51 4c 69 74 65 2e 4c 69 6e 71 2e 64 6c 6c 22 3b  QLite.Linq.dll";
34e40 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
34e50 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 45  e const string E
34e60 66 36 46 69 6c 65 4e 61 6d 65 20 3d 20 22 53 79  f6FileName = "Sy
34e70 73 74 65 6d 2e 44 61 74 61 2e 53 51 4c 69 74 65  stem.Data.SQLite
34e80 2e 45 46 36 2e 64 6c 6c 22 3b 0d 0a 20 20 20 20  .EF6.dll";..    
34e90 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
34ea0 74 20 73 74 72 69 6e 67 20 44 65 73 69 67 6e 65  t string Designe
34eb0 72 46 69 6c 65 4e 61 6d 65 20 3d 20 22 53 51 4c  rFileName = "SQL
34ec0 69 74 65 2e 44 65 73 69 67 6e 65 72 2e 64 6c 6c  ite.Designer.dll
34ed0 22 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  ";..        priv
34ee0 61 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67  ate const string
34ef0 20 50 72 6f 76 69 64 65 72 4e 61 6d 65 20 3d 20   ProviderName = 
34f00 22 53 51 4c 69 74 65 20 44 61 74 61 20 50 72 6f  "SQLite Data Pro
34f10 76 69 64 65 72 22 3b 0d 0a 20 20 20 20 20 20 20  vider";..       
34f20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
34f30 74 72 69 6e 67 20 50 72 6f 6a 65 63 74 4e 61 6d  tring ProjectNam
34f40 65 20 3d 20 22 53 79 73 74 65 6d 2e 44 61 74 61  e = "System.Data
34f50 2e 53 51 4c 69 74 65 22 3b 0d 0a 20 20 20 20 20  .SQLite";..     
34f60 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74     private const
34f70 20 73 74 72 69 6e 67 20 4c 65 67 61 63 79 50 72   string LegacyPr
34f80 6f 6a 65 63 74 4e 61 6d 65 20 3d 20 22 53 51 4c  ojectName = "SQL
34f90 69 74 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ite";....       
34fa0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
34fb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34fc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34fd0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
34fe0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
34ff0 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
35000 74 20 73 74 72 69 6e 67 20 44 65 73 63 72 69 70  t string Descrip
35010 74 69 6f 6e 20 3d 0d 0a 20 20 20 20 20 20 20 20  tion =..        
35020 20 20 20 20 22 2e 4e 45 54 20 46 72 61 6d 65 77      ".NET Framew
35030 6f 72 6b 20 44 61 74 61 20 50 72 6f 76 69 64 65  ork Data Provide
35040 72 20 66 6f 72 20 53 51 4c 69 74 65 22 3b 0d 0a  r for SQLite";..
35050 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69          #endregi
35060 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f  on....        //
35070 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
350a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
350b0 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20  /////....       
350c0 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
350d0 74 72 69 6e 67 20 44 69 73 70 6c 61 79 4e 75 6c  tring DisplayNul
350e0 6c 20 3d 20 22 3c 6e 75 6c 6c 3e 22 3b 0d 0a 20  l = "<null>";.. 
350f0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
35100 6f 6e 73 74 20 73 74 72 69 6e 67 20 44 69 73 70  onst string Disp
35110 6c 61 79 45 6d 70 74 79 20 3d 20 22 3c 65 6d 70  layEmpty = "<emp
35120 74 79 3e 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  ty>";....       
35130 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35170 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
35180 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
35190 74 20 73 74 72 69 6e 67 20 43 4c 52 76 32 49 6d  t string CLRv2Im
351a0 61 67 65 52 75 6e 74 69 6d 65 56 65 72 73 69 6f  ageRuntimeVersio
351b0 6e 20 3d 20 22 76 32 2e 30 2e 35 30 37 32 37 22  n = "v2.0.50727"
351c0 3b 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61  ;..        priva
351d0 74 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20  te const string 
351e0 43 4c 52 76 34 49 6d 61 67 65 52 75 6e 74 69 6d  CLRv4ImageRuntim
351f0 65 56 65 72 73 69 6f 6e 20 3d 20 22 76 34 2e 30  eVersion = "v4.0
35200 2e 33 30 33 31 39 22 3b 0d 0a 0d 0a 20 20 20 20  .30319";....    
35210 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f      ////////////
35220 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20  ///////////.... 
35260 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 63         private c
35270 6f 6e 73 74 20 73 74 72 69 6e 67 20 53 79 73 74  onst string Syst
35280 65 6d 45 66 36 41 73 73 65 6d 62 6c 79 4e 61 6d  emEf6AssemblyNam
35290 65 20 3d 20 22 45 6e 74 69 74 79 46 72 61 6d 65  e = "EntityFrame
352a0 77 6f 72 6b 2c 20 22 20 2b 0d 0a 20 20 20 20 20  work, " +..     
352b0 20 20 20 20 20 20 20 22 56 65 72 73 69 6f 6e 3d         "Version=
352c0 36 2e 30 2e 30 2e 30 2c 20 43 75 6c 74 75 72 65  6.0.0.0, Culture
352d0 3d 6e 65 75 74 72 61 6c 2c 20 50 75 62 6c 69 63  =neutral, Public
352e0 4b 65 79 54 6f 6b 65 6e 3d 62 37 37 61 35 63 35  KeyToken=b77a5c5
352f0 36 31 39 33 34 65 30 38 39 22 3b 0d 0a 0d 0a 20  61934e089";.... 
35300 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
35310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35340 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35350 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
35360 65 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 4e  e const string N
35370 61 6d 65 41 6e 64 56 61 6c 75 65 46 6f 72 6d 61  ameAndValueForma
35380 74 20 3d 20 22 7b 30 7d 3a 20 7b 31 7d 22 3b 0d  t = "{0}: {1}";.
35390 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
353a0 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 4c 6f   const string Lo
353b0 67 46 69 6c 65 53 75 66 66 69 78 20 3d 20 22 2e  gFileSuffix = ".
353c0 6c 6f 67 22 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  log";....       
353d0 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
353e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
353f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35400 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35410 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
35420 20 20 20 20 70 72 69 76 61 74 65 20 63 6f 6e 73      private cons
35430 74 20 73 74 72 69 6e 67 20 56 73 44 65 76 45 6e  t string VsDevEn
35440 76 53 65 74 75 70 46 6f 72 6d 61 74 20 3d 20 22  vSetupFormat = "
35450 7b 30 7d 3a 20 7b 31 7d 22 3b 0d 0a 0d 0a 20 20  {0}: {1}";....  
35460 20 20 20 20 20 20 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 2f 2f  ////////////////
354a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d  /////////////...
354b0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
354c0 20 63 6f 6e 73 74 20 73 74 72 69 6e 67 20 52 6f   const string Ro
354d0 6f 74 4b 65 79 4e 61 6d 65 20 3d 20 22 53 6f 66  otKeyName = "Sof
354e0 74 77 61 72 65 22 3b 0d 0a 20 20 20 20 20 20 20  tware";..       
354f0 20 70 72 69 76 61 74 65 20 63 6f 6e 73 74 20 73   private const s
35500 74 72 69 6e 67 20 57 6f 77 36 34 53 75 62 4b 65  tring Wow64SubKe
35510 79 4e 61 6d 65 20 3d 20 22 57 6f 77 36 34 33 32  yName = "Wow6432
35520 4e 6f 64 65 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  Node";....      
35530 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f    //////////////
35540 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35550 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35560 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35570 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20  /////////....   
35580 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20       //..       
35590 20 2f 2f 20 4e 4f 54 45 3a 20 54 68 65 20 2e 4e   // NOTE: The .N
355a0 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 68 61 73  ET Framework has
355b0 20 62 6f 74 68 20 33 32 2d 62 69 74 20 61 6e 64   both 32-bit and
355c0 20 36 34 2d 62 69 74 20 65 64 69 74 69 6f 6e 73   64-bit editions
355d0 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20  ...        //.. 
355e0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
355f0 74 61 74 69 63 20 72 65 61 64 6f 6e 6c 79 20 62  tatic readonly b
35600 6f 6f 6c 20 4e 65 74 46 78 49 73 33 32 42 69 74  ool NetFxIs32Bit
35610 4f 6e 6c 79 20 3d 20 66 61 6c 73 65 3b 0d 0a 0d  Only = false;...
35620 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f  .        ///////
35630 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35640 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35650 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35660 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35670 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a  ....        //..
35680 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a          // NOTE:
35690 20 46 6f 72 20 6e 6f 77 2c 20 56 69 73 75 61 6c   For now, Visual
356a0 20 53 74 75 64 69 6f 20 69 73 20 61 6c 77 61 79   Studio is alway
356b0 73 20 61 20 33 32 2d 62 69 74 20 61 70 70 6c 69  s a 32-bit appli
356c0 63 61 74 69 6f 6e 2e 0d 0a 20 20 20 20 20 20 20  cation...       
356d0 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 70 72 69   //..        pri
356e0 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
356f0 6f 6e 6c 79 20 62 6f 6f 6c 20 56 73 49 73 33 32  only bool VsIs32
35700 42 69 74 4f 6e 6c 79 20 3d 20 74 72 75 65 3b 0d  BitOnly = true;.
35710 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
35720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35760 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
35770 69 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61  ivate static rea
35780 64 6f 6e 6c 79 20 73 74 72 69 6e 67 20 56 73 49  donly string VsI
35790 64 46 6f 72 6d 61 74 20 3d 20 22 42 22 3b 0d 0a  dFormat = "B";..
357a0 0d 0a 20 20 20 20 20 20 20 20 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 2f 2f 2f 2f  ////////////////
357e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
357f0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72 69  /....        pri
35800 76 61 74 65 20 73 74 61 74 69 63 20 72 65 61 64  vate static read
35810 6f 6e 6c 79 20 73 74 72 69 6e 67 20 58 50 61 74  only string XPat
35820 68 46 6f 72 41 64 64 45 6c 65 6d 65 6e 74 20 3d  hForAddElement =
35830 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 22 63  ..            "c
35840 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2f 73 79 73  onfiguration/sys
35850 74 65 6d 2e 64 61 74 61 2f 44 62 50 72 6f 76 69  tem.data/DbProvi
35860 64 65 72 46 61 63 74 6f 72 69 65 73 2f 61 64 64  derFactories/add
35870 5b 40 69 6e 76 61 72 69 61 6e 74 3d 5c 22 7b 30  [@invariant=\"{0
35880 7d 5c 22 5d 22 3b 0d 0a 0d 0a 20 20 20 20 20 20  }\"]";....      
35890 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
358a0 20 72 65 61 64 6f 6e 6c 79 20 73 74 72 69 6e 67   readonly string
358b0 20 58 50 61 74 68 46 6f 72 52 65 6d 6f 76 65 45   XPathForRemoveE
358c0 6c 65 6d 65 6e 74 20 3d 0d 0a 20 20 20 20 20 20  lement =..      
358d0 20 20 20 20 20 20 22 63 6f 6e 66 69 67 75 72 61        "configura
358e0 74 69 6f 6e 2f 73 79 73 74 65 6d 2e 64 61 74 61  tion/system.data
358f0 2f 44 62 50 72 6f 76 69 64 65 72 46 61 63 74 6f  /DbProviderFacto
35900 72 69 65 73 2f 72 65 6d 6f 76 65 5b 40 69 6e 76  ries/remove[@inv
35910 61 72 69 61 6e 74 3d 5c 22 7b 30 7d 5c 22 5d 22  ariant=\"{0}\"]"
35920 3b 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  ;..        #endr
35930 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
35940 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
35950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35980 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
35990 20 20 20 20 23 72 65 67 69 6f 6e 20 50 72 69 76      #region Priv
359a0 61 74 65 20 53 74 61 74 69 63 20 44 61 74 61 0d  ate Static Data.
359b0 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e  .        #region
359c0 20 44 69 61 67 6e 6f 73 74 69 63 73 20 26 20 4c   Diagnostics & L
359d0 6f 67 67 69 6e 67 0d 0a 20 20 20 20 20 20 20 20  ogging..        
359e0 2f 2f 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e  //..        // N
359f0 4f 54 45 3a 20 43 61 63 68 65 20 74 68 65 20 63  OTE: Cache the c
35a00 75 72 72 65 6e 74 20 70 72 6f 63 65 73 73 20 61  urrent process a
35a10 6e 64 20 61 73 73 65 6d 62 6c 79 20 61 73 20 74  nd assembly as t
35a20 68 65 79 20 64 6f 20 6e 6f 74 20 63 68 61 6e 67  hey do not chang
35a30 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f 20 20 20  e..        //   
35a40 20 20 20 20 61 6e 64 20 6d 61 79 20 62 65 20 6e      and may be n
35a50 65 65 64 65 64 20 69 6e 20 71 75 69 74 65 20 61  eeded in quite a
35a60 20 66 65 77 20 64 69 66 66 65 72 65 6e 74 20 70   few different p
35a70 6c 61 63 65 73 2e 0d 0a 20 20 20 20 20 20 20 20  laces...        
35a80 2f 2f 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  //..        priv
35a90 61 74 65 20 73 74 61 74 69 63 20 50 72 6f 63 65  ate static Proce
35aa0 73 73 20 74 68 69 73 50 72 6f 63 65 73 73 20 3d  ss thisProcess =
35ab0 20 50 72 6f 63 65 73 73 2e 47 65 74 43 75 72 72   Process.GetCurr
35ac0 65 6e 74 50 72 6f 63 65 73 73 28 29 3b 0d 0a 20  entProcess();.. 
35ad0 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73         private s
35ae0 74 61 74 69 63 20 41 73 73 65 6d 62 6c 79 20 74  tatic Assembly t
35af0 68 69 73 41 73 73 65 6d 62 6c 79 20 3d 20 41 73  hisAssembly = As
35b00 73 65 6d 62 6c 79 2e 47 65 74 45 78 65 63 75 74  sembly.GetExecut
35b10 69 6e 67 41 73 73 65 6d 62 6c 79 28 29 3b 0d 0a  ingAssembly();..
35b20 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
35b30 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b40 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b50 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35b70 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d  /....        //.
35b80 0a 20 20 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45  .        // NOTE
35b90 3a 20 54 68 65 20 74 72 61 63 65 20 63 61 74 65  : The trace cate
35ba0 67 6f 72 79 20 69 73 20 74 68 65 20 73 61 6d 65  gory is the same
35bb0 20 66 6f 72 20 62 6f 74 68 20 74 68 65 20 64 65   for both the de
35bc0 62 75 67 20 61 6e 64 20 74 72 61 63 65 0d 0a 20  bug and trace.. 
35bd0 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20         //       
35be0 63 61 6c 6c 62 61 63 6b 73 2e 0d 0a 20 20 20 20  callbacks...    
35bf0 20 20 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20      //..        
35c00 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20 73  private static s
35c10 74 72 69 6e 67 20 74 72 61 63 65 43 61 74 65 67  tring traceCateg
35c20 6f 72 79 20 3d 20 28 74 68 69 73 41 73 73 65 6d  ory = (thisAssem
35c30 62 6c 79 20 21 3d 20 6e 75 6c 6c 29 20 3f 0d 0a  bly != null) ?..
35c40 20 20 20 20 20 20 20 20 20 20 20 20 50 61 74 68              Path
35c50 2e 47 65 74 46 69 6c 65 4e 61 6d 65 28 74 68 69  .GetFileName(thi
35c60 73 41 73 73 65 6d 62 6c 79 2e 4c 6f 63 61 74 69  sAssembly.Locati
35c70 6f 6e 29 20 3a 20 6e 75 6c 6c 3b 0d 0a 0d 0a 20  on) : null;.... 
35c80 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f         /////////
35c90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35ca0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35cb0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
35cc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
35cd0 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20  ..        //..  
35ce0 20 20 20 20 20 20 2f 2f 20 4e 4f 54 45 3a 20 53        // NOTE: S
35cf0 65 74 20 74 68 65 20 64 65 62 75 67 20 61 6e 64  et the debug and
35d00 20 74 72 61 63 65 20 6c 6f 67 67 69 6e 67 20 63   trace logging c
35d10 61 6c 6c 62 61 63 6b 73 20 75 73 65 64 20 62 79  allbacks used by
35d20 20 74 68 65 0d 0a 20 20 20 20 20 20 20 20 2f 2f   the..        //
35d30 20 20 20 20 20 20 20 61 70 70 6c 69 63 61 74 69         applicati
35d40 6f 6e 2e 0d 0a 20 20 20 20 20 20 20 20 2f 2f 0d  on...        //.
35d50 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
35d60 20 73 74 61 74 69 63 20 54 72 61 63 65 43 61 6c   static TraceCal
35d70 6c 62 61 63 6b 20 64 65 62 75 67 43 61 6c 6c 62  lback debugCallb
35d80 61 63 6b 20 3d 20 41 70 70 44 65 62 75 67 3b 0d  ack = AppDebug;.
35d90 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
35da0 20 73 74 61 74 69 63 20 54 72 61 63 65 43 61 6c   static TraceCal
35db0 6c 62 61 63 6b 20 74 72 61 63 65 43 61 6c 6c 62  lback traceCallb
35dc0 61 63 6b 20 3d 20 41 70 70 54 72 61 63 65 3b 0d  ack = AppTrace;.
35dd0 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72 65 67  .        #endreg
35de0 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f  ion....        /
35df0 2f 2f 2f 2f 2f 2f 2f 2f 2f 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 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
35e40 20 20 23 72 65 67 69 6f 6e 20 53 79 73 74 65 6d    #region System
35e50 20 44 69 72 65 63 74 6f 72 79 0d 0a 20 20 20 20   Directory..    
35e60 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
35e70 69 63 20 73 74 72 69 6e 67 20 73 79 73 74 65 6d  ic string system
35e80 44 69 72 65 63 74 6f 72 79 20 3d 20 6e 75 6c 6c  Directory = null
35e90 3b 0d 0a 0d 0a 23 69 66 20 57 49 4e 44 4f 57 53  ;....#if WINDOWS
35ea0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
35eb0 65 20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20  e static string 
35ec0 73 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79 57  systemDirectoryW
35ed0 6f 77 36 34 20 3d 20 6e 75 6c 6c 3b 0d 0a 23 65  ow64 = null;..#e
35ee0 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 23 65  ndif..        #e
35ef0 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20  ndregion....    
35f00 20 20 20 20 2f 2f 2f 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 2f 0d 0a 0d 0a 20  ///////////.... 
35f50 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 52         #region R
35f60 65 67 69 73 74 72 79 20 53 74 61 74 69 73 74 69  egistry Statisti
35f70 63 73 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76  cs..        priv
35f80 61 74 65 20 73 74 61 74 69 63 20 69 6e 74 20 66  ate static int f
35f90 69 6c 65 73 43 72 65 61 74 65 64 20 3d 20 30 3b  ilesCreated = 0;
35fa0 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
35fb0 65 20 73 74 61 74 69 63 20 69 6e 74 20 66 69 6c  e static int fil
35fc0 65 73 4d 6f 64 69 66 69 65 64 20 3d 20 30 3b 0d  esModified = 0;.
35fd0 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65  .        private
35fe0 20 73 74 61 74 69 63 20 69 6e 74 20 66 69 6c 65   static int file
35ff0 73 44 65 6c 65 74 65 64 20 3d 20 30 3b 0d 0a 20  sDeleted = 0;.. 
36000 20 20 20 20 20 20 20 23 65 6e 64 72 65 67 69 6f         #endregio
36010 6e 0d 0a 20 20 20 20 20 20 20 20 23 65 6e 64 72  n..        #endr
36020 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20 20 20  egion....       
36030 20 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 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36060 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36070 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
36080 20 20 20 20 23 72 65 67 69 6f 6e 20 54 72 61 63      #region Trac
36090 65 20 48 61 6e 64 6c 69 6e 67 0d 0a 20 20 20 20  e Handling..    
360a0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
360b0 69 63 20 73 74 72 69 6e 67 20 47 65 74 4c 6f 67  ic string GetLog
360c0 46 69 6c 65 4e 61 6d 65 28 0d 0a 20 20 20 20 20  FileName(..     
360d0 20 20 20 20 20 20 20 73 74 72 69 6e 67 20 74 79         string ty
360e0 70 65 4e 61 6d 65 0d 0a 20 20 20 20 20 20 20 20  peName..        
360f0 20 20 20 20 29 20 2f 2a 20 74 68 72 6f 77 20 2a      ) /* throw *
36100 2f 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  /..        {..  
36110 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
36120 20 66 69 6c 65 4e 61 6d 65 20 3d 20 50 61 74 68   fileName = Path
36130 2e 47 65 74 54 65 6d 70 46 69 6c 65 4e 61 6d 65  .GetTempFileName
36140 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
36150 20 73 74 72 69 6e 67 20 64 69 72 65 63 74 6f 72   string director
36160 79 20 3d 20 50 61 74 68 2e 47 65 74 44 69 72 65  y = Path.GetDire
36170 63 74 6f 72 79 4e 61 6d 65 28 66 69 6c 65 4e 61  ctoryName(fileNa
36180 6d 65 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  me);..          
36190 20 20 73 74 72 69 6e 67 20 66 69 6c 65 4e 61 6d    string fileNam
361a0 65 4f 6e 6c 79 20 3d 20 50 61 74 68 2e 47 65 74  eOnly = Path.Get
361b0 46 69 6c 65 4e 61 6d 65 57 69 74 68 6f 75 74 45  FileNameWithoutE
361c0 78 74 65 6e 73 69 6f 6e 28 66 69 6c 65 4e 61 6d  xtension(fileNam
361d0 65 29 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20  e);....         
361e0 20 20 20 73 74 72 69 6e 67 20 6e 65 77 46 69 6c     string newFil
361f0 65 4e 61 6d 65 20 3d 20 50 61 74 68 2e 43 6f 6d  eName = Path.Com
36200 62 69 6e 65 28 64 69 72 65 63 74 6f 72 79 2c 20  bine(directory, 
36210 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
36220 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36230 22 7b 30 7d 7b 31 7d 7b 32 7d 22 2c 20 74 72 61  "{0}{1}{2}", tra
36240 63 65 43 61 74 65 67 6f 72 79 2c 20 21 53 74 72  ceCategory, !Str
36250 69 6e 67 2e 49 73 4e 75 6c 6c 4f 72 45 6d 70 74  ing.IsNullOrEmpt
36260 79 28 74 79 70 65 4e 61 6d 65 29 20 3f 0d 0a 20  y(typeName) ?.. 
36270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
36280 20 20 20 22 2e 22 20 2b 20 74 79 70 65 4e 61 6d     "." + typeNam
36290 65 20 3a 20 53 74 72 69 6e 67 2e 45 6d 70 74 79  e : String.Empty
362a0 2c 20 22 2e 22 20 2b 20 66 69 6c 65 4e 61 6d 65  , "." + fileName
362b0 4f 6e 6c 79 20 2b 0d 0a 20 20 20 20 20 20 20 20  Only +..        
362c0 20 20 20 20 20 20 20 20 20 20 20 20 4c 6f 67 46              LogF
362d0 69 6c 65 53 75 66 66 69 78 29 29 3b 0d 0a 0d 0a  ileSuffix));....
362e0 20 20 20 20 20 20 20 20 20 20 20 20 46 69 6c 65              File
362f0 2e 4d 6f 76 65 28 66 69 6c 65 4e 61 6d 65 2c 20  .Move(fileName, 
36300 6e 65 77 46 69 6c 65 4e 61 6d 65 29 3b 0d 0a 0d  newFileName);...
36310 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74  .            ret
36320 75 72 6e 20 6e 65 77 46 69 6c 65 4e 61 6d 65 3b  urn newFileName;
36330 0d 0a 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20  ..        }.... 
36340 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
36390 0d 0a 20 20 20 20 20 20 20 20 70 72 69 76 61 74  ..        privat
363a0 65 20 73 74 61 74 69 63 20 76 6f 69 64 20 41 70  e static void Ap
363b0 70 44 65 62 75 67 28 0d 0a 20 20 20 20 20 20 20  pDebug(..       
363c0 20 20 20 20 20 73 74 72 69 6e 67 20 6d 65 73 73       string mess
363d0 61 67 65 2c 0d 0a 20 20 20 20 20 20 20 20 20 20  age,..          
363e0 20 20 73 74 72 69 6e 67 20 63 61 74 65 67 6f 72    string categor
363f0 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  y..            )
36400 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
36410 20 20 20 20 20 20 20 20 20 54 72 61 63 65 4f 70           TraceOp
36420 73 2e 44 65 62 75 67 43 6f 72 65 28 53 74 72 69  s.DebugCore(Stri
36430 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a 20 20 20 20  ng.Format(..    
36440 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63              Trac
36450 65 4f 70 73 2e 44 65 62 75 67 46 6f 72 6d 61 74  eOps.DebugFormat
36460 2c 20 54 72 61 63 65 4f 70 73 2e 4e 65 78 74 44  , TraceOps.NextD
36470 65 62 75 67 49 64 28 29 2c 0d 0a 20 20 20 20 20  ebugId(),..     
36480 20 20 20 20 20 20 20 20 20 20 20 54 72 61 63 65             Trace
36490 4f 70 73 2e 54 69 6d 65 53 74 61 6d 70 28 44 61  Ops.TimeStamp(Da
364a0 74 65 54 69 6d 65 2e 55 74 63 4e 6f 77 29 2c 20  teTime.UtcNow), 
364b0 6d 65 73 73 61 67 65 29 2c 20 63 61 74 65 67 6f  message), catego
364c0 72 79 29 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ry);..        }.
364d0 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
364e0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
364f0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36500 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36510 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36520 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
36530 69 76 61 74 65 20 73 74 61 74 69 63 20 76 6f 69  ivate static voi
36540 64 20 41 70 70 54 72 61 63 65 28 0d 0a 20 20 20  d AppTrace(..   
36550 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
36560 6d 65 73 73 61 67 65 2c 0d 0a 20 20 20 20 20 20  message,..      
36570 20 20 20 20 20 20 73 74 72 69 6e 67 20 63 61 74        string cat
36580 65 67 6f 72 79 0d 0a 20 20 20 20 20 20 20 20 20  egory..         
36590 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
365a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 54 72 61  .            Tra
365b0 63 65 4f 70 73 2e 54 72 61 63 65 43 6f 72 65 28  ceOps.TraceCore(
365c0 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74 28 0d 0a  String.Format(..
365d0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
365e0 54 72 61 63 65 4f 70 73 2e 54 72 61 63 65 46 6f  TraceOps.TraceFo
365f0 72 6d 61 74 2c 20 54 72 61 63 65 4f 70 73 2e 4e  rmat, TraceOps.N
36600 65 78 74 54 72 61 63 65 49 64 28 29 2c 0d 0a 20  extTraceId(),.. 
36610 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 54                 T
36620 72 61 63 65 4f 70 73 2e 54 69 6d 65 53 74 61 6d  raceOps.TimeStam
36630 70 28 44 61 74 65 54 69 6d 65 2e 55 74 63 4e 6f  p(DateTime.UtcNo
36640 77 29 2c 20 6d 65 73 73 61 67 65 29 2c 20 63 61  w), message), ca
36650 74 65 67 6f 72 79 29 3b 0d 0a 20 20 20 20 20 20  tegory);..      
36660 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23 65 6e    }..        #en
36670 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20 20 20  dregion....     
36680 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
366c0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20  //////////....  
366d0 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20 47 65        #region Ge
366e0 6e 65 72 69 63 20 50 6c 61 74 66 6f 72 6d 20 48  neric Platform H
366f0 61 6e 64 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20  andling..       
36700 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
36710 62 6f 6f 6c 20 49 73 36 34 42 69 74 50 72 6f 63  bool Is64BitProc
36720 65 73 73 28 29 0d 0a 20 20 20 20 20 20 20 20 7b  ess()..        {
36730 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
36740 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f  ..            //
36750 20 4e 4f 54 45 3a 20 52 65 74 75 72 6e 73 20 74   NOTE: Returns t
36760 72 75 65 20 69 66 20 74 68 65 20 63 75 72 72 65  rue if the curre
36770 6e 74 20 70 72 6f 63 65 73 73 20 69 73 20 36 34  nt process is 64
36780 2d 62 69 74 2e 20 20 49 66 20 74 68 69 73 0d 0a  -bit.  If this..
36790 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20              //  
367a0 20 20 20 20 20 69 73 20 74 72 75 65 2c 20 77 65       is true, we
367b0 20 2a 6b 6e 6f 77 2a 20 74 68 61 74 20 77 65 20   *know* that we 
367c0 6d 75 73 74 20 62 65 20 72 75 6e 6e 69 6e 67 20  must be running 
367d0 6f 6e 20 61 20 36 34 2d 62 69 74 0d 0a 20 20 20  on a 64-bit..   
367e0 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20           //     
367f0 20 20 6f 70 65 72 61 74 69 6e 67 20 73 79 73 74    operating syst
36800 65 6d 20 61 73 20 77 65 6c 6c 2e 20 20 48 6f 77  em as well.  How
36810 65 76 65 72 2c 20 69 66 20 74 68 69 73 20 69 73  ever, if this is
36820 20 66 61 6c 73 65 2c 20 77 65 0d 0a 20 20 20 20   false, we..    
36830 20 20 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20          //      
36840 20 64 6f 20 6e 6f 74 20 6e 65 63 65 73 73 61 72   do not necessar
36850 69 6c 79 20 6b 6e 6f 77 20 74 68 61 74 20 77 65  ily know that we
36860 20 61 72 65 20 72 75 6e 6e 69 6e 67 20 6f 6e 20   are running on 
36870 61 20 33 32 2d 62 69 74 0d 0a 20 20 20 20 20 20  a 32-bit..      
36880 20 20 20 20 20 20 2f 2f 20 20 20 20 20 20 20 6f        //       o
36890 70 65 72 61 74 69 6e 67 20 73 79 73 74 65 6d 2c  perating system,
368a0 20 64 75 65 20 74 6f 20 57 6f 57 36 34 20 28 57   due to WoW64 (W
368b0 69 6e 33 32 2d 6f 6e 2d 57 69 6e 36 34 29 2c 20  in32-on-Win64), 
368c0 65 74 63 2e 0d 0a 20 20 20 20 20 20 20 20 20 20  etc...          
368d0 20 20 2f 2f 0d 0a 20 20 20 20 20 20 20 20 20 20    //..          
368e0 20 20 72 65 74 75 72 6e 20 28 49 6e 74 50 74 72    return (IntPtr
368f0 2e 53 69 7a 65 20 3d 3d 20 73 69 7a 65 6f 66 28  .Size == sizeof(
36900 6c 6f 6e 67 29 29 3b 20 2f 2f 20 4e 4f 54 45 3a  long)); // NOTE:
36910 20 50 6f 69 6e 74 65 72 20 69 73 20 36 34 2d 62   Pointer is 64-b
36920 69 74 73 3f 0d 0a 20 20 20 20 20 20 20 20 7d 0d  its?..        }.
36930 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
36940 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36950 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36960 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36970 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36980 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 72  //....        pr
36990 69 76 61 74 65 20 73 74 61 74 69 63 20 62 6f 6f  ivate static boo
369a0 6c 20 49 73 53 75 70 70 6f 72 74 65 64 52 6f 6f  l IsSupportedRoo
369b0 74 4b 65 79 28 0d 0a 20 20 20 20 20 20 20 20 20  tKey(..         
369c0 20 20 20 4d 6f 63 6b 52 65 67 69 73 74 72 79 20     MockRegistry 
369d0 72 65 67 69 73 74 72 79 2c 0d 0a 20 20 20 20 20  registry,..     
369e0 20 20 20 20 20 20 20 4d 6f 63 6b 52 65 67 69 73         MockRegis
369f0 74 72 79 4b 65 79 20 72 6f 6f 74 4b 65 79 0d 0a  tryKey rootKey..
36a00 20 20 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20              ).. 
36a10 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
36a20 20 20 20 20 20 20 72 65 74 75 72 6e 20 4f 62 6a        return Obj
36a30 65 63 74 2e 52 65 66 65 72 65 6e 63 65 45 71 75  ect.ReferenceEqu
36a40 61 6c 73 28 72 6f 6f 74 4b 65 79 2c 20 72 65 67  als(rootKey, reg
36a50 69 73 74 72 79 2e 43 75 72 72 65 6e 74 55 73 65  istry.CurrentUse
36a60 72 29 20 7c 7c 0d 0a 20 20 20 20 20 20 20 20 20  r) ||..         
36a70 20 20 20 20 20 20 20 4f 62 6a 65 63 74 2e 52 65         Object.Re
36a80 66 65 72 65 6e 63 65 45 71 75 61 6c 73 28 72 6f  ferenceEquals(ro
36a90 6f 74 4b 65 79 2c 20 72 65 67 69 73 74 72 79 2e  otKey, registry.
36aa0 4c 6f 63 61 6c 4d 61 63 68 69 6e 65 29 3b 0d 0a  LocalMachine);..
36ab0 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
36ac0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
36ad0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36ae0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36af0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36b00 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
36b10 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
36b20 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
36b30 74 52 6f 6f 74 4b 65 79 4e 61 6d 65 28 0d 0a 20  tRootKeyName(.. 
36b40 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
36b50 70 65 72 55 73 65 72 2c 0d 0a 20 20 20 20 20 20  perUser,..      
36b60 20 20 20 20 20 20 62 6f 6f 6c 20 77 6f 77 36 34        bool wow64
36b70 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29 0d  ..            ).
36b80 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20  .        {..    
36b90 20 20 20 20 20 20 20 20 2f 2f 0d 0a 20 20 20 20          //..    
36ba0 20 20 20 20 20 20 20 20 2f 2f 20 42 55 47 46 49          // BUGFI
36bb0 58 3a 20 41 70 70 61 72 65 6e 74 6c 79 2c 20 74  X: Apparently, t
36bc0 68 65 20 70 65 72 2d 75 73 65 72 20 72 65 67 69  he per-user regi
36bd0 73 74 72 79 20 68 69 76 65 20 64 6f 65 73 20 6e  stry hive does n
36be0 6f 74 20 75 73 65 0d 0a 20 20 20 20 20 20 20 20  ot use..        
36bf0 20 20 20 20 2f 2f 20 20 20 20 20 20 20 20 20 74      //         t
36c00 68 65 20 22 57 6f 77 36 34 33 32 4e 6f 64 65 22  he "Wow6432Node"
36c10 20 6e 6f 64 65 20 74 6f 20 73 74 6f 72 65 20 73   node to store s
36c20 65 74 74 69 6e 67 73 20 66 6f 72 20 33 32 2d 62  ettings for 32-b
36c30 69 74 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  it..            
36c40 2f 2f 20 20 20 20 20 20 20 20 20 61 70 70 6c 69  //         appli
36c50 63 61 74 69 6f 6e 73 20 72 75 6e 6e 69 6e 67 20  cations running 
36c60 6f 6e 20 61 20 36 34 2d 62 69 74 20 6f 70 65 72  on a 64-bit oper
36c70 61 74 69 6e 67 20 73 79 73 74 65 6d 2e 0d 0a 20  ating system... 
36c80 20 20 20 20 20 20 20 20 20 20 20 2f 2f 20 20 20             //   
36c90 20 20 20 20 20 20 54 69 63 6b 65 74 20 5b 61 30        Ticket [a0
36ca0 36 37 37 33 30 39 66 30 5d 20 68 61 73 20 66 75  677309f0] has fu
36cb0 72 74 68 65 72 20 64 65 74 61 69 6c 73 2e 0d 0a  rther details...
36cc0 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f 0d 0a              //..
36cd0 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75              retu
36ce0 72 6e 20 52 65 67 69 73 74 72 79 48 65 6c 70 65  rn RegistryHelpe
36cf0 72 2e 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 52  r.JoinKeyNames(R
36d00 6f 6f 74 4b 65 79 4e 61 6d 65 2c 0d 0a 20 20 20  ootKeyName,..   
36d10 20 20 20 20 20 20 20 20 20 20 20 20 20 21 70 65               !pe
36d20 72 55 73 65 72 20 26 26 20 77 6f 77 36 34 20 26  rUser && wow64 &
36d30 26 20 49 73 36 34 42 69 74 50 72 6f 63 65 73 73  & Is64BitProcess
36d40 28 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20 20  () ?..          
36d50 20 20 20 20 20 20 20 20 20 20 57 6f 77 36 34 53            Wow64S
36d60 75 62 4b 65 79 4e 61 6d 65 20 3a 20 53 74 72 69  ubKeyName : Stri
36d70 6e 67 2e 45 6d 70 74 79 29 3b 0d 0a 20 20 20 20  ng.Empty);..    
36d80 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20      }....       
36d90 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f   ///////////////
36da0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36db0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36dc0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
36dd0 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20  ////////....    
36de0 20 20 20 20 70 72 69 76 61 74 65 20 73 74 61 74      private stat
36df0 69 63 20 73 74 72 69 6e 67 20 47 65 74 53 79 73  ic string GetSys
36e00 74 65 6d 44 69 72 65 63 74 6f 72 79 28 0d 0a 20  temDirectory(.. 
36e10 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c 20             bool 
36e20 77 6f 77 36 34 0d 0a 20 20 20 20 20 20 20 20 20  wow64..         
36e30 20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d     )..        {.
36e40 0a 23 69 66 20 57 49 4e 44 4f 57 53 0d 0a 20 20  .#if WINDOWS..  
36e50 20 20 20 20 20 20 20 20 20 20 69 66 20 28 77 6f            if (wo
36e60 77 36 34 29 0d 0a 20 20 20 20 20 20 20 20 20 20  w64)..          
36e70 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
36e80 20 20 20 20 20 69 66 20 28 73 79 73 74 65 6d 44       if (systemD
36e90 69 72 65 63 74 6f 72 79 57 6f 77 36 34 20 3d 3d  irectoryWow64 ==
36ea0 20 6e 75 6c 6c 29 0d 0a 20 20 20 20 20 20 20 20   null)..        
36eb0 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
36ec0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73                 s
36ed0 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79 57 6f  ystemDirectoryWo
36ee0 77 36 34 20 3d 0d 0a 20 20 20 20 20 20 20 20 20  w64 =..         
36ef0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 55                 U
36f00 6e 73 61 66 65 4e 61 74 69 76 65 4d 65 74 68 6f  nsafeNativeMetho
36f10 64 73 2e 47 65 74 53 79 73 74 65 6d 44 69 72 65  ds.GetSystemDire
36f20 63 74 6f 72 79 28 29 3b 0d 0a 20 20 20 20 20 20  ctory();..      
36f30 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20            }.... 
36f40 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
36f50 65 74 75 72 6e 20 73 79 73 74 65 6d 44 69 72 65  eturn systemDire
36f60 63 74 6f 72 79 57 6f 77 36 34 3b 0d 0a 20 20 20  ctoryWow64;..   
36f70 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20           }..    
36f80 20 20 20 20 20 20 20 20 65 6c 73 65 0d 0a 23 65          else..#e
36f90 6e 64 69 66 0d 0a 20 20 20 20 20 20 20 20 20 20  ndif..          
36fa0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
36fb0 20 20 20 20 20 69 66 20 28 73 79 73 74 65 6d 44       if (systemD
36fc0 69 72 65 63 74 6f 72 79 20 3d 3d 20 6e 75 6c 6c  irectory == null
36fd0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
36fe0 20 20 20 20 20 20 20 73 79 73 74 65 6d 44 69 72         systemDir
36ff0 65 63 74 6f 72 79 20 3d 20 45 6e 76 69 72 6f 6e  ectory = Environ
37000 6d 65 6e 74 2e 53 79 73 74 65 6d 44 69 72 65 63  ment.SystemDirec
37010 74 6f 72 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  tory;....       
37020 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20           return 
37030 73 79 73 74 65 6d 44 69 72 65 63 74 6f 72 79 3b  systemDirectory;
37040 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
37050 0a 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20  .        }..    
37060 20 20 20 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a      #endregion..
37070 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f 2f  ..        //////
37080 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37090 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
370a0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
370b0 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
370c0 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 23 72 65  /....        #re
370d0 67 69 6f 6e 20 47 65 6e 65 72 69 63 20 53 74 72  gion Generic Str
370e0 69 6e 67 20 48 61 6e 64 6c 69 6e 67 0d 0a 20 20  ing Handling..  
370f0 20 20 20 20 20 20 70 72 69 76 61 74 65 20 73 74        private st
37100 61 74 69 63 20 73 74 72 69 6e 67 20 46 6f 72 44  atic string ForD
37110 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
37120 20 20 20 20 20 6f 62 6a 65 63 74 20 76 61 6c 75       object valu
37130 65 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  e..            )
37140 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
37150 20 20 20 20 20 20 20 20 20 69 66 20 28 76 61 6c           if (val
37160 75 65 20 3d 3d 20 6e 75 6c 6c 29 0d 0a 20 20 20  ue == null)..   
37170 20 20 20 20 20 20 20 20 20 20 20 20 20 72 65 74               ret
37180 75 72 6e 20 44 69 73 70 6c 61 79 4e 75 6c 6c 3b  urn DisplayNull;
37190 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
371a0 73 74 72 69 6e 67 20 72 65 73 75 6c 74 3b 0d 0a  string result;..
371b0 20 20 20 20 20 20 20 20 20 20 20 20 54 79 70 65              Type
371c0 20 74 79 70 65 20 3d 20 76 61 6c 75 65 2e 47 65   type = value.Ge
371d0 74 54 79 70 65 28 29 3b 0d 0a 0d 0a 20 20 20 20  tType();....    
371e0 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65          if (type
371f0 20 3d 3d 20 74 79 70 65 6f 66 28 58 6d 6c 45 6c   == typeof(XmlEl
37200 65 6d 65 6e 74 29 29 0d 0a 20 20 20 20 20 20 20  ement))..       
37210 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
37220 20 20 20 20 20 20 20 20 58 6d 6c 45 6c 65 6d 65          XmlEleme
37230 6e 74 20 65 6c 65 6d 65 6e 74 20 3d 20 28 58 6d  nt element = (Xm
37240 6c 45 6c 65 6d 65 6e 74 29 76 61 6c 75 65 3b 0d  lElement)value;.
37250 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
37260 20 20 20 72 65 73 75 6c 74 20 3d 20 65 6c 65 6d     result = elem
37270 65 6e 74 2e 4f 75 74 65 72 58 6d 6c 3b 0d 0a 20  ent.OuterXml;.. 
37280 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20             }..  
37290 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
372a0 66 20 28 74 79 70 65 20 3d 3d 20 74 79 70 65 6f  f (type == typeo
372b0 66 28 56 65 72 73 69 6f 6e 29 29 0d 0a 20 20 20  f(Version))..   
372c0 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20           {..    
372d0 20 20 20 20 20 20 20 20 20 20 20 20 56 65 72 73              Vers
372e0 69 6f 6e 20 76 65 72 73 69 6f 6e 20 3d 20 28 56  ion version = (V
372f0 65 72 73 69 6f 6e 29 76 61 6c 75 65 3b 0d 0a 0d  ersion)value;...
37300 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37310 20 72 65 73 75 6c 74 20 3d 20 53 74 72 69 6e 67   result = String
37320 2e 46 6f 72 6d 61 74 28 22 76 7b 30 7d 22 2c 20  .Format("v{0}", 
37330 76 65 72 73 69 6f 6e 29 3b 0d 0a 20 20 20 20 20  version);..     
37340 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
37350 20 20 20 20 20 20 65 6c 73 65 20 69 66 20 28 74        else if (t
37360 79 70 65 20 3d 3d 20 74 79 70 65 6f 66 28 50 72  ype == typeof(Pr
37370 6f 63 65 73 73 53 74 61 72 74 49 6e 66 6f 29 29  ocessStartInfo))
37380 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
37390 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
373a0 20 50 72 6f 63 65 73 73 53 74 61 72 74 49 6e 66   ProcessStartInf
373b0 6f 20 73 74 61 72 74 49 6e 66 6f 20 3d 20 28 50  o startInfo = (P
373c0 72 6f 63 65 73 73 53 74 61 72 74 49 6e 66 6f 29  rocessStartInfo)
373d0 76 61 6c 75 65 3b 0d 0a 0d 0a 20 20 20 20 20 20  value;....      
373e0 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
373f0 20 3d 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74   = String.Format
37400 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
37410 20 20 20 20 20 20 20 22 66 69 6c 65 4e 61 6d 65         "fileName
37420 20 3d 20 7b 30 7d 2c 20 61 72 67 75 6d 65 6e 74   = {0}, argument
37430 73 20 3d 20 7b 31 7d 2c 20 77 6f 72 6b 69 6e 67  s = {1}, working
37440 44 69 72 65 63 74 6f 72 79 20 3d 20 7b 32 7d 2c  Directory = {2},
37450 20 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20   " +..          
37460 20 20 20 20 20 20 20 20 20 20 22 75 73 65 53 68            "useSh
37470 65 6c 6c 45 78 65 63 75 74 65 20 3d 20 7b 33 7d  ellExecute = {3}
37480 2c 20 72 65 64 69 72 65 63 74 53 74 61 6e 64 61  , redirectStanda
37490 72 64 4f 75 74 70 75 74 20 3d 20 7b 34 7d 2c 20  rdOutput = {4}, 
374a0 22 20 2b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  " +..           
374b0 20 20 20 20 20 20 20 20 20 22 72 65 64 69 72 65           "redire
374c0 63 74 53 74 61 6e 64 61 72 64 45 72 72 6f 72 20  ctStandardError 
374d0 3d 20 7b 35 7d 22 2c 20 46 6f 72 44 69 73 70 6c  = {5}", ForDispl
374e0 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ay(..           
374f0 20 20 20 20 20 20 20 20 20 73 74 61 72 74 49 6e           startIn
37500 66 6f 2e 46 69 6c 65 4e 61 6d 65 29 2c 20 46 6f  fo.FileName), Fo
37510 72 44 69 73 70 6c 61 79 28 73 74 61 72 74 49 6e  rDisplay(startIn
37520 66 6f 2e 41 72 67 75 6d 65 6e 74 73 29 2c 0d 0a  fo.Arguments),..
37530 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37540 20 20 20 20 46 6f 72 44 69 73 70 6c 61 79 28 73      ForDisplay(s
37550 74 61 72 74 49 6e 66 6f 2e 57 6f 72 6b 69 6e 67  tartInfo.Working
37560 44 69 72 65 63 74 6f 72 79 29 2c 20 46 6f 72 44  Directory), ForD
37570 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20 20  isplay(..       
37580 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74 61               sta
37590 72 74 49 6e 66 6f 2e 55 73 65 53 68 65 6c 6c 45  rtInfo.UseShellE
375a0 78 65 63 75 74 65 29 2c 20 46 6f 72 44 69 73 70  xecute), ForDisp
375b0 6c 61 79 28 0d 0a 20 20 20 20 20 20 20 20 20 20  lay(..          
375c0 20 20 20 20 20 20 20 20 20 20 73 74 61 72 74 49            startI
375d0 6e 66 6f 2e 52 65 64 69 72 65 63 74 53 74 61 6e  nfo.RedirectStan
375e0 64 61 72 64 4f 75 74 70 75 74 29 2c 20 46 6f 72  dardOutput), For
375f0 44 69 73 70 6c 61 79 28 0d 0a 20 20 20 20 20 20  Display(..      
37600 20 20 20 20 20 20 20 20 20 20 20 20 20 20 73 74                st
37610 61 72 74 49 6e 66 6f 2e 52 65 64 69 72 65 63 74  artInfo.Redirect
37620 53 74 61 6e 64 61 72 64 45 72 72 6f 72 29 29 3b  StandardError));
37630 20 2f 2a 20 52 45 43 55 52 53 49 56 45 20 2a 2f   /* RECURSIVE */
37640 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d  ..            }.
37650 0a 20 20 20 20 20 20 20 20 20 20 20 20 65 6c 73  .            els
37660 65 20 69 66 20 28 74 79 70 65 20 3d 3d 20 74 79  e if (type == ty
37670 70 65 6f 66 28 50 72 6f 63 65 73 73 29 29 0d 0a  peof(Process))..
37680 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20              {.. 
37690 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 50                 P
376a0 72 6f 63 65 73 73 20 70 72 6f 63 65 73 73 20 3d  rocess process =
376b0 20 28 50 72 6f 63 65 73 73 29 76 61 6c 75 65 3b   (Process)value;
376c0 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
376d0 20 20 20 20 72 65 73 75 6c 74 20 3d 20 70 72 6f      result = pro
376e0 63 65 73 73 2e 49 64 2e 54 6f 53 74 72 69 6e 67  cess.Id.ToString
376f0 28 29 3b 0d 0a 20 20 20 20 20 20 20 20 20 20 20  ();..           
37700 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
37710 65 6c 73 65 20 69 66 20 28 74 79 70 65 20 3d 3d  else if (type ==
37720 20 74 79 70 65 6f 66 28 44 61 74 61 52 65 63 65   typeof(DataRece
37730 69 76 65 64 45 76 65 6e 74 41 72 67 73 29 29 0d  ivedEventArgs)).
37740 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a  .            {..
37750 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37760 44 61 74 61 52 65 63 65 69 76 65 64 45 76 65 6e  DataReceivedEven
37770 74 41 72 67 73 20 65 76 65 6e 74 41 72 67 73 20  tArgs eventArgs 
37780 3d 20 28 44 61 74 61 52 65 63 65 69 76 65 64 45  = (DataReceivedE
37790 76 65 6e 74 41 72 67 73 29 76 61 6c 75 65 3b 0d  ventArgs)value;.
377a0 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
377b0 20 20 20 72 65 73 75 6c 74 20 3d 20 46 6f 72 44     result = ForD
377c0 69 73 70 6c 61 79 28 65 76 65 6e 74 41 72 67 73  isplay(eventArgs
377d0 2e 44 61 74 61 29 3b 20 2f 2a 20 52 45 43 55 52  .Data); /* RECUR
377e0 53 49 56 45 20 2a 2f 0d 0a 20 20 20 20 20 20 20  SIVE */..       
377f0 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20       }..        
37800 20 20 20 20 65 6c 73 65 20 69 66 20 28 74 79 70      else if (typ
37810 65 20 3d 3d 20 74 79 70 65 6f 66 28 4d 6f 63 6b  e == typeof(Mock
37820 52 65 67 69 73 74 72 79 4b 65 79 29 29 0d 0a 20  RegistryKey)).. 
37830 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 4d 6f                Mo
37850 63 6b 52 65 67 69 73 74 72 79 4b 65 79 20 6b 65  ckRegistryKey ke
37860 79 20 3d 20 28 4d 6f 63 6b 52 65 67 69 73 74 72  y = (MockRegistr
37870 79 4b 65 79 29 76 61 6c 75 65 3b 0d 0a 0d 0a 20  yKey)value;.... 
37880 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 72                 r
37890 65 73 75 6c 74 20 3d 20 46 6f 72 44 69 73 70 6c  esult = ForDispl
378a0 61 79 28 6b 65 79 2e 54 6f 53 74 72 69 6e 67 28  ay(key.ToString(
378b0 29 29 3b 20 2f 2a 20 52 45 43 55 52 53 49 56 45  )); /* RECURSIVE
378c0 20 2a 2f 0d 0a 20 20 20 20 20 20 20 20 20 20 20   */..           
378d0 20 7d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   }..            
378e0 65 6c 73 65 0d 0a 20 20 20 20 20 20 20 20 20 20  else..          
378f0 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20    {..           
37900 20 20 20 20 20 72 65 73 75 6c 74 20 3d 20 76 61       result = va
37910 6c 75 65 2e 54 6f 53 74 72 69 6e 67 28 29 3b 0d  lue.ToString();.
37920 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
37930 20 20 20 69 66 20 28 72 65 73 75 6c 74 2e 4c 65     if (result.Le
37940 6e 67 74 68 20 3d 3d 20 30 29 0d 0a 20 20 20 20  ngth == 0)..    
37950 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37960 72 65 74 75 72 6e 20 44 69 73 70 6c 61 79 45 6d  return DisplayEm
37970 70 74 79 3b 0d 0a 0d 0a 20 20 20 20 20 20 20 20  pty;....        
37980 20 20 20 20 20 20 20 20 69 66 20 28 74 79 70 65          if (type
37990 2e 49 73 53 75 62 63 6c 61 73 73 4f 66 28 74 79  .IsSubclassOf(ty
379a0 70 65 6f 66 28 45 78 63 65 70 74 69 6f 6e 29 29  peof(Exception))
379b0 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
379c0 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20     {..          
379d0 20 20 20 20 20 20 20 20 20 20 72 65 73 75 6c 74            result
379e0 20 3d 20 53 74 72 69 6e 67 2e 46 6f 72 6d 61 74   = String.Format
379f0 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  (..             
37a00 20 20 20 20 20 20 20 20 20 20 20 22 7b 30 7d 7b             "{0}{
37a10 31 7d 7b 30 7d 22 2c 20 45 6e 76 69 72 6f 6e 6d  1}{0}", Environm
37a20 65 6e 74 2e 4e 65 77 4c 69 6e 65 2c 20 72 65 73  ent.NewLine, res
37a30 75 6c 74 29 3b 0d 0a 20 20 20 20 20 20 20 20 20  ult);..         
37a40 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
37a50 20 20 20 20 20 20 20 20 20 20 65 6c 73 65 20 69            else i
37a60 66 20 28 21 74 79 70 65 2e 49 73 53 75 62 63 6c  f (!type.IsSubcl
37a70 61 73 73 4f 66 28 74 79 70 65 6f 66 28 56 61 6c  assOf(typeof(Val
37a80 75 65 54 79 70 65 29 29 29 0d 0a 20 20 20 20 20  ueType)))..     
37a90 20 20 20 20 20 20 20 20 20 20 20 7b 0d 0a 20 20             {..  
37aa0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37ab0 20 20 72 65 73 75 6c 74 20 3d 20 53 74 72 69 6e    result = Strin
37ac0 67 2e 46 6f 72 6d 61 74 28 22 5c 22 7b 30 7d 5c  g.Format("\"{0}\
37ad0 22 22 2c 20 72 65 73 75 6c 74 29 3b 0d 0a 20 20  "", result);..  
37ae0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
37af0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
37b00 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
37b10 74 75 72 6e 20 72 65 73 75 6c 74 3b 0d 0a 20 20  turn result;..  
37b20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20        }..       
37b30 20 23 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20   #endregion.... 
37b40 20 20 20 20 20 20 20 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 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37b80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a  //////////////..
37b90 0d 0a 20 20 20 20 20 20 20 20 23 72 65 67 69 6f  ..        #regio
37ba0 6e 20 41 73 73 65 6d 62 6c 79 20 41 74 74 72 69  n Assembly Attri
37bb0 62 75 74 65 20 48 61 6e 64 6c 69 6e 67 0d 0a 20  bute Handling.. 
37bc0 20 20 20 20 20 20 20 70 75 62 6c 69 63 20 73 74         public st
37bd0 61 74 69 63 20 73 74 72 69 6e 67 20 47 65 74 41  atic string GetA
37be0 73 73 65 6d 62 6c 79 43 6f 6e 66 69 67 75 72 61  ssemblyConfigura
37bf0 74 69 6f 6e 28 0d 0a 20 20 20 20 20 20 20 20 20  tion(..         
37c00 20 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65     Assembly asse
37c10 6d 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20  mbly..          
37c20 20 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a    )..        {..
37c30 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
37c40 61 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c  assembly != null
37c50 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b  )..            {
37c60 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
37c70 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20    try..         
37c80 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
37c90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66                if
37ca0 20 28 61 73 73 65 6d 62 6c 79 2e 49 73 44 65 66   (assembly.IsDef
37cb0 69 6e 65 64 28 0d 0a 20 20 20 20 20 20 20 20 20  ined(..         
37cc0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37cd0 20 20 20 74 79 70 65 6f 66 28 41 73 73 65 6d 62     typeof(Assemb
37ce0 6c 79 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 41  lyConfigurationA
37cf0 74 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73 65  ttribute), false
37d00 29 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ))..            
37d10 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20          {..     
37d20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37d30 20 20 20 41 73 73 65 6d 62 6c 79 43 6f 6e 66 69     AssemblyConfi
37d40 67 75 72 61 74 69 6f 6e 41 74 74 72 69 62 75 74  gurationAttribut
37d50 65 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 20  e configuration 
37d60 3d 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  =..             
37d70 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 28                 (
37d80 41 73 73 65 6d 62 6c 79 43 6f 6e 66 69 67 75 72  AssemblyConfigur
37d90 61 74 69 6f 6e 41 74 74 72 69 62 75 74 65 29 0d  ationAttribute).
37da0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37db0 20 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73               ass
37dc0 65 6d 62 6c 79 2e 47 65 74 43 75 73 74 6f 6d 41  embly.GetCustomA
37dd0 74 74 72 69 62 75 74 65 73 28 0d 0a 20 20 20 20  ttributes(..    
37de0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37df0 20 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65              type
37e00 6f 66 28 41 73 73 65 6d 62 6c 79 43 6f 6e 66 69  of(AssemblyConfi
37e10 67 75 72 61 74 69 6f 6e 41 74 74 72 69 62 75 74  gurationAttribut
37e20 65 29 2c 0d 0a 20 20 20 20 20 20 20 20 20 20 20  e),..           
37e30 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37e40 20 20 20 20 20 66 61 6c 73 65 29 5b 30 5d 3b 0d       false)[0];.
37e50 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  ...             
37e60 20 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72             retur
37e70 6e 20 63 6f 6e 66 69 67 75 72 61 74 69 6f 6e 2e  n configuration.
37e80 43 6f 6e 66 69 67 75 72 61 74 69 6f 6e 3b 0d 0a  Configuration;..
37e90 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
37ea0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 20      }..         
37eb0 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20 20         }..      
37ec0 20 20 20 20 20 20 20 20 20 20 63 61 74 63 68 0d            catch.
37ed0 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
37ee0 20 7b 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20   {..            
37ef0 20 20 20 20 20 20 20 20 2f 2f 20 64 6f 20 6e 6f          // do no
37f00 74 68 69 6e 67 2e 0d 0a 20 20 20 20 20 20 20 20  thing...        
37f10 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20 20 20          }..     
37f20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20 20         }....    
37f30 20 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 6e          return n
37f40 75 6c 6c 3b 0d 0a 20 20 20 20 20 20 20 20 7d 0d  ull;..        }.
37f50 0a 0d 0a 20 20 20 20 20 20 20 20 2f 2f 2f 2f 2f  ...        /////
37f60 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37f70 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37f80 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37f90 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
37fa0 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20 20 20 70 75  //....        pu
37fb0 62 6c 69 63 20 73 74 61 74 69 63 20 73 74 72 69  blic static stri
37fc0 6e 67 20 47 65 74 41 73 73 65 6d 62 6c 79 54 69  ng GetAssemblyTi
37fd0 74 6c 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20  tle(..          
37fe0 20 20 41 73 73 65 6d 62 6c 79 20 61 73 73 65 6d    Assembly assem
37ff0 62 6c 79 0d 0a 20 20 20 20 20 20 20 20 20 20 20  bly..           
38000 20 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20   )..        {.. 
38010 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28 61             if (a
38020 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c 29  ssembly != null)
38030 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 7b 0d  ..            {.
38040 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20  .               
38050 20 74 72 79 0d 0a 20 20 20 20 20 20 20 20 20 20   try..          
38060 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20        {..       
38070 20 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20               if 
38080 28 61 73 73 65 6d 62 6c 79 2e 49 73 44 65 66 69  (assembly.IsDefi
38090 6e 65 64 28 0d 0a 20 20 20 20 20 20 20 20 20 20  ned(..          
380a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
380b0 20 20 74 79 70 65 6f 66 28 41 73 73 65 6d 62 6c    typeof(Assembl
380c0 79 54 69 74 6c 65 41 74 74 72 69 62 75 74 65 29  yTitleAttribute)
380d0 2c 20 66 61 6c 73 65 29 29 0d 0a 20 20 20 20 20  , false))..     
380e0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7b                 {
380f0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
38100 20 20 20 20 20 20 20 20 20 20 41 73 73 65 6d 62            Assemb
38110 6c 79 54 69 74 6c 65 41 74 74 72 69 62 75 74 65  lyTitleAttribute
38120 20 74 69 74 6c 65 20 3d 0d 0a 20 20 20 20 20 20   title =..      
38130 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38140 20 20 20 20 20 20 28 41 73 73 65 6d 62 6c 79 54        (AssemblyT
38150 69 74 6c 65 41 74 74 72 69 62 75 74 65 29 0d 0a  itleAttribute)..
38160 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38170 20 20 20 20 20 20 20 20 20 20 20 20 61 73 73 65              asse
38180 6d 62 6c 79 2e 47 65 74 43 75 73 74 6f 6d 41 74  mbly.GetCustomAt
38190 74 72 69 62 75 74 65 73 28 0d 0a 20 20 20 20 20  tributes(..     
381a0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
381b0 20 20 20 20 20 20 20 20 20 20 20 74 79 70 65 6f             typeo
381c0 66 28 41 73 73 65 6d 62 6c 79 54 69 74 6c 65 41  f(AssemblyTitleA
381d0 74 74 72 69 62 75 74 65 29 2c 20 66 61 6c 73 65  ttribute), false
381e0 29 5b 30 5d 3b 0d 0a 0d 0a 20 20 20 20 20 20 20  )[0];....       
381f0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38200 20 72 65 74 75 72 6e 20 74 69 74 6c 65 2e 54 69   return title.Ti
38210 74 6c 65 3b 0d 0a 20 20 20 20 20 20 20 20 20 20  tle;..          
38220 20 20 20 20 20 20 20 20 20 20 7d 0d 0a 20 20 20            }..   
38230 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a               }..
38240 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38250 63 61 74 63 68 0d 0a 20 20 20 20 20 20 20 20 20  catch..         
38260 20 20 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20         {..      
38270 20 20 20 20 20 20 20 20 20 20 20 20 20 20 2f 2f                //
38280 20 64 6f 20 6e 6f 74 68 69 6e 67 2e 0d 0a 20 20   do nothing...  
38290 20 20 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d                }.
382a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 7d 0d 0a  .            }..
382b0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 72 65  ..            re
382c0 74 75 72 6e 20 6e 75 6c 6c 3b 0d 0a 20 20 20 20  turn null;..    
382d0 20 20 20 20 7d 0d 0a 20 20 20 20 20 20 20 20 23      }..        #
382e0 65 6e 64 72 65 67 69 6f 6e 0d 0a 0d 0a 20 20 20  endregion....   
382f0 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
38300 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38310 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38320 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38330 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a  ////////////....
38340 20 20 20 20 20 20 20 20 23 72 65 67 69 6f 6e 20          #region 
38350 2e 4e 45 54 20 46 72 61 6d 65 77 6f 72 6b 20 48  .NET Framework H
38360 61 6e 64 6c 69 6e 67 0d 0a 20 20 20 20 20 20 20  andling..       
38370 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63 20   private static 
38380 73 74 72 69 6e 67 20 47 65 74 46 72 61 6d 65 77  string GetFramew
38390 6f 72 6b 52 6f 6f 74 4b 65 79 4e 61 6d 65 28 0d  orkRootKeyName(.
383a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f  .            boo
383b0 6c 20 70 65 72 55 73 65 72 2c 0d 0a 20 20 20 20  l perUser,..    
383c0 20 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 6f 77          bool wow
383d0 36 34 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  64..            
383e0 29 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20  )..        {..  
383f0 20 20 20 20 20 20 20 20 20 20 72 65 74 75 72 6e            return
38400 20 52 65 67 69 73 74 72 79 48 65 6c 70 65 72 2e   RegistryHelper.
38410 4a 6f 69 6e 4b 65 79 4e 61 6d 65 73 28 0d 0a 20  JoinKeyNames(.. 
38420 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 47                 G
38430 65 74 52 6f 6f 74 4b 65 79 4e 61 6d 65 28 70 65  etRootKeyName(pe
38440 72 55 73 65 72 2c 20 77 6f 77 36 34 29 2c 0d 0a  rUser, wow64),..
38450 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38460 22 4d 69 63 72 6f 73 6f 66 74 22 2c 20 22 2e 4e  "Microsoft", ".N
38470 45 54 46 72 61 6d 65 77 6f 72 6b 22 29 3b 0d 0a  ETFramework");..
38480 20 20 20 20 20 20 20 20 7d 0d 0a 0d 0a 20 20 20          }....   
38490 20 20 20 20 20 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f       ///////////
384a0 2f 2f 2f 2f 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 0d 0a 0d 0a  ////////////....
384e0 20 20 20 20 20 20 20 20 70 72 69 76 61 74 65 20          private 
384f0 73 74 61 74 69 63 20 73 74 72 69 6e 67 20 47 65  static string Ge
38500 74 46 72 61 6d 65 77 6f 72 6b 4b 65 79 4e 61 6d  tFrameworkKeyNam
38510 65 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  e(..            
38520 73 74 72 69 6e 67 20 66 72 61 6d 65 77 6f 72 6b  string framework
38530 4e 61 6d 65 2c 0d 0a 20 20 20 20 20 20 20 20 20  Name,..         
38540 20 20 20 56 65 72 73 69 6f 6e 20 66 72 61 6d 65     Version frame
38550 77 6f 72 6b 56 65 72 73 69 6f 6e 2c 0d 0a 20 20  workVersion,..  
38560 20 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67            string
38570 20 70 6c 61 74 66 6f 72 6d 4e 61 6d 65 2c 0d 0a   platformName,..
38580 20 20 20 20 20 20 20 20 20 20 20 20 62 6f 6f 6c              bool
38590 20 70 65 72 55 73 65 72 2c 0d 0a 20 20 20 20 20   perUser,..     
385a0 20 20 20 20 20 20 20 62 6f 6f 6c 20 77 6f 77 36         bool wow6
385b0 34 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 29  4..            )
385c0 0d 0a 20 20 20 20 20 20 20 20 7b 0d 0a 20 20 20  ..        {..   
385d0 20 20 20 20 20 20 20 20 20 73 74 72 69 6e 67 20           string 
385e0 66 72 61 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e  frameworkVersion
385f0 53 74 72 69 6e 67 20 3d 20 28 66 72 61 6d 65 77  String = (framew
38600 6f 72 6b 56 65 72 73 69 6f 6e 20 21 3d 20 6e 75  orkVersion != nu
38610 6c 6c 29 20 3f 0d 0a 20 20 20 20 20 20 20 20 20  ll) ?..         
38620 20 20 20 20 20 20 20 22 76 22 20 2b 20 66 72 61         "v" + fra
38630 6d 65 77 6f 72 6b 56 65 72 73 69 6f 6e 2e 54 6f  meworkVersion.To
38640 53 74 72 69 6e 67 28 29 20 3a 20 6e 75 6c 6c 3b  String() : null;
38650 0d 0a 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20  ....            
38660 72 65 74 75 72 6e 20 52 65 67 69 73 74 72 79 48  return RegistryH
38670 65 6c 70 65 72 2e 4a 6f 69 6e 4b 65 79 4e 61 6d  elper.JoinKeyNam
38680 65 73 28 0d 0a 20 20 20 20 20 20 20 20 20 20 20  es(..           
38690 20 20 20 20 20 47 65 74 52 6f 6f 74 4b 65 79 4e       GetRootKeyN
386a0 61 6d 65 28 70 65 72 55 73 65 72 2c 20 77 6f 77  ame(perUser, wow
386b0 36 34 29 2c 20 22 4d 69 63 72 6f 73 6f 66 74 22  64), "Microsoft"
386c0 2c 20 66 72 61 6d 65 77 6f 72 6b 4e 61 6d 65 2c  , frameworkName,
386d0 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20 20  ..              
386e0 20 20 66 72 61 6d 65 77 6f 72 6b 56 65 72 73 69    frameworkVersi
386f0 6f 6e 53 74 72 69 6e 67 2c 20 70 6c 61 74 66 6f  onString, platfo
38700 72 6d 4e 61 6d 65 29 3b 0d 0a 20 20 20 20 20 20  rmName);..      
38710 20 20 7d 0d 0a 0d 0a 20 20 20 20 20 20 20 20 2f    }....        /
38720 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38730 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38740 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38750 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f 2f  ////////////////
38760 2f 2f 2f 2f 2f 2f 0d 0a 0d 0a 20 20 20 20 20 20  //////....      
38770 20 20 70 72 69 76 61 74 65 20 73 74 61 74 69 63    private static
38780 20 73 74 72 69 6e 67 20 47 65 74 49 6d 61 67 65   string GetImage
38790 52 75 6e 74 69 6d 65 56 65 72 73 69 6f 6e 28 0d  RuntimeVersion(.
387a0 0a 20 20 20 20 20 20 20 20 20 20 20 20 73 74 72  .            str
387b0 69 6e 67 20 66 69 6c 65 4e 61 6d 65 0d 0a 20 20  ing fileName..  
387c0 20 20 20 20 20 20 20 20 20 20 29 0d 0a 20 20 20            )..   
387d0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
387e0 20 20 20 20 74 72 79 0d 0a 20 20 20 20 20 20 20      try..       
387f0 20 20 20 20 20 7b 0d 0a 20 20 20 20 20 20 20 20       {..        
38800 20 20 20 20 20 20 20 20 41 73 73 65 6d 62 6c 79          Assembly
38810 20 61 73 73 65 6d 62 6c 79 20 3d 20 41 73 73 65   assembly = Asse
38820 6d 62 6c 79 2e 52 65 66 6c 65 63 74 69 6f 6e 4f  mbly.ReflectionO
38830 6e 6c 79 4c 6f 61 64 46 72 6f 6d 28 0d 0a 20 20  nlyLoadFrom(..  
38840 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20                  
38850 20 20 66 69 6c 65 4e 61 6d 65 29 3b 20 2f 2a 20    fileName); /* 
38860 74 68 72 6f 77 20 2a 2f 0d 0a 0d 0a 20 20 20 20  throw */....    
38870 20 20 20 20 20 20 20 20 20 20 20 20 69 66 20 28              if (
38880 61 73 73 65 6d 62 6c 79 20 21 3d 20 6e 75 6c 6c  assembly != null
38890 29 0d 0a 20 20 20 20 20 20 20 20 20 20 20 20 20  )..             
388a0 20 20 20 20 20 20 20 72 65 74 75 72 6e 20 61 73         return as
388b0 73 65 6d