【MySQL】MySQL gap lock产生时机
1)提出问题:我们通常说在Repeate read下面,会有next-key lock(LOCK_ORDINARY)对应值0,而READ COMMITTED隔离级别下只会有记录锁LOCK_REC_NOT_GAP(对应值1024),那么什么时候会有gap lock(LOCK_GAP)对应值512?
2)官方的一个死锁例子(之所以会选这个例子,是因为这个例子非常典型,为了更好的效果,我将隔离级别设置为READ COMMITTED):
创建表并插入数据
CREATE TABLE `locktest6` ( `id` int(11) NOT NULL, `a` int(11) NOT NULL, `b` varchar(30) NOT NULL DEFAULT 'xddd', PRIMARY KEY (`id`), UNIQUE KEY `a` (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `locktest6` VALUES (3,2,'xddd'),(9,20,'ddd'),(12,13,'ddd'),(19,7,'cccc'),(20,5,'abcd'),(21,4,'fff');
开启三个会话,会话的顺序是(1->2->3)
session 1:
![【MySQL】MySQL gap lock产生时机 【MySQL】MySQL gap lock产生时机](/default/index/img?u=ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFlVUFBQUJmQ0FJQUFBQlpkRWlTQUFBTGswbEVRVlI0bk8yZDIySERJQXhGdlJQck1BeTdNQXVqZUk5KytNVkR3c0pPbXpnOTU2dE5qQkV5WEdNWmxHa0NBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUErQ1pjU1BOQ0N1NWErV3NGR3l1aXYzc1dBSUIvZ0k5djFXc0FBRENDWGdNQXZKQ1VVa3J6bkdLSUtRdGdsRnE3L2VlV2crWjVUdkg0ZGcxL3BCaExnUzdQNFVKTTBUdUxETHVRVWxqdGlibHc3L1ZuSDB1MTd3R1pJeDZTbmZOcW1BWUE0SzJrT2ZySmhUU240SEtGemNYV3h6bjZOU0M4S2FJUDY1OUxtTmhOay9OeDd1ajFVbWJWWU4vVlN4ZlNmSnd6TnlNdEpaMlBhMnhhcjcyS1h4L25iQUxiNjFlam5nTUErRnVXeU1PaHlLVTZ1dld2WFJ0VExiVzUrUG5lL0RvcnN1aTJIdk9venJuODJjaHZDcTVYdTZEWHlwSG9OUUE4QWxXdk4xWExoYzc1RUZOS2VVaEJsbmpwM3gyTFhyZm5QQmFkYkN3UEJscnRzc0IzRFFNQStHUjB2VjcrOCtLcU9CZHlHVFhPcjRmaUlkTDh1aFhab2ZrMWVnMEFqNmFqMTl1VWRwOWRoMjFvTXkzVUk4aTFZSTY4YjFUajErdmZ6c2N3R3IvVzlKcDRDQUE4Z3A1ZU4wcVdydy94cmpoS1dCOHlUWDQ5ZkZBTXo5ZUhaUFVMdGZ2WUJFNU80amJJTlFBOG5NRXRndStOTSt5UmsvRnlSRWNBNE9HTTd1aCtoL0s1ZFYyaFEzWUI0Si9pNHhKMUdDenpCc25jQXlLb05RQUFBQUFBQUFEQU05aDNBclZMYy80cTFZa3hrUFhZUEZ3K0RrYjJBRDRZTHkzVGUxL3R4VXFQYTZ2dHNzeFFiMmpSRU9LNmxxdUxYYVpwdXFDck5yMXVqckk3V1R6eUQ2L1JZKzgwQUJWYnNxY3AzN2I0MXRvUHNXbzJ3ZGpJTWtQOWZZc0dFUmZoNFB1dGhkL1I2L29XWW5leWVPVGZYaU1FRzc0RExZK1N2THRFeW1nNnVaQzJmS3pyRTd5Y2p0VmFlNVlQOE5JZ0s1VGxiS1MyeGgrdFRFY093dW9jZTNJVktjR3NZdE9jVjdFMVBrUE1rM0xzNkpROVgwMVJwYTFDYW5GOW81UGNnT0lZdTVQRkl3ZXVrZUprbTBNMDh3RWVTYnZaVDgrakpHVTBuZFp4WCs5c2JOS3gybXYzY1k0aHBOSGxoQnZWNkQ4SkxiVEdGM3ZjbDIvcWM2eUhpQWxtejYxcnNybWV6NjlGeng4ZlRzNkhZc09wZEh1eHA2SzFtVzEwc25qa1VISEp5VU1PRWV3SGVDUjJ2VllUY2toam9VM0hhcTk5V2Z1ZDBzVnQ0b3RsKyt6Y29OZUNGdWYyRkxQQzdKeGlndGxUaE93bFozcDlta3UyS1gyZVNhV1hLc3QyVHFPVHhTT0hpcmRPSG5USTJrYjBHaDdQbUY2TFQ5dmk0NnlRanRWYSt6YTBMaWIyR0o1ZjEyL1I1TGFuNEZ5SWFkV1o5ZU0yd2F4YVRUeThkMFd2RzgvclFRUXhEVXl2dUUydjN6Ty9GcDA4NkJEQmZvQkhZbzlmcStOQi9zTHA2VmhQYWkvZk40NlBzdUg0ZGEzWGJUYlhOVVlUZy9NeGh0REl5OGs3cy95aC90cjh1ajM1MFB5Nlg5d1MzSDFmL0RvenVkc1Z1NUpNL0JxK0EzRjl5Q0hTZVhCVHltZzZxY1BObGVsWTdiVm5ZOWsxR1FJdFVaS1J0UWV0OFVMOGVndHpSNysrMGx1akpGS0NXYTJWMFRmK1ZFdks4ZXZhODUzNDlWd0cwd2RUMFlxWTE0YzAxK2pXK2hERnlVTU9NZDhSQUI3QXZnSTZYNDZ3dm1jUHhXZ1NNNnBxZzhFbXJpZnJyOHRWSXRZSjk4alM0TmI0ZW4zSVpzZitudTVRY2V2SzlhMlJsVCt0ZXExNlhtN203dEoyZlVnL0ZXMi9DZFZSU3UzQ1piKzEvbHB4OG9oRGtHdjRQaTZ1ZGxaNWZjeVFwOXAzOGxqVlkzOGpmQ1V1eE5kMWJGN3hBQUI4UGxmU3NRSUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBd0Mrei9WYnZ6VitEL01EZkUvdDFrKzY2N3JFL3NUaTlyTnZvWjMrc1oxcjRSVXA0TlEvNWNkemZHTWg0ejNuWmRYckZOMDBTZjBiZWg3VC9Hdm5sTTlmOFRyZXB6dXA4OXV2cTIrZmloeUw3cmVVNHA0OXp4WWxQN0JkRTlQMVgzWDdnQTBDdkwvTUV2WFloN1VZNkgxN213bC9wTmo0Vzh1bERESDQzZlgxbUVqL3NjYy9aOS9RYXdmNmZwSlJTbXVjVWw2bkYxZ1hLUWJQOTU4VDV4enJaU0RHV0k2MDhod3N4UmU5c1BXeWZ2eHhqeG9XVXdsYi9jVjdacE9Qanl0Q3RuY3M1NmpsUmI0UmFUZExPdVZsME1uT2J0cE0wNmlnVno1cTVLTTB4aWpNNVZac3BlRW53cDF5OFVrQnpZN1p5eDFtcmx0WXo0VXlYaXE5c3htdit6TGdzaCtveHBsdE9YVnAxaUZMUFE2WkQ4RkxTSFAwK3RyTXVrUGVHZFlpNWtPWnRHRGdmNHFFTDBidHBjajdPSGIwK0hqZlRQbzNwVXdhTFhVanpVbEgyaFd6U1V2TnlxSThwazh3a3hFWkhKaW9HaytSekZsNDZyNjV4blZqOGFPYmtmTmpzU01GTkxpUmhPaXdKWStrbHhaOUM4ZUpldGQ4dTFOYnN2bWxsdm40bllOUHJVZVBWbTB2UlE3b2Z0a1hsbm5QM0pZZXh2SERZMmlHdlZ3MmZ6dExqRGtVV3hzWTJ4QlpWcndabTNtdDhiMzZkRlZsMCsxUWxXM0ZzS2pvMXFXaVRQQkR1NmJYY2RrSGQ4aU5QaDJTcldXMXhzVFV1cEJSakVnTEtQWk55blcvOXFSYWZONVhPUXlOS2M5YXFwTWIzdTQzWUoyOGF2emRBZUFJVDUrY3ljcys1LzA3YU9IT1diMzNvOVZlajZ2WFdhL0x1NTN5SWFYbkZsR21nL0xqNkMzb3RWU1NiVkQ3QWIyZFJ4OWQxdlZiYUxzNUdaUytKR0RWTGZJeWY1eFNGWVNzS2J1c2x3WituTFpwT2IwSlpFS1NPRHpVUkFLdGVqeG5mbVY4TE54dnh3N2FvZEFWdXZIcFFIS0xYampiL08zUzlYdjZUWDd5NElNMTBUdlQ2ZGp5a0szbUZTWEozZjZ0ZS85MzhlcjJnMVpjbmdpczB0ZHVpeWNjQnZWNitkOGRSZWV6aTJ2eDZ4UGdURVJXTk4xd213WXJMSXRweGlBTHg2LzlJUjYrM1dVdzJJd3JaQTNBKzhzVDRkUzF1QSs4YnhmTGl1SlZNS3JxeTh6SDQ5aFJWTmNhT1A2RFhjMndGZS9XUzZWMVVNZXhINDlkVHE5aHRNd1V2S2Y1VWlpZHJQR1NwTE1aOGRwMjJ5SCsvMitRWE96OXl5UGhhZmJPVklJZng0b2ZIZjZaSW1ocHhzNnp1MHh5aUZwQmpQTXk1djVtZVhqZlgzNGt2bUp5eVBtU2EvSHI0YUJlU1ZpUm84UkQ1blpmNHNUWXIyOHpzMlRsZ2tuek9vZlVocmV1RzE0Y3NKcGVUekxxWmdwY1VmNHJGOTA5TzNqY2VEc3cxYzE5WEUwNjZ6UmI4cUk0Y01yNitueDRycmVlMCswNzZjTGU5N0J0bGQxQWVNUFhpc29OVWh3aG9zUmprK2g4eitIVEhFeHA4TENOaHI0cWIvZm8zaG9XNHY1SHg5NzhaRGNiUlh3QUEvaDVmNStGdHh1ZzFBQUFBQUFBQUFBQ1VIRXNkaEowcmZ4SkxNc2FzYnJ5ZGV5OGtHb1d2eDZ2TG9ONVNlN0ZZOXNvYXBXTmI4V2RwenRXTkdUckR1bnB4TDBhemNMQmprWENrdmZodEhudW5BYkNRYlEyb3Q0VzlxZllpM2NSMWd6NXU1R283RWo5T3IrdGJTSlpjNmFTSGlFZmFpNytDajd2c0FLOURTNTBqN3dTeDVTbXRWS0dqRVdMdFdUN0FPeVBQTm5CYjQ5dk5LZTJaZXJJbkpjYXNFbDZJV1RDTy9YcXlrNnNwcXJTRFJ5MnU3Mm1TRzFEdC9WRTJkVW9sMnlQdHhZc05MOFdXUjR0RE5QTUJ2b2MyZThPU1lGWFNheUdKNVRTdFlsQnZVU3UyVGFzVFNMRjJIK2NZZ3BSa2JnaXpYb3ZaZ1lyTjMzVVRiSk5pZVZmNXlVR3lrNFd0NTBvYnBlSjZ6Z0NqMmNaVUllS1JROFhOMlhFMWh3ajJBM3dQZHIxV2syZElBOFRuVDhQNjZOSDBlcDVUU2pjMzE5cjFXdFhpemZac3F0aE9HWFU2YVp1MEQ3WEhIYVcrWG1JcHNiaGg4aWxuaHRxZmRrNzF1anB5cVBoc3k0N2JsK1JiYndRQVBwa3h2Ullmd2JWY0J1Y2pTNTlmcjlrMzd3dzhlenlrZXJVbXR6MEY1MEpNcS9pWUh1cXJONTVXdlc2Y3JOY25abnpwRmJmcDlYdm0xNU01TzI3M0FqQy9odS9GSHI5V0I0bjhoZFBUc1o3VVhyNXZ2RHowcnV0MU03K2UxaGhORE03SEdFSkhjL0tIK212ejY5Ym9vZmwxdjdnbHVQdSsrSFZtOG1tYWIydU1EZUNiRU5lSG1KTllybWVRQm9ncjA3SGFhODhHdUdzeUJOcWpKQmYxV29wZmIySHU2TnRFYzBLRGpKbEM1UTlGSjNmaTErZFpVZ2ZqMXdQclE1ckxjV3Q5eUVoM1hEMSt6Zm9RK0hLeXhKakhHb1gxNWZ0cEVrdDloQmpGdGIvK3Vsd2xZcHh3eStrdVJTVGpwZVNsdTRLY0xsdFJFMlBhOUZwMXNyd2N3cFFsZGJ1Y3R2VWg5dlhYd2hXK3RmNTZMRHV1WmhKeURmK0JXNnVkQlY0ZlNPUlI5NDk0ck9xeHZ4SCtEeTdFMS9WMjN2c0FBSHcrVjlLeEFnQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQWZCRS9aL2NGclNhVmNSa0FBQUFBU1VWT1JLNUNZSUlB)
session 2:
![【MySQL】MySQL gap lock产生时机 【MySQL】MySQL gap lock产生时机](/default/index/img?u=ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFpb0FBQUJTQ0FJQUFBRDF2R2hoQUFBSmEwbEVRVlI0bk8zZDJZR3NJQkJBVVhJaUhZSWhGMktwVU1qamZTaktVaWpZaSsyOGU3NW11bDJRVmtvQndaaU1pTGZHdUJDRE04YjY1ZCtWOVJKampNR2xmNE4zZHZ0bS9YajUweHBqWFlpeFhqMnRhNHoxUVlLeis5Y0FnUC9ZVWZoWjRzOGVRWXoxUVdLTU1VWUp6aFpMeFNnaGhDTDhHT1BXeGJOTkFBQndwbngrT2VYcThBTUF3THpKNkVQNEFRQzh5b1dsaW0xeUhjSVBBQUFBQUFBQThFbHJWN2dZcVlzREFId2RUVUVBZ0JzUWZnQUFQU0lpRXFPRTVZM1NGQy9LMEpIK3kxODc5YWV2blpiYllOUURBTUJPWW5ER2VvbmliUjR3OHRpeGo0a1FVOVN4enE5LzlnZmRxWjkrckZ0RDNEWjJEd0RnZjlVZGRHY1BIdXVYYTVDcUlrZithcW83ZXZySlZsbkNrRkF6QndEL3IvNlliMnYweU9PTGRUNklTTjZuVFk5WTJyOGJ3ZzhBNEdESVVldEZ2Rk1IM3JFK2haYUpweDhxM3dBQUNSTXVBQUJ1d0lRTEFJQmZ3NFFMQUlEdlk4SUZBTUNYTWVFQ0FBQUFBQUFBOElNK011RkMzU3Z2OGxib2h3Y0FmOXQ3bTRMZUUzNEFBSDhlNFFjQTBQT1lDUmVzRi9IYnFEM0Z1N0Zyb3JLUHRTUnRWWUw1U0F6Yk5wbVpGUUMrNmpFVExxd2pNS3c3S29jNWRkWVlZMTJRZldodVBVbk5RRUJwbTAyalVEM2dBd0RnclI0ejRVSzFvK1hQSnByVVkzUTNJYkFKUDUwbENUOEE4RkdQbVhCQjNkSGV4eTVabnVWNlNkTGoxV0ZxQVFDZjhKZ0pGM3BQUDIzTW1IcjZJZndBd0MwZU0rSENVZHZQK3JkMXdjKzIvZlRDRDVWdkFQQlJqNWx3NGJ6blc1WW9KVWt1TkxWMEp6V0hSQjhBdU1uekoxellxdW5tMS91MVF3R0EvOFpqSjF5d2E2OXcrek1wQWdDTWVmaUVDMXZ0MjQra0J3QUFBQUFBQU1BTjBydXpiYWZEYjQxRU4xaHIrdGhSWDEyWXJFWUc4QzFPNjA5OTM5Nkw3bXJYZWtCbjQ1RGVjRVJUMU01NVYzdnNHV011aElteDhOTXNOWjdKNnBKZi9JMGVHemlCdnkyTk4ycnl3UXh1M2Z0ZTlqYXZqWTdKeGlIOS9oRk5VcnNYdmpZcjNtZkNUeDBSeHpOWlhmSzd2eEh4Qi9oQnZWRTc5ZmN4dGRrTmpQV1NKbXhZcTR2MCtScEc5NTZOc0gycHpDZ0t5ck9DcDAzOGZwU3lqK3BkYldNYkVFK2JnYUtUcHBqdkloMjhSaDRHYmgvU1FjLzU2Z0ZDZTdtMnUzci9mV0g5QUlwbHhqTlpYWExpTitwazhsaUc5SklQNEg3dDIvNzlVVHUxMlEzTVdvelY0eDAwOHpXTTc5MkZHTHlYMlg3ZlNWV1luZFJqdFlrdnh1eFp2cW0zc1M2aXprQnhucnBtWm9menB4ODE1L2NQalhXK0dJWkNpNWJqMDFLTUpYc3drOVVscDFiWE1ua3FRNVQwQTdqZmVQanBqcGVtWGRydGZBM2plMS9lT1JLNU9Pek5rckx0MldrZy9DaWhKVTlQY2MrZWJWT2RnZUtVTXJqY1dmZzVuVmVpV2Z0OG9MdWpnVm5IdGptWXllcVNVNnUzbVR5Wkllc3hFbjZBM3pJWGZ0U3FIYlh1UkptdllYVHZxYVM0T083YTlOTlAzYUN1SDd0NGEzMlF0ZGhjUDI1bm9PanVKdXk1ZHlYOE5EbmZyN0ZTaCs0N1duMHMvTnp6OUtObThtU0dLT2tIY0wveHRwL3U1YTEvWWZ2ek5aenN2ZXg2TUY5b1RMZjkxT0dubmRsaHJSQU0zcm9Rdkc5S3k1UG04N3dHNmRyVFQ3dnhxYWVmNDlWSEdrYnVhL3ZKa254NEtoNkdHTnArZ0IrazluemJZMDdlTUtETmJtQzZwWWN0NTJzWTMzdFdOTmxtek8yUktybVpYbFZ0NHBXMm45UkVGTnphdXI5V3lXa3pVUFNPTXJnbVA3dHI2bTAvZGM0ZnRQM0VzaUZxY2xvSzFYRFB0K1kzZXFubld5ZVRwekprT01BQitMYnR6WnU4bzlYYWc4Z1hoWU02NVVMdjJoN0xGU2Z2L1pUOTMwWWZoM1plU1drVFgvZDhTK25ZbXV6M29EVDZ4bFE2eUNvL1I4TlBOK2Yxdzl5eXRPMzVkand0eGZFaFZFdDE5cTc4N0MrOTk5UEo1SmtNSWZvQVArN2lXelpkNzY5dnB3cmxUbzh0eEJuMUFQaDkxb2YzWGFlMDlnSUF2dXpLZkEwQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBL2h6ckpTN0UyOWMyODJQenBYNDhTYTltbmZYeVVwN2Y2VTJuVFgvcnY1d3prOGx6Z2FtRWdRTXVmS1FjZWJkUGxFdXZidk55MXZWMy9HS1N0Tld0ODdKRWpIZVdoWjg1YmNxdDdwRXVDM2ZxaDdwdDBYMGhGMkxsSkUvS0hEMzZlZFM4Lysxb0N0eU04SFBaRThLUDliSWwwanIvdGl6OHlHbmpRaEVOMU15WXpxSFhNdnUxOEVQOHdSOGdJaUl4U3ZCQnNydTVzZ3hJLzlsbG9SaWpoT1pXVWtJb0M0NzZoak5JY0hic2d0bnVMdmN5dzNvUm4vYS9iMWRQMHY1eGxkQjBuTXMyNmp2V28vdlYwU1QxdHBsU1ZDU3pweTJDOWRXenczUjJTMUw2SzIyamU1aEtMaW41cWE5ZUZlakRCNVBXMjdkYUhXbDE3SGt4VzN3MWxuZzlQejhjZm9ZaXFCSisxbXV3UGtQMC9Uems3Zzdva3hqY1ZsUmxaM1IrY3E4bGh2VVMwNVZoblE5N01SZWNOY2E2RUEvQ3o3TE9lbm01a2N1bWJHaXhYdUt5byt3TFBVbkxucGRGWFpBc0FvaFNwekpUNmd3a1NkOW1rVXZudTFPS1MyWDEvVENOZFQ2bFE3dzExb3Z5c0tLVjgyVXVkZkpUV2IwSXZWdjA2eDdObGpkdDFLcmIwOGJDejJ6aXk3M205V3hiMnRVUGozVE9uRXNOaFB1NU5IYUdxTHRaTnpLNWErQXV5d1cwQnhqbFVrOGx4aEtrcXNzeXZ3amMwZE5QdHNvU2hrNEwvYmFzYjNaMG1xVGltUFJ5NGJYd294KzdVbGpuUzU2V0VHMFIzSzZ1SG8zMUlpR0kwaGh6bEtROGJMWDUyVjA5NWdYM1VSN3VoN3dkL1BGcG81NlRMeWErK002RnRzaFdQeHpjN0xYdUtiTm5pTG9ZNFFmUDBnMC82VnJQcnd2cmZKQ2x0VGtyMHZXNmtRK0VIMjFIZXBMSzJxSzBsVzV4Y1QzOGRJNWRmVmJRYzBrMVdBU3JGVWd4U2xCS0lUVit0TG1rNU9mcEVablRFak9yY2Fzckk1djZ0OUh3TTVmNG8rU3BpUitJQWVvdmNMRk9iUFlNdVJybWdCL1NEei9MZjY3enhLRGRoNjZFbjVjcjN3NnZ6eUpKK3RWN2EvajUzdFBQK29OV1g1N0VEK1ZRRDQvSXVEQVJmcGJ2N2I1VVhsRjI3ZWxuSnZFbkJmb2J3OC9sbURELzlFUGJEeDd2SVB5a2U4enNmdFZudFMxNVFhSzIvZFJsOVVUWEEzVjl0UmpTa2xSY21kWUY3OXBOVkxzWnZJNG53azhNYmZ3WnJ0bXZTN0hadGgvVEJxRDJNSlZjNnVSblozVVpyWHhiZGhaQy91d2pxZFhzK0xUSmYreDh5YW5FMXlXNjI1ZmM2OW5VRC9ja0RWWGJkcXQzUjdwaHo3WDlhQ2N6bFc5NGxxUHcwNXpPVm0xcnRwMmViOGE0ZGZIWkswTHJhOVdyZk5PYnY5V1BlL2ZNS1prbkZUU2pTZEszT2RYenJjMjY2WjV2UzVMTFI0RDZNSlZjNnVTbnV2cjJ5VWhMdlF0bEJxZVZ4ZnVUMHliVnRGVkxUaVcrdmozWTNsaksxOVkrM05KZW5odmw2ZEI1L08rdjNySUhQZCs2eXlzVmYwUWYvQldUVlFsVUIrQm56ZFN4Vmw0OHJ6OXhXYWlqSG5EOTRRK1pyY2ptOUFjQXZNaUZPRDJXQ3VFSEFBQUFBQUFBLzd0L1FVUXBHeHpldXVrQUFBQUFTVVZPUks1Q1lJSUE=)
session 3
vps0j6Ubv6D+QXrJTtiqIMkzvvLOmbuQt651k27vMt4lNCrd+xLt83Xp+bzJ7djabpJWJ924oSC27u4ysxRwISmPsmgl4WL6ITNvVfSt1xmv9GX2GNhhtTQpUqi5zNfhNkkw9J1kmkZvgw731wdBItvzq6Trh2mFRxHyNH6Jf08kiUrfIfJvYpHC7fJpFU479loVNhUm4TLyXWgXvqU8v13ecg9wAspmgl5T+BJdH97CCHyIURSmQ6TuHOh2vNV6V5Zq8FArKyNn4EgV8m6XaUVfe2yslchP8nBBlmglgzsxTzzSmwVS3wI96XlRPKZowZ1DWpKhNeILt03HcdqB6WvoqyK4MUDfJyBrcw8p+iLXJqPHFvIxyTO40PqobGlSlhrjYbTK+4Sp8S6SOv0pUHUcJDdvSYF5cx1FF2KTYEbCkSNHm3XYdV9oOV6+4lyCVWga9prfJyJr8X7g5Bc6U1M8kXCu1Ot5mPDIP3n4qfeOgD6D5tbS7u+8wnIschq7j439WWcMqWTSv6lfJSiHOzJkWeJyO3249Pn2hyYcFIQZNzWcQbcsYbN3grFnPCn0g29bjLcajAbNXxLEVm8W1/UL6x8lKRsfnVU+wggLpJXX/eCp6De854fVwPsOMl0pG1sxzcOWEaNDxwUkhn3qp6h2YNKtb/ePdDTKytmUMtm5wLlyNg6S7uO3rlx2e2WS8uM+A9wfKwaW4Ko+c6rmrcHc0+sfRYKZf5dWS03ExLnCArVHiVUCi1EpQhITmV8Hv2pT4YDxPa3JjNpiEy2yKVzlHRtamjMHWxR0Mku4qbZ+dKMmZTcbH3w+MwMkEL8mnGwvz6yr36Hp/O45Xwedinw5lnAgaH/b4pEfulnYH9MLOcX2NaQH3c3L+EUSrz47jiBBC7gfrhubt1tRxQgghhBBCCCGEkAdmx/uundxFrtE1Vc4Sa7KpN7btW9len84Gb95xY6DEg2/uuf2oe0j+D7DpdCsfGLTeAAAAAElFTkSuQmCCAA==">
实验现象,这里session2、session3会阻塞(这里读者可以自己实验)
现象分析:
我们来看阻塞时的锁获取与等待情况
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">
这里唯一键a=17的二级索引加了LOCK_X|LOCK_REC_NOT_GAP|LOCK_REC锁,其次这条记录上面还有两把锁(LOCK_S|LOCK_ORDINARY|LOCK_WAITTING)在等待,分别是session2与session3的
这里的原因是:
session 1的insert 本来不加锁(是隐式锁,隐式锁是一种延迟加锁的策略);
当session插入a=17的记录时,发现与session1重复,这时session2会给session1加锁,锁为LOCK_X|LOCK_REC_NOT_GAP|LOCK_REC,同时把自己置为等待状态LOCK_S|LOCK_ORDINARY|LOCK_WAITTING,注意,这里为什么自己(session2)等待的时候是LOCK_S而不是LOCK_X呢,其实是为了提高并发;
session 3处于等待是因为session1 a=17的记录已经被session2加上了LOCK_X|LOCK_REC_NOT_GAP|LOCK_REC锁,而session3的a=17与session1的a=17重复,为了检测唯一性,也会将自己置为等待状态,锁为LOCK_S|LOCK_ORDINARY|LOCK_WAITTING
回滚session1,session3会成为死锁牺牲品,session2插入成功
session2
![【MySQL】MySQL gap lock产生时机 【MySQL】MySQL gap lock产生时机](/default/index/img?u=ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUFpQUFBQUNNQ0FJQUFBREtxb1gzQUFBT0RrbEVRVlI0bk8zZDJhR3JJQkNBWVhxaUhZcWhGMnFoRlBxNEQyNHNNd2dtSnNlYi8zczZKM0ZCb295Q2pzWVlFNk8zeHJpUWdqUEcrdVZmWTR3eExxVG9yYkUrcHVDV2o2enpJY2FZVWtyYmRQa3M2eHpHaVAvdXJQTWhwaFRGTHdFQS93azl3Q3ovdVN5K0hLemZna2NlZjA0Q3pCcFlVZ3plRVZvQTRIL1hDVERHK3BoU09xNWYvQjRac3JDeS9HbU5zUzZrVk05K3hDYnJRd3pPRWxrQTRFZjBBc3dTWWJMckY3dGNncVNVWW5DMm1DcWxHRUxkSitiV3lkdExJQURBVDdOaS81aEtHM1FCQUtBd0dWOElNQUNBY3k0c0hXR1Q4eEJnQUFBQUFBQUFnUDIyc3BUb01RTUEzSUFoR1FEQUxRZ3dBUERMWW93eHBoVERtc1psalFobGNOait5eCswOUtjUFdwYkw0RWwrQVBndE1RVm5ySThwZXB1SGhEdzZITS81cHkydVdPZlhQL1ZVTWVRaUE0QmZwcWFLT2NMRCt1VWFocXJZTUpIc2NwK0ZiTW9BOEFOSTF3OEF1QVhwK2dFQXR5QmRQd0RnRnFUckJ3QjhIdW42QVFCM0lGMC9BT0R0U05jUEFBQUFBQUFBWEVhNmZnREFuUmlTQVFEY2dnQURBTCtNZFAwQWdGdVFyaDhBY0F2UzlRTUFia0c2ZmdEQUxValhEd0M0QmVuNkFRQzNJRjAvQU9EelNOY1BBTGdENmZvQkFHOUh1bjRBQUFBQUFBRGdzbHZTOWRkM3VGMWVDdmUwQWNEVHZYZEk1ajBCQmdEd0h5REFBTUF2ZTB5NmZ1dGo5SHV1bWVKcDBMVlEyY2RTa2ZhT3V6eTd3TDVNM3I0SkFHLzJtSFQ5YTFhQmRVVmxnazFualRIV2hYaWtmWmFMMUtTdjJaYlpETTdVU1F3QUFKTWVrNjYvV3RIeVp4TXY2dnpQVFpCckFvd3lKUUVHQUY3MG1IVDk0b3FPKzlVMnkvV1lWaVE1SW5WTEN3QzQ1akhwK3JVcm1EWXFURjNCRUdBQTRDYVBTZGZmRzROWi83WXUrTmt4R0MzQTBFVUdBQzk2VExyKzg3dklza0lKUlhLaDdVczc2ZDhqdmdEQWJaNmZybi92VEp1Zjc2OXRDZ0Q4Ung2YnJ0K3U5MURiUDFNaUFNRG00ZW42OXo2eVAxSWVBQUFBQUFBQUFLcnRhZEgyQnI1UFpVZ2I3TnQ4Ykw1UkZ5WTdld0c4ajVQdVB2N2Uyb3RidjY3ZEw1eGx3UHpDRmswUmIzUzdldmViTWVaQ0lCZ0xNTTFVNDVVc1R2bkIzK2l4b1JGNHVpM1RwY2tmMFAvcTJvL1d0WGxRY2t5V0FmUHpXelJKdkZYdnRmZWkzUk5nNnBnM1hzbmlsSi85allnd3dGZG8rU0xsSnhDbDNQakcrcmlsKzE4N2RlUnMvNk5yejdJM1gyb1ZpcWJ3ckdscEMzOXNaVHd5UmxmTDJCTzFTZTh2VU1xVThsVnNHNThSMDZzZGFRcmttcTh1QXFUSFNkWFo5U2RrNVEwb3BobXZaSEhLaWQ5SXFlU3hDdEdLRCtBVDJpZlk5WHlSVW01OHN6WlU5VFA4VGJiLzhiVzdrSUwzY2ZZdTZVM1ZYSjMwTnJXRkx6TE5MTi9VeTFnbkVkOWZjRjY2NXIwQTUxY3dZczBmSHhycmZKRmFRWXFINHk4MUdDdjJZQ1dMVTA3TkxsWHlWSVVJNVFmd0NlTUJSczNqSlIyOGJiYi84YlV2eitERWVERlp5MUt5L2ZwbklNQUl3U012VDNIZW5TMVRmSC9CS1NIcDJWbUFPWDByUVRQM2VRSzJYa3JRc1dVT1ZySTQ1ZFRzYlNWUFZzaTZqUVFZNE5QbUFvellBU1AyY0FqWi9rZlh2clVGRi9PQlRWL0IxRVBYOHJaSGI2MFBjVzBZMTQvYjl4ZW9xd2xIN1YwSk1FM042LzFLWWtxNTN1eGpBZVk3VnpCaUpVOVdpRkIrQUo4d1BnYWpIc0R5RjFiUDluK3k5bktRZjc1Wm1CNkRxUU5NKzE2QXRkc3VlT3RDOEw1cEQwOEdxdk4rbm10WE1PM0NwNjVnK3JPUERGQjhid3dtSzNKM1YrekdFTVpnZ0s4UTd5STdva3JlUVMvbHhqZHErMkRMYlAvamE4OGFIOXZrY3g3cE9KdTVRNmt0dkRBR3N3M1ZCTGVPbzY4ZFo5TDdDN1N0REs2cFQzVk9lUXltcnZuT0dFd3FCNFFtWDJvZ0dyNkxyUG1OWHJxTFRLbmtxUW9aRG1FQTNtOS9FaVcvYVdtOUc4Y1hoNytZc0Y4N2VzZWl3Y2x6TU9XOVpLT1hORE9QYUxTRnIrOGkyOHF4RDQ0ZllXZjBDYUp0STZ2NkhBMHdhczNMbTdsWGFYc1hXZitsQnYxTnFLWlMxaTc4N0M4OUI2TlU4a3lGRUYrQXI3djQxSW5xL2YzZWRIUjgwMk9iYVo3a0IvNEM2OFA3amtUR1ZRRUFiM2NsMno4QUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFleS9xWUZpKzl3djBQdm5MNTlpSzlXblhXeDVmcS9KdmV0TnZvUy8vTE5UTlpQQmQ0WFN4K25BdTN0QlR2ZGtmTDgrb3lMMWVkdnVJWGl5VE5icDJQUzB4NFoydDN6MjVUTHZXSVpWbEFFeitVN1pNZUU3bVFLaWQxVXRabzcrY1I2LzV2eDB2Z2RnU1l5NTRRWUt5UGV5R3Q4Mityd2x0Mkd4ZUs5bDZzak9rYWVxMnlYd3N3UkJnOFFvd3h4cFJpOENGbVoyVGxVYjc5WjVlSlVrb3hOS2VETVlTeWFhaFBHa01Nem80ZEV2c1o0dEVxV0IrajM5Wi9MRmN1MHZGeFZkQnRPNWRsMUdlZHZYUE8wU0pweTl4S1ZCUlQwemF5OHV6WlpqcTdGMm43YTF1R3VwbENMUW4xS2M5ZU5kbkRHN1BOZHl5MTJ0SnEyL09HdFBocXJQQnlmZDRjWUlaaXBCQmcxbU93M2tQazlUemsvQTIvTGFiZzlzWW8yMmZ6M1hkdEU2eVBhZHYzcmZQaGFNaUNzOFpZRjFJbndDenpyQWVRR3prd3lnRVA2Mk5hVnBSOUlSZHBXZk15cVFzeGErT2owUE14MDY0TUZFbGVabEZMNTZzVEdrUmg5bU16alhWK0swZjAxbGdmaFFzT3FTVXZhMG1wVDJIMklyanU4VTNkbXIxdTJyaFVqMnVOQlpqWndwZHJ6WHZEOXJLTEgvWW9lODZsZ2Jwalh4cmJROFRWckF1WlhEVnduK1VRT1VLSWNEQnZiY0lTaHFvREw5L05YZThLSnB0bENUU256WHJibWpjck9pMVNzVTN5a2Y5YWdKRzNYV2lPOHlsUDI0QzJrVzFuRjdmRytoaERpTUtnU0s5SWVXQnE2MU9kUGVWTmM2OE9qMDJXTnI2LzI0ajc1SXVGTDc1em9XMlV4UThIRjN2dFJwRFpQVVNjakFDRHYwWU5NTnZSbk8vNTF2a1FsM0hkck5HV2V6QnVDRERTaXVRaWxYMDYyMUxVQnVGNmdGRzJYVHpmbDJ0Sk5OaklpdDA4S2NVZ3RETmloR2hyU2FqUDB5MHlwMjFpMWk5V2R4azJ2V1NqQVdhdThMM2lpWVVmYU9YRlgrQml6OVhzSG5JMWtBRWZwUWVZNVQrbm5QVkw1NUluQWVibExyTHVFVmdVU1Q0K3Z4cGdQbmNGcy82ZzFaY25FVUxZMU80V0dSY21Bc3p5dlQybXlydXpybDNCekJUK3BNbCtZNEM1M09yUFg4RXdCb01INkFTWTdUd3hPK2YwV1o5STNsU0lZekIxYXp3eHlDL09MelkwVXBHS1k4KzY0RjI3aUdvMWcwZnFSSUJKb1kwd3d6M3NkVHMxT3daajJoRFRicVpRUzBwOUtyUEgwUzZ5WldVaDZOY3ZjUnU5NnU4MitZK2RUemxWK0xyTmRzZVVSMitZK09GUnBLSE9WYlVUZHVTbTVia3hHR2xucG9zTWYwMHZ3RFE3ckJWSGRhMXlGNWt4YnAxOGRwK1g3bHZTdXNqa2dXYnhZKzI4ZHl2bVNUZkthSkhrWlU3ZFJkWlczZlJkWkV1Unk5UDRlak9GV2xMcVU1eDkvMlJrVE55RnNvSzNtYVAzSjd2TjFoOVdUVGxWK1BvRVlIK0NKNTliK25BdmU3bHZsTHVEY2dtdno5NnluYnZJMU9tRjdqbmlDNTVqOG9LZmkzYjhXVE05b1pVWDkrczdEZ3Z4U1g2T1B6ektiSWN5T3pnQTRKUUxhVG9EQ0FFR0FBQUFBQUFBUU5keFE1VHd5T05IdWhmSDg1Qzh1VGkvKzF3Z3FmWHg0OXhZVHFsUHJiMTRhT0hLclpmN2c5NS9iRWpvNmhOOXV1bEFNQlpnaEFjOXYxZWYwczNIMWFQOG5YSnBVelozZU4rNUFlK08xc0JqWkUvSjFROUFmMm50UmVxcTZ3WDZjOGUxOXV6OW53c3djc3o3VG4xYUg0VG5PY2ZMSWsrWjVjcjh3RDcvNS9aRTRGTzB2SUh5STRSamFmQ3JacXpUcUlscno3STN2M0pjamg0V2JlSGJweHJiSmZYYWFTY2tvaGZQb3dkT3J2TktyczY0cFVjLzFkbjFoM0hsRFpDbU9hbFA2NVZYUHh6YldmM1M3Y3NYenVSNWNsNEpNRVVFN1M5cjduMFF5bFVSOTFmaVY3V1pvSUxUQW95UUk5Mll0UUdwSDhZdU1wcW9wK2ppMmwxSXdYc3BKZkNVNFFBanBrWXNrbmJVbXpCMjJTRW5mRG1aU0s1a0lTdU1zbzNTN0hvNm41Rmk2K3VTWnR0T0M1cE1kSU52T3VnNWxwbkg1bjRmbHpSbHRTV2RIVFRQa0hQMlBnanRONXJiUnVDL01oNmcxRVJjMHVGekxMWTd4cUFGbUpSaWpDL212UmdQTUdydzJNcWU1WkNzT3ZHNk9qa3J0USsxQzBwbGZWSnluKzdzQStmU1dyME5YTUdjcEIwcUE4eEVrYmJweEo2NzRWRzZmY3FsYlBzVjhrbUFHWHNmUkQrR3ZEVFFCanpYWElBUmUyVzBYb2p6NDA2L2dsbVR1Nzl5V0k1M2tYbXJmRkNsNzdVK3hMVnBHdXBVcWJwL1JnTk1VOG42K3NUc2NiM1p4d0xNeFN1WXFRQXpVNlNUL3RMeDVydmR2YzltSDMwZlJMZDJ1SUxCcnhvZmcxRVBJZmtMcTJmN1AxbDdPY2gvK2NDOEhtQ2FLeGl6ZHRzRmIxMEkzbmRhcEx4VDVkb1ZURnZvcVN1WS91d2pyZm4xTVppYkFzelphTnhzZ0prWmc4a0tjZm9tbnRHZVlPQjNaRWZ2Y1F3TjUwaGZsNkEwU09YSTd1amFzOFBmTnZtY3h6dk9MZ1lZYVF4bUc2cFpHNmRlRWZhNXp4UFJ5eCtLbGR3Wmd6bFB3ajg1Qm5QeExySzdBb3oxemV1ZkoxTHJLMU9PM2tVMjh6NElmUXhtTUlRQi82Y3M3M3A5NTg5NWp2UnVwLzFJTk9nL0IxT2V2UTVlMHNqWjFFVlM0YVhjK0h2N2NuWTZyU2VpSHdzd2FpWExkeWdOSmVIZmZzNnh1OGphTm4ra1B0VUFJOTN1Tmg2ZzVKdmw5TlQ2elNtSk11WG9jekJ6NzRNUWwwbDhBY3lMVDUwSTN0L3pURmZEaDlBbXZnOVA4Z01MNjhQN2pnVkdOZ0VBYjNjbDJ6OEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZXkvcVlGcnpYSFFEd2ZpNFFZQUFBTnlEQUFNQXZpekhHbUZJTVBzU3NUNnNNRHR0L2Rwa29wUlREOGUzYUl4WkRLQ05LdVF6clF3ek9FbkFBNEVmRUZKeXhQcWJvYlI0Uzh1amdRZ3B1Q1NSYlhMSE9yMzlhSDFOdzFoanJRdW9FbUdXZXVBUW5SNXdCZ1A5ZGpON21JU1NQS3V2ZjY1ZHJHS3Bpd3hKZjZsbWtmNDlabGtBVDZUOERnUCtaR21DMitKQkhFT3Q4aURIbTk0ZkpNVW42ZDBlQUFZQmZvQWVZNVQrWHhaZUQ5VnZ3bUxpQ29Zc01BSDVKSjhCc28vZjc5WXZmSTBNV1Z2UXhHRnZFSmdiNUFlQzM5QUxNRW1HeTY1ZjhMakpuaTZtRXU4aU1jZXZrN1NVUUFPQ25XYkYvVE1XREx3QUFZNHd4L3dEM2tVRERzeEZzbXdBQUFBQkpSVTVFcmtKZ2dnQT0=)
session3
![【MySQL】MySQL gap lock产生时机 【MySQL】MySQL gap lock产生时机](/default/index/img?u=ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUF4Z0FBQUNCQ0FJQUFBRE1ub3NsQUFBWkcwbEVRVlI0bk8yZDJaWGtLQkJGMHlmY3dSaDh3UlpNa1Iwekg5cFlYaUJRTHBWVmZlL3BqeTRsUzRDUWVHSUpIZzhBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFIZ0ZMcVJsSlFWM0wvNjlpSTBWMFQrYkNnQUFBTUJQNE9PUENpa0FBQUNBM3d0Q0NnQUFBUDQyS2FXVWxpWEZFRk0yRjFlS29QMHZ0d1phbGlYRjg5ZHRKaS9GV0Nxbk1nMFhZb3JlamVnakYxSUttejB4VjFSSC90bGxsZnN4dDNoTzdXVnAzcDF4QkFBQUFDaEpTL1FQRjlLU2dzdWxUNjZDZkZ5aTN4WWQ3VkxGaCsyLzYxSWs5M2c0SDVlT2tGcmpiT0xJZDRXTUMyazUwOHpOU0d0TTUrTzIvc25PdlZvamRhYlpMSjdhZnBxdE9RQUFBUGpuV1NmUlRxbFV5aGEzL2U4UUxhbldRTGtxOGIwUnFTektLcWpzNmJzcXpmVy9qUzVLd2ZWeUYwTEtDSW1RQWdBQWdIdVlRbXFYRzdrQ2NUN0VsRkkrTzZhMWwvcnpZRVJJdFdtZVd3RjMxcUUwSzNldHZMcUdBUUFBQUV4aEM2bjFMeStkQ0xpUTY1dkJFYW1wcVQwMUl0V3FuNmtSS1lRVUFBQUF2SmFPa05vSGdZN3hxSEFvb0V5azJLdVVhaVV6czlqY1hDTzEvZC81R0diWFNGbENpcWs5QUFBQXVFZFBTRFVTSTkrMTUxMFJTdXphZXp6OEZueFNwVnp2MnN2eUY3bjcyTXdCWGt4Qm9xTUFBQURnMVV3NkIvL1pLYk5qRW5BK0hoTjlBQUFBOEdwbUQxbjVDVW5pTmpjTURqMEVBQUFBMzRLUDZ3VGFaSndmMERMSDNCNHlDZ0FBQUFBQUFBQUFBQUFBQUFEZXlPNXF0TjB3K2FsakFRZm5aSC90WWRJK1RrNVNBd0FBek9DVlY0T2Z5NzNZZjNmUE9VRjJ2UEVQbEdnS3Vkdnc3aGJFeCtOeFEvQ01DYWttMUhnbHk1QWZ2RWUvVmdJQ0FNRDNzNTlZL01nZGx2OW83cWVLYUx4c2pwRWRiL3o1RWswaXQwYk83cGRzWXI5QlNOWGFicnlTWmNqUDNpT1VGQUFBdkFuck1HRHR2akliUlNqUGtvbW5yOHpncXA2NTAwL0wzRS8zb1BjNjJLTEx2K3BDVytQUFV1NkZiTk00RGlJOFI5UDZscDVPUXZQS0xJNFBsR2NLbnI3Y2RjMVhnenJLRjZrWjNmYWtxZ3RRaEJtdlpCbHk0aDVabFR4V0laYjVBQUFBcjZGMTgyMGZCcHlOSXZpWW5XVWNVajF3VkIzdFlvNnV5Tng5WEdJSWFkYjd3azdWTFYvTWtyWEdGOGZPckwvVWFXeEJRbHIyVHR6NU1PWi9vUjVzR2h1UmtqVi9Ybnc0SHdwWDgwcjNWZEU3cCt1TW1UMVl5VExrVkhSVnlWTVZJdXdIQUFCNERlTkN5ank4VG5WU1BwL0RzWHN3UzBndFMwcnA1c2t0cTJYSGVOYUFrQklpS2JlbkdFZkowbHl6bUYzZkkwNzZ1eEpTMXFpaFVUQjEwazgzK3NCd2pVaHpzSkpseUtub2JTVlBWc2hXUm9RVUFBQzhuamtoSlNlTzVNek1NZm5WSFFrd1I2VDg0L1loZU5NalV2VVNhbDMyRkp3TE1XMENZTHZzUTB3cGxUTjJSamJ4ckwwN1FxcXBlWHMrVEI2WjJJcytKcVIrWmtSS1Z2SmtoUWo3QVFBQVhzUDRHaW16bzlJL3VKQlM4QmY5VjIrTjFPT3VsSnBlSTFVTHFXWkU2ckZOTjhiZ2ZJd2hOUDMreFlMcGZIN3Ezb2hVbS9qVWlGUS8rc2dDb3A5Ykk1V1ozRzJLWGEzRUdpa0FBSGdUY3RmZXFaN3lCVFI1YitSOERPY2FLZFZKYmNNR2ZTSFUzN1czcGxHUHpWeEtxNWtkWWEzeFlvM1V2cFFxK20wOTl6YmhGL2M1cDRzQmp5UEpka0hTeEJxcHV1WTdhNlNXY3NHV2lqNjNSbXBpMTE1emo1N2F0V2RVOGxTRkRFczFBQUNBT3h5ZW5QSk5ZdHZ1cDFCMGMva09LbjllMUwzVW1PcTU4Q05WN3QwYkhhS2FjWEhVR2wvdjJ0dnRPQlpwbi9KcTFBUFhYc2lxUGtlRmxGbnp1cGhIbGJhNzlyS2dVN3YyeHYxSWlkditsQjhwbzVKbktnUWRCUUFBSCtDbTF5YVQxNjlMWVlMbUovbTFjZ1RQNWdBQThCbGNpSy9yY1ZqZkN3QUFBSENEMVlNQk1nb0FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBRGdqK0ZDV2xaU2NNOGxFLzNyekhvQmJ6ZnAyYXB6SVQxVjV6L0ppNXFObmZxdnJaa1dIOU9YUFJvQUFQQnlmSHhMai9ocTN0SERQcHZtN2Fxek0zN1NKRHU2ajY5VlB1OXBObFdxTHNSTnRhWG9YZStpNU5COFo1bytMaFVYU21mOGhxaVFmMHNYQWdDQUFpRjFtOThqcEh4TU1iNjBBdC9TYkh6TWRZMExjVmRLTHFRdE8zbXh5M09WL1p5UVFra0JBSHdKS2FXVWxpWEY5V3Q4ZnplWHZkbitWLzdKZnY2NmZaNm5HTXN1c0V6RGhaaWlkMk92L3VPTC8rejlYRWdwN1BtZjZXcVR6c3VWb1hzNTF6VHFVWVRlR01Lb1NWYWF1MFdGbVJhdG1ORFJzMkt1R3VEc1hqTXhZQlpUMUpLb3owNHQrWmlpdityU203WVVmWkZxRmJrWk96cFRMMzRhTTk2cXorSzM5cjdMaXpWbXdZZTBZQnU3dVp2ZGZIN0pkd29Bd0Y4bkxkRWZuVzcyYnM1ZjAxdXY0a0phOXY3SitSRFBEanQ2OTNpNGVvNm5mdE03djRtMUdQb1RKM3Y0WWtHU0MybFpNOHArMENhdE9hOUJmVXlabGtsaUZtcm0wMzdBSkoxbVVVdlgyVFZWSjZPZnhYdzRIM1k3VW5BUEYxTGJTOWRYUkMwWjlTbWpQeDR1cEMxU3YwUzVLbWtWU3IzdWJFeEl6UnB2NmlKNVA4WkVpbEh3bXd2cHhOMjh5bDFWNWJjdEt3UUErT3VzWGNFcGxVU250ZmQ5cTl5cTN2RDU2OXozUnFTeUtLdWd1cFF2cldwcE1ybzBxU2lUN3VHZUUxSzY3SFdhVmNqTHZxNFZFMjEwV1JvWFVvb3hMZTFTNUo1SnVRQnI2MU5HejY1Y1YrQlpaRlg0ZnJPUmJmSnA0N1BNcEVGRGNrUW5lMDlIM1lpbE5TbENDZ0RnczVoQ2F1KzE4amU4OHlHbWxQTDVHSFBtNVExQ1NtV2tUU3Jub3ZaVXpJN3Z2cEF5eWk1VWkxVkxra0V4SVZmT0xFdUtvajlWUWtyVWtxaFBHVDNiTnpaUWdkbDhYajNWMmN6dWpRcXBPZU9WdnBCTG9RYlhSNWtGdnpuak5yL2s2ZTA3U0FFQVlBUmJTSzEvZVdNVVI0ME5YQWlwcDZmMnVscWtNRW4zU1Q4cXBENDNJclhkME9ySG5yYlRSZTJXcU4ya2RyVk9LbnAzRmoyZmhyczNJalZqdkdvd3o2b29iY1Z0ZFRNZmtUVlNBQUJmUVVkSTdkLzkyUmhDeUxZMTVWMmlYQ05WcTQ2SnhlWXl2dXhRbFVsRkgrTjhETDVOb3NwbXNFZWFFRkpMYkpYVVZrdERDNUdMYm5WMmpkU2psVkp0TVVVdEdmVXBvK2MvRGEzNmlqRWZqMHI3NnJKK3M4bHZkaDZ5eXZoR3ZZbzFaTWJGSTdtaFNXRno4bmhneG0xeWpaU3hhSTJwUFFDQUQ5TVRVczJMV1R2YWNjYXV2Y2ZEYjhGbjMrMXFuNWcxdGFkOS94aCtnblJIdVp2WnMzUENKSjNtMUs2OXR1cW1kKzIxRHA3YVlvcGFzbjBwbWJVME5xVG5ZeGwxVHk2RmNORnM5bm04S3VTVThlWDlrZnNRdTVzVDYxS1hnWTBoV1R1Nnh0cTFwOFBxYVVWMEZBREFOekU1MzhCa0Ezd3Q4NHVRRHA1czErOTRMS1JuYzU0L0FJQXZZM2JkQmk5eUFBQUFnTWMyZHlHK2VpL2lJS1FBQUFBQUFBQUFBQUFBQUFBQTRDVThzZWo0U2VRQzRSZGpib3JmOXIzOWpZblhaMHYwYzIzZ1BuOXEzaHhub2dEd2w2aDNmYTh2NitKaTJ0emJ5SXRyRXRXbWN6T2s0T2dVaFFjcjNWRlcyL3FkRCtuWU5UNVMzTXMwTFM4UGh5dnV6S1dvMkxKdWJzSy8yMyszemkvTlByV1R4Yk05c1hZLytVeVMyZy9UdUVDNlhTTGI3cGVYYUtmMlJUR2QxU2VFMU90djhaUDhSc1VMQVA4ZWw0ZTJPdDhlYVh4ZXpKMUJILzZrZGNnZTFua255clFVWThwRXo1bTY4K0VxSCsxV3ZFalRoUmd6djQ2bmY4dFRFRG9mVmkrZjJkRzVlOWwxOUU2Qnhobm9TMys1a0pwTDl2Y0lxYXJSM3NrS0lRVUE4S1ZjQ3FuSExqL2tSZW5yVzRic01pcWtmRXpSWjlkSHpsdXh5NlhUckNKRWIwVXNjMWNwMU9ZOTF4dTJUaitiQVNvWFVnckhTVHl1Ri90UkRLZGRXMVdXejNSZktkTE1oK2pPKzZhanR6bU4xOGNOdDZXbFZINVRpWFFER3l1bDlIWjdXY3lPblZrTGFRYitCbSt4WVdpVGUrNGYxTzg2OGhoMExEM056N1VRQUlCdjRscElPVEVpcFM5S3lUVjBmdG1Za0hJaGxSN0ZpMTdoM2lHMFdwclJwQ25yd1lXMExDbDQ1NHFlSzdWbGw5RTdCa3djNjJIS3NEUFpMVFgzYU0raWFXSm53MmsrM2xxejBsYWFTRE0vWE1iNWtQWDlyeDZSbWoxSVI1d0o4NFlTZFJ2WUJVV0p6b0hmZmpIN2RwNHRaR2lsMHFEWlJsdmFjL0RWY0Z6eitUWFpRZ0FBdm9ucXkyOTl2WlVYNVNkN1B1VWxoRlFic3N1SWtEcitMQWNVRm5NbWJTQVhrV1paTmRucjNzZFVmamF2Y1k1c3hmQlQwMCsxWXVzVlFxb1VmTWJweU8xaHdCZkRhZGVvSTRXYU5OZjZVUkwzeFVKS2xsMktCUmRTaWpHSlJYVXZMMUczZ1YxUmxhaHppOGZ0bEdsMlRiZzJ1OU9XWEVoTFVucTFFbEp6TFFRQTRKdTRHcEZ5aHg2NHVyaEZMRWVrbkpJVExRTkM2dHowVm8xSTljYUVtZ1JycmRPbW1ZVTF4bi8yVlYrOTNIWDBrVEVBbTNZRTVsait2aXh0ZDkzZW1scDJQRHQ1b21TSFNOUDVFTk1xUXV2Z0x4WlNiZG10aHJVc0tRb0YrK29TZFJyWUFKY2xLa2RNaCt6c3RKQXJFM3FCekxZa1B4VHE1MkMyaFFBQWZCTURhNlMyditSRitURXFRM2E1RmxMdDFyVTFweGtoSmJTRlNQTnhQYmkxWldTdGtUS2p2M0tOVkQ0aGNtOUU2dWsrU3NpT2Jwb3UxQ1g0dVJHcGJReXgrdkhGSlRJYjJCaFRJMUtEZHI1SlNCbUIxa1lhVW1xcVdUK3BneTBFQU9DYkdGeHN2a1F2TCthaVFlN2FlNmorcW1Ga2FrOWVYeGZ5N3Bjdit3VlRhcFV5cU1rMzI0dVhaeVIyN2Nub25RTGRudG83bHNya0Myak91YzVtalpRWWpqc0RPTDl1UTV3ajEzSm1taTRjemlJcUU5cm94L1cyL2tmR05TYlhTRDNhcHZtbUV1bENYVk9VS0ZmNVJqRUg3SndYVWxhSmNuUmJPbkxWZCtyODYwWjlBZ0I4RFhKM2pPcUVVMm8zOCsrNmFSdlpUNmNmS1IzeTJvRHRMU292WnNtVlUzNUxtZjFGY1MvRW1iRmR5SjM1NUJrMU84STZ1NDNzYWFaN2E2VDhzZmVxSEcvUXUvYk84TzErdEtHcTB5YWw1VEpOTzVzbXVuWGZqVnFxU3pTOWEyL05zVlQ5cnkxUlZvSTdneXZ1eHE2OXJwMlRRcXBUb3RyUU9xdENGTzJ2QVAxNDNLaFBBQUQ0SVg1dXR1QVRuczBCQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXZwZlRQOTlUeTdxZjgxNzVGdDV1MHJOVjk1c2Q3N3lvMmRpcC85cWFhV0hqQWdEQVA4QnozaWMveGp0NjJHZlR2RjExWGRlSXo1Z2tYV0Q1a0E2L0FyZFRybmxQczJtY2Q0cjk5dVBlSUE3TjEzTVllOGQxMm5ESXY2VUxBUUJBZ1pDNnpXOFFVcmx6TU9mRHk2cndMYzJtZE1TYXVWYzlTeUV2ZG5tdXNwOFRVaWdwQUlBdklhV1UwcktrdUhseHJNOGNLZjdLUDlsTEY5dU56OEFtRFJkaWl0Nk52ZnFQTC83cUJKYkRzMkpRb3docXhLRXlkQy9ubWtiSGVlWnRrNncwdFJORmcxWk1UTHVhek1TQVdVeFJTNkkrZGZUTDQzaU13dXp4emxTcmtvNmNvRGR1dkZXZnhXL0swK2ZkQXlLdnN1dkVidTVtTjU5ZjhwMENBUERYU2ZreEw5bTd1VHA5SXZyeXZBYm5ReFFIVm5TRTFCb25yWjNja0J2dDVoaS9aVDhTSlQvdlFwaVVuOXppWThxMFRCTHJiMlkrN1FkTTBtbnFZejFNOVBFdWRYVDc4Qk54VEUxYlRGRkxSbjJLNklXSXZKZ0t5MVZKcTFEcWRXZGpRbXJXZUZNWGpSeVJaR0MwbkpzTDZjVGR2TXBkVmVXM0xTc0VBUGpycFAxd3ZLMHJFcDNXM3ZldGNxdDZ3K2V2OC9hSVBYMGF5eXFvTHVWTHExcmtBYTVkazRveTZSN3VPU0dseXk1a2g0V1dzT1NwNDNoalRHTFJVcytrWElDMTlXbEdYMGFud3M0aXE4TDNtNDFzazA4YVgrUXREUnFTSXpyWmV6cnFSaXl0U1JGU0FBQ2Z4UlJTZTYrVnYrR2REekd0NjRzemNXSWQzZlZ5SWFVeTBpYVZjMUhIY1hsV3gzZGZTQmxsbCtNM3VwWWtnMkpDcnB4WmxoUkZmeXFWVUZ0TG9qNHZTL1M0VklmWmZGNDkxZG5NN28wS3FUbmpsWGxTL3cydWp4SjFJTTBmWlg3SjB4ZHVhZ1VBK0JleGhkVDZsemRHY2RUWXdJV1FlbnBxcjZ0RlhPZ3FqRHFKcTZ2UG1mU2pJMUxiRGExK3ZGQkNvcWpkRWoxOG5CQlM2Ky91REpWUHc5MGJrWm94WGpXWVoxV1V0dUsydXBtUHlCb3BBSUN2b0NPazl1LytiQXdoWkhNNWVaY28xMGpWcW1OaXNibU1MenRVWlZMUnh6Z2ZnMitUcUxJWjdKRW1oTlFTV3lXMTFkTFFRdVNpVzUxZEkvVm9wVlJiVEZGTFJuMGEwZFBFTGpjZmx4ano4YWkwcnk3ck41djhadWNocDR4dmhKNVlRMlpjUEpJYm1oUTJKNDhIWnR3bTEwaXB4c3pVSGdEQTUra0pxZWJGckIzdE9HUFgzdVBodCtDejczYTFUOHlhMnRNTG5nMC9RYnFqM00zczJUbGhrazV6YXRkZVczWFR1L1pXazh0aG1icVlvcFpzWDBwdDlPUEtwZCtsdlFLekN0NGpweEF1bXMwK2oxZUZuREsrdkQ5eUgySm5DMmM3dmxjR05vWms3ZWdhYTllZURxdW5GZEZSQUFEZnhPUjhBNU1OOExYTUwwSTZlTEpkditPeGtKN05lZjRBQUw2TTJYVWJ2TWdCQUFBQUh0dmNoZmpxdllpRGtBSUFBQUFBQUFBQUFBQUFBQUNBbC9ERW91TW5rUXVFUDIvRU92MTZ1clM4Vnh2M0hFamV6OC9teG9UeXo3V0JLLzY0bDgzUHQ3cC9tRC9lbHJyOHkyV0hINkhhOWIyK3A0cUxhWE52SXkrdVNWU2J6czJRZ3VQZFd2b1MwdDRMUkVodkhWUnJGdGZhb1Y3NGdSSWIwVWN2U2p1M0grNTFBMWw5am5vejdTUTE0bjMra3VteURCMERmSWR2RWxKZjJORi96S1NKakQ3WDZ0NlV4b3Q1MHFSdnZNV2Y0Z3ROZ24rU3kwTmJuVytQTkQ0djVzNFlEMy9TT21TUDRubHdJZHF1SHNzbngyZE9HTFVUOXFaZ0lvaVBLY2JLSjlUbTN6SS9jWER3b3JMVHZqWkNjU1RPYzc2Q2ZrcEl2ZThURVNIVjVSdDdXWVJVQ1VMcU5sOW9FdnlUWEFxcHh5NC81RVhwNjF1RzdHSS9EM1hrenBOei9WQVpoVTNSWjNHTEhMTXpWd1l2OW95NTJZT1UwWlE3MG5NMDdoeTlFazdxRzZlcHJVSFRuajh2M1pxZjh6bUZXVzFHOW1rd1IrNzVvS0V1VVoxMTlkc3FmWTAwMi9xMGNtOHgvWG02a0ZJOGgwMmJ4Nk9aYksyYTFOMnkyeWFOKzRiVkdUVzExUEZsYWhuMjlsWm41UHZjUFRKb296L2tzK25hMFhQREpQMFV0eGtaMFQvWGxsVFpoZkZHN3FKQ09tV3ZHc040MlIvbTIyYm8wUWE0NWxwSU9URWlwUzlLeVRYMHlqTTFVR09lR2RMNWVEWG9vWVpGWEVpbGwvSXFnME12RGw3czJpa01HRG5XUTV3LzQvZkwremtyTXVITFkzenE2cDA5aThZK1Z1V2k1Q29qUzBndCsya3lJeVZxYXE2VzRVdjBPazFWbjBiSVRpblZNR1J0WVZXMzlVazh2b2g3dSt5R1Nmb1dHMUZGUmxhcmUySkU2aFd0YnVRNU11MmN1a2N5U1JtOWJVdDdOKzU4aU1VVDNmazRyQnZFNkVEM0I5cVNhVkp0Z2N6ZHJwQzJBTllCU2tObHQ5NDJNNDgyUUpkSzE2L3RxYng0em1QSmkxSkl0U0c3R00rRG1NZVNIVVA5VVRPY3kzR2xGbEtIL01zMTA4akZmb25hVi9LOGtPcU5CY3BZelF2SkZGSlZ5SXZUa1dOTXc2N0c1SnV0elVnTHFjYjRUb2xhTTdkN1U5NjRmcHA1bHoyV1VabGRwK1JWVXI0NUJMRHEvTzZYWFpza2E5NktPVmhMWnRrTjN0SHFuaFpTdy9kSUpxbjBlcFhqK3FKUUt4eDdWZGQ4bE1xaWp3bXBWN2NsMjZUYWVEUDM3Z0phbzlWZG1kUkV1R3hndCtlYUFUYXVScVRPUlRsWEY3ZUk1WWpVNEpvZTZ4R1ZnenJXaU5UbDBGZnpQSjRiNldvaFZaVm8vR0xYenB1ZlBuSkU2aENRcFFnK1I4c1BEU3NGaXZ6VGtqSzZKRXVLZzUyWEVsTDlqRzVjdFBKTndia1EweVo2OXhFTlBmUlYxK2Q0UmsyeGV0ZjJ0TVo2NEx0bGw5blBWbDJidTJwMVZqazFIMnQxVjhYcVhUUHYwVUNTMXJQcFEwd3BOVitYNmdPdmVZcE5PNGZGeE12YmtuRnQvQlVrSytRaStnK1ZIYURMOWRUZS9wZThLRnZzMUFLRFBHSnhRY2U2K0hycnYvSmFHVkd4V2Y4YjFralpTbTI3K3ZZUnFhMEtSc2NCYm85STZlNTg4R3ZTeHlXR0VJUHpNWWJRSHM1OTJYTy9SVWl0Vjl2dEVXTWR3TStPU00xMWFZcVB0YnBSTzZmdTBVQ1NWM1ZSYlUyUjk2aCtpaS9zdkNzbVhqQWkxYjY1MVN1byt4eWRGWEw1QnJ0WDlzRzNEY0JOQm9UVTl0NlNGM1BGSTNmdFBZWmVlK1h6NERvcmI0cVEyYWE5anZZcUMzYjlRUHB6ZmNQN2QrMjVxYWs5NThKWm1YazFPeC9Edmc1alg1cVJyWHUxVmtMVWI2Z2lwS2lRZXJYS1k3UlRHOHJvZkhHZWR1cjNuVjBpbGZFNkZlVGpPV29uMzZHNlBpZUYxRkpQTUhkZTlVdFRjd09kMzBUWnBVbjZGcHRSOVJxcHNwYk1zbmNUdmpKcHJ0V05QRWVtblZQM1NDWlpSNWR0NmR4aExENHJtcWV5Zm9wTk80MmEvMEJiVWlaSjR3MFpKeXJFS0x0b0RPTmxsdzBNSVFXdnBCNlZVUk4ycTBaSlNWeGNkZE0yRkp2Ty9SUTY1TFVCUjQ4bkpnL2FrTGticVNYdDJWOFVkMkNnNnlrL1VzcE9rVWRXTndOQzZoZ3lLL3hJQ1g5Yi90aUhra3U3clVzUWUzUDI4T2NNemVUK3FkVzhvWGR3TmZqU1pyU1ptUnR2dmUvc0VsazVuNjNRZkljMjlUbjl0ajJlaFpnSkRLdkY1VGRlTmZxbnk2NU5ldG11dmFWODR0cXlYOXIwdWxZM01VaDIreDVaR0E5MlUwdFd4YlVtNmFmWXRMT0svc0cycEVYazZGTXNLOFFzdTNqOWpwWDlvUm9ZUWdyZ1BoTXpFQy9tS3p5Ync3ZGdUMWVNY3ptWC9TbytsdEZkM3RNVnZ1SWUvUmErL2hZREFBQmtQTkZIdTIybitPWGMzTE44TEtNdjVSL1FVZi82TFFZQWdOK0lqOHN5N0RoQ2Njekh2THZyKzFoR1g4ZlQ5K2kzOE8vZVlnQUFBQUFBZ0piLzFEOEFBQUNBZjRGOTc5WGRJNHdRVWdBQUFQQ3ZjM3Y1SWtJS0FBQUEvblVRVWdBQUFQQzNTU21sdEN3cHJnN0xsUHZpODYvY2YxcmpSYkZ4NlZhbTRVSk0wYnNSWVlXUUFnQUFnRi9CY2Y1dENzVVplZFZaRFhFL2ZtUjNTZXMzL3lPZFF3WWEvK2FiRi9MU09iY0FJUVVBQUFDL2dyUWZqbWNmSTdDN3ZGM2xWcVdCT3NkZW1xZXhySUxLZGpDT2tBSUFBSUJmZ1Nta2RoM1VLeVhuUTB3cDVmdnhPaWNXSWFRQUFBRGdiMk1McWZVdkwwOUpjUGxwbEtNalVrenRBUUFBd04raUk2VDJWZVRaQ2UzaE9NWThuY2RxVzJ1a3lwT3FXR3dPQUFBQWY0MmVrRnFWVkRZZWxlL2E4NjRJSlhidFBSNStDejU1WWhWQ0NnQUFBSDQvazZlZnYrb0FjWVFVQUFBQS9Ib21kUlJDQ2dBQUFPRHhlRHg4WENmd0p1TWdwQUFBQUFBQUFBQUFBQUFBQUFCZXpQOFluVXNjeFZkdGZnQUFBQUJKUlU1RXJrSmdnZ0E9)
这是的死锁情况以及加锁情况
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">
这里我们发现了gap锁的踪迹,我们稍后分析
死锁牺牲session3之后,这时的session2的加锁情况
![【MySQL】MySQL gap lock产生时机 【MySQL】MySQL gap lock产生时机](/default/index/img?u=ZGF0YTppbWFnZS9wbmc7YmFzZTY0LGlWQk9SdzBLR2dvQUFBQU5TVWhFVWdBQUJCUUFBQUV6Q0FJQUFBQU83TWZpQUFBZ0FFbEVRVlI0bk8yZHgzWHNPZ3hBcHlkdVhqRXNocjJvRnBhaUt2N21MeFNZQUFwVW1CbmI5eDR2YkZraUFVYUE4ZlVDQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQXVJU2Y1cG9ZWFBFMHh1QmQ5VVVNTHZ0cjh0ay9sejljbU9MMi9aUi9YMzcrS3QrTlUzQ0tTQzhYWXZWa0MzRC9lSWxHRStrb0dWS1FsVUQ2bTd0TXNYN056cTBKNGtJc1ZZL3Q5MTFaRlkxMmliWkVGdDlzQlQxT2VRQUFBQUQ0ZWF4MnB2Q1g4eUdXQm1LTXlVSmQ3TVhjbDVqOCtyMVBBVXpCeTUrL1hpN0U1SjA0bjk2c1JFb1BjNFBVSmRsY1dOK1hSZW9ySDZjcGJsLzRhWjVYRTluNUVBc1p5amN6RlU0N0R6Y25TSkZ6cXljaGZ0ZWwwaWhsNTU3SXlwdDZHQUFBQUFEd2U5Q2RoMmRob0M0bVlYcmdwemxPVTh6K25IekhXcTAvNzVuMkJsdTVIR2hmelZWUnBLN3FjZkxKMUcwTTUyS1NJMyt6aXZjVU55ZEkvdEtlT0ZlZGh5S0tTbGxWOTZOSWxkbWRiSW9qUFJYbVBRQUFBQURnZzNTY2gzeDBmek5JazlHK3ZMbS92OWlaTHNSNWpzRTdWNWw2emVjOXU5dGdLNHRPamlpU2lndHg4cmtnN2FqNytubnpaaGJFV2VmaDdnVEpIK1FwY01WNVVCT2tJMi9wMVlrUnpKdDM0SHpZZnMybU9QeFVGTEY5SmdqdkFRQUFBT0R6Tk02RHVFaCt0d25yVWUzTmhreDdIdndVbTVGbDlYT0RTT21oelhsb1JaTFliZC9NQ0s2V0xjMjd5TTJiZFNERDNKNGdXVkJKcW1vcmdtRWZndUE4N0M2a3hYazQ4aDJXaDdSeUJNUjVwTU9nQUFBQUFHQVFjWnVyL2VHck0vUGdGbHQ2LzdqNnRScmdieTMxYk10RTczT0JpODZETGxJZVdrd0NDUnVtNHhUQ3RvdERmRk41WXVUK0JFbmlaR0cvZmViQkVxSHpZWXFMZjVsUGF6WDdyZGs2QVFBQUFQQjk5UFk4YkgvVnh0MjJ3V0FmMzQ2YnFkMkV2UTZGTjU4L3RlZmhTS1E5c0lvbXdoU20vdVpaKy9hQkJFbVB5bTBVNzl6ek1EaFhrUFpnaStuSXpBTUFBQURBOTNHMFlicmRCMTF0TGRodDRjbS9YSmpTenRaOHZZdnNrY1RiVDF0cVJUb2lOMXg5MkpmWVQ2M2xhcHA1Y1B0eXB3NVBKTWorWW96NzQvZWV0bVN5OWwzWXorL04zeS9PaXRwVVo4OERBQUFBd0xmUmRSNFdHejNHOHVFMnJwK2ZSclJaNm02L2ZXRS9JcWNPTXo4V1NEeDRwL3BnNUo0SFNhUSs2cklsYVQxL0ZYeSt5aVo3UHVZNzNKY2dyMjNEdWl6a2dXQ3lSdEo1Ui9LYlZrOGwxOUc3L21OT1d3SUFBQUNBMzh2NFdEOEFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBUFJKcC9PY3Z0THNaKzBDdGdtY3JuOTdKdnlINFI2RWUzaTJkanhkRk05eDZnemZTNm4wYnFnZEFBQUFQZnhrNmROUG53UjBoNzM4aEwydGhXay9OUFQ4QmRFL3c0UWFZT1JhY3VkRDNJOVFUZTllT0ZiVmVmbVEydmZ4VE8xNHZDaWU0N1N5SHoxTjdJUFZUcWtJQUFBQVB4TS94V2t5ZEt0L3hYbm9YTlY4azFDLzBYbFkwTzU2cmoySy9USStIN0k3dmVYcjVBejQ3T280LzVreDQwZHF4L05GOFJ3NER6OVRBQUFBZ0R2d1U1eThxVmRyTy81dHNMZ2M3RzJHa0ZQb3VkMG9JMXh6cGw1VjVrS01VM28vdU9LMjUxemFScVRPOVdlTm1zck5hM0tTbUhBaHhyQ0xWTmpWelNWelNkSjBoWEw2L0hDWVhSUitId2N0MWM0dzNuc25hOVozSGtTRHVIaDUwY1k2K3J3cE5xKzJKTGRoSEdYMUU3WGpYVVd4cmpKYStWekxUWnltL0VKdlVVMEZZeXFKRVdrS1ZPVlRGTjdlaHNpMVE0cW9teDJLckRnUEFBRHc0M0VoVHQ3WXEwbTNSMC9ldlY0dS8wOGFRbjQ1djQwbHh4amN5NFY0RklzTGNkNjZZZWZEVk5ndHpiZlZmY2lLSlNTS3BJYlpMSGJXUlJKZU51SkNuSmVrSzBMSVJ0LzkxQVNjM2t5ZnV3T1RzU2U4Sm50aHd2WkZFajgrY0I0SzIyNnpvS3ZQN0FQdWdnU0hjamJGUmlySnRRaUhPZjFBN1hoVFVSU2RCNkY4RmhxbE84MGxOVlZNcVNSRzFBbXZMSjlLNVhySmhiTXRETGxnaHhHcDJTR0M4d0FBQUQrZXZUTTc0enhVWm0reWF4c1R4b1VZcHlubUM5eDFnWGJqU2hHMWVydTI4R1JMU0k3WXNzYW1JOUlheTBubm9mQVlXamtGMmNRMyt3TDBoSmZUcFhoN0tKSVU2TEh6c05sMnlWRlozdGpkbGpPcG1sYVZIMC9HdE1XbVNjOU41aTNSRDBWNm9IYThxU2oycTh6UXcwTUJSbE9wNzVHSTVWUC8zTlNHYUVITEVlblpvY2lMOHdBQUFEK2IvWXlXazg2RHN1QkJHc3lmNHhUcmhRQVN6b2NwTHJ0cGE4Tko2dmpyVlIxV2tkUXdCV3RDRTBsODJZUSszTnV1clVoTEk3STFOc3JxTENrcVZYaEpkajhWZWFTSVpOUk1maWhPTXR3NjgzQzBORzZrMkxnd3hWZ3RpSk41b0haOHNpaGVlZGhoTkpXT25ZZW1mT3FmbTlxUUxPalNlWkRxcHA0ZG1ydzREd0FBOExPcE9zU0RIdkRTMk9vNmVtdTNiNnA5czVlY2g2R1poNTY5MG03bHZYMmh1ZWpLckU5UEQvZkt3b3NEOEhwNmptdW1QUFNUNENmY3VlZmhLRTJrWWlPa3A1L21LWVFwT0Q5TklSd204eE8xNHh1SzRwZlBQUFJMMjQzT3c0RS9ha3A5bkFjQUFQZzltSHExMnZSeGc2dTZYOGZ1Zzh0T3pXbldLOC8xZXBSVzZtVFU1S3VsTzNzZW1qQmZ0UkdraTZTdmd6Z3lvaFQ3Sms5RzU2ZmdzelRPTlVvcmY0NzNQSFNGYnhKWTJzaGNpMlRXVEh1NGJOSGZJMTMrcFo2MlpFblA3TEFseVFjNmxGRXN5ZXVNZ0Y5MzJ4cm1YTzZ2SGM4WFJiSEt5T1d6MEVoOGVGTWJJa1owSVAwcnJ6SzY4MkJvUTJSQnhZajA3RkMxeDNrQUFJQmZnckZYOCtzS21xMmZIRDVQWmpHUURzemRmZTE2dVp4NGk3eFlraTh0M2xqbVVBb1RWTHREb0ExemxiRWNIbFZFRWxQTk1yMmkyamRDVkg1cU5ISW5UMXZ5V1I3VVN6Q3FoUmxka1dUS1VOUHdmZnN3SlhzZXBwSkhwdW1xN0pxSE9SN0lxZGpaYlVuZUxjSkRkNlRVNnM3YThYaFJGS3VNVmo2ZGRBalMwR2xMeGxRU0k5TEU3MnkrcngwYVN4c2kxUTR4b29HNm9WVUVBQUFBK0IzWWZDbnhXdCtUcTBlRytFc0RtTzlJejIvbXk0dmkwMXpaL1FJQUFBQUFyOWZmY2g3Z0QrTFdjMDl0UzZFQUFBQUFvQWZPQS94eTluVkxsSE1BQUFBQUFBQUFBQUFBQUFBQUFBQjRDMDh2eURsMW5PVGc1OS9FWjlQenh0aTNpTktoVUQ4ckkrQkJ2cWpDUGxFKzVUQlp1d2dBQUIraE9EMnpmNEpnZHRGeFRJZnErL3Fvd3NIVFVlb2U4Q3VjaCt1Zkh4NVByMy9ZSHYwb3A3ek1kNlhuQTg2REtWNXJpRnNZOWVHY2UwVndQc1M0NWNmNlhYNDhaM1dFYVpIcDh0bTMwcHRTUktwSWpmQ3lTTnJKdTMyTlp1SE1waC9ONGYzcjFveFRUekkrRis4Wk9wZHpuK1Z0RGdpZURnREE3eUVaSlg2S3NYUFBVWGEzMVhLby9uYUIyVzRUclQwYnpzTnlidVowUWc4cFBlV1U3d1h4UmVuNXhjNkRua2RKNlB4NkIrZkRsaDR6dEYveTFrdnNudkxWLzZTSU9xOVh3b3NpeWJGTEVhVnJDTTEzbmYwY2JPWEVrSEdEUlJubjRVTVJBUURBNDh4eG10WTdkR01JaTkxZjlsSExYMkpmV0ZvYWEvZGdkeDdFdTVpeTY4L2FTZm9wRGJEdUp2WTJpcHJmc3RVT0RwcnZuTm9IR0p1N21FMmZMeExFeVovcExMWDBOQWIwaGVtcHhDNkVxY21wUlNRa2l5QjhKNjNVUEVvaFMwVzV2U3RiTmVmc3pzTlJuV2tjcDBKNFdTVHQwamp4Tm9pbTFBM1I1dEh4SFlqVlhYeFZVWlNhb0g3a1Z5cnNlNXdINDQyQldvMXJ3OVNyakhUZFlUTTFwVjJGSnlNMUY4cnRmdlhEc1lnQUFPRHJtV1B3SVU3ZVQ0dUhNUGxYMlVtdHoxeUk4eHlEZDY0WS82enR1Y25mTVBPd0RhTTJ0blRkbTZZeGVlZW5ac1EwKzN3ZlczVzI1VVRWK092UTV5N0VOY0dHalRBeFBjV1U3MGIvUmVtcHh0NkVLYitwUjlRWVozM2htMmkxUENvalQ4YVpkSHZ4cTdiR0d4dDBONWpxKzRlTE44V0lSSkZFNFdXUnBOamxpQzdPUEVoNnBEZ1BTaDZwUmJGc2dvNWw2SXAwOVAxUnh2VnlVNkF1bjRWSVpkcnNjMFoxb0hWbXRNN0RVWlhKWnREMjVXdytWSDZicVpscTgwalVTRlp6SkNJQUFQaDc1aGljQ3pHV2t3Ymk0S3Z6VXl4SHI1NXlIckpkR0lXRjFRNHVka2RNZlRZT0tvZlpFYW95czYyZjcyTGM1ank4cEpRM0NIQWsvRnZTOC9ETmZwaWR6d1ZEeWpwODNzdWpQSnpNT0Z2K2lNRTFhNFNLZ1ZRMVhyZDhKY2lnUjNTZ1doWkNUNlFpZGkwaTU5T2VoKzZpT0VrMUplTmE1MEhOSThsajZjLy85SVE0VWQ4SE1rNTlXTkVwbjZsZUgzbHE5akt2VlprVVVSUTNTdzA1RDJweklXclU4NnNCQU9Bbk04Zmc5aVkvTmZkclh5VDNiczZ2WnNkRHpvTzI0S0hxZmZLaHdHdytQTnY4ZVRBTzJoVktNVVVQUHZmTEdqQkpYQU9hODVEazhyVmxLWW4rUmVtcHZHa05zeE9STkFyYkNpL1J5Nk5lQ21VV1VscDZFOHdXVXNlVzZzNW0xQ3Q0Uk9GMWtZb3c1WWp5VFRWcHE0MFZlOGFwZVNRbVc3Y0pFb1E0VjJHRkwycU9sM29wWDJrRDcySXFGY0kwdGVOY21IbU44MkdLeXdpRTJqeDBrWnFMa1FxTDh3QUE4SHZRckZVWFlneStkd0RpdXFMbXdwNkgvQ3Z4NzBOanQrMk84Z242OTg4ODFLdDdCMDljc2d5Zkh5WHZkNlduUGdJdGhOa2ZxejUwSG94SjNjbWoybEF0TnpSSUtWOUZlOUo1NkVSVWlXUW9ZTjFpSTBYVWRWMk9HWnA1VUliM3RiM2R2U1pJRmVMV21ZZlhmYzZEY2VaQnJCMWFtSWRWUmdqK25FMHZqalV3OHdBQThDZFJoN3JYWWNMa1RFejUwYUhyK0hlKzh1SDhhVXZ6ZE5RajF2OTR0ZjkzZmovL2FkcFdWUmZIWTc1cno0TWlyaE9XazRqeDF1a3BwM3hmOUs5Sno0NTlVNFVweTZsSDFCaGVndkJIdEtaL2xVUEx6dVQ5bjh2TFB1eXIxT3U5RlVXQVBrelpJVm05WlV0S1JLSklZZ2lDU0Vyc1FrUXVYOVBpUWk2b3VkQTJlWlF5Tzg4NEpZL1VFZmlpQ1RxV29TL1N3ZmNIR2RmTnpXT0pTcEhLa2w3dWVaQnJuS0xsVVpWSmpVbkljcjFPS1V1RDF1YVJxSkdzNWtoRUFBRHc5YWpPUTJNNFpPdWk4dzJEK1dycHpXeXdMaUNwUWxoWHlkaU4zZGZMdGR0TS9YNzhTRDdHdGhvaWg3ZXYxTktuaFJXbXozUEpTbkVOOWtZaGZwYkdTc29maHZBRjZhbkVMb1NweWFsSHRBV1NtYnJxbnVOajZaUXg2cXg0cC95UVRnd3FDODZTOVB1TkNsV05rU3FIRkZGMzJMd1FYaEJKaVYyTVNIblZXbWlsUEZxZlZjVkd6aU50Vk5yaXUxeXVzTmFNMDlLekUzQlpQZ2RPV3hLVHJnbFRyekw5MDVaSzJjdm1Ra1hLSStOcFMyTVJBUURBRDZZejZDbGdINUwvbTloV1R3QjhFY09GOXVaU1B0WUVBUUFBd0VjWjdyaGRtT2pvQWY0dzl6b1ArQTRBQUFBL0JUOHQwOXVmbGdNQWZoRDNPUTgwUVFBQUFBQUFBQUFBQUFBQUFBQUFBUEMza004VTJROVpPYjBrNDdPbm5OdGpGdytZdmFENzUwOTMvN2dFK3NyOTc5aEUvKzFaL0IycEJBQUFBQ3R6UlhiYStaVC9XUnhvdUozMnAxMmZKQWZZb040SUlSeFgraXBQRzJ3dWxEZytWTkprNUhSZXVtckVwTHVCeDBUU2tZOWVsMU5kaU4wdTUzbmRkUTF2MXowL1RMUFV3S3I3dS8wTWE2cVdKNW5WMVVCOVV5OE1WNFJwK0VibklUbEVtZjdWSFNsK211TzlrZ0lBQVB3ZHBQN1pUM09NOGtXdCsvMC9tdk5nN094bDUwRzZLRzB4VWRKTlZuNEtQdnZjZEU3c3A1MkhzeUtOZjM2L09mY1RuSWZjTm5RK25BajdPNTBIUDhWcDJnVmJuT1NsU3ZqbUtwSDh6UldyVXIvS2VkaS9MTnVYYkJLSStRd0FBSUFyQ0QzcFloSVU5bms1YWpmNVo1eUhjcFhIWnBsSXI2N1BqaTlkMWk2U1NvL3owZG9ZbHFIZGVseFhUQ1RodGpBYmlranlkVi90V0xQNithN0V3ODZEOGNhckpFcVdUWS9vUG5peGVhdWdKbEtNVTVKaExZdjUxVzc5Sy9MazdGbjBzVnc0dU53SW5hZGllYXRqUGxOWXZKbkZkdEo1dUpMRkxTN0VHR09jNXkwNTI3bVU2cTR4S1pXR2FweFFKTmE4Ky9oYU5nQUFnQitPWkRqRXRaTk50dGw3Wmg3cXo1ZDN4TTdlVC9NVVFyUWU2Tmd4R0pLYTY1MjJMbE5TRVd4OTROMXJ2UUw2aE9uYWlpU0U2VUtjTjB2SitWRGNHdnVwbVljbHdlcFVTc0svbkYrMVdFUlo1bzBPak5wTHVtZGVYMmJZanFGdWVCRTg2OVY1dGsxbUZSZTE1MGwzVkZOY2lHc3lhTTVEZHFOeStXWlBLWWtIc2xoS2hzM0I4UG1jWWh1Um5FcUROYTYzcXBKRFlBRUFBSzdRMk1XN3diUC9VdTU1aUVFZjdhMEdjVHU5dE4xNUVCMlNaVk5HakVaTG9HZEY3ZUhubGw0bFhpV0RQRU15aHJROXVRbHpNYmNrWS9oanpvT1lTdUxHWUJkaW5DYkp3YnRaOStUMXZVeVRVUkthODZDdHJldGJ5M0lJVmRKMUE5amx5UVNybGkzTmV6VnQzdXdvSmZGQUZvdktwUG5DVG8wVFUybTR4c21UVVg3Q2R3QUFBTGlLUE9wWS9Pckx4UVA3OE9GN1poNTA1MkgzYXd6R2dHUlhiU1BWK3lxSy9LVldrdHE2VXBhNm1CRXQ0RFpNNThNVWw2M0E3V2o3aDZ5SE5wWEVXSmVCKzBsdzhHN1dYUjJTSDBCeEhyUTB0anV0aXMxN1VGUFNQdTlDaUh6bFR0aVdENHB2ZGhWb1k3czlpK3ZYTk9laEgxSGhQQXpWT0dXdFl3ekIzRVFCQUFDQXlJRmRYQzR6Mkw2WS9DUE9nMnhyZGZZOHZJenVnempVbmErSEdKNTV1R3lBSEZqQXd2dUZERDlrNW1ITnYzYno2cTI2NTh2L0gzY2VscklUb21YRjNObVpoNG9iaHJER2FSV3UrK1piWmg3a0xOWmVPei96TUZhczIwS1FUNlRpUGdBQUFKeW5POGErL0ZYTlBFeVB6VHprYTA2c3B5Mlp4b0Z6WjJIL2UxdEFuYzA4YUhzZUdzdXAyZ1lTVHUxNW1LZktCRzdDZEdFSzJYS2Nldm04a05SV0srdnM2SG1XZHNZRjhhL1d0cnhkOTJYRDhQN1BjOHVXbXZUc0xtVlMxalFwYitkL3VwZHB6NE1naEE5N0Vndkwvcy9QUER5UXhhSmt0Zk1nUnlTbjBtQ05xOXVYdkZnc3Z4OG5Dd0FBQUVoSTNrTDEzMUNNYnE1bVdqdmt1VXhIR05jV2lKOHYvNGhGUEF2ZGV4NHM5dUllYkJWTnRvN0I2YWN0cGZlem8zaXU3ZEJ0UlJMRDFLTnBQaStUMU9CT1dRZm9hOTJIaitKWlpDdDkxSHQxVDA5dXpRN0JHaS8rclJjN3BTYTRrZE9XV2lHNkJ3NFZidzRWaGtleVdKQ3NjUjZVaU9SVU10YTRjdTVVOW0xY2lQTkJpZ0FBQUFBQUFBQUFBTURuK2UvZlAzNzQ0WWNmZnZqaGh4OSsrSG51NTlNR0w5d0gyUWtBQUFBQXo0RzErYXNnT3dFQUFBRGdPYkEyZnhWa0p3QUFBQUE4QjlibXI0THN2QW45QkZDT3AzK0kzb0dtcGdOWjM4dWdTRjlXYkxhemtPNlFTVHRLZDc0WXcvMTNwVHdUdTM3WDRqbnhQNnYzVjBqdzdjM3Z0MmZ4ZDZRUy9HNndOajlQZnFMaGVvSjdkY0prY2VGVWVWanE2NVVmcTdwbVovRzVFR2Jjais0WFVhLzNPbkYrYTNZNFkzYWI5SUVBMzR5MVhjNlB6S3l1L1B0Tjdicjlwb1FqQmp2VVMvMXZVUlI5OC9Uc01iTWR2cXM3dDE3Z1owcmt6a3RYdFU3M2RvK0pwQ09mK3l0WFN5RjJ1NXpuZGRjMXZGMzMxOHY1RUdOZEVWNTIzZC90WjV4cGZ1VmVVM3hUTHd4WGhHbjRUdWZoZDNUUThDNXdIajVQZnV2U2VtYTlVdm1GYTlyS0M5MysrL2R2TmQrN1licitWYlMzM1J6WDNDN2xrMUJuYm5UN0JtenRzcC9pTk8wZHhNZEg4cDZpVlBNYTczTWUwdDJFK1JobktxRFZUZHEzOEZYT2czblc1TlBPdzFtUnhqOS8vRXA0TzI5MEhvbzcrM3c0RWZaM09nOWx1N1QwZGt0MzVTdDV4UmJzNUpYd2RyN1JlZmd0SFRTOEM1eUh6MU5kMjdYZThpWlVmc21vTCsyQS8vNzlFM3dQS2N4ZTh5STZEMlZFMVgxVDB1Zmw1VjBqelprd1RxVGNISmRtVTZxRkE4SVFjdmRtcjByUmVaNHI3MnJvV3JIbHB1WFVRWmo3aWlFMUQrN3c2cXFaUlNST2JCMmtrYXptU0VSbTNZWHNVRzkrMDRjWEs3bVBTbkpmS1VFa1BUMk5lWlM3ODc3cmp5bGxYaGEweVUzekpKaVN5RUxzblZzZGhWcHZyWVoya2NRd2hjTFF2VHJ6SGM3RDhKVi9XUlA2aU83V0NTaFZRVTJrR0tja3cxcTdqTVg3L3VhM3lsby81YjJTMklLZGR4NnVaSEdMQ3pIR0dPZDVTODYyQ1JtNTFiRmI0NzVxZEFOK0FqZ1BuNmVvNTUyWkI3RkpLOS84NzkrL3hrK1F3K3dOUG9wOWl1aVFhQ0pOSWNSeUh0eUZPTTh4ZU9jTUE1bno3alA0c1B5NjNzVHNsbGtUTVczeUs1NjNJUlRudDdHVWJGelpUOGZqcmxYeTdHUFZ6ckJNeDRWWVhlQ2JXMnpIMS9MYTFKUkZzcXFaSWxMRFBPcEtXalh0RVkzcUxud3FyVFJ2aW8wZVV6M3owRmdZbHJ2Qnk5dlZEOUx6S0krMjcvcTJsU3BCUjgwbVBlK1llVWhoZERLdXljakJhbWdTU1FoVEx3eWZtM21RczBOb3JGWlJsam5kQTZQMmt1NkZ4M3R5clo2NEZHcHA2MnVuY2FCNDM5cjhxbFZiYmNIT09nODNaTEdVREcwUExrWjBRNDlnNnFBQlhxOFh6c00za0kvZXlPTk0yYm9LcS9NZ2htazBqK3pPZ3liU1BNY1k2NVZSemsreEhoRVRXSnBLTDNjOXgrS0pocEU4YmRLaE5RMEwxNlR6OFI2NEhFdC94ZGc1TlJYZGUyb2VmbjVrUFIrbzJZL0k4bVl6OEdod0hwcGlvOGExNzk2Wlk5Z3M0QmpjUGc1NHhuazRTcy9EUEhJaHpyRnZUaFNjVHM4N25BZFRzYWtrSEs2R0JwSEVNUFhDOERIblFVd2xyYkdLMDFRTnZvaENYdFE5ODNpMytuTTVPMVN0aG9yM3ZjMXZ0V3hwYlg4N0xkaEo1K0dPTEJhVlNYUDVuUnAzc1VkNG1UdG9nTmZyaGZQd0RhU2hnOTJ3TlBnSjRzTjI1a0VMczJjL1hIY2V0Z2psS1BadEdBck9oeWt1elZnMnFsS081R3lQZHlOd25yV3VZTlcyWk5RMGxHS1hTQnNOMVphNlk1aWVVN1BvS214cWFwL2ZxR1pYbzhFM0RjNkRXR3cwNFpOMXRlMXZVSWNuTytJZWxaRGhQSEs3WmRPTnVDa01tb0JhZWw1d0hxeEZVWTEzcUJvYVJGTEMxQXJESjUySGZna3BOWXFUVUJSdTFuMjR6QXNvem9PV3hzWWN2N3Y1elZmdWhHbWJBVkZic1BQT3crVXNybC9UbkljYldwdE92QWNkTk1BTDUrRWJ5S3ZwV3V2bEpsSnEzY3RtVnR6eklJYlphNFRGWGtSdXo2Vlgwek45bE4zV1VhV2RxL3BZU3hwZGtzWmFLbkhObkIzNnFxYU1SUE91N3p5Y1VMUGZVV2tSeVQyTmJlYkJvbVluSXJ2dXd2K0VnSnVRekY1S2lxdUkwcENRTnVkaEpJK1dmQTZ4T3h3cEZvWkRBZSthZWJBVXhmN013MldUNU1BQ0Z0NnZCMDArNWp3TURFdXZiV3M5ZDN1ejd2bnkvOGVkQjFQeHp0OTlwdmxkaGV1KytaYVpCem1MdGRmT3p6eWNLOWFuQ2dQOEtYQWVQazg5VmpkUFhta2lYUmcvYlVrSTA3bndudE9Xc3JFbUY2YTBwallMcXNXRktWUUwwdmVBM0N0ZjVlbjJ0ZXZLS3M5Nno4TWE0NXB5UGFvbWY0L0pzdWcyZmJPKzZKTkdobVZMUmpWbGtheHF5alo5RWVZSk44UWNrVm4zN0grdDh6Q1htd1dGWXFOR1ZNdzhaRE56OXRPV0xJT2pJM20waDllWFhpbnozVmN2N1htWTZ4MlpUZXlkakdzaUdxeUdCcEhFTVBYQzBINitQemNWK0xPajUxcDJDSTFWMW5CVWJjWHR1aThiaHZkL25yQXpwZlJVSEFwTDhhN2Z6djg4Mi95K1hqN3NTU3dzK3o4LzgvQkFGb3VTMWM2REhOSFZIc0hhUVFPOFhpK2NoMytnN1cvanR2U3duV3UwM3ZQUURmUDRuZ2Q1cnZQRVBRK3BHY3JXbVI5c3puUHRKajZYOXZhVnh4REZkZFNvc1BmNnB5MzFZNitWVDNQYnk2ZVc0ejZTeUp0VEZmYlU3MFkrcEtZc2trMU56YVlmT20ycENXa2dJdVhOUm5jbE81Wi94U3FMekhzLzVmd3czdk1naWFTbnB5MlBDak9rMzNVclpWNUN5MDJ6ODlBbXNoQzdVbWpMN3pQbHJ1M1FiVVZTR2d3dG11YnpNajhOcTlWRzB5NE5wUXdleGJQSVZvNEQzYXY3Szl2OGMyTjJDTmE0c1hnLzBmd1dhU3hPaVVTbHZUbk02QWV5V0pDc2NSNlVpSzcwQ0NNZE5NQUw1K0dYOFd1ejgvNVZCVi9KT1RXWllnWUFBSUIzOFd1dHpiL0pyODFPbkFmaDRXbWIwV0dLR1FBQUFON0VyN1UyL3lhL05qdHhIdVMzdGFsNEFBQUFnRWY0dGRibTM0VHNCQUFBQUlEbndOcjhWWkNkQUFBQUFQQWNXSnUvQ3JMekp2VHphTmhoOEJDOUpWc0R4d085aTBHUnZxellyQ3ZlYnBGSk81bHp2aGpEWjVjcTJtT3YzN3lxKytlWGFINWNnbTl2ZnI4OWk1OU1wVy9YL1FUakl0M1pmdjVZc0RZL1QzWTAzSFpsUW5WZ1hYRi9qZTJvMW02WXgwZTFhaTIzZE9aYjk2alc3QnpyN0hMYUF3RytHV3U3bkovQWw5cmJYOWZpMkE5ZVAyS3dCYi9VQnhWRnNUMEcrWUdEQ3IvRDZObXduczlsU3VUT1MxZTFUdGNBajRta0l4OGpLbGRMSVhhN25PZDExelc4WGZmOEZPbFNBNnZ1N3pZRnp6Uy9jcThwdnFrWGhpdkNOSHluOHpEVVFYK3Q3aWNZRm9uekRWOHZuSWR2SUwvRVpUMEMrOFpMNHFRdyt6ZVYzWGRKbkhKMTIrdmxmRGh6UWRRM1lHczAvUlNuS2QzejhIM3Q1VDJVYWw3amZjNUR1dW9zSCtNY3ZDUnVrSzl5SGtZdWlmdW84M0JXcFBIUDc2K2lQOEY1eUs5Y2NENmNDUHM3bllleVhWcDZ1Nlc3OHBXOFlndG1WZXByRGVnemdnMTIwRityK3dsR1JmckNpZkJQZ1BQd2VhcGJnT2JKS3pWVE11ckxjdnpmdjMrQzd5R0YyYXY3b3ZOUVJsUmRYeU45WHQ0Rk5OTFdDT05FNnUxcDRtaCsvNUs0ZzlPSjlzR25RckdoVzRxV2kxdXpTK0tzamRPUW1nZFhBblhWekNJU0o3Wk1KempWYW81RVpOWmR5QTcxSWlsOWVMR1MrNmdrOTVVU1JOTFQwNWhIdVR2dnUvNllVdVpsUVp2Y05FK0NLWWtzeE42NUpFNm85ZFpxYUJkSkRGTW9ESjM3QnQvalBBemZJSlkxb1kvb2ZtMEF0U05TakZPU1lhMWR4dUo5Zi9OYlphMmY4bDVKYk1IT093OVhzcmpGaFJoampQTzhKV2ZiaEl4Y0V0ZXRjYVBPd04yNm0xdHZXYzJ4ZHFrTlVINnpUVHFsL2RSMGJ5ckNTQU5vLy96Sk9YTWRuSWZQVTlUenpzeUQyS1NWYi83MzcxL2pKOGhoOXB4bnNVOFJIUkpOcENtRVdNNkR1eERuT1Fidm5HRWdjOTZycXQ4dU0xZ3VkblV2NVZxRFhKMXNDTVg1YlN3bEcxZjIwL0c0UVpVOCsxaTFNeXpUY1NGVzk0SG1MYzdSRGROV05XV1JyR3FtaU5Rd2o3cVNWazE3UktPNkM1OUtLODJiWXFQSFZNODhOQmFHNWFyaDhpTDFnL1E4eXFQdHU3NXRwVXJRVWJOSnp6dG1IbElZbll4ck1uS3dHcHBFRXNMVUM4UG5aaDdrN0JBYXExV1VaVTczd0tpOXBIdmg4WjYwTzZSMFc5djYybWtjS042M05yOXExVlpic0xQT3d3MVpMQ1ZEMjRPTEVkM1FJNWc2NkNkMFA5TjZ5NFhCMUM1SnV2ZUVyNUt1YmorMWxsYW9DQ01Ob1BWejBlQjVBemdQbjBmd1pLdEJuYXlNV0owSE1VeWplV1IzSGpTUjVqbkdXSytNY242S2hzR0ZwYW1zcWtEbEhIVEVFdzJqeHRJeldNWktZM0ZrVnUrQnk3SDBWNHlkVTFQUnZhZm00ZWRIMXZPQm12MklMRzgyQTQ4RzU2RXBObXBjKys2ZE9ZYXRwNG5CN1dOaFo1eUhvL1E4ekNNWDRoejc1a1RCNmZTOHcza3dGWnRLd3VGcWFCQkpERk12REI5ekhzUlUwaHFyT0UzVjRJc281RVhkTTQ5M3F6K1hzMFBWYXFoNTM5djhWc3VXMXZhMzA0S2RkQjd1eUdKUm1UU1gzNmx4RjN1RWw3bURma0ozZSt0OVdCaE9kR2NHNFp1R3V2RnRoWWdhL2NjYVFOdm41c2I4ZG5BZVBrOGFPdGdOUzRPZklENXNaeDYwTUh0RjdycnpzRVVvUjdGdncxQndQa3h4YWNheVVaVnlRR0I3dkJ1Qjg2eDFCYXUySmFPbW9SUzdSTnBvcURZTm5ZYnNuSnBGYzJsVFUvdjhSalc3R2cyK2FYQWV4R0tqQ1o4NnFtMS9ReFhjQ2VmQm1KNjlQSEs3WmRPTnVDa01tb0JhZWw1d0hxeEZVWTEzcUJvYVJGTEMxQXJESjUySGZna3BOWXFUVUpyMnhtMEFBQ0FBU1VSQlZCUnUxbjI0ekFzb3pvT1d4c1ljdjd2NXpkZDZoR21iQVZGYnNQUE93K1VzcmwvVG5JY2JXcHRPdkFjZDlCTzZXMXZ2aTEya1BjeE8wclhPZ3h4Um8vOVlkdGcrdjcvbHNvTHo4SG55WXIyV1BibXNTNjE3V1k3RlBROWltTDNhSlBZaWNuc3V2WnFlNmFQc3RvNHE3VnpWeHdiUzZKSTAxbEtKYSticzBGYzFaU1MyaEgzbjRZU2EvY1phaTBodUxtMUROUlkxT3hIWmRSZitKd1RjaEdUdUtsSmM5WkRSVVVMYW5JZVJQRnJ5T2NUdWNLUllHQTRGdkd2bXdWSVUrek1QbC91NUF3dFllTDhlTlBtWTh6QXdOTHUycmRVLzc5WTlYLzcvdVBOZ0t0NzV1ODgwdjZ0dzNUZlBPdytYczFoNzdmek13N2xpZlZnWUh0UDl1UFZXSmxnRzJxVittTHZ3blU3Tk92UFFXUDhEMldINzNOeVkzdzdPdytlcHgrcm15U3ROcEF2anB5MEpZVG9YM25QYVVqYlc1TUtVMXRSbVFiVzRNSVZzS2owMVEzTzlySEQ1dDFzaUZzOTFxdlk4ckRHdUtkZERiQjdjUzFsbnFRV3h2dWlUUm9abFMwWTFaWkdzYXNvMmZSSG1DVGZFSEpGWjkreC9yZk13bDVzRmhXS2pSbFRNUEdRemMvYlRsaXlEb3lONXRJZlhsMTRwODkxWEwrMTVtT3NkbVUzc25ZeHJJaHFzaGdhUnhERDF3dEIrdmo4M0ZmalVvcGtFYlR5Mk9wV0V4aXByT0txMjRuYmRsdzNEK3o5UDJKbFNlaW9PaGFWNDEyL25mNTV0Zmw4dkgvWWtGdGFadCtLT0ZJYWJzMWlVckhZZTVJaXU5Z2pXRHZvSjNlMnR0NmptYUxza0JLa0pMeVdkVFhleEhJMDBnTmJQUllQbkRlQThmSjYydjQzYjBzTjJjc3Q2ejBNM3pPTjdIdVRKdFJQM1BLUm1LRnRuZnJBNXo3V2IrRnlJOGpGRWNSMDFLdXk5L21sTC9kaHI1ZFBjOXZLcDViaVBKUExtVklVOTlidVJENmtwaTJSVFU3UHBoMDViYWtJYWlFaDZzOUZkeVk3bFg3SEtJdlBlVHprL2pHZFdTQ0xwNlduTG82STc2bmZkU3BtWDBISnpZTENxVG1RaGRxWFFsdDlueWwzYm9kdUtwRFFZV2pUTjUyVitIcVNMM1hsb2RSOCtqbWFSclJ3SHVsZjNWN2I1NThic0VLeHhZL0Yrb3ZrdDByajl1SGh6cURBOGtzV0NaSTN6b0VSMHBVY1k2YUNmMEgyZ1haRFVIRzJYNmdBUFRsdXFMWjY2L2RSUFd4Sm1DcXlLMmovbnRDVzR6Sy9OenJINXZoL0xPVFZQclRjQUFBRDRxUnd1UnZvTE5zUG4rTFhXNXQvazEyYm5IMmtJUnRSMDJ5bTI5aVZHQUFBQVB4ZHJ4L2RIYkliUDhXdXR6Yi9KcjgzT1A5SVFERytvMHFiaUFRQUFmaCsyanUrUDJBeWY0OWRhbTM4VHNoTUFBQUFBbmdOcjgxZEJkZ0lBQUFEQWMyQnQvaXIrKy9lUEgzNzQ0WWNmZnZqaGh4OStudnY1dE1INzU4bU9ob3UySzlvdlk5bGplM29mN3NXMWhqOW5xYUx6d3JtNUF1WHhmK3RwYXUxMVdwT3Zqb0JMNTJCbjkyZHV4K3k2NHJiSjRuQnBVU2cvNWEvWkQyZ3FoTi9LWjNXZzRrSHN6UW0vUjJFZUhDVjhEOWZPcU9yVWpsTVY1L29KcHA5bHBOYSs2WFN3TnpZa1p6VWFGUEdLUm1KajlkTkxIUURBM3lXLzl1UGNUVDNENER6Y1FIYjNtL085ay9QTG0xM1dMSmFjaCtyZW5DM0k3QktZeFFoSVY4dlVWb3NUcmhIY1pZaldHemN0d2t0NUpNV2VuZXErWDc1MkZHYi9KcjE3R0xqclFPSmU1eUc3b2Vua1pWMmZacURXWGt4NU0rOXJTRTVyOUQ3blFXcXNmbjZwQXdENHUxUzNBRFYzWHVVRHlOSnRJUG9GSlZNYVdFcDNMbHF2Mm1sdG9PRmJZRTUxU2RtTkxlWHRPVUtDcE5IcS9GcXU4YXRoeE1Iem9WT01ldjE2ZStIMzVCWG5JYjJjUHVvWm8xb29zbmpwMytlY2gyeDRRU1FwME5LdVdsUEpFT2F3QmE0V0cvRlZZZDVrZnlwZi8xTVZCNmwydEpWTG1RWHFjMjRZMjlBeXVCQmpqSEdldDRZaGFTNWZUZGhVTGpHaXpqMStyWkJTeXB0YXNIbWVSZUZGT1FkRU9oQzBLcnROQVJ2U1NJcEdTbmtoZHZYeXRCTUZUR3lzdUN3R0FPQkhVVndHdVZuYmFiVForVWtZZ3Q3dkllOWNqZDcwK3RMMTlTclNOZFVqOTg4dnc5RGpnMW5wcnZqQzhoUVRwQkt1L054K0tYMGVrWmFlZlprRmtSSURNdytiQUxsM3QrYWtkNjRWcGd4RjlXQlcvWXJKakRQT2cwdkNTM2RmQ3JFZit3bHltTTJkdE1hcmYrdGkwMzIvZmFsK3FwYTZidTNJZlBYTnBITStHSzI3S21UYmxjYW1saUVyQlVXQ0gxVVp1UnFtaU5aM3pzNDgyRm93VFhnOVlGbWtnU3VpRzhkWEsyQldqY1FZdERlRkFscHJkSzZBaVkwVmw4VUFBUHdzaEpFcmNieFdOSGVxanIzczYrb1ZMYVVKTU9ZOGlCRnBJc1ZwaW5NOE41SWx5aWttaUNpdG1pRGpFUjFiMlBzUTRhazlEeFY3WEg2cUIwdWRuNklZVXltaWxxMjdVdnN2Si9jOFpKTWhyZVJpN0pyeklJWXBUOEhablllUjRtMXhIanFscmw4N1Vsa2EzY1RVTE5nYTFWMFRhVEc4dDBtdFpkVktOSlo1cFJwV3NaMTBIb3d0bUNhOEtHZEhwRXZPZzFMQXJCcDFZeEJXSUZxY0Izc0I2elJXYjFnbUNBQUF0eUlzOWE0bXd4ZjdUT3dNODRmMWdHNHpraVcvcWRCMmtPM25ta2p6SENkekgyM1JTRXlRVnpaclA4K0NTSDAxRHpXeWo4YjFONnRvVnJXNjRFaTNPT3FJVE01RE02OXljdVlobFUrTG55QStiR1lldERCTnN3ZVZra01aWjNVZWRBZnZzSFlzdzhGeGNmc3NKY24xU2xIL08wdkwwSEVlUk9IN2xjc2dncTZsTWtIUWFjRjA1MEdRYzFRa2k2Q2RBbWJWU0lwQmZkUGdQQXdYc08yYldLVVRzdzRBQUQrTnloamNsdngwVncrSUQrdHhPMzBhL1BHWmg3V2JQK00rakhrcDJ5RGF1WmtIMlV1eHp6eGtkRjYrMFhrNGVGUDhzRGFCMTFVZlo1WXRiWC9KNVVjS1ZEVEFER0VPTDZONHlIblF3ckhNUEJUaEhvcDB3WVo3WXViaHNISTFzVDB3ODJCd0hrUTVSMFd5Q0Rya1BMeG41cUg0MTBpRlNYSGhPUUFBL0V6cW9kbHRhSGgvdkorYVkxclp2Q0tNVWduTHNqdlVuWmNja1NCU2l2bnNHZ3lwa3hZU1pKZW9YbWd1Sm9neElpMDlHN0x6U3c3NjRJdk9RM1lvU2hPUllISEUrcndqeVNvLzZ6eXNXYXBQY1RTeFp3S0xweTBKWVRvWHlvSnpvZGowM2o5MEhwUnFLTDBvVlM2WG5YQnpNSkhpMUExQ3RtVTJwcGFoWjM4M1pWNnNYSEpFKyt2R2FUcjduZ2VyODlES3FZcGtTMDlCVUx2ellHOURlbzJWN0R3VUd0a0xtTnhZNmFVT0FBQytuSGEyZW0zWmhUTzR4MDViYXNjLzF4Y3RweTI5WHR2NS9GdW5OSHphMG1JWGxwYnJZY2ZkV2NiUUpJamZEei9aQjk3YzJHbExRa1RXMDVheWs5UG5tT1ZIdytXWkIrZlR3b3dzbGF2WmhGMnQ4Z0NXT25ZL0xjbWxMY2c1RU42Rk9NY1l0WSt0OXp4MHc2enZlWGlIOCtDVkEzclVvL0RiMnRGV0x1czUrbHJrTC92OG5mRzBKY1grbGs5YldnTU1RYXlHU25wWUtuajFqcVVGMDVjdEtYSXFJcG5TVThxUEFlZkIzSWJJS2Q4dERhVkc1b3NhcE1hcUV3OEFBTUNYTUx3VzVRU1hGeXNBZkE5VW1YdDVSM29DQUFEQVQrSXZXVUlBTjBDVkFRQUFnTDhMbGhDczFNc3lXSndoUTVVQkFBQUFBQUFBQUFBQUFBQUFBQUNBbTBnSDhYelBhZ1NXUmdBQUFBQUFQSVoySktLWnB3NFdNZDBTVWZPUTg1RGRMaHVGODBMenBMdi80ZTZrU1pxZFNpVUFBQUFBZ0JPa3k1akc3ZzZ0ZzdqZGV2VlRuS1p4UitBUjV5RmRFSldmdFM0bTNSTVBPNXFkVENVQUFBQUFnSEdLYThKT0d0NkM4NUFObisvM3lHNjNGSmtHeXYwVUozOUdIaldpUnFUeUhpZmZNOEhGVkhyYlEvblBWZWh6cVpTZkVOUzU5NjErZkhadUNnQUFBQUIrQTVYaG1kdXVsdHQyOTY5SzZ6VWJQdmRUM0s1Tm5kZkIrL2FhVkVtcytxNVZxMGhLUklKSXIreVZydXNnenp5SVNmZkV3MHlJVXNZTHFkVG90disyWFZuc3cvWnJTcnFYOCtFVDNvT28wYUNhQUFBQUFIQ1p4ZkIwSWM3TndQZHA1NkYwRGxiVHRqSGtPemJvYmcyZmRSNmFpRVNSMHZzeEhvN2RPNS8yUElUTjFHNlQ3b21Ib3RnWFV5bW5TS1ZZZXdjR1YrOXhjQjRBQUFBQXZvTHVVTGNWd1hsb3JzdktJenB3SHZ5MGJVayt2V3lwamtnVUtSZjNRT3RzOEgzZmkvRGhtWWRycVZUc0FFOHJsNXdQVTR5eGVNVHBWUUFBQUFDdzhzQ2VCekVVdS9QUVh0YzdKSlBtUENpQkxFdDFRb3c5OTBHMjZUKzY1K0Y2S3MzRnNpUlgvMStldEFFQUFBQ0FQNDE2dkk5OVdVaGpYK2JtcVBOVDhDUE9ReG53bVdWTFVrU0NTTG5rZlJPNVdNL2p3cmJOK2h0T1d6cWZTdHZHa0hUVXF3dFRhSTZVWXM4REFBQUFBR1FvWittTUdHZmJob0JzdzBRNnRtZmJ2SHpkZWNoUFI3SjhVMFRVaUZSNkRQdEdBMFhERVBjOUR5bVozblRQUXpYUFVDWEJtVlJLV1JaRDVxUzBhYVRMK1VaRWpXeHFBZ0FBQU1BZjVhbkw2SDRYdnkrVlJJMStuNW9BQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBOEhiUzNXdmZzM2VWUzgwQUFBQUFBQjVpZHdET205eFBIWHlUYmlBWTRDSG5JYnVRT2ViWHVMM25xRmJ4WVg2dUt1NFNBQUFBQUx5TlN5YjNNODZEbitJMGpVdjFpUE9RN2xUTGI0ZDQyeVZ4MHNQbG1vUHQ2alptV3dBQUFBRGdiZHp0UEdRajVXRzdrQzJHL2VGeFZINktrejhqbFJwUkkxSjV6NWp2T1NwK212UHBodVhOano2c2tzWlBvd21WN3AwcmJoVVhKek0rZlVrY0FBQUFBSHdWZ3BsdXYyRzZjUjZ5a1hJL0xlUDBhMmpyWmROSDRib1ExNCtLZ0MwaUtSRUpJcjJ5VjdxdWd6enowSmp2OCtRLy9OQ2VTbzF1KzIvYlhkTStiTCttcEhzNUh6N2hQWWdhRGFvSkFBQUFBTGR4cC9OUU9nZHBwTHcwNURzMjZDN01XZWVoaVVnVUtiMGY0K0VNaC9OcHowUFlUTzBZbkF0eHpxWUgzdmF3WHJZMG4zWWV5bFNLdFhkZ2NQVWVCK2NCQUFBQTRLdTRjOWxTT29OcG94b3BQM0FlL0xSdFNUNjliS21PU0JRcEYvZkFDTTBHMy9kdEJ4K2ZaTWpYWVlWcDFJN09kb0NubFV2T2h5bkdXRHhpUHdVQUFBQUFsTnpzUExSaDNaMkh0QmhmV0pSL2pPWThLSUVzUzNWQ2pEM2JXemJmUDdzUm9pZmdNZmtLSlNrNzBzYnNiNWg2QUFBQUFJQ3Y0dEt5cGNhK3pNMVI1NmZnUjV5SGpsVEdaVXRTUklKSXVlUjlFN2xZeitQQ3RzMzZvNmN0dlh6WU55Sk1oZkQyeFYzckZwQjU5eE9tMEJ3cHhaNEhBQUFBQUVpVUkvMWp5M2xTR0xIOE9qKzJaOXU4Zk4xNXlFOUhzbnhUUk5TSVZIb00rNTRDUmNNUTl6MFB3bFVMSDczbm9icm13WkpLS2N0aVNQNklrRWE2U0c5RTFNaW1KZ0FBQUFEOFVaNjZqTzUzOGZ0U1NkVG85NmtKQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBL0Z6L05NVGpsbnk3RWVVRi9wNGNMOGR5SHQzd09ZR01yNTNscGN5SE9rN2Q4cGRlT2J1V0NsNXp5WDhoeFlTaGVQYUZScjYwYmlCMEFBUDRjY3lMRzROL1JuMXJzbTlNMjBOOXhIbHlZZGt1eTA4LzdhYzd6ZVBKdWVaaC80cWQ1OHBXOTRLZDUvYk9JYUNraXlZaXRqSmIwYnB5eWRQUlQvbG9WZTRkQytLMThsaG9keGU3VG82VjBINFc1NmZnbzlpUlF2cjdWZWNqVDdTMU53TTJNMU5wcktXL21qUTNKV1kwR1JieW0wVjdFZm1ZSkF3Q0FuR1JxT0IvaVc0YmpjQjV1WURIMVhmYTc4bUtla25zV1M4NUQ3aTlrUWZwcFRrNmw4MkVLdnZvc2x5azVvTTZuTi8wMHg1aGtISEllUk9HbFBKSmlkNmxJdTdCK2RoU215NUxoS1M0TzdON3JQTGd3NVNYcFo1VC9nb0ZhKzY0aDlmYzFKS2MxZXFQemtCcVJ2Um9DQU1EUHBXakprMVdYRFJRSkE3dlo2TkgyckJob2Zya1E0NVNHTTBNMldoM242WlR6b0VWVWlaUzZ1Rk9Ha0FzeGhqM01Za2xKa3lCcHREb1pvK256VWs1elJMS2FMWVVCM3V2WHE1UmN2cE9kaC9SeStxaG5qR3FoaUxxNjlPOXp6a011dkNDU0ZHaHBWNjJwWkFoejJBSlhpNDM0cWpCdnNqOHRkUkNyb1Z3NzJzcWx6QUwxT1RlTWJXZ1pYSWd4eGpqUFc4T1FOSmVxakZDNXhJaXFhYWllOEhMS20xcXdlWjVGNFVVNUIwUTZFTFFxdTAwQkc5Sklpa1pLZVNGMlJTTnpBVE0zVmdBQThDUEkrdVprYldjRFJYNFNocUNkRDd1cHZveC91OUtlY1NFMnZYNzI1cmp6SUVja2lMUjJUY3N3OUhnWDVVS2MxeEg5M1BJVUU2UVNydnpjSFJpZ2NrUmFlc3JmM3ozenNBV1ZlM2RyVG5ybldtSEtVRlNqWUJXdm1NdzQ0enk0Skh3YmtSajdzWjhnaDJrazZKcFRYVG1WWXROOXYzMnBmcXFXdW03dHlIejF6YVJ6UGhqZGh5cGtpKzdHbGlFckJVV0NIMVVadVJxbWlOWjN6czQ4MkZvd1RYZzlZRmtrVzNvSzRYVUttRlVqTVFidFRhR0ExaHJaQzFqMTVac1dqZ0VBd0dNSUkxZmllSzFvN2xRZGU5blgxU3RhU2hOZ3pIa1FJOUpFaXRNVXU5c0FPb2h5aWdraVNxc215SGhFaDIyczIxZnp6ekhvYjJwN0hpcjJ1UHhVRDVZNlAwVnhoTEVVVWN2V1hhbjlsNU43SHJMSmtGWnlNWGJOZVJERDFPd2JxL013VXJ3dHprT24xUFZyUnlwTG81dVltZ1ZibzdwcklpMkc5emFwTmZsTW44TXlyMVRES3JhVHpvT3hCZE9FRitYc2lIVEplVkFLbUZXamJnekNDa1NMODJBcllNdVgrOWdVemdNQXdFOG56WFh2bGtNMUdiN1laMkpubUQrc0IzU2JrU3o1VFlXMmcydy8xMFNhNXppWisyaUxSbUtDdkxKWisza1dST3FyZWFqUlFTcmxXeEc2NjRnMXExcGRjS1QzN2ZXdUdKUHowTXlybkp4NVNPWFQ0aWVJRDV1WkJ5MU0wK3hCcGVSUThiWTZEN3FEZDFnN2x1SGd1TGg5RnRQYWxabHJ4dGd5ZEp3SFVmaCs1VEtJb0d1cFRCQjBXakRkZVJEa0hCWEpJbWluZ0ZrMWttSlEzelE0RC9ZQ3hzd0RBTUF2b3pJR3R5VS8zZFVENHNQK3V0YTN6anlzM2Z5Wkxtck1TOW5HNGMvTlBNaGV5dmpuL1pkdmRCNE8zaFEvckUzZ2RkWEhtV1ZMMjE5eStaRUNGUTB3UTVpV0VscEg5SVR6b0lWam1Ya293ajBVNmF6bjBFZ3RpelE2ODNCWXVacllIcGg2TURnUG9weWpJbGtFSFhJZTNqUHpVUHpyY0tURFZLNEJBT0JuVUEvTmJrUEQrK1A5MUJ4cHdiSFRWd3pYbzFSamV4N3F6a3VPU0JBcHhYeDJEWWJVU1FzSnNrdFVMelFYRThRWWtaYWVZdm9VTXc5UE9RL1pVVHlOaVNsWUhMRSs3MGl5eXM4NkQydVc2bE1jVGV5WndPSnBTMEtZcms3TkM4V205LzZoODZCVVErbEZxWEs1TUtYeTBaOUljZW9HSWRzeUcxUEwwTE8vbXpJdlZpNDVvdjExbTBGcWExaUduSWRXVGxVa1czb0tndHFkaDdFMlJIdFRkaDVLalFZS1dKWnhuTFlFQVBBTGFHZXJZM0N2VjM2UVJuTitpdTIwcFhiOGMzM1JjdHJTNjdXdDZOODZwZUhUbGhhN3NMUmNEenZ1empLR0prSDhmdmpKM2lHNnNkT1doSWlzcHkyOVhqNXNPeEc2WjZkZm5ubkk5bGJrcVZ6Tkp1eHFsUWV3MUxIN2FVa3ViVUhPZ2ZBdXhEbkdxSDFzdmVlaEcyWjl6OE03bkFldkhOQ2pYc0RRMW82MmNsbHZiOUFpZjlubjc0eW5MU24ydDN6YTBocGdDR0kxVk5MRFVzR3JkeXd0bUw1c1NaRlRFY21VbmxKK0REZ1A1alpFVHZsdWFTZzFHcmtlaEhzZUFBRGdCeks4RnVVRVRNbkRMNElxY3kvdlNFOEFBQUQ0U2Z3bFN3amdCcWd5QUFBQThIZkJFb0tWZXZtSGJWWE4zNE1xQXdBQUFBQUFBQUFBQUFBQUFBQUFBRGVSRHVMNW50VUlMSTBBQUFBQUFIaU15eWZyUFhXd2lPbVdpSnFIbklmc2R0a29uQmVhSjkzOUQzY25yVDYyOGNzY053QUFBQUQ0NWR4d3A4OHp6b09mNGpTTk93S1BPQS9wZ3FqOHJIVXg2WjU0Mk5HTWlSWUFBQUFBZUJ2Rk5XRW5MVkhCZWNpR3ovZDdaTGRiaWt4ajVYNktrejhqanhwUkkxSjVqNVB2T1NwaUtyM3RvZnhuNTZHRmRFSlE1OTYzK2pHM1BnRUFBQUQ4WlNyYk03ZGRMYmZ0N2wrVkJtdzJmTzZudUYyYk9xK0Q5KzAxcVpKWTlWMnJWcEdVaUFTUlh0a3JYZGRCbm5rUWsrNkpoNmtRSnVmQm5uR0ZQdXR2MjVYRlBteS9wcVI3T1I4KzRUMklHZzJxQ1FBQUFBQ1hXV3hQRitMY0RIeWZkaDZLNTJDMWJodER2bU9EN2dieFdlZWhpVWdVS2IwZjQrSHd2Zk5wejBQWVRPMDI2WjU0S0lyZGVUaHFWUmVwRkd2dndPRHFQUTdPQXdBQUFNQlgwQjNxdGlJNEQ4MTFXWGxFQjg2RG43WXR5YWVYTGRVUmlTTGw0aDZvblEyKzczc1J2bmJtd1VhMkF6eXRYSEkrVERIRzRoR2JLZ0FBQUFCZzVZRTlENGRHYnQ5NWFLL3JIWkpKY3g2VVFKYWxPaUhHbnZzZzIvUS9lYzlEdmtKSnlvNjBXL3NiWmg1QUFBQUE0RXRRai9leEx3dHA3TXZjSEhWK0NuN0VlU2dEUHJOc1NZcElFQ21Ydkc4aUYrdDVYTmkyV1gvcGFVdjJ4VjNyRnBCNTl4T20wQndweFo0SEFBQUFBTWhRenRJWk1jNjJEUUhaaG9sMGJNKzJlZm02ODVDZmptVDVwb2lvRWFuMEdQYU5Cb3FHSWU1N0hsSXl2ZW1laDNvMlpwVlpmR2hNcFpSbE1XUk9TcHRHdXB4dlJOVElwaVlBQUFBQS9GR2V1b3p1ZC9IN1VrblU2UGVwQ1FBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCdko5Mjk5ajE3VjduVURBQUFBQURnSVhZSDRMekovZFRCTitrR2dnRWVjaDd5QzVsamZvM2JXNDVxZFQ0N1FuVy9ENkxpcHg5Yit2czBBZ0FBQVBpdFhESzVuM0VlL0JTbmFWeXFSNXlIZEtkYWZqdkV1eTZKODlubGJWNjZ6ZTczemJiOFBvMEFBQUFBZmhGM093L1o4SG5ZTG1TTFlYOTRISldmNHVUUFNLVkcxSWhVM2pQbWU0NktuK1o4dW1GNTgyMFBXLzNLaDdlY3R6VFFYOXdxWHM5d2xJL2ZkVWtjbHpnQUFBQUFmRE9DU1dxL1lib3g5YkxoY3o4dEkrVnJhT3RsMDBmaHVoRFhqNHFBTFNJcEVRa2l2YkpYdXE2RFBQTlFDYmVZL1U4OExBVEpoUzlWR0VvbDhYc1g0cno1RE02SDdkZVVkQy9ud3h1OEI1dEdnMm9DQUFBQXdHM2M2VHlVdHQ4YWNtUElkMnpRWFppenprTVRrU2hTZWovR3d4a081OU9laDdDWjJqRTRGK0tjelJrODhYRFh2SmtScVBXMXAxSk9rVXF4OWc0TXJ0N05HRFhDZVFBQUFBRDRGSGN1VzBwbk1HVTdYL01JRHB3SFA4VmtNbC9hODFDWXhkcG1YSXNSbWcyKzczc1JQalR6c0RrV3VXUm5NaTdiQVo1V0xqa2ZwaGhqOGVqZHV3OVlzZ1FBQUFEdzdkenNQUFNYNnZmTncvYlVuU0hKTk9kQkNXUlpxaE5pN0xrUHNrMy9tVDBQeFN1bnB3WHlGVXBTZHFUZDJtK2VlWGovUkFjQUFBQUFqSEpwMlZKajhPWG1xUE5UOENQT1EwY3E0N0lsS1NKQnBGenl2czFhck9keFlkdG0vYWJUbHJMRGxqWlJYUHFqbGRxK3VHdmRBakx2ZmtJNjFVbmNMdkw4bm9jQmpWaTJCQUFBQVBBQnlwSCtzZVU4S1l4WWZwMGYyN050WHI3dVBPU25JMW0rS1NKcVJDb3RWVmV0QjZvMURISGY4ekQ1SnN4SDczbklybm1ZWS9hcWtvNldWRXBaRmtQeVhJUTAwdVY4Z2hHTmJHb0NBQUFBd0IrRjFmQVdmbDhxaVJyOVBqVUJBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUIrTFM3RWVmTFNmL3cweCtEZUxjOGZ3SVdvSnF5ZUhSOWpVS1F2S3pZdXhIbWU1MXRra2pKdUMvOUtETDBDOFR6MjJPczNyK3IrV2IyL1FvSnZiMzYvUFl1ZlRLVnYxLzBFNHlMZDJYNittNS9mbWY2cTJLOHhKMklNM3IxZUx6L05PVmtSZFdGYTYyNmN0cWMrUGZMdVZYOHVoQm1uNVpHQ245U1d1NHBJRktuNDNFL3o5bGQ2NzBpQWI4YmFMdnNwNVZ0cWIzOXNpNk9ScTNtTndSYjhVaDlVRkVYZlBDMks5ejE4aDlHem9kYndDbE1pZDE2NnFyV2ZZaTNuUmR1ai9YeXZuRTJ3UXV4Mk9jL3JybXQ0dSs2dmwvTWh4cm9pdk95NnY5c1VQTlA4eXIybStLWmVHSzRJMC9DTnpvTUxNZi9vS0lpdjFmMEV3eUpaMjgrL3pCUDUvRUFEK01QSm1pNi9WbUNsWnJvUU4xZmc5WEorQ3I2bzh5NnNuK1dmUzJHNnpLUVhrS3VHRkpFb1V2bzhiNWY5Tk8vdnZad1BVL2ladGMvV2FQb3BUdE5lVW45aG9WMG8xYnpHKzV5SFphVEJaYisvWG5rQnpZcjNiWHlWODJBZWF2bTA4M0JXcFBIUDc2K2lQOEY1eUExRzU4T0pzTC9UZVNqYnBhVzNXN29yWDhrcnRtQldwYjdXZ0Q0bldOWXNIQWZ3dGJxZllGU2tuenhVL1Rad0h0NUJVUWtYeTF1dW1aSlJYNWJqTlhXcXo2VXdlM1ZmZEI3RWlNUlgxMmZsU01aSVd5T01FN2tRWTFnZTUyTkhhVGFsV2pnZ0RDRm5EN3VDN0lOUGhXTHIwemhOQmtYOEZDZWZsVlJ6b1IxU1V4YkpwbVlXa1RpeGRaQkdzcG9qRVpsMUY3S2ptcGRyWjdZT3BDOEtyVmlTKzBvSkl1bnBhY3lqM0ozM1hYOU1LZk95b0UxdW1pZkJsRVFXWWxjeWJuMjdqc0ZhRGUwaWlXRUtoVUg5ZkZmaVllZEJybHhOWTVWRXlaclFSM1MvTm9EYUVTbkdLY213MWk1ajhiNi8rYTJ5MWs5NXJ5UzJZT2VkaHl0WjNPSkNqREhHZWQ2U3MyMUNpb2l1OUFpYlF2UGtUZnJmcmJ1NTlaYlZIR3VYMmdEbE45dWtVOXBQVGZlbUlveGtoLzF6NjV5NXZlZFNza09KdlpLejI5S2VGTW5lQUk1OHJyVTJkVzdhelpnM1UyUlpaK1pCck5MSGZvSWNaczk1RnZzVU1TSk5wQ21FV002RHV4RG5PUWJ2M0ZIQ3V4RG52YXI2c1B6cVFseEhqNXlXTmxubnRNOXhPTDlOZG1UanluNDZIamVva21jZnEzYUdaVG91eE5WNWlrS0wwNjNlQTJyS0lsblZUQkdwWVI1VmtWWk5lMFNqdWd1ZjF2R0t4VWFQcVo1NWFDeU1veUxTT05OSDZYbVVSOXQzZmR0S2xhQ2pacE9lZDh3OHBEQTZHZGRrNUdBMU5Ja2toS2tYaHMvTlBNalpJVFJXcXlndXhHT2o5cEx1Ulk5NGNxMmVsRzVyVzE4N2pRUEYrOWJtVjYzYWFndDIxbm00SVl1bFpHaDdjREdpYXoxQ1V1bkkzSHRDOXpPdHQxd1lUTzJTRUdSWCtDcnA2dlpUYTJtRmlqQ1NIZGJQUllPbkgreEJ6NlZrUjZmbkVqTmlZTGo0dURPVncxUWFRT3ZuUXV4aWJ0ck5tRGVUTzBUeU9GTldScXpPZ3hpbTBUeXlPdythU1BNY1k2eWJJT2VudUhkVS9hR25XRmVCeWpub2lDZm1iVk00RFpheDBsZ2NtZFY3NEhJcy9SVmo1OVJVZE8rcGVmajVrZlY4b0dZL0lzdWJ6Y0Nqd1hsb2lvMGExNzU3WjQ1aGF5NWpjRnMzZmNwNU9FclB3enh5SWM2eGIwNFVuRTdQTzV3SFU3R3BKQnl1aGdhUnhERDF3dkF4NTBGTUphMnhpdE5VRGI2SVFsN1VQZXNSdC9wek9UdFVyWWFLOTczTnJ5K1hMYTN0YjZjRk8razgzSkhGb2pKcExyOVQ0eTcyQ0psT0Z0L2hadDN0cmZkaFlUalJuUm1FYnhycXh0b1VJbXIwSDhzTzIrZkR4cXl4NStyYVlJWHdzZ1RYbkFjNWk4ME5vTzF6Uyt5ZHl2VU5wS0dEM2JDMCtBbml3OGFtMThMc0ZibnJ6c01Xb1J6RnZnMUR3Zmt3eGNYUHlNcG5PU0N3UGQ2TndEbVYrelpvRjlKcndqU1ZJSUpheXcrS1R0cG9xRmFlVGtOMlRzMml6dHZVMUQ2L1VjMnVSb052R3B3SHNkaG93cWVXY2R2ZlVBVjN3bmt3cG1jdmo5eHUyWFFqYmdxREpxQ1duaGVjQjJ0UlZPTWRxb1lHa1pRd3RjTHdTZWVoWDBKS2plSWtGSVdiZFI4dTh3S0s4NkNsc1RISDcyNSs4NlVOWVZHejE0S2RkeDR1WjNIOW11WTgzTkRhcUJxWnRuemRyYnUxOWI3WVJkckQ3Q1JkNnp6SUVUWDZqMldIN2ZQaGxzdFV1V1FiVEJaZWx1Q1M4NkJrbktrQnRIOXVqMzJnQ1hvdnVTaXJZTEo4VXVzdUtsNStKc2xYUUFBQUR0bEpSRUZVTG9iWlN3R3hGNUZUV0hvMVBkTkgyVzBkVmRxNXFydURxeEtITXc4WEs1alI3Nnltak1TV3NPODhuRkN6MzFockVjbk5wVzJveHFKbUp5Szc3c0wvaElDYmtNeGRSWXFySGpJNlNraGJpek9TUjBzK2g5Z2RqaFFMdzZHQWQ4MDhXSXBpZitiaGNyTjdZQUVMNzF2Nmo3YzREd05EczJ2Yld2M3pidDN6NWYrUE93K200cDIvKzB6em03cEkvYzN6enNQbExOWmVPei96TUZDczl5QU05dEZqdWgrMzN2SkkrVWk3MUE5ekY3N1RxVmxuSGhycmZ5dzdESitiRzNQNWc2TU91ckRCWk9FLzZqeUlDWExSZWVnWGhxOTFIdFlxcGNqbnd2aHBTMEtZem9YM25MYTBlSWJMYUZpWTBwcmFMS2dXRjZhUVRhV25abWlXRnFKTjIzbzM4VnluYXMvREd1T2FjajNFNXNHOWxIV1dXaERyaXo1cFpGaTJaRlJURnNtcXBsd1ppakJQdUNIbWlNeTZaLzlyblllNTJzclZGaHMxb21MbUllc3c3YWN0V2RxN2tUemF3K3RMcjVUNTdxdVg5anhVaVN6RTNzbTRKcUxCYW1nUVNReFRMd3p0NS90elU0RlBMWnBKME1aanExTkphS3l5aHFOcUsyN1hmZGt3dlAvelJKOG9wYWZpVUZpS2QvMTIvdWZaNXZmMThtRlBZbUdkZVN2dVNHRzRPWXRGeVdyblFZN29XbzlRbG9EajBuQ3Y3dmJXVzFSenRGMFNndFNFbDVMT3BydFlqa1lhUU92bm9zSFREZlo0MkV2TURrWDQzbUNCclVFWmNCNHNEYUQ5Y3lGMk1UZC9odk93Vk50dGIwQTd1V1c5NTZFYjV2RTlEL0w4MUlsN0hsSXJsSzB6UDlpYzU5cE5mQzVFK1JpaXVJNGFGZlplLzdTbGZ1eTE4bWxxYnZuVWN0eEhFbm1WZmo5TS9YakR0RjFOV1NTYm1scGxHRHB0cVFscElDTGx6VVozSlR1V2Y4VXFpOHg3UCtYOE1KNVpJWW1rcDZjdGo0cjJxOTl6SzJWZVFzdk5nY0dxT3BHRjJKVkNXMzZmS1hkdGgzNHJrdEpnYU5FMG41ZjVlWkF1ZHVlaDJYMzRPSnBGdG5JYzZGN2RYOW5tbnh1elE3REdqY1g3aWVhM1NHUFJkb2hLZTNPWTBROWtzU0JaNHp3b0VWM3BFV28zNXJpTnVGZjNnWFpCVW5PMFhhb0RQRGh0cWJaNDZyVFJUMXRxSXJZcmF2LzgvcDVMMVZ5TVhUWUIycGJoa2toS21JMUlBNStyclkxNDJ0STNPZzl3akhVczZJZHpUczFUNncwQUFBQitLb2VMa2Y2Q3pRQUFQZjVJUXpDaXB0dE9zY1VUQmdDQXY0QzE0L3NqTmdNQTlQZ2pEY0dZbXZ2MDdSOUlHUUNBWDB1N1Z2aGd3Y2NmeHRieC9SR2JBUUFBQUFBQUFBQUFBQUFBQU9DSDBsMHR1RTRLenRaRDhZVHZyMHdYTXRzSWIyRXI1M2xwT3o1ajVMaDNzQWZsQ0NubHY1Q0JRNmxPYXRScjZ3WmlCd0NBUDBlMnhESGFybWkvak1XK09XMEQvUm5ud1huaDRGeUJjam5yZXFCWWU1M1c1Q3Q3SVIyZWw5MmZ1UjJ6bTR6WXltaVJEdlBkaE1pUEd6T2ZOeW1VejJxQjdrSHMwbEhDM1RBUGpoSytoM3RuVkhWcXg2bUtjLzBFMDg4eVVtdmZkRHJZR3h1U3N4b05pbmhGSTdHeCt1bWxEZ0RnNzVMZmNuSHVwcDVoY0I1dUlMdjd6Zm5lTUdGNWtjbWF4Wkx6VU4yYkU5TnB4REc3WlM1a1Y4dlVWb3NUcmhIY1pZaldHemN0d2t0NUpNV2VuZW91WG1Jb2hkbS9TZThlTGc3czN1czhaRmNvbnJ5czY5TU0xTnAzRGFtL3J5RTVyZEg3bkFlcHNmcjVwUTRBNE85UzNRTFUzSG1WRHlCTHQ0SG9GNVJNYVdCcHV6WmxlZEZ5MVU1ckF3M2ZBbk9xUzhwdWJLbVhsRFFKa2thcjgydTV4cStHRVFmUGgwNHg2dlhyN1lYZmsxZWNoL1J5K3FobmpHcWh5T0tsZjU5ekhuTGhCWkdrUU1XN0l3MWhEbHZnYXJFUlh4WG1UZmFuOHZVL1ZYR1Fha2RidVpSWm9EN25ockVOTFlNTE1jWVk1M2xyR0pMbTh0V0VUZVVTSStyYzQ5Y0tLYVc4cVFXYjUxa1VYcFJ6UUtRRFFhdXkyeFN3SVkya2FLU1VGMkkvdU01b3JMV1NHaXN1aXdFQStGRVVsMEZ1MW5ZYWJYWitFb2FnOTN2SXBjdTB0K2Qxcnk5ZFg2OGlYVk05Y3YvOE1ndzlQcGpsOXJ2aUM4dFRUSkJLdVBKeis2WDBlVVJhZXZabEZrUktETXc4YkFMazN0MmFrOTY1VnBneUZOV0RXZlVySmpQT09BOHVDUy9kZlNuRWZ1d255R0UyZDlJYXIvNnRpMDMzL2ZhbCtxbGE2cnExSS9QVk41UE8rV0MwN3FxUWJWY2FtMXFHckJRVUNYNVVaZVJxbUNKYTN6azc4MkJyd1RUaDlZQmxrV3pwS1lUWEtXQldqY1FZdERlRkFscHJkSzZBaVkwVkczVUFBSDRXd3NpVk9GNHJtanRWeDE3MmRmV0tsdElFR0hNZXhJZzBrZUkweFRtZUc4a1M1UlFUUkpSV1RaRHhpSTR0N0gySThOU2VoNW85TGovVmc2WE9UMUdNcVJSUnk5WmRxZjJYazNzZXNzbVFWbkl4ZHMxNUVNT1VwK0RzenNOSThiWTRENTFTMTY4ZHFTeU5ibUpxRm15TjZxNkp0QmplMjZUV3Ntb2xHc3U4VWcycjJFNDZEOFlXVEJOZWxMTWowaVhuUVNsZ1ZvMjZNUWdyRUMzT2c3MkFkUnFyTnl3VEJBQ0FXeEdXZWxlVDRZdDlKbmFHK2NONlFMY1p5WkxmVkdnN3lQWnpUYVI1anBPNWo3Wm9KQ2JJSzV1MW4yZEJwTDZhaHhyWlIrUDZtMVUwcTFwZGNLUmJISFZFSnVlaG1WYzVPZk9ReXFmRlR4QWZOak1QV3BpbTJZTkt5YUdNc3pvUHVvTjNXRHVXNGVDNHVIMldrdVI2cGFqL25hVmw2RGdQb3ZEOXltVVFRZGRTbVNEb3RHQzY4eURJT1NxU1JkQk9BYk5xSk1XZ3ZtbHdIb1lMMlBaTnJOS0pXUWNBZ0o5R1pReHVTMzY2cXdmRWgvVzRuVDROL3ZqTXc5ck5uM0VmeHJ5VWJSRHQzTXlEN0tYWVp4NHlPaS9mNkR3Y3ZDbCtXSnZBNjZxUE04dVd0ci9rOGlNRktocGdoakNIbDFFODVEeG80VmhtSG9wd0QwVzZZTU05TWZOd1dMbWEyQjZZZVRBNEQ2S2NveUpaQkIxeUh0NHo4MUQ4YTZUQ3BMandIQUFBZmliMTBPdzJOTHcvM2svTk1hMXNYaEZHcVlSbDJSM3F6a3VPU0JBcHhYeDJEWWJVU1FzSnNrdFVMelFYRThRWWtaYWVEZG41SlFkOThFWG5JVHNVcFlsSXNEaGlmZDZSWkpXZmRSN1dMTlduT0pyWU00SEYwNWFFTUowTFpjRzVVR3g2N3g4NkQwbzFsRjZVS3BmTFRyZzVtRWh4NmdZaDN6SWJVOHZRczcrYk1pOVdMam1pL1hYak5KMTl6NFBWZVdqbFZFV3lwYWNncU4xNXNMY2h2Y1pLZGg1S2pld0ZURzZzOUZJSEFBQmZUanRidmJic3dobmNZNmN0dGVPZjY0dVcwNVplcisxOC9xMVRHajV0YWJFTFM4djFzT1B1TEdOb0VzVHZoNi9zQTI5dTdMUWxJU0xyYVV2WnllbHp6UEtqNGZMTWcvTnBZVWFXeXRWc3dxNVdlUUJMSGJ1Zmx1VFNGdVFjQ085Q25HT00yc2ZXZXg2NllkYjNQTHpEZWZES0FUM3FVZmh0N1dncmwvVWNmUzN5bDMzK3puamFrbUoveTZjdHJRR0dJRlpESlQwc0ZieDZ4OUtDNmN1V0ZEa1ZrVXpwS2VYSGdQTmdia1BrbE8rV2hsSWo4MFVOVW1QVmlRY0FBT0JMR0Y2TGNvTExpeFVBdmdlcXpMMjhJejBCQUFEZ0ovR1hMQ0dBRzZES0FBQUF3TjhGU3doVzZtVVpMTTZRb2NvQUFBQUFBQUFBQUFBQUFBQUFBQURBVGFTRGVMNW5OUUpMSXdBQUFBQUFIa003RXRITVV3ZUxtRzZKcUhuSWVjaHVsNDNDZWFGNTB0My9jSGZTSk0xT3BSSUFBQUFBd0FuU1pVeGpkNGZXUWR4dXZmb3BUdE80SS9DSTg1QXVpTXJQV2hlVDdvbUhIYzFPcGhJQUFBQUF3RGpGTldFbkRXL0JlY2lHei9kN1pMZGJpa3dENVg2S2t6OGpqeHBSSTFKNWo1UHZtZUJpS3IzdG9mem5LdlM1Vk1wUENPcmMrMVkvUGpzM0JRQUFBQUMvZ2Nyd3pHMVh5MjI3KzFlbDlab05uL3NwYnRlbXp1dmdmWHROcWlSV2ZkZXFWU1FsSWtHa1YvWksxM1dRWng3RXBIdmlZU1pFS2VPRlZHcDAyMy9icml6MllmczFKZDNMK2ZBSjcwSFVhRkJOQUFBQUFMak1Zbmk2RU9kbTRQdTA4MUE2QjZ0cDJ4anlIUnQwdDRiUE9nOU5SS0pJNmYwWUQ4ZnVuVTk3SHNKbWFyZEo5OFJEVWV5THFaUlRwRktzdlFPRHEvYzRPQThBQUFBQVgwRjNxTnVLNER3MDEyWGxFUjA0RDM3YXRpU2ZYclpVUnlTS2xJdDdvSFUyK0w3dlJmand6TU8xVkNwMmdLZVZTODZIS2NaWVBPTDBLZ0FBQUFCWWVXRFBneGlLM1hsb3Irc2Rra2x6SHBSQWxxVTZJY2FlK3lEYjlCL2Q4M0E5bGVaaVdaS3IveTlQMmdBQUFBREFuMFk5M3NlK0xLU3hMM056MVBrcCtCSG5vUXo0ekxJbEtTSkJwRnp5dm9sY3JPZHhZZHRtL1EybkxaMVBwVzFqU0RycTFZVXBORWRLc2VjQkFBQUFBREtVczNSR2pMTnRRMEMyWVNJZDI3TnRYcjd1UE9TbkkxbStLU0pxUkNvOWhuMmpnYUpoaVB1ZWg2Uk1iN3Jub1pwbnFKTGdUQ3FsTElzaGMxTGFOTkxsZkNPaVJqWTFBUUFBQU9DUDh0UmxkTCtMMzVkS29rYS9UMDBBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBZUR2cDdyWHYyYnZLcFdZQUFBQUFBQSt4T3dEblRlNm5EcjVKTnhBTThKRHprRjNJSFBOcjNONXpWS3Y0TUQ5WEZYY0pBQUFBQU43R0paUDdHZWZCVDNHYXhxVjZ4SGxJZDZybHQwTzg3Wkk0NmVGeXpjRjJkUnV6TFFBQUFBRHdOdTUySHJLUjhyQmR5QmJEL3ZBNEtqL0Z5WitSU28yb0VhbThaOHozSEJVL3pmbDB3L0xtUng5V1NlT24wWVJLOTg0VnQ0cUxreG1mdmlRT0FBQUFBTDRLd1V5MzN6RGRPQS9aU0xtZmxuSDZOYlQxc3VtamNGMkk2MGRGd0JhUmxJZ0VrVjdaSzEzWFFaNTVhTXozZWZJZmZtaFBwVWEzL2JmdHJta2Z0bDlUMHIyY0Q1L3dIa1NOQnRVRUFBQUFnTnU0MDNrb25ZTTBVbDRhOGgwYmRCZm1yUFBRUkNTS2xONlA4WENHdy9tMDV5RnNwbllNem9VNFo5TURiM3RZTDF1YVR6c1BaU3JGMmpzd3VIcVBnL01BQUFBQThGWGN1V3dwbmNHMFVZMlVIemdQZnRxMkpKOWV0bFJISklxVWkzdGdoR2FENy91Mmc0OVBNdVRyc01JMGFrZG5POERUeWlYbnd4UmpMQjZ4bndJQUFBQUFTbTUySHRxdzdNNURXb3d2TE1vL1JuTWVsRUNXcFRvaHhwN3RMWnZ2bjkwSTBSUHdtSHlGa3BRZGFXUDJOOHc4QUFBQUFNQlhjV25aVW1OZjV1YW84MVB3STg1RFJ5cmpzaVVwSWtHa1hQSytpVnlzNTNGaDMyYjkwZE9XWGo3c0d4R21Rbmo3NHE1MUM4aTgrd2xUYUk2VVlzOERBQUFBQUNUS2tmNng1VHdwakZoK25SL2JzMjFldnU0ODVLY2pXYjRwSW1wRUtqMkdmVStCb21HSSs1NEg0YXFGajk3elVGM3pZRW1sbEdVeEpIOUVTQ05kcERjaWFtUlRFd0FBQUFEK0tFOWRSdmU3K0gycEpHcjArOVFFQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBdzRVS2M1M21lNXhqY056OEVBQUFBQUFBQUFBQUFBQUFBQUFBQUFJRGZ3Zi9BdmNBZFJXN2hMUUFBQUFCSlJVNUVya0pnZ2dBPQ==)
这里锁信息连到了一起,哈哈,如何解释呢,我们稍后分晓
先分析上面的死锁:
session 1 rollback后,二级索引记录为(33,17)的记录的被删除,上面的session2,session3上的LOCK_S|LOCK_ORDINARY|LOCK_WAITTING将他的gap锁分别迁移到下一条记录,即二级索引(20,9)的记录上由两把锁,分别为session2与session占有,锁为LOCK_S|LOCK_GAP|LOCK_REC,即死锁图中的lock mode s lock gap before rec;与此同时,session 2与session3在插入的时候,还要检测下一条记录上(即(20,9)的记录上)的锁是否与LOCK_X|LOCK_GAP|LOCK_INTENSION冲突,这样就形成了session2的LOCK_X|LOCK_GAP|LOCK_INTENSION在等待session3 的LOCK_S|LOCK_GAP|LOCK_REC释放,而session3的LOCK_X|LOCK_GAP|LOCK_INTENSION则在等待session2的LOCK_S|LOCK_GAP|LOCK_REC释放,这样就形成了死锁,这里事务选择回滚了session3
再分析session2的加锁情况:
session3回滚后 ,session2获得了LOCK_X|LOCK_GAP|LOCK_INTENSION锁与LOCK_S|LOCK_GAP|LOCK_REC,这个锁加在记录(20,9)上;heap no 8的记录即session2插入的记录也获得了LOCK_S|LOCK_GAP|LOCK_REC锁,这是因为插入时,会进行锁分裂,将heap no 8下一条记录的(20,9)的锁LOCK_S|LOCK_GAP|LOCK_REC迁移到了heap no 8的记录上;为啥上面的锁信息会连在一起呢,即既有LOCK_S|LOCK_ORDINARY|LOCK_REC又有LOCK_S|LOCK_GAP|LOCK_REC呢,答案是:这里的LOCK_S|LOCK_ORDINARY|LOCK_REC只是表示下面行LOCK_S|LOCK_GAP|LOCK_REC有LOCK_S|LOCK_ORDINARY|LOCK_REC继承而来,并不表示记录上还加了LOCK_S|LOCK_ORDINARY|LOCK_REC锁
3)总结
gap锁一般很少见到,当唯一索引检测重复的值的时候,往往会产生gap锁;另外当可重复读隔离级别下,做等值查询时,也会碰到gap锁(这个读者可以自己去实验),时间仓促,没有整理。
2)官方的一个死锁例子(之所以会选这个例子,是因为这个例子非常典型,为了更好的效果,我将隔离级别设置为READ COMMITTED):
创建表并插入数据
CREATE TABLE `locktest6` ( `id` int(11) NOT NULL, `a` int(11) NOT NULL, `b` varchar(30) NOT NULL DEFAULT 'xddd', PRIMARY KEY (`id`), UNIQUE KEY `a` (`a`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO `locktest6` VALUES (3,2,'xddd'),(9,20,'ddd'),(12,13,'ddd'),(19,7,'cccc'),(20,5,'abcd'),(21,4,'fff');
开启三个会话,会话的顺序是(1->2->3)
session 1:
session 2:
session 3
实验现象,这里session2、session3会阻塞(这里读者可以自己实验)
现象分析:
我们来看阻塞时的锁获取与等待情况
这里唯一键a=17的二级索引加了LOCK_X|LOCK_REC_NOT_GAP|LOCK_REC锁,其次这条记录上面还有两把锁(LOCK_S|LOCK_ORDINARY|LOCK_WAITTING)在等待,分别是session2与session3的
这里的原因是:
session 1的insert 本来不加锁(是隐式锁,隐式锁是一种延迟加锁的策略);
当session插入a=17的记录时,发现与session1重复,这时session2会给session1加锁,锁为LOCK_X|LOCK_REC_NOT_GAP|LOCK_REC,同时把自己置为等待状态LOCK_S|LOCK_ORDINARY|LOCK_WAITTING,注意,这里为什么自己(session2)等待的时候是LOCK_S而不是LOCK_X呢,其实是为了提高并发;
session 3处于等待是因为session1 a=17的记录已经被session2加上了LOCK_X|LOCK_REC_NOT_GAP|LOCK_REC锁,而session3的a=17与session1的a=17重复,为了检测唯一性,也会将自己置为等待状态,锁为LOCK_S|LOCK_ORDINARY|LOCK_WAITTING
回滚session1,session3会成为死锁牺牲品,session2插入成功
session2
session3
这是的死锁情况以及加锁情况
这里我们发现了gap锁的踪迹,我们稍后分析
死锁牺牲session3之后,这时的session2的加锁情况
这里锁信息连到了一起,哈哈,如何解释呢,我们稍后分晓
先分析上面的死锁:
session 1 rollback后,二级索引记录为(33,17)的记录的被删除,上面的session2,session3上的LOCK_S|LOCK_ORDINARY|LOCK_WAITTING将他的gap锁分别迁移到下一条记录,即二级索引(20,9)的记录上由两把锁,分别为session2与session占有,锁为LOCK_S|LOCK_GAP|LOCK_REC,即死锁图中的lock mode s lock gap before rec;与此同时,session 2与session3在插入的时候,还要检测下一条记录上(即(20,9)的记录上)的锁是否与LOCK_X|LOCK_GAP|LOCK_INTENSION冲突,这样就形成了session2的LOCK_X|LOCK_GAP|LOCK_INTENSION在等待session3 的LOCK_S|LOCK_GAP|LOCK_REC释放,而session3的LOCK_X|LOCK_GAP|LOCK_INTENSION则在等待session2的LOCK_S|LOCK_GAP|LOCK_REC释放,这样就形成了死锁,这里事务选择回滚了session3
再分析session2的加锁情况:
session3回滚后 ,session2获得了LOCK_X|LOCK_GAP|LOCK_INTENSION锁与LOCK_S|LOCK_GAP|LOCK_REC,这个锁加在记录(20,9)上;heap no 8的记录即session2插入的记录也获得了LOCK_S|LOCK_GAP|LOCK_REC锁,这是因为插入时,会进行锁分裂,将heap no 8下一条记录的(20,9)的锁LOCK_S|LOCK_GAP|LOCK_REC迁移到了heap no 8的记录上;为啥上面的锁信息会连在一起呢,即既有LOCK_S|LOCK_ORDINARY|LOCK_REC又有LOCK_S|LOCK_GAP|LOCK_REC呢,答案是:这里的LOCK_S|LOCK_ORDINARY|LOCK_REC只是表示下面行LOCK_S|LOCK_GAP|LOCK_REC有LOCK_S|LOCK_ORDINARY|LOCK_REC继承而来,并不表示记录上还加了LOCK_S|LOCK_ORDINARY|LOCK_REC锁
3)总结
gap锁一般很少见到,当唯一索引检测重复的值的时候,往往会产生gap锁;另外当可重复读隔离级别下,做等值查询时,也会碰到gap锁(这个读者可以自己去实验),时间仓促,没有整理。