Spinalcrack's Kill Timers
Created: 2016-08-13T22:01:31+02:00
| Updated: 2016-11-14T00:42:03+01:00
| Version: 1.0.2
| Addon: Legion
| Views: 29,414
Description
- Utility
- Legacy Raids
- Legacy Raids: Blackrock Foundry
- Legacy Raids: Hellfire Citadel
- Legacy Raids: Highmaul
- The Emerald Nightmare
- The Nighthold
General Features
- Encounter kill times
- Tracks total combat time
- Time till your target dies
- Time till the boss dies (need a boss frame)
- Stores and tracks your Average kill time
- Easy method to reset all kill times
Surrender to Madness Features (Priest specific feature)
- User can set number of seconds away from the encounters end you want to be warned to use STM
- Colours change from Red, to Yellow, to Green, as your user set STM window approaches your Average Kill time for that fight
- When the boss time to die timer is within the set STM window, and the timers are Green, an additional final warning fires to let you know you are now late to pop STM.
To elaborate on the last feature... stores fastest 10 kills, and shows an average kill time for a given boss, on a given difficulty, on that specific character. As time goes on, slowest kills are pushed off the list, so it self adjusts as your raid group gears, and kill times become shorter.
----------------------------------
F.A.Q.
Q: Does this work on world bosses or quest mobs?
A: The target Time to Die timer works on any mob, the rest only on "raid encounters"
Q: Does this impact game performance?
A: Not at all. Timers are only updated when health related events fire, and kill times are only grabbed and stored before and after the encounter. Other simple buff tracking weakauras use similar resources.
Q: Why does the Time to Die timer show a different time than the Boss Time to Die Timer when I am targeting the boss sometimes?
A: Both timers calculate based on the speed of health lost. If you have been target switching a lot, the TTD timer keeps resetting with each new target, whereas the boss timer is working the whole time. Within a few seconds they will both sync back up, but a big crit, or if you just switched back to the boss and lusted, will cause the numbers to be different briefly. They always do sync though.
Q: Why does the boss, time to die, timer just pauses sometimes
A: This will happen if the boss suddenly stops losing health. ie. becomes immune, vanishes etc Remember its based on the loss of health, but once the boss starts taking damage again it will pick right back up.
Q: Why is there "--:--" listed as the Average Kill Time
A: You have never killed the boss at that difficulty on that character before so there is no average time established. The rest of the timers are not impacted by this, and after one kill you will have an average time listed going forward.
ToDo:
- Create option to output Top 10 kill times into chat
- Flush out and squash any remaining bugs (hard to test everything without a lot of boss kills)
- Encounter kill times
- Tracks total combat time
- Time till your target dies
- Time till the boss dies (need a boss frame)
- Stores and tracks your Average kill time
- Easy method to reset all kill times
Surrender to Madness Features (Priest specific feature)
- User can set number of seconds away from the encounters end you want to be warned to use STM
- Colours change from Red, to Yellow, to Green, as your user set STM window approaches your Average Kill time for that fight
- When the boss time to die timer is within the set STM window, and the timers are Green, an additional final warning fires to let you know you are now late to pop STM.
To elaborate on the last feature... stores fastest 10 kills, and shows an average kill time for a given boss, on a given difficulty, on that specific character. As time goes on, slowest kills are pushed off the list, so it self adjusts as your raid group gears, and kill times become shorter.
----------------------------------
F.A.Q.
Q: Does this work on world bosses or quest mobs?
A: The target Time to Die timer works on any mob, the rest only on "raid encounters"
Q: Does this impact game performance?
A: Not at all. Timers are only updated when health related events fire, and kill times are only grabbed and stored before and after the encounter. Other simple buff tracking weakauras use similar resources.
Q: Why does the Time to Die timer show a different time than the Boss Time to Die Timer when I am targeting the boss sometimes?
A: Both timers calculate based on the speed of health lost. If you have been target switching a lot, the TTD timer keeps resetting with each new target, whereas the boss timer is working the whole time. Within a few seconds they will both sync back up, but a big crit, or if you just switched back to the boss and lusted, will cause the numbers to be different briefly. They always do sync though.
Q: Why does the boss, time to die, timer just pauses sometimes
A: This will happen if the boss suddenly stops losing health. ie. becomes immune, vanishes etc Remember its based on the loss of health, but once the boss starts taking damage again it will pick right back up.
Q: Why is there "--:--" listed as the Average Kill Time
A: You have never killed the boss at that difficulty on that character before so there is no average time established. The rest of the timers are not impacted by this, and after one kill you will have an average time listed going forward.
ToDo:
- Create option to output Top 10 kill times into chat
- Flush out and squash any remaining bugs (hard to test everything without a lot of boss kills)
Download
Warning: This aura contains custom code!
What is custom code?
What is custom code?
WeakAura Code
dG1zqeqiuQalcr6sIa8jkGrrr0POiSkksv9kuQGMfsk3IWUqIFHasdtIJjLwgk5zsstdH6AsITHq(MiACiOZrL1rbkVteKaZJIuL7jO2hkvu)teKqhKQIfkc0drGAIijxKc1grG0hfb1iPiLtIszLc1lrs1mPivUjfj7Ki)KcKHIaILIa8uHmve1vra1wfbj6RuGQXkcsQZIsfATIGe0BLuMRii1DLuTxs9xrAWWHf1IPGESatMK6YOAZKKpliJMQQtJuRgLkIxlcnBuCBkQDlv)MOgoI44IGKSCs8CQY0P01LITtH8DuQA8OuPZtvP1JsfP3lcI5JaX9fb0(vRB1K1rSNNtm3OK9K7m0DEcLCfpA5UoQLsHclDKzDKADKNoIffwuyrPiCIqvRqOHeN56i2ZZjMBuYEYDg6oNnQ0rseGAFyhzhl(KGgQJuRjRJ4Slj5UAUADcQJOvRJIiBQb1PzygKPnZv80rz1QPT0Y9mtQvHouiUINMS2QJut7XoPPhyPnIRJYmm6ifEiA5ozFjHRJcPi3qIosn3lqhDCej09mtGsoird4nOondZGmTzUI3XhNqjxXJwUBWgTukuyDSpnw)YkgSrej09mtGsoiXJpMarM9CfU6HH(om48CI(0OK9Oi3zO78JzhLBugsYugTdsyYwvYkMhw5H5CphIpYD1dp)zf(Wx5gLHm77ddopNOpnkzpkhRJYbwAJ4KvOdfIRykz1CTKOTOJ84mQiqKP7wDucAqKjBqMY0zmbLSoYxdsLkpUvljsYIIZ5iK4Ke3YQT40rnkm6i)wljEgmcucu2ZE2tH98CI5gLShf5odDNtGMjqLia1(WoYow8jbnuhXUgKkvECRwsqCfIO4CoctM0XYrKthXiNvRjRJutRsfDqdJ1xnzDK5gglTMS2QT6iv5alTCxtwhzUHXsRjRTARoIeJiXMz4DRMSoYCdJLwtwB1wDKImdxtwhzUHXsRjRTARoYMz4DRMSoYCdJLwtwB1wDKsoGRjRJm3WyP1K1wTvB1r9gZKvOdfIR4PLA1wDKrAPwIz1QJYAYARokqtwl1QjRJut7fOWT8ufzB2sl31sfDKISnBPL7APIosn3lBBuYwU2qDeTADKpgXvYH4PuNMHjLmTzUokRwnTLwUNzsTk0HcXv80K1wDe1PzyszRRswtwl1sysI0K1rgZWv4w)8bbW7Q4kzgnzTulXAY6OisO7zMaLCqIPrzLqCLSNMSokBexjhINsDYAjwe1sPcHe6kLsPuA1rjsZWKsM2m3ttwl1QLy1wLsPkrLsPukfc1sS0sSyvLs1KevkLsPuQOLQQLyLSLsvTeXAjwjBPuvlvrlXkzlLQAjI0sSs2sPQwkPwIvYwkv1seQLyLSLsvTKtlXkzlLQAP2IwIfHfkvtsKZ5CoNJqTvB1wTulrAY6OisO7zMaLCqIPrzLqCLSNMSokBexjhINsDYAPQe7OuQYI4sPukfI1rjsZWKsM2m3ttwl1QLQsCHs1sPukLsPurlXslvL4cLQLsPukLsPIwQQwQkXfkvlLsPukLsfTeXAPQexOuTukLsPukv0sv0svjUqPAPukLsPuQOLislvL4cLQLsPukLsPIwkPwQkXfkvlLsPukLsfTeHAPQexOuTukLsPukv0soTuvIluQwkLsPukLkAP2IwIywjPqelIlLsPukTAR2QTAP2kAY6OisO7zMaLCqIPrzLqCLSNMSokBexjhINsDYAjwvluiYLKWsPukfw6OePzysjtBM7PjRLA1sSyLKsYkSCoNZ5Cj1sS0sSQ2sPWQsPukLsHLwQQwIv1wkfwvkLsPukS0seRLyvTLsHvLsPukLclTufTeRQTukSQukLsPuyPLislXQAlLcRkLsPukfwAPKAjwvBPuyvPukLsPWslrOwIv1wkfwvkLsPukS0soTeRQTukSQukLsPuyPLAlAjwvBPuyvPukLsPWsB1wTvl1MutwhfrcDpZeOKdsmnkReIRK90K1rzJ4k5q8uQtwlXQslfIiUkX6OePzysjtBM7PjRLA1sToIOquRwILwIv1cLwxRZ5CoNJqTuvTelIAPWQqSwIyTelIAPWQqSwQIwIfrTuyviwlrKwIfrTuyviwlLulXIOwkSkeRLiulXIOwkSkeRLCAjwe1sHvHyTuBrlXIOwkSkeRTAR2QTARwQLWKj1K1remVNvOB80K1sTeRjRJIiHUNzcuYbjMgLvcXvYEAY6OSrCLCiEk1jRLQYIqkTTSishLindtkzAZCpnzTuRwQnzskLKTAjwAPQetmfcDv0sv1svjMyke6QOLiwlvLyIPqORIwQIwQkXetHqxfTerAPQetmfcDv0sj1svjMyke6QOLiulvLyIPqORIwYPLQsmXui0vrl1w0svjMyke6QOTAR2QLAROjRJIiHUNzcuYbjMgLvcXvYEAY6OSrCLCiEk1jRLyvLfL2QfI0rjsZWKsM2m3ttwl1QLyXQLsfwe7CoNZ5islXslXQAvkvlUsPukLsRwQQwIv1QuQwCLsPukLwTeXAjwvRsPAXvkLsPuA1sv0sSQwLs1IRukLsP0QLislXQAvkvlUsPukLsRwkPwIv1QuQwCLsPukLwTeHAjwvRsPAXvkLsPuA1soTeRQvPuT4kLsPukTAP2IwIv1QuQwCLsPukLwTvB1wTuBsnzDuej09mtGsoiX0OSsiUs2ttwhLnIRKdXtPozTeRkTukLKe5CoNZ50rjsZWKsM2m3ttwl1QLy12sH42KLsPukfwAjwAjwetefIQWY5CoNZ50sv1sSiMikevHLZ5CoNZPLiwlXIyIOqufwoNZ5CoNwQIwIfXerHOkSCoNZ5CoTerAjwetefIQWY5CoNZ50sj1sSiMikevHLZ5CoNZPLiulXIyIOqufwoNZ5CoNwYPLyryvkesilTuBrlXIqcPWQqKZ5CoNZPTAR2QTARwQLWsrtwhLqT)ggd4xwjhOjRLAtQjRJIiHUNzuXzsJYkH4kzpnzDu2iUsoepL6K1sSsseLkfhroNZ5CoDuI0mmPKPnZ90K1sTAjwjRqjzsIDoNZ5CoTelTeRKvOKmjXoNZ5CoNwQQwIvYkusMKyNZ5CoNtlrSwIvYkusMKyNZ5CoNtlvrlXkzfkjtsSZ5CoNZPLislXkzfkjtsSZ5CoNZPLsQLyLScLKjj25CoNZ50seQLyLScLKjj25CoNZ50soTeRKvOKmjXoNZ5CoNwQTOLyryvkTSADoNZ5Cj1wTvB1wTvl1MKqc1K1rr(ZQLzVW0jROEWMxIzfnzTuBsnzDuej09mJkotAuwjexj7PjRJYgXvYH4PuNSwQkRQuyruRZ5CoNZPJsKMHjLmTzUNMSwQvlvLvvkSiQ15CoNZ50sS0svzvLclIADoNZ5CoTuvTuvwvPWIOwNZ5CoNtlrSwQkRQuyruRZ5CoNZPLQOLQYQkfwe16CoNZ5CAjI0svzvLclIADoNZ5CoTusTuvwvPWIOwNZ5CoNtlrOwQkRQuyruRZ5CoNZPLCAPQSQsHfrToNZ5CoNwQTOLQYQkfwe16CoNZ5CAR2QTAR2QLAtsyfnzDeBkY9bbWZgXv0K1sTj1K1rrKq3Zmbk5GetJYkH4kzpnzDu2iUsoepL6K1sSAjKsYssNZ5CohH6OePzysjtBM7PjRLA1sSAjKsYssNZ5CohHAjwAjwTesjzjPZ5CoNJqTuvTeRwcPKSK05CoNZrOwIyTeRwcPKSK05CoNZrOwQIwIvlHusws6CoNZ5iulrKwIvlHusws6CoNZ5iulLulXQLqkjljDoNZ5CeQLiulXQLqkjljDoNZ5CeQLCAjwTesjzjPZ5CoNJqTuBrlXQLqkjljDoNZ5CeQTAR2QTARwQnjHv1K1rjSScxfnVRwtwl1MutwhfrcDpZOIZKgLvcXvYEAY6OSrCLCiEk1jRLyviMsvxsDuI0mmPKPnZ90K1sTAjwfIPu1LulXslXQqmLQUKAPQAjwfIPu1LulrSwIvHykvDj1sv0sSketPQlPwIiTeRcXuQ6sQLsQLyviMsvxsTeHAjwfIPu1Lul50sSketPQlPwQTOLyviMsvxsTvB1rrKq3Zmbk5GetJYkH4kzpnzDu2iUsoepL6K1sTjluAR26CoNZ5iuhLindtkzAZCpnzTuRwQnzHsB1wNZ5CohHAjwAP2KfkTvBDoNZ5CeQLQQLAtwO0wT15CoNZrOwIyTuBYcL2QToNZ5Coc1sv0sTjluAR26CoNZ5iulrKwQnzHsB1wNZ5CohHAPKAP2KfkTvBDoNZ5CeQLiul1MSqPTARZ5CoNJqTKtl1MSqPTARZ5CoNJqTuBrl1MSqPTARZ5CoNJqTvB1wTvB1sTjtMutwhrq5mdtNSI6rcfMtSPPRjRLAtQjRJIiHUNzuXzsJYkH4kzpnzDu2iUsoepL6K1sSkerPsvct6CoNZ50rjsZWKsM2m3ttwl1QLyviMsvxsTelTeRcXuQ6sQLQQLyviMsvxsTeXAjwfIPu1LulvrlXQqmLQUKAjI0sSketPQlPwkPwIvHykvDj1seQLyviMsvxsTKtlXQqmLQUKAP2IwIfRkuiSLyNZ5CohXAR2QTAR2QLAt6iutwhzACggv0k8HPrhY)GGLB6b0mAYAP2KAY6OisO7zgvCM0OSsiUs2ttwhLnIRKdXtPozTeR2Quke6AlLsPuyPJsKMHjLmTzUNMSwQvl1MSLsBfcDoNZ5CoTelTeR2KussmHLsPukfwAPQAjwTjPKKyclLsPukS0seRLy1MKssIjSukLsPWslvrlXQnjLKetyPukLsHLwIiTeR2KussmHLsPukfwAPKAjwTjPKKyclLsPukS0seQLy1MKssIjSukLsPWsl50sSAtsjjXewkLsPuyPLAlAjwTjPKKyclLsPukS0wTvhfrcDpZeOKdsmnkReIRK90K1rzJ4k5q8uQtwl1sOJslHexkLsPuA1rjsZWKsM2m3ttwl1QLAj0rPLqIlLsPukTAjwAPwcDuAjK4sPukLsRwQQwQLqhLwcjUukLsP0QLiwl1sOJslHexkLsPuA1sv0sTe6O0siXLsPukLwTerAPwcDuAjK4sPukLsRwkPwQLqhLwcjUukLsP0QLiul1sOJslHexkLsPuA1soTulHokTesCPukLsPvl1w0sTe6O0siXLsPukLwTvB1wTvB1sTjDeRjRJIKdu4w)zLH1pFySLR0ZmAYAP2KAY6OisO7zgvCM0OSsiUs2ttwhLnIRKdXtPozTeRkesPuLLZ5CoNZPJsKMHjLmTzUNMSwQvlXI4KuiULiNZ5CoNtlXslXI4KuiULiNZ5CoNtlvvlXI4KuiULiNZ5CoNtlrSwIfXjPqClroNZ5CoNwQIwIfXjPqClroNZ5CoNwIiTelItsH4wICoNZ5CoTusTelItsH4wICoNZ5CoTeHAjweNKcXTe5CoNZ5CAjNwIfXjPqClroNZ5CoNwQTOLQwPkLkjjY5CoNZ50wTvB1wTvl16QqOMSoYGu7Bxtwl1wrtwhfrcDpZeOKdsmnkReIRK90K1rzJ4k5q8uQtwlrmlhfIlevkLsPuyPJsKMHjLmTzUNMSwQvlrmlhfIlevkLsPuyPLyPLiMLJcXfIkLsPukS0sv1seZYrH4crLsPukfwAjI1seZYrH4crLsPukfwAPkAjIz5OqCHOsPukLclTerAjIz5OqCHOsPukLclTusTeXSCuiUquPukLsHLwIqTeXSCuiUquPukLsHLwYPLiMLJcXfIkLsPukS0sTfTeXSCuiUquPukLsHL2QTAR2QTAP2KfI1K1rjitoir)5UAnzTulrAY6OisO7zMaLCqIPrzLqCLSNMSokBexjhINsDYAP2cXuQ4swX5CoNJqDuI0mmPKPnZ90K1sTAP2svkowfNZ5CoxsTelTuBPkfhRIZ5CoNlPwQQwQTuLIJvX5CoNZLulrSwQTuLIJvX5CoNZLulvrl1wQsXXQ4CoNZ5sQLisl1wQsXXQ4CoNZ5sQLsQLAlvP4yvCoNZ5Cj1seQLAlvP4yvCoNZ5Cj1soTuBPkfhRIZ5CoNlPwQTOLABluiIWKLsPukLQAR2QTAR2QLADeXstwhLWnzfZAYAP2kAY6OisO7zMaLCqIPrzLqCLSNMSokBexjhINsDYAjwvCuiQuCoNZ5Cj1rjsZWKsM2m3ttwl1QLyvXrHOsX5CoNZLulXslXQIJcrLIZ5CoNlPwQQwIvfhfIkfNZ5CoxsTeXAjwvCuiQuCoNZ5Cj1sv0sSQ4OquP4CoNZ5sQLislXQIJcrLIZ5CoNlPwkPwIvfhfIkfNZ5CoxsTeHAjwvCuiQuCoNZ5Cj1soTeRkokevkoNZ5CUKAP2IwIvfhfIkfNZ5CoxsTvB1wTvB1sTjjKynzDezFvYD7iHsoJ)ScTMSwQnPMSokIe6EMrfNjnkReIRK90K1rzJ4k5q8uQtwlXIyhfwfNthLindtkzAZCpnzTuRwIfXvOqiRQAjwAjwexHcHSQQLQQLyrCfkeYQQwIyTelIRqHqwv1sv0sSiUcfczvvlrKwIfXvOqiRQAPKAjwexHcHSQQLiulXI4kuiKvvTKtlXI4kuiKvvTuBrlXkPJcrUwNZ5CohHAR2QTAR2QLAjSsvnzDKKVw)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(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(45LBySAYAP2KAY6OisO7zMaLCqIPrzLqCLSNMSokBexjhINsDYAjwviMssIADoNZ5CoDuI0mmPKPnZ90K1sTAjwviMssIADoNZ5CoTelTeRketjjrToNZ5CoNwQQwIvfIPKKOwNZ5CoNtlrSwIvfIPKKOwNZ5CoNtlvrlXQcXussuRZ5CoNZPLislXQcXussuRZ5CoNZPLsQLyvHykjjQ15CoNZ50seQLyvHykjjQ15CoNZ50soTeRketjjrToNZ5CoNwQTOLyvHykjjQ15CoNZ50wTvB1wTvl1MKWKAY6iQlRywrornzTuBsnzDuej09mtGsoiX0OSsiUs2ttwhLnIRKdXtPozTulRwkjBBlLsPukT6OePzysjtBM7PjRLA1sTSAPKSTTukLsP0QLyPLAz1sjzBBPukLsPvlvvl1YQLsY22sPukLsRwIyTulRwkjBBlLsPukTAPkAPwwTus22wkLsPuA1sePLAz1sjzBBPukLsPvlLul1YQLsY22sPukLsRwIqTulRwkjBBlLsPukTAjNwQLvlLKTTLsPukLwTuBrl1YQLsY22sPukLsR2QTAR2QTAPwctwvtwhXgJbc5Bx26NAdY(5dtJNvSdzvdcwwrPHelTCxtwl1sSMSokIe6EMjqjhKyAuwjexj7PjRJYgXvYH4PuNSwIfRcL2QewvhLindtkzAZCpnzTuRwQnzfkeruvTelTelwvOuiulvvlXIvfkfc1seRLyXQcLcHAPkAjwSQqPqOwIiTelwvOuiulLulXIvfkfc1seQLyXQcLcHAjNwIfRkukeQLAlAjwSQqPqO2QTARwQLinzDuej09mtGsoiX0OSsiUs2ttwhLnIRKdXtPozTuLkokeseHLsPukfw6OePzysjtBM7PjRLA1svQ4OqirewkLsPuyPLyPLQuXrHqIiSukLsPWslvvlvPIJcHeryPukLsHLwIyTuLkokeseHLsPukfwAPkAPkvCuiKiclLsPukS0sePLQuXrHqIiSukLsPWslLulvPIJcHeryPukLsHLwIqTuLkokeseHLsPukfwAjNwQsfhfcjIWsPukLclTuBrlvPIJcHeryPukLsHL2QTARwQTIMSokIe6EMjqjhKyAuwjexj7PjRJYgXvYH4PuNSwIflhLkTTexkLsPWshLindtkzAZCpnzTuRwIvPLsfIkoNZ5CoNwILwIvvwuiQnzPukLsPQwQQwIvvwuiQnzPukLsPQwIyTeRQSOquBYsPukLsvTufTeRQSOquBYsPukLsvTerAjwvzrHO2KLsPukLQAPKAjwvzrHO2KLsPukLQAjc1sSQYIcrTjlLsPukv1soTeRQSOquBYsPukLsvTuBrlXQklke1MSukLsPuvB1wTvl1MutwhfrcDpZeOKdsmnkReIRK90K1rzJ4k5q8uQtwlXQTLsfcRqKokrAgMuY0M5EAYAPwTuBsIOWIyI1sS0sSAzrjjHv0sv1sSAzrjjHv0seRLy1YIsscROLQOLy1YIsscROLislXQLfLKewrlLulXQLfLKewrlrOwIvllkjjSIwYPLy1YIsscROLAlAjwvtsPA1wNZ5CoNtB1wTvB1wTvhPWdrl3j7ljCDKLZUwDuoWsBeNScDOqCftjRMRLk6i6oTnnq2mjmClxTwQvhzidVR2uYQ56Oe00zSev6OEJzYk0HcXv80sT6i10EKWK9LmNDT6OeqGoYxdsLkpUvljAl6i21GuPYJB1scwv0rbnEwzZK5SRvhjecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecH4yHqmIiHUNzcuYbjAaVHpgXvYH4dQtZWmitBMpm48CI5gL8qigSN9SNIFz2BLjrHM7zPeiBEieIJfcHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqC8XQA6bwA5UjnXXJXyWihKzgbYmYnkJWdsjibQuPwDlrLcPhpgJbTQrUrjNY7grjYMvSKPnZh5U6rigzdZmP(yexjhItDYJjiHhDAMH1pVF8ymgJXyieJXymgJbjk0DRjdXiByMjL3dKB6wUIKpMYytC8ymgJXyWihKzgbYMnmBjtBMpcpsyULmTzUjnXqmYnk5uE3ikr2SILmTz(XJXymgJHqqIcD3AYazZgMTKPnZnXXJXymgJb7ZPHcSPDzcQSI5SDeEeiB2WSLmTz(XJXymgJHqqIcD3AYqmYgMzs9XiUsoeN6KnXXJXymgJb7ZPHyKnmZKgiB2WSLmTz(i8WZQq3drrLSI5S1KKMakSuBWsafwQjLAJazZgMTKPnZjqjQqTrGSzdZwY0M5jaIkM44XymgJX44XymgJXieJSHzMuFmke1jpcp8Sk09quujRyoBnjPjGcl1gSeqHLAsP2ieJSHzMuFmIRKdXPozcuIkuBmcXiByMj1hJ4k5qCQtobquXehpgJXymg0QgHyKnmZK6JrCLCio1jpchEukukLH1pVpcXiByMj1hJcrDYJWdshcHqqrieIbPdEx9XJXymgJXXJXymgJHqWihKzgb(5bjkLnZhHhe4oTvkBMBssTzLqClPM44XymgJXqiOvnyKZQtnUhi30TCf2OQwGFEqIszZ86JWHhTTL2H1pVpirHUBnjPSxwjrpsnXG3vF8ymgJXyWihKzgd5gljnw26QKhHhK6JrHguNSbBqkfkHyKnmZK6JrHOozkuinHUtWYMnmBnydsPqH950qmYgMzsdKnBy2sM2m)4XymgJX44XymgJXGw1ieJSHzMuFmIRKdXPo5XeKWJsHsPmS(59JhJXymgJXymOvncXiByMj1hJ4k5qCQtEigbYMnmBjtBMpyNdpmzigzdZmPMZSBeztL6Xd8gSdhTftmS(59XXJXymgJXymgJXyeiZi3OmcpiLGeOsLA1TevkKogcXqHREys1Cv5ggRbBesHNTCLH1FUpAjQm84bYD1EdfU5mD3ehpgJXymgJXymgJrigzdZmPSpNk3yjPXYwxL8i8OC8ymgJXymgJbVREC8ymgJXymgJbTQrigzdZmP(yexjhItDYdXiq2SHzlzAZ8HP3WKHyKnmZKAoZUrKnvQhpWBWoC0wmXW6N3hhpgJXymgJXymgJrGmJCJYi8GucsGkvQufqmRkKooEmgJXymgJXymgJqmYgMzszFovUXssJLTUk5r4r7XJXymgJXymg8U6Hqm8LZWiZ(HjvZvLBySgSbd3ZBy9N7JwIkdpEGCxT3qHBot3nXXJXymgJXymg0QgHyKnmZK6JrCLCio1jpeJazZgMTKPnZhMEHhMmeJSHzMuZz2nISPs94bEdXOIjgw)8(44XymgJXymgJXymcKzKBugHhKsqcuPQWZCwTKooEmgJXymgJXymgJqmYgMzszFovUXssJLTUk5r4r7XJXymgJXymg8U6HqmgHu48(WKQ5QYnmwd2GH75nS(Z9rlXvgE8a5UAVHc3CMUBIJhJXymgJXymu42gL(iqMrUrHcf5gljnw26QKpEmgJXymgJX44XymgJXGZ4XpEmgJXymgJXqHBBu6d5gljnw26QKpEmgJXymgJX44XymgJXG3vF8ymgJXyC8ymgJXyC8ymgCgp(XJXymgJrigzdZmP(yexjhItDYJWJsHsPC8ymgJXyOWTnk9bPdHqiOiecXG0JhJXG3vFmVR(4Jp(4J1rSNwT1VwIiI0rnDRcDOqCfnzDuqJNv2SosiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecXXcHyercDpZeOKds0aEdFmIRKdXhuNMHzqM2mFyW55eZnk5Hqmyp7zpf)YS3ktIcn3Zsjq28qiehlecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecH44Jv10dS0YDtYP2GcfkM44XymoEmgdg5GmZG3dKB6wUcBuncp84m8aRjBP2GcfkM44XymyKdYmdEpqUPB5ks(ykJhHhECgEG1KSO2GcfkM44XymyKdYmd10Qurh0Wy9LnQgHhECgEG1KvP2GcfkM44XymyKdYmdLmT6iA2P8r4HhNHhynjXuBqHcftC8ymgmYbzMbVRoYMTnEJWdpodpWAYkuBqHcftC8ymgmYbzMrG)SIu2mFeEqG70wPSzUjjLeMSVCfsnXXJXyWihKzgb(ZkeapZyEeEKWClbWZmMLYM5MKusyY(Yvi1ehpgJbJCqMz0iLnZhHhb(ZkszZCkuinLukuc8NviaEMX8XJXyWihKzgSNMeUbraSNUpcpAlLYqiO70w6mdn7u6EOJhJXGroiZmSCZKqoBidNGsZWmcpkhpgJXXJXyqRAW7QJSzBJ3iC4rzy9Z7hpgJXymgSNMeUbraSNUpcpi1GttcN0XXJXyWz840Qg8U6iB224nchE0oS(59XXJXymgJb7PjHBqea7P7JWdsJAcc4EEKE8ymg8U6JhJX44XymeIHX9SHm8rUREWiNvpYmmdRF(G3dKB6wUYGnQ8g09bD3sBh0Qg(k3myFUBhw5HCJLKg7GMpmnUImDWGvLJhJXqiujRmOdxOwBLHA5JhJXqigJbTQHAAvQOdAyS(YgvJWHh0dRFEFmgJJhJXqigJXymgd10Qurh0Wy9LnQgHhmYz1Pg3dKB6wUcv0QuXgv1ORF8ymgcXymg8U6JhJXqi4D1hpgJXXJXyqRAWhHdpi1yjc2GiWsKnMasJi7dbqM0H1pVF8ymgJXyOWTnk9HQmJh)4XymgJX44Xym4mECAvd(iC4bPglrWgebwISXeqQXsur6W6N3pEmgJXymOvn84m8aRjRqTbfkumXiC4rzy9Z7JJhJXymgJXymirHUBnPhNHhynjlQnOqHIjOqH0H)S3G3vZvtHcfsnXXJXymgJXymgkCBJsFyvA4hpgJXymgCgp(XJXymgJXymghpgJXymgJXyieJUCNp8YgXvtTrURE0Lh5alTr8HnBidFiehpgJXymgJXyqRAyW55e9Prj7fLnIRUMbut7rct2xpduVMb8XiUsoepL60mmPKPnZnq9AgG60mmPS1vjBG6JWHhDAMrURE4zLv4Pg3dKB6wUcBunchE0Pzgw)8(XJXymgJXymgJXy4zLv4Pg3dKB6wUcBuncpsijWXqigbk8SLpY9roWsBeFyZgYWpEmgJXymgJXymgJJhJXymgJXymgJXqigrzJ4Qh2SHmCQnmSXo6YJCGL2i(WMnKHpeIXymoEmgJXymgJXGZ4XPvnm48CI(0OK9IYgXvxZaQP9iHj7RNbQxZa(yexjhINsDAgMuY0M5gOEndqDAgMu26QKnq9XeKWJonZi3vp8SYk8uJ7bYnDlxHnQgHdp60mdRFE)4XymgJXymgJXymoEmgJXymgJXymgdpRScp14EGCt3YvyJQr4rcjboeIrGcpB5JCFKdS0gXh2SHm8rUREWiNvpS(5d27xMHp8YgXvpSzdz4d6UvEy9Zh5alTr8HnBidFiehpgJXymgJXymgJHNvwHNACpqUPB5kSr1i8WGZZj6tJs2lkBexDndOM2JeMSVEgOEnd4JrCLCiEk1PzysjtBMBG61ma1PzyszRRs2a1pEmgJXymgJXymgJJhJXymgJXymgJX44XymgJXymgJXymeIHK8WlBex9WMnKHtTHHn2roWsBeFyZgYWhcXXJXymgJXymgCgpoTQHbNNt0NgLSxu2iU6AgqnThjmzF9mq9AgWhJ4k5q8uQtZWKsM2m3a1RzaQtZWKYwxLSbQpchE0Pzg5U6HNvwHNACpqUPB5kSr1ycs4rNMzy9Z7hpgJXymgJXymgJXXJXymgJXymgJXyiecHPVP)qs26NUhAyLhQLh(5kCQnmSXoyFUB5Qhw)0Edg5q0bd6(GeMCaFyLhjY5Km4gXv816NUhA4zvY0H8BhM(M(cHqC8ymgJXymgJXymghpgJXymgJXymgJHqmIYgXvpSzdz4JCx9ihyPnIpSzdz4dH44XymgJXymgdoJhNw1WGZZj6tJs2lkBexDndOM2JeMSVEgOEnd4JrCLCiEk1PzysjtBMBG61ma1PzyszRRs2a1htqcp60mJCx9WZkRWtnUhi30TCf2OAmbj8OtZmS(59JhJXymgJXymgJX44XymgJXymgJXymeIHzUsi(W6NpSzdz4EdH44XymgJXymgJXymujRmsKAgnO7dAsY0kEM0GZZj6tJs2lkBexDndOM2JeMSVEgOEnd4JrCLCiEk1PzysjtBMBG61ma1PzyszRRs2a1nXqT8WMnKHtHU7XvSM0ZkRWtnUhi30TCf2OIAdJmXG3vpoEmgJXymgJXymgJJhJXymgJXym4D1hpgJXymgJXyC8ymgJXymgJHqmiy)8Gehw)8roWsBeFyZgYWP2irUVdd9DKi33rUREeOWZw(OZz)qrM9EdAvJonZqioEmgJXymgJXGw1WZkRWtnUhi30TCf2OQgVhi30TCf2OQ(ycs4rNMzy9Z7JJhJXymgJXymgJXGw1WZkRWtnUhi30TCf2OQgVhi30TCf2OQEnEpqUPB5ks(ykJRpMGeE0Pzgw)8(XJXymgJXymgJXymgJbTQHNvwHNACpqUPB5kSrvnEpqUPB5kSrv9A8EGCt3YvK8XugxVMAAvQOdAyS(Ygv1htqcp60mdRFE)4XymgJXymgJXymgJXymgdAvdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQxRrkBMxFmbj8OtZmS(59X44XymgJXymgJXymgJXymgJXymeIbvzBEKzu4z1(oYbwAJ4dHyy9t7nO9g5HcNeE2osKMHzieJXymgJXymgJXymgJXymgJXymgJXXJXymgJXymgJXymgJXymgCgp(XJXymgJXymgJXymgJXymgJXy4zLv4Pg3dKB6wUcBuvJ3dKB6wUcBuvVgVhi30TCfjFmLX1RPMwLk6GggRVSrv9AnszZ86JWJesc84XymgJXymgJXymgJXymgJXym8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQxJ3dKB6wUIKpMY461utRsfDqdJ1x2OQETgPSzE9AKMindtkzAZCpsRpcpsijWJhJXymgJXymgJXymgJXymgJXWZkRWtnUhi30TCf2OQgVhi30TCf2OQEnEpqUPB5ks(ykJRxtnTkv0bnmwFzJQ61AKYM51RrA2iUsoepL6KjT(i8iHKahJXXJXymgJXymgJXymgJXymg8U6JhJXymgJXymgJXymgdoJh)4XymgJXymgJXymgJXymgdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQpcpsijWJhJXymgJXymgJXymgJXym8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQxJ3dKB6wUIKpMY461utRsfDqdJ1x2OQETgPSzE9r4rcjbE8ymgJXymgJXymgJXymgJHNvwHNACpqUPB5kSrvnEpqUPB5kSrv9A8EGCt3YvK8XugxVMAAvQOdAyS(Ygv1R1iLnZRxJ0ePzysjtBM7rA9r4rcjbE8ymgJXymgJXymgJXymgJHNvwHNACpqUPB5kSrvnEpqUPB5kSrv9A8EGCt3YvK8XugxVMAAvQOdAyS(Ygv1R1iLnZRxJ0SrCLCiEk1jtA9r4rcjbogJJhJXymgJXymgJXymgdEx9XJXymgJXymgJXyWz84hpgJXymgJXymgJXymgEwzfEQX9a5MULRWgv149a5MULRWgv1RX7bYnDlxrYhtzC9r4rcjbE8ymgJXymgJXymgJXy4zLv4Pg3dKB6wUcBuvJ3dKB6wUcBuvVgVhi30TCfjFmLX1RPMwLk6GggRVSrv9r4rcjbE8ymgJXymgJXymgJXy4zLv4Pg3dKB6wUcBuvJ3dKB6wUcBuvVgVhi30TCfjFmLX1RPMwLk6GggRVSrv9AnszZ86JWJesc84XymgJXymgJXymgJXWZkRWtnUhi30TCf2OQgVhi30TCf2OQEnEpqUPB5ks(ykJRxtnTkv0bnmwFzJQ61AKYM51RrAI0mmPKPnZ9iT(i8iHKapEmgJXymgJXymgJXym8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQxJ3dKB6wUIKpMY461utRsfDqdJ1x2OQETgPSzE9AKMnIRKdXtPozsRpcpsijWXymoEmgJXymgJXymgdEx9XJXymgJXymgCgp(XJXymgJXymgJXy4zLv4Pg3dKB6wUcBuvJ3dKB6wUcBuvFeEKqsGJJhJXymgJXymgJXWZkRWtnUhi30TCf2OQgVhi30TCf2OQEnEpqUPB5ks(ykJRpcpsijWJhJXymgJXymgJXWZkRWtnUhi30TCf2OQgVhi30TCf2OQEnEpqUPB5ks(ykJRxtnTkv0bnmwFzJQ6JWJesc84XymgJXymgJXym8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQxJ3dKB6wUIKpMY461utRsfDqdJ1x2OQETgPSzE9r4rcjbE8ymgJXymgJXymgEwzfEQX9a5MULRWgv149a5MULRWgv1RX7bYnDlxrYhtzC9AQPvPIoOHX6lBuvVwJu2mVEnstKMHjLmTzUhP1hHhjKe4XJXymgJXymgJXy4zLv4Pg3dKB6wUcBuvJ3dKB6wUcBuvVgVhi30TCfjFmLX1RPMwLk6GggRVSrv9AnszZ861inBexjhINsDYKwFeEKqsGJXyC8ymgJXymgJbVR(4XymgJXymgJJhJXymgJXymeIrKSIDy9ZhDo7z8DOswXmx9WMnKHpsKMHzyPnZ9gcXXJXymgJXymg2SHmCkEYkwt6zLv4Pg3dKB6wUcBuvJ3dKB6wUcBuvVgVhi30TCfjFmLX1RPMwLk6GggRVSrv9AnszZ861inrAgMuY0M5EKw3ehpgJXymgJXyC8ymgJXymgJHqmOvnS(5k8rwHpsKMHzyPnZ9O2iWppiXHkzLH6gsyOdYwU3i3vpOvnuj30vpy4zJ4d5oFW7wfFh5U6HkAgMH1pFOW9Sd2tB9pcAuu4D7WsBMF8ymgJXymgJHkzLbjHBPwBzOw(4XymgJXymgJXymOvn8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQxJ3dKB6wUIKpMY461utRsfDqdJ1x2OQETgPSzE9AKMindtkzAZCpsRxJK6JjiHhDAMH1pVF8ymgJXymgJXymgJXyqRAqYGDomRH1pVF8ymgJXymgJXymgJXymgJbJCqMzy5MjHazeEysseTM44XymgJXymgJXymgJXymgdAvdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQxRrkBMxVgPjsZWKsM2m3J061iP(iC4HNvwHNACpqUPB5kSrvnEpqUPB5kSrv9A8EGCt3YvK8XugxVMAAvQOdAyS(Ygv1R1iLnZRxJ0ePzysjtBM7rA9AwUzsiqQB9Z7hpgJXymgJXymgJXymgJXymgJHkzLrcvHjHATLHA5JhJXymgJXymgJXymgJXymgJXymgdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQxRrkBMxVgPjsZWKsM2m3J061sOQ(i8G950qb20UmbvwXC2ogJXXJXymgJXymgJXymgJXymgJXyW7QpEmgJXymgJXymgJXymgJXymgdl3mjKZgYWjO0mmJWJ2JhJXymgJXymgJXymgJXymgJXGKWTLJhJXymgJXymgJXymgJXym4D1hpgJXymgJXymgJXymgJXyC8ymgJXymgJXymgJXyW7QpEmgJXymgJXymgJXymoEmgJXymgJXymgdEx9XJXymgJXymgJXyC8ymgJXymgJXymghpgJXymgJXyW7QpEmgJXymgJX44XymgJXymgJJhJXymgJXymeIbTQH1pxHpYk8rxEKindZWsBM7nurZWmS(5dB2qg(G90w)dRFAVrI0mmdlTz(XJXymgJXymgcXGw1W6NRWhzf(irAgMHL2m3JAJSA1dRFAVrI0mmdlTzo1gEYk2H1pFyZgYWP2qHBw2i(W6NpyK7H4E2rI0mmdlTz(XJXymgJXymgcXW6N3hzJ4k5q8H1pF0wgjsZWmS0M5EJCx9i75rhQpSYdRF(ieJSHzMJhJXymgJXymujRmOd3sT2YqT8ymgJXymghpgJXymgJXymgJbTQHNvwHNACpqUPB5kSrvnEpqUPB5kSrv9A8EGCt3YvK8XugxVMAAvQOdAyS(Ygv1R1iLnZRxJ0ePzysjtBM7rA9A01htqcp60mdRFE)4XymgJXymgJXymgJX44XymgJXymgJXymgJXGw1WYntc5SHmCckndZiC4rzy9Z7dpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQxRrkBMxVgPjsZWKsM2m3J061ABRpcpyFonuGnTltqLvmNTdEx9XJXymgJXymgJXymgJHnBidNINSI1KEwzfEQX9a5MULRWgv149a5MULRWgv1RX7bYnDlxrYhtzC9AQPvPIoOHX6lBuvVwJu2mVEnstKMHjLmTzUhP1nXXJXymgJXymgJXymgJHNvwHNACpqUPB5kSrvnEpqUPB5kSrv9A8EGCt3YvK8XugxVMAAvQOdAyS(Ygv1R1iLnZRxJ0ePzysjtBM7rA9ATT1hHhDAMJhJXymgJXymgJXymgJJhJXymgJXymgJXymgdg5GmZWYntIpgfAeEuoEmgJXymgJXymgJXymoEmgJXymgJXymgJXymujRmyNeULATLHA5JhJXymgJXymgJXymgJXymSCZK4JrHgHhwUzs8XOqd2HdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQxRrkBMxVgPjsZWKsM2m3J061yNu)4XymgJXymgJXymgJXymgdAvd2jJWHhTLH1pVpcXiByMj1hJ4k5qCQtEeEysl3mj(yuic02Ijg8U6JhJXymgJXymgJXymgJXymoEmgJXymgJXymgJXym4D1JXymgJXymgJXyC8ymgJXymgJXymgJXyC8ymgJXymgJXymgJXyqRAy5MjHC2qgobLMHzeo8OmS(59HHk8CIdEx9XJXymgJXymgJXymgJXXJXymgJXymgJXyWz84hpgJXymgJXymgJXymgEwzfEQX9a5MULRWgv149a5MULRWgv1RX7bYnDlxrYhtzC9AQPvPIoOHX6lBuvVwJu2mVEnstKMHjLmTzUhP1RrxFeEW(CAOaBAxMGkRyoBpEmgJXymgJXymgJXymcXiByMj1hJ4k5qCQtEeEW(CAOaBAxMGkRyoBpEmgJXymgJXymgJXymoEmgJXymgJXymgdEx9ymgJXymgJXXJXymgJXymg8U6JhJXymgJXymoEmgJXymgJX44XymgJXymgdHy4zLv4JSrCLCi(irAgMHL2mFq3hw)8HnBid)4XymgJXymgdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQxRrkBMxVgPzJ4k5q8uQtM06JWJqmYgMzs9XiUsoeN6KpEmgJXymgJX44XymgJXymgdHyeLnIpS(5JePzygwAZ8HnBidFyLhSNNtm3OK9ggLvOZgYWpEmgJXymgJXWGZZj6tJs2lkBexDndOM2JeMSVEgOEnd4JrCLCiEk1PzysjtBMBG61ma1PzyszRRs2a1hHhEwzfEQX9a5MULRWgvhpgJXymgJXyC8ymgJXymgJXXJXymgJXymgKOq3TMK3dKB6wUIKpMYykuiD4p7n4D1C1uOqHutC8ymgJXymgJbjk0DRjjLmTz(WJeE3ourhYVLUhAqkfk8EGCt3YvK8XugtHcPgSbPuOW(CAigzdZmPbYMnmBjtBMBIJhJXymgJXymirHUBnjPsC2p8XiUsoeFqDAgMbzAZCd2GukumPNvHUhIIkzfZzRjjnbuyP2GLakSutk1gHyKnmZK6JrCLCio1jtGsuHAJrigzdZmP(yexjhItDYjaIkMWeM44XymgJXymgJXymoEmgJXymgJXymgdAvdExDKnBB8gHdpkdRFEFqIcD3AssjaJJmMmPMyW7QpEmgJXymgJXymgJJhJXymgJXymgJXieJSHzMu2NtJiBQ0e2GgHhLHqm883yhQLzFFer2uJqmYSFW(SsNUh64XymgJXymgJXymoEmgJXymgJXymgdfUTrPpSkn8JhJXymgJXym4D1hpgJXymgJXyC8ymgJXyW7QpEmgJXymoEmgdExT2QJSk0HcXv0K1rbnEwzZ6iHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiehleIrej09mtGsoird4n8XiUsoeFqDAgMbzAZ8HbNNtm3OKhcXG9SN9u8lZERmjk0CplLazZdHqCSqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqieIJpwvtpWsl3njNAdkuOyIJhJX44XymecsuO7wtY7bYnDlxHnQmXXJXyC8ymg0Qg8r4WdsnwIGnicSezJjG0iY(qaKjDy9Z7hpgJXymghpgJXymgmYbzMbVhi30TCf2OAeE4Xz4bwt2sTbfkumXXJXymgJbJCqMzW7bYnDlxrYhtz8i8WJZWdSMKf1guOqXehpgJXymgmYbzMHAAvQOdAyS(YgvJWdpodpWAYQuBqHcftC8ymgJXyWihKzgkzA1r0St5JWdpodpWAsIP2GcfkMyC8ymgJXyWihKzgb(ZkszZ8r4bbUtBLYM5MKusyY(Yvi1ehpgJXymgmYbzMrG)ScbWZmMhHhjm3sa8mJzPSzUjjLeMSVCfsnXXJXymgJbJCqMz0iLnZhHhb(ZkszZCkuinLukuc8NviaEMX8XJXymgJXXJXymgJXXJXymgJHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiehpgJXymgcXiWppiXbph4FKi33rUREqRAyM2ZJUhAq3PT0zgA2P8HqC8ymgJXyiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecXXJXymgJXXJXymgJHqm8YgXvtTHHn2rxEKdS0gXh2SHm8HqC8ymgJXyqRAyW55e9Prj7fLnIRUMbut7rct2xpduVMb8XiUsoepL60mmPKPnZnq9AgG60mmPS1vjBG6JjiHhDAMrURE4zLv4Pg3dKB6wUcBunchE0Pzgw)8(yC8ymgJXymgJXXJXymgJXymgcXGroREy9ZhEzJ4Qh2SHm8HqC8ymgJXymgJHNvwHNACpqUPB5kSr1i8iHKapEmgJXymgJXWZkRWtnUhi30TCf2OAeEyW55e9Prj7fLnIRUMbut7rct2xpduVMb8XiUsoepL60mmPKPnZnq9AgG60mmPS1vjBG6JJhJXymgJXymoEmgJXymgJXqigsCJ4kd1YD(W6Np49a5MULRmeIJhJXymgJXymOvn8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQpchE0Pzgw)8(yC8ymgJXymgJXymgHyKnmZK6JrCLCio1jpcpkfkLYXJXymgJXymgJXyC8ymgJXymgJXymgcXGk5oFy9Zh8EGCt3Yvgg2yhDz7qUpS(P9gQPvPIoOHX67qioEmgJXymgJXGZ4XPvn8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQxJ3dKB6wUIKpMY461utRsfDqdJ1x2OQ(iC4rNMzy9Z7hpgJXymgJXymgJrigzdZmP(yexjhItDYJWJsHsPC8ymgJXymgJXymghpgJXymgJXymgJHqmOsUZhw)8bVhi30TCLHCFy9t7nutRsfDqdJ13HHn2rx2oK7dRFAVHvwUpeIJhJXymgJXym4mECAvdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQxRrkBMxFeo8OtZmS(59JhJXymgJXymgJXieJSHzMuFmIRKdXPo5r4rPqPuoEmgJXymgJXymgJJhJXymgJXymgJXqiguj35dRF(G3dKB6wUc1gY9H1pT3qnTkv0bnmwFhY9H1pT3Wkl3hcXGroREy9ZhgLzA4EdH44XymgJXymgdoJhFmoEmgJXymgJXymgdAvdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQxRrkBMxVMbYgXvYH4PuNSbQpchE0Pzgw)8(XJXymgJXymgJXymgJrigzdZmP(yexjhItDYJWJsHsPC8ymgJXymgJXymgCgp(XJXymgJXymgJXymgJrigzdZmP(yexjhItDYJWdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQxRrkBMxVMbYgXvYH4PuNSbQF8ymgJXymgJXymgJXyC8ymgJXymgJXymg8U6JhJXymgJXym4D1hpgJXymgJXyC8ymgJXymgJXXJXymgJXymgcXOl35dVSrC1uByyJDK7JCGL2i(WMnKHpeIXymoEmgJXym4mECAvddopNOpnkzVOSrC11mGAApsyY(6zG61mGpgXvYH4PuNMHjLmTzUbQxZauNMHjLTUkzduFeo8OtZmYD1dpRScp14EGCt3YvyJQXeKWJonZW6N3pEmgJXymgJX44XymgJXymgdHyiXnIRmul35dRF(G3dKB6wUYqioEmgJXymgJXGw1WZkRWtnUhi30TCf2OQgVhi30TCf2OQ(iC4rNMzy9Z7hpgJXymgJXymgJrigzdZmP(yexjhItDYJWJsHsPC8ymgJXymgJXymghpgJXymgJXymgJHqmOsUZhw)8bVhi30TCLHHn2rx2oK7dRFAVHAAvQOdAyS(oeIJhJXymgJXym4mECAvdpRScp14EGCt3YvQX7bYnDlxHnQQxJ3dKB6wUIKpMY461utRsfDqdJ1x2OQ(iC4rNMzy9Z7hpgJXymgJXymgJrigzdZmP(yexjhItDYJWJsHsPC8ymgJXymgJXymghpgJXymgJXymgJHqmOsUZhw)8bVhi30TCLHCFy9t7nutRsfDqdJ13HHn2rx2oK7dRFAVHvwUpeIXymgJXymgJXymoEmgJXymgJXGZ4XPvn8SYk8uJ7bYnDlxPgVhi30TCf2OQEnEpqUPB5ks(ykJRxtnTkv0bnmwFzJQ61AKYM51hHdp60mdRFE)4XymgJXymgJXymcXiByMj1hJ4k5qCQtEeEukukLJhJXymgJXymgJX44XymgJXymgJXymeIbvYD(W6Np49a5MULRqTHCFy9t7nutRsfDqdJ13HCFy9t7nSYY9HqmyKZQhw)8HrzMgU3qioEmgJXymgJXGZ4XhJJhJXymgJXymgJXGw1WZkRWtnUhi30TCf2OQgVhi30TCf2OQEnEpqUPB5ks(ykJRxtnTkv0bnmwFzJQ61AKYM51RzGSrCLCiEk1jBG6JWHhDAMH1pVF8ymgJXymgJXymgJXyeIr2WmtQpgXvYH4uN8i8OuOukhpgJXymgJXymgJbNXJF8ymgJXymgJXymgJXyeIr2WmtQpgXvYH4uN8i8WZkRWtnUhi30TCf2OQgVhi30TCf2OQEnEpqUPB5ks(ykJRxtnTkv0bnmwFzJQ61AKYM51RzGSrCLCiEk1jBG6hpgJXymgJXymgJXymghpgJXymgJXymgJbVR(4XymgJXymgdEx9XJXymgJXymghpgJXymgJXyiedVSrC1uBK7Qh5alTr8HnBidFiehpgJXymgCgpoTQHbNNt0NgLSxu2iU6AgqnThjmzF9mq9AgWhJ4k5q8uQtZWKsM2m3a1RzaQtZWKYwxLSbQpMGeE0Pzg5U6HNvwHNACpqUPB5kSr1ycs4rNMzy9Z7JXXJXymgJXymghpgJXymgJXyiedjUrCLHA5oFy9Zh8EGCt3YvgcXXJXymgJXymg0QgEwzfEQX9a5MULRWgv149a5MULRWgv1hHdp60mJCx9WGZZj6tJs2lkBexDndOM2JeMSVEgOEnd4JrCLCiEk1PzysjtBMBG61ma1PzyszRRs2a1RX7bYnDlxHnQQpchE0Pzgw)8(XJXymgJXymgJXyeIr2WmtQpgXvYH4uN8i8OuOukhpgJXymgJXymgJXXJXymgJXymgJXyiedJ7bYnDlxzKdS0gXh09rqJIcVBh2SHmCQnmSXoulZ9gDz7WF2i(ip8YgXhcXXJXymgJXymgCgpoTQHNvwHNACpqUPB5kSrvnEpqUPB5kSrv9XeKWJonZi3vpm48CI(0OK9IYgXvxZaQP9iHj7RNbQxZa(yexjhINsDAgMuY0M5gOEndqDAgMu26QKnq9A8EGCt3YvyJQ6JWHhDAMH1pVF8ymgJXymgJXymghpgJXymgJXymgJHqmOvnYbwAJ4dB2qg(WF2BW7wfFhQKvgw)0Ed10Qurh0Wy9DiehpgJXymgJXymgJbTQHNvwHNACpqUPB5kSrvnEpqUPB5kSrv9A8EGCt3YvK8XugxVMAAvQOdAyS(Ygv1htqcp60mdRFEFC8ymgJXymgJXymgJXyC8ymgJXymgJXymgJXyiedAvJCGL2i(WMnKHp8N9g8UvX3HkzLH1pT3qnTkv0bnmwFhY9H1pT3Wkl3hcXXJXymgJXymgJXymgJbTQHNvwHNACpqUPB5kSrvnEpqUPB5kSrv9A8EGCt3YvK8XugxVMAAvQOdAyS(Ygv1R1iLnZRpMGeE0Pzgw)8(XJXymgJXymgJXymgJXymg0QgEwzfEQX9a5MULRWgv149a5MULRWgv1RX7bYnDlxrYhtzC9AQPvPIoOHX6lBuvVwJu2mVEndKnIRKdXtPozduFeo8OtZmS(59JhJXymgJXymgJXymgJXymgJXieJSHzMuFmIRKdXPo5r4rPqPuoEmgJXymgJXymgJXymgJXGZ4XpEmgJXymgJXymgJXymgJXymgJqmYgMzs9XiUsoeN6KhHhEwzfEQX9a5MULRWgv149a5MULRWgv1RX7bYnDlxrYhtzC9AQPvPIoOHX6lBuvVwJu2mVEndKnIRKdXtPozdu)4XymgJXymgJXymgJXymgJXymoEmgJXymgJXymgJXymgJXG3vF8ymgJXymgJXymgJXyWz84hpgJXymgJXymgJXymgJXyeIr2WmtQpgXvYH4uN8i8OuOukhpgJXymgJXymgJXymg8U6JhJXymgJXymgJXymgJJhJXymgJXymgJXGZ4XpEmgJXymgJXymgJXymcXiByMj1hJ4k5qCQtEeEukukLJhJXymgJXymgJXymgJJhJXymgJXymgJXG3vF8ymgJXymgJXymghpgJXymgJXymgJHqmmUhi30TCLrx2oYbwAJ4d6(iOrrH3TdB2qgo1gg2yhQL5Ed)zJ4J8WlBeFiehpgJXymgJXyWz840QgEwzfEQX9a5MULRWgv149a5MULRWgv1hHdp60mJCx9WGZZj6tJs2lkBexDndOM2JeMSVEgOEnd4JrCLCiEk1PzysjtBMBG61ma1PzyszRRs2a1RX7bYnDlxHnQQpMGeE0Pzgw)8(yC8ymgJXymgJXymghpgJXymgJXymgJHqmgmYz1dRF(WlBeFq3TYdRF(ihyPnIpSzdz4dH44XymgJXymgJXym8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQpcpm48CI(0OK9IYgXvxZaQP9iHj7RNbQxZa(yexjhINsDAgMuY0M5gOEndqDAgMu26QKnq9A8EGCt3YvyJQ6JJhJXymgJXymgJX44XymgJXymgJXymeIbTQroWsBeFyZgYWh(ZEdE3Q47qLSYW6N2BOMwLk6GggRVdH44XymgJXymgJXymOvn8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQxJ3dKB6wUIKpMY461utRsfDqdJ1x2OQ(ycs4rNMzy9Z7JJhJXymgJXymgJXymgJJhJXymgJXymgJXymgdHyqRAKdS0gXh2SHm8H)S3G3Tk(oujRmS(P9gQPvPIoOHX67qUpS(P9gwz5(qioEmgJXymgJXymgJXymOvn8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQxJ3dKB6wUIKpMY461utRsfDqdJ1x2OQETgPSzE9XeKWJonZW6N3pEmgJXymgJXymgJXymgJXGw1WZkRWtnUhi30TCf2OQgVhi30TCf2OQEnEpqUPB5ks(ykJRxtnTkv0bnmwFzJQ61AKYM51RzGSrCLCiEk1jBG6JWHhDAMH1pVF8ymgJXymgJXymgJXymgJXymgHyKnmZK6JrCLCio1jpcpkfkLYXJXymgJXymgJXymgJXymgCgp(XJXymgJXymgJXymgJXymgJXyeIr2WmtQpgXvYH4uN8i8WZkRWtnUhi30TCf2OQgVhi30TCf2OQEnEpqUPB5ks(ykJRxtnTkv0bnmwFzJQ61AKYM51RzGSrCLCiEk1jBG6hpgJXymgJXymgJXymgJXymgJXXJXymgJXymgJXymgJXymg8U6JhJXymgJXymgJXymgdoJh)4XymgJXymgJXymgJXymgJqmYgMzs9XiUsoeN6KhHhLcLs54XymgJXymgJXymgJXymgJJhJXymgJXymgJXymgdEx9XJXymgJXymgJXymgJXXJXymgJXymgJXyWz84JJhJXymgJXymgJXymgJqmYgMzs9XiUsoeN6KhHhLcLs54XymgJXymgJXymgJX44XymgJXymgJXym4D1hpgJXymgJXymgJXXJXymgJXymgJXyiedQK78H1pFW7bYnDlxHAd5(W6N2BOMwLk6GggRVd5(W6N2ByLL7dHyWiNvpS(5dJYmnCVHqC8ymgJXymgJbNXJpoEmgJXymgJXymgdAvdpRScp14EGCt3YvyJQXeKWJonZW6N3pEmgJXymgJXymgJXymOvn8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQpMGeE0Pzgw)8(XJXymgJXymgJXymgJXymg0QgEwzfEQX9a5MULRWgv149a5MULRWgv1RX7bYnDlxrYhtzC9XeKWJonZW6N3pEmgJXymgJXymgJXymgJXymgdAvdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQpMGeE0Pzgw)8(ymgJXymgJX44XymgJXymgJXymgJXymgJXymgJXGw1WZkRWtnUhi30TCf2OQgVhi30TCf2OQEnEpqUPB5ks(ykJRxtnTkv0bnmwFzJQ61AKYM51htqcp60mdRFE)4XymgJXymgJXymgJXymgJXymgJXymgdAvdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQxRrkBMxVMbYgXvYH4PuNSbQpchE0Pzgw)8(XJXymgJXymgJXymgJXymgJXymgJXymgJXyeIr2WmtQpgXvYH4uN8i8OuOukhpgJXymgJXymgJXymgJXymgJXymgJXyWz84hpgJXymgJXymgJXymgJXymgJXymgJXymgJrigzdZmP(yexjhItDYJWdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQxRrkBMxVMbYgXvYH4PuNSbQF8ymgJXymgJXymgJXymgJXymgJXymgJbVR(4XymgJXymgJXymgJXymgJXymgJXGZ4XpEmgJXymgJXymgJXymgJXymgJXymgJXieJSHzMuFmIRKdXPo5r4rPqPuoEmgJXymgJXymgJXymgJXymgJXym4D1hpgJXymgJXymgJXymgJXymgJbNXJF8ymgJXymgJXymgJXymgJXymgJXyeIr2WmtQpgXvYH4uN8i8OuOukhpgJXymgJXymgJXymgJXymgJbVR(4XymgJXymgJXymgJXymgdoJh)4XymgJXymgJXymgJXymgJXymcXiByMj1hJ4k5qCQtEeEukukLJhJXymgJXymgJXymgJXym4D1hpgJXymgJXymgJXymgCgp(XJXymgJXymgJXymgJXymgHyKnmZK6JrCLCio1jpcpkfkLYXJXymgJXymgJXymgJbVR(4XymgJXymgJXym4mE8JhJXymgJXymgJXymgJqmYgMzs9XiUsoeN6KhHhLcLs54XymgJXymgJXym4D1hpgJXymgJXyW7QpEmgJXymgJX44XymgJXymgJJhJXymgJXymeIrxUZhEzJ4Qhg2yhw)Cf(G2BK7JCGL2i(WMnKHF8ymgJXyWz840QggCEorFAuYErzJ4QRza10EKWK91Za1RzaFmIRKdXtPondtkzAZCduVMbOondtkBDvYgO(iC4rNMzK7QhEwzfEQX9a5MULRWgvJjiHhDAMH1pVpoEmgJXymgJX44XymgJXymgdAvdpRScp14EGCt3YvyJQXeKWJonZW6N3pEmgJXymgJXymgdAvdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6JjiHhDAMH1pVF8ymgJXymgJXymgJXyqRA4zLv4Pg3dKB6wUcBuvJ3dKB6wUcBuvVgVhi30TCfjFmLX1htqcp60mdRFE)4XymgJXymgJXymgJXymgdAvdpRScp14EGCt3YvyJQA8EGCt3YvyJQ6149a5MULRi5JPmUEn10Qurh0Wy9LnQQpMGeE0Pzgw)8(ymgJXymgJX44XymgJXymgJXymgJXymgJXymOvn8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQxJ3dKB6wUIKpMY461utRsfDqdJ1x2OQETgPSzE9XeKWJonZW6N3pEmgJXymgJXymgJXymgJXymgJXymOvn8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQxJ3dKB6wUIKpMY461utRsfDqdJ1x2OQETgPSzE9AgiBexjhINsDYgO(iC4rNMzy9Z7hpgJXymgJXymgJXymgJXymgJXymgJXyeIr2WmtQpgXvYH4uN8i8OuOukhpgJXymgJXymgJXymgJXymgJXymgCgp(XJXymgJXymgJXymgJXymgJXymgJXymgHyKnmZK6JrCLCio1jpcp8SYk8uJ7bYnDlxHnQQX7bYnDlxHnQQxJ3dKB6wUIKpMY461utRsfDqdJ1x2OQETgPSzE9AgiBexjhINsDYgO(XJXymgJXymgJXymgJXymgJXymgJbVR(4XymgJXymgJXymgJXymgJXym4mE8JhJXymgJXymgJXymgJXymgJXymgJqmYgMzs9XiUsoeN6KhHhLcLs54XymgJXymgJXymgJXymgJXym4D1hpgJXymgJXymgJXymgJXyWz84hpgJXymgJXymgJXymgJXymgJrigzdZmP(yexjhItDYJWJsHsPC8ymgJXymgJXymgJXymgJbVR(4XymgJXymgJXymgJXGZ4XpEmgJXymgJXymgJXymgJXieJSHzMuFmIRKdXPo5r4rPqPuoEmgJXymgJXymgJXym4D1hpgJXymgJXymgJbNXJF8ymgJXymgJXymgJXyeIr2WmtQpgXvYH4uN8i8OuOukhpgJXymgJXymgJbVR(4XymgJXymgdoJh)4XymgJXymgJXymcXiByMj1hJ4k5qCQtEeEukukLJhJXymgJXym4D1JXymgJXymgJXymgJXymoEmgJXym4D1hpgJXymghpgJXymgcbjk0DRjj14EGCt3YvyJkd2Guku49a5MULRWgvuOqAcD34EGCt3YvKYM5gSbPuOW7bYnDlxrYhtzmfkKMq3PIwLk6GggRVSrLbBqkfkQPvPIoOHX6lBurHcPj0DcitRoIMDk3GniLcfLmT6iA2PCtC8ymgJXyqIcD3AsEpqUPB5ks(ykJPqH0H)S3WZMvSC1uOqHutC8ymgJXyC8ymgJXyOWTnk9HvPHF8ymgJXyC8ymgCgpoTQbFeo8GuJLiydIalr2yci1yjQiDy9Z7hpgJXymgkCBJsFOkZ4XpEmgJXymoEmgdEx9XJXyCmVR(4Jp(yDuJhpTPtB1jOokOXZkBo1pTAUokOXZkBwhXnI3T6icw2SHz7W0jhshz9LeUokOXZkBwhf04zLnNA9LeUoIBeVB1rCJ4DRNoYyjc2GiWsKnMasJi7dbqMAdJLiydIalr2yci1yjQ0rnDUr8UvhzPnZvRT6ig5SAnzDuJhpTZnIROnuh5rZoLRjRJm3WyP1K1rw2Z7wFvrBexNG6il75DRV6euhPIHZU0gYW1jOoYY76euB1wDKQCGLwURjRJm3WyP1K1wTvhzZm8UvtwhzUHXsRjRTARosjhW1K1rMByS0AYAR2QJuKz4AY6iZnmwAnzTvB1rnE8upA2PCTH6i10Qurh0Wy9vtwhzUHXsRjRTARoIeJiXMz4DRMSoYCdJLwtwB1wTvhz5SRTrHRJiZzxBJc3lHoIeodJpbwAJYwA5UbzexHj7RxcTXbm0K4XtJA66iZ0kkYkAd1rkY2SLRtqDuoWsl390K1r0DARMSokOXZkBwhjecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecH4yHqmIiHUNzcuYbjAaVHpgXvYH4dQtZWmitBMpm48CI5gL8qigSN9SNIFz2BLjrHM7zPeiBEieIJfcHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqC8XcXO3y2qUYqw1WJhi3v7nuPiBEW7QhYQgQOd53o8vUzW(C3oSYdsKjze1OOW7Q5kdR8Wuz1DUN3XHyKnmZKAoZUrKnvQhpWBeE0wkhFSqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiehlecXGkdAizqKhgtfBKh(iXos20ytkHhjOXModYGpiBASfnmDSjz8qieIJfcHqiecHqiecHqiecHqiecHqiecHqiecHqiecH44JZnk5uE3ikr2SILmTz(i8OtZC8XHyKnmZKY(CQCJLKglBDvYJWJYXHyKnmZKY(CAeztLMWg0i8OC8XcXGaY0QhurRsfDqdJ13bBuzaVHqCmJCwDQX9a5MULRqfTkvSr1i8iHKap(yg5S6uJ7bYnDlxHkAvQyJQAL6JWdsLK7CspMroRo14EGCt3YvOIwLk2OQwB9r4bPveKWK9LRq6XmYz1Pg3dKB6wUcv0QuXgv1yvFeEqAfbjmzF5kdtJRithq6XmYz1Pg3dKB6wUcv0QuXgv1QwFeEqABrqct2xUYGaY0Qj9yg5S6uJ7bYnDlxHkAvQyJQAexFeEqkRkcsyY(YvgeqMwnPhZiNvNACpqUPB5kurRsfBuvRs9r4bPTfbjmzF5kdtJRithmiGmTAspMroRo14EGCt3YvOIwLk2OQgr1hHhKYQIGeMSVCLHPXvKPdgeqMwnPhZiNvNACpqUPB5kurRsfBuvlz9r4bPeqMw9GGs3vZvi9yg5S6uJ7bYnDlxHkAvQyJQAewFeEqkb7pZWW7H4dtjRMt6XmYz1Pg3dKB6wUcv0QuXgv1C1hHhKsCrqct2xUYGaY0Qj9yg5S6uJ7bYnDlxHkAvQyJQATL6JWdsBldXqs2oA84Qj9yg5S6uJ7bYnDlxHkAvQyJQATT1hHhKAACfz6GruaVNvOLj9yg5S6uJ7bYnDlxHkAvQyJQATSQpcpinkG3Zk0YKEmJCwDQX9a5MULRqfTkvSrvT2Q1hHhK2wDigsY2rJhxnPhZiNvNACpqUPB5kurRsfBuvRL46JWdsjOmC2L2qg(GaY0Qj9yg5S6uJ7bYnDlxHkAvQyJQATvQpcpi104kY0bdckdNDPnKHpiGmTAspMroRo14EGCt3YvOIwLk2OQwlr1hHhKAkFT(PdgeqMwnPhZiNvNACpqUPB5kurRsfBuvRnz9r4bPMockbmiGmTAspMroRo14EGCt3YvOIwLk2OQwlH1hHhKAkzglVpiyzf(OTy9p8P3PnIR4Lv8L0JzKZQtnUhi30TCfQOvPInQQ16QpcpiTIGeMSVCLHhj8a6mZGBeVBj9yg5S6uJ7bYnDlxHkAvQyJQASk1hHhKYQIGeMSVCLHXgX72ruaVNvOLj94JpwhPwonOXZkBwNGARoYZMvSAY6OGgpRSzDuUrjNY7grjYMvSKPnZhHhjm3sM2m3KMqhPwonOXZkBwNGARosfDN2ZVMSokOXZkBwhLBuYP8UruISzflzAZ8r4rNMrhPwonOXZkBwNGAR2QJ8ZPd53QLAjKsPukLQe2smrUK6ivYDBen7uUwQLqTvlXstwh5RbPsLh3QLevP4CohroIjKfXSAD6i2tR26xl1wLsPukvBjozlRkS0r0Q1rKPnZhw5bv0CDuwTAAlTCpZKAvOdfIR4PjRT6OGgpRSzYC21sGjrD2Y1rCJ4DRosHhIwUt2xs46ilNDT6iRcDOqCfnzDuJhpTPtB1jOoQXJNscxjG3T(5zgRFTH6OGgpRS5u)0Q56ilTzUADejCLaE36NNzS(tLjHRKTYk6i2zDejCLaE36NNzS(1rfDutN2QJSzLqCRoY6ljCDKNnBB80rnDUr8UvhLBSYARoIUtBtdKntcd3YvRLA1rStA8S0Q8vhraSLWMgzDuVXmzf6qH4kEAPwDKAApsyY(sMZUwDuciqhXUgKkvECRwQTTQokOXZkBMmNDT6iHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiehleIrej09mtGsoird4n8XiUsoeFqDAgMbzAZ8HbNNtm3OKhcXG9SN9u8lZERmjk0CplLazZdHqCSqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqieIJpwvtpWsl3nPjoEmgJJhJXGw1Ga3PTS5rfpR2KKAZkH4wsnXW6N3hkCBJsFqkPdEx9XJXyC8ymgcbJCqMzyZkszZ8r4bbUtBLYM5MKuBwje3sQjoEmgdg5GmZWqzppdsLkpULGMdSYkJWJ2JhJXqiyKdYmJojbSPEeEyL7nMnKRystsG702eMaZgvMKuBwje3sQjmHbZRXqtkAzrTHWzcQnAjYehpgJbJCqMzeQHw9i8Ga3PTjmbMnQmjP2SsiULutC8ymgmYbzMrk1gPuBKsTrk1gPuB0jjGn1uBKocp8SkEKWqBnjPcsPwOgA1M44XymyKdYmJuQnsP2qnTkv0bnmwFP2iLAJuQnsP2iLAJuQnshHhjm3Yw3ZM7bC26QKnPjoEmgJJhJXGw1qnTkv0bnmwFhHdpAhYkd10Qurh0Wy9Deo8G1qwzOMwLk6GggRVJWHhSQoS(59XyieJkdZ5(WiUIhTCFiRA4LnZhgk75D8ymgJXyqRAqqPnIBQC3y2nGtILwUtoBidVwNKa2uxFy9Z7JJhJXymgJXymmu2ZZGuPYJBjO5aRSYi8WKeuAJ4Mk3nMDd4KyPL7KZgYWR1jjGn11heOJ2sXed2HddL98mivQ84wcAoWkRm4D1JXymgJXXJXyWz84JXymghpgJXymg0QgjOSNNXSBaNelTCNC2qgETojbSPU(W6N3hhpgJXymgJXyyOSNNbPsLh3sqZbwzLr4HjtqzppJz3aojwA5o5SHm8ADscytD9bb6OTumXGD4WqzppdsLkpULGMdSYkdEx9XJXyW7QpEmgJJhJXGroiZmcKzKBugHhKsqcuPsLkvQuPI0JhJXGroiZm8ZZmw)JWdcCN2AA8mJ1Vjj1MvcXTKAIJhJXGroiZmmNzxtJNzS(hHhe4oT104zgRFtLzxtsQnReIBj1ehpgJbJCqMzyPnZhHhjm3sM2m3KM44XymyKdYmdlNDThpgJbJCqMziZO2ppZy9F8ymgmYbzMHHYEEgKkvEC7i8WKMZSRPXZmw)dt)HHYEEgKkvEClbnhyLvmXqmmNzxtJNzS(pEmgJJhJXGw1qMrTFEMX6Fmbj8WppZy9pS(59JhJXymgdzg1(5zgR)r4HFEMX6)4XymgJXGw1WppZy9pchEyoZUMgpZy9pS(59HqmiBA0rJe00zqem1hSfnsydYGO64XymgJXymgd2NtJiHUNzs9ZZmw)fQnyFonIe6EMj1sBMxO2G950isO7zMuZ(5zgRFQnyFonIe6EMj1SL2mFeE0PzoEmgJXymgJXWYzx7i8G0HyigKE8ymgJXymgJHc32O0hbYmYnkuOy5SR94XymgJXG3vF8ymgJXyC8ymgJXy4NNzS(hHh(5zgR)HyyOSNNbPsLh3E8ymgJXyC8ymgJXyqRA0LTd2NtJiHUNzs9ZZmw)LH1pVpeIrcBqgevhpgJXymgJXyW(CAej09mtQFEMX6VqTb7ZPrKq3ZmPwAZ8Yi8WppZy9tTHL2m)4XymgJXymgd2NtJiHUNzsn7NNzS(P2G950isO7zMuZwAZ8r4HFEMX6NAdlTz(XJXymgJXymgkCBJs)4XymgJXG3vF8ymgJXyC8ymgJXyW(CAej09mtQz)8mJ1)i8WKSpNgrcDpZKA2ppZy9pyho8ZZmw)Myy6pOu54XymgJXG950isO7zMuZwAZ8r4HjzFonIe6EMj1SL2mFWoCyPnZnXW0FqPYXJXymgJXXJXymgJbTQb7ZPrKq3ZmPM9ZZmw)d25Wd2NtJiHUNzs9ZZmw)LH1pVF8ymgJXymgJHLZU2r4bPdXqmi94XymgJXymgd2NtJiHUNzs9ZZmw)fQnyFonIe6EMj1sBMxO2G950isO7zMuZ(5zgRFQnyFonIe6EMj1SL2mFeUtZC8ymgJXyWz84hpgJXymgJXyyPnZhHh(5zgR)HP)WKSpNgrcDpZKAPnZldXG950isO7zMuZwAZCtmiqhMK950isO7zMuZ(5zgR)HyW(CAej09mtQFEMX6VyIJhJXymgJXymOvnS0M5dtVrzy9Z7hpgJXymgJXymgJHL2mFeEuoEmgJXymgJXymgJazg5gLr4bPeKavQuRULOsH0JhJXymgJXymgJXWYzx7i8qLSI5S1KKMakuyPMuQzPnZnXXJXymgJXymgCgpoTQHjT0M5dtVWdIkMyy9Z7hpgJXymgJXymgJHLZU2r4HkzfZzRjjnbuOWsnPuZsBMBIXymgJXymghpgJXymgJXyWz840QgM0sBMpyNhevmXW6N3pEmgJXymgJXymgdlNDTJWdvYkMZwtsAcqTblbuOWsnPuZsBMpiqhevO2WsBMpsadIkM44XymgJXymgdEx9XJXymgJXymgkCBJsFeiZi3OqHILZU2JhJXymgdEx9XJXyW7QpM3vRJyKZQ1K1rQPvPIoOHX6RMSoYCdJLwtwB1wDKQCGLwURjRJm3WyP1K1wTvhfWK980K1rMByS0AY6itJalr2ycqNG6icWGsycSX6euB1wDKnZW7wnzDK5gglTMS2QT6iLCaxtwhzUHXsRjRTARosrMHRjRJm3WyP1K1wTvh14Xt7zZCTH6OgpEANBexrBOoQNnZ1reSFEwDiUoIeJiXMz4DRMSoYCdJLwtwB1wTvhLdS0gXjRqhkexXuYQ5APIoQPBvOdfIROjRJA60wDKnReIB1wDKFoDi)wTuvIOukLsjjrSCvDv0r5alTC3ttwh5zZkwnzDKA5up5MUATH6ip5MUAD0iOXZkBwB1r0DARMSokOXZkBwhjecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqieIJfIXyeXTdRF(OtsaBunKvnS(5ddL98g(k3myFUBhw5HSkvEC7W6Np8ZZmw)JXymgdH4yHymgw5HL2mFyLh5U6H5CI8bpHQMmZWkp6C2p8ZZmw)ds4kb8UnhIpgJXymgJXyiehleJXGDuUzeK7JqC7W6Np6KeWgvdvkYMhw)8rJcZqw1W6Np6KemK7d2lZE)8SAkbYMhdH4yHymg0Ckd)wljgmcucu2ZE2tH9YS3ppRMsGSzc0ojbHBleZQTcbkjzRImJiitInt3fH4kQLhJXqiowiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiehFCck75zm7gWjXsl3jNnKHpcpsijWJpobL98mMDd4KyPL7KZgYWRrABlXSiQkP1hHhTLXymeIHbP23(GaY0QhjOSN3XjOSNNXSBaNelTCNC2qgEnsBBjUkrTKwFeEWQYymgcXW081S6mdZGaY0QhjOSN3XjOSNNXSBaNelTCNC2qgEnsBBjUkrfsRpcpyvzmgdHyyA(QWojpiGmT6rck75D8XhlecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecH44JjO0gXnvUBm7gWjXsl3jNnKHpcpsijWJpMGsBe3u5UXSBaNelTCNC2qgEnsDvikjrKwFeEqyzmgdHyyqQ9TpQmmvUFmbL2iUPYDJz3aojwA5o5SHm8AK6i2ruH06JWJ2YymgcXW081S6mdZOYWu5(XeuAJ4Mk3nMDd4KyPL7KZgYWRrQJOKvCKwFeEKSmgJHqmmnoJV5rLHPY9JjO0gXnvUBm7gWjXsl3jNnKHxJ02cXSARqA9r4bRkJXqigeizRImZGGZKyZ09rcZvulpm9n9n9hguNX3rJhFy9t7nOvn8vUz4pBeFK7JmtGFUzAp7XhFSosTCAqJNv2Sob1wTvhPsUBJOzNY1svjsB1sv1K1r(AqQu5XTAjbRQukLsPAPsBYkjjuhXEA1w)AjIO4CohHereXewPIJiDeTADuck75nitBMpSYdQO56OSA10wA5EMj1QqhkexXttwB1rQP9yN00dS0gX1r5UV6ifEiA5ozFjHRJSC21QJSk0HcXv0K1rbnEwzZP(PvZ1rbnEwzZ6is4kb8U1ppZy9NktcxjBLv0rSZ6OgpEAtN2QtqDutNBeVB1r5gRSosDJs2sl31rTfDuJhpLeUsaVB9ZZmw)Ad1rCJ4DRNoIGnitLG(qo10zqjCQXjuASe5ucSebLnthzJjaJPIAdJLiydIalr2ycinISpeazQnmwIGnicSezJjGuJLOIAd2KIi7JebBCQXseSbrGLiBmbKASuc7tcBCkbwInYuBqGLyJCQPzSpMoYMMoQPtB1rgk751QJS(scxh5zZ2gpDuqJNv2CQ1xs46iUr8Uvh14Xt9iHhqRIoiTPtB1jOoIeUsaVB9ZZmw)6OI2QJO7020azZKWWTC1APwDe7KgplTkF1reaBjSPrwh1BmtwHouiUINwQvhPM2JeMSVK5SRvhLac0rSRbPsLh3QLABB1rbnEwzZK5SRvhjecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecH4yHqmIiHUNzcuYbjAaVHpgXvYH4dQtZWmitBMpm48CI5gL8qigSN9SNIFz2BLjrHM7zPeiBEieIJfcHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqC8XQA6bwA5UjnXXJXyC8ymg0Qge4oTLnpQ4z1MKudL98Aj1edRFEFOWTnk9bPKo4D1hpgJXXJXyieJXyWihKzggk75LAZkszZ8r4bbUtBLYM5MKudL98Aj1ehpgJbJCqMzyOSNNbPsLh3sqZbwzLr4r7ymghpgJHqWihKzgDscyt9i8Wk3BmBixXKMKa3PTjmbMnQmjPgk751sQjmHbZRXqtkAzrTHWzcQnAjYehpgJbJCqMzeQHw9i8Ga3PTjmbMnQmjPgk751sQjoEmgdg5GmZiLAJuQnsP2iLAJuQn6KeWMAQnshHhEwfpsyOTMKubPuludTAtC8ymgmYbzMrk1gPuBOMwLk6GggRVuBKsTrk1gPuBKsTrk1gPJWJeMBzR7zZ9aoBDvYM0ehpgJXXJXyqRAOMwLk6GggRVJWHhTdzLHAAvQOdAyS(ochEWAiRmutRsfDqdJ13r4Wdwvhw)8(ymeIrLH5CFyexXJwUpKvn8YM5ddL98oEmgJXymOvniO0gXnvUBm7gWjXsl3jNnKHxRtsaBQRpS(59XXJXymgJXymggk75zqQu5XTe0CGvwzeEysckTrCtL7gZUbCsS0YDYzdz416KeWM66dc0rBPyIb7WHHYEEgKkvEClbnhyLvg8U6XymgJX44Xym4mE8XymgJJhJXymgdAvJeu2ZZy2nGtILwUtoBidVwNKa2uxFy9Z7JJhJXymgJXymmu2ZZGuPYJBjO5aRSYi8WKjOSNNXSBaNelTCNC2qgETojbSPU(GaD0wkMyWoCyOSNNbPsLh3sqZbwzLbVR(4Xym4D1hpgJXXJXyWihKzgbYmYnkJWdsjibQuPsLkvQur6XJXyWihKzggk75L6NNzS(hHhe4oT104zgRFtsQHYEETKAIJhJXGroiZmmu2Zl1CMDnnEMX6FeEqG70wtJNzS(nvMDnjPgk751sQjoEmgdg5GmZWqzpVulTz(i8iH5wY0M5M0ehpgJbJCqMzyOSNxQLZU2JhJXGroiZmmu2ZlvMrTFEMX6)4XymyKdYmddL98sjtMQr4bPjOSN3GmzQmydspEmgdg5GmZWqzppdsLkpUDeEysdL98snNzxtJNzS(hM(ddL98mivQ84wcAoWkRyIHyyOSNxQ5m7AA8mJ1)XJXyC8ymg0Qggk75LkZO2ppZy9pMGeEyOSNxQFEMX6Fy9Z7hpgJXymggk75LkZO2ppZy9pcpmu2Zl1ppZy9F8ymgJXyqRAyOSNxQFEMX6Feo8WqzpVuZz2104zgR)H1pVpeIbztJoAKGModIGP(GTOrcBqgevhpgJXymgJXyW(CAej09mtQHYEEP(5zgR)c1gSpNgrcDpZKAOSNxQL2mVqTb7ZPrKq3ZmPgk75LA2ppZy9tTb7ZPrKq3ZmPgk75LA2sBMpcp60mhpgJXymgJXyyOSNxQLZU2r4bPdXqmi94XymgJXymgdfUTrPpcKzKBuOqXqzpVuYKPIcfdL98sTC21E8ymgJXyW7QpEmgJXymoEmgJXymmu2Zl1ppZy9pcpmu2Zl1ppZy9peddL98mivQ842JhJXymgJJhJXymgdAvJUSDW(CAej09mtQHYEEP(5zgR)YW6N3hcXiHnidIQJhJXymgJXymyFonIe6EMj1qzpVu)8mJ1FHAd2NtJiHUNzsnu2Zl1sBMxgHhgk75L6NNzS(P2WqzpVulTz(XJXymgJXymgSpNgrcDpZKAOSNxQz)8mJ1p1gSpNgrcDpZKAOSNxQzlTz(i8WqzpVu)8mJ1p1ggk75LAPnZpEmgJXymgJXqHBBu6hpgJXymg8U6JhJXymgJJhJXymgd2NtJiHUNzsnu2Zl1SFEMX6FeEys2NtJiHUNzsnu2Zl1SFEMX6FWoCyOSNxQFEMX63edt)bLkhpgJXymgSpNgrcDpZKAOSNxQzlTz(i8WKSpNgrcDpZKAOSNxQzlTz(GD4WqzpVulTzUjgM(dkvoEmgJXymoEmgJXymOvnyFonIe6EMj1qzpVuZ(5zgR)b7C4b7ZPrKq3ZmPgk75L6NNzS(ldRFE)4XymgJXymgddL98sTC21ocpiDigIbPhpgJXymgJXyW(CAej09mtQHYEEP(5zgR)c1gSpNgrcDpZKAOSNxQL2mVqTb7ZPrKq3ZmPgk75LA2ppZy9tTb7ZPrKq3ZmPgk75LA2sBMpcp60mhpgJXymgCgp(XJXymgJXymggk75LAPnZhHhgk75L6NNzS(hM(dtY(CAej09mtQHYEEPwAZ8YqmyFonIe6EMj1qzpVuZwAZCtmiqhMK950isO7zMudL98sn7NNzS(hIb7ZPrKq3ZmPgk75L6NNzS(lM44XymgJXymgdAvddL98sT0M5dtVrzy9Z7hpgJXymgJXymgJHHYEEPwAZ8r4r54XymgJXymgJXymcKzKBugHhKsqcuPsT6wIkfspEmgJXymgJXymgddL98sTC21ocpujRyoBnjPjGcfwQjLAgk75LAPnZnXymgJXymgJXymghpgJXymgJXyWz840QgM0qzpVulTz(W0l8GOIjgw)8(XJXymgJXymgJXyyOSNxQLZU2r4HkzfZzRjjnbuOWsnPuZqzpVulTzUjgJXymgJXyC8ymgJXymgJbNXJtRAysdL98sT0M5d25brftmS(59JhJXymgJXymgJXWqzpVulNDTJWdvYkMZwtsAcqTblbuOWsnPuZqzpVulTz(GaDquHAddL98sT0M5JeWGOIjoEmgJXymgJXG3vF8ymgJXymgJbTQrigzdZmPSpNk3yjPXYwxL8iC4r7i3vpmu2Zl1sBMpchEeIr2WmtQ5m7gr2uPE8aVH1pVpcXiByMjL950iYMknHnOr4r7GZ4XhHyKnmZKY(CAeztLMWg0i8Om4D1hpgJXymgJXyOWTnk9rGmJCJcfkgk75LsMmvuOyOSNxQLZU2JhJXymgdEx9XJXyW7QpM3vRJyKZQ1K1rQPvPIoOHX6RMSoYCdJLwtwB1wDKQCGLwURjRJm3WyP1K1wTvhfWK980K1rMByS0AY6itJalr2ycqNG6icWGsycSX6euB1wDKnZW7wnzDK5gglTMS2QT6iLCaxtwhzUHXsRjRTARosrMHRjRJm3WyP1K1wTvh14Xt7zZCTH6OgpEANBexrBOoQNnZ1reSFEwDiUoIeJiXMz4DRMSoYCdJLwtwB1wTvh5NthYVvl12sX5CUkewQsy1Q6OMUvHouiUIMSoQPtB1rgk751QJA84PEKWdOvrhK20PT6euB1rbnEwzZK5SRLatI6SLRJ4gX7wDuoWsl390K1rE2SIvtwhPwo1tUPRwBOoYtUPRwhncA8SYM1wDeDN2QjRJcA8SYM1rhledQKhDz7qHBw2i(W6N2BeiB2mVBP2G2oO9gKKvSdzvdRFAVHvHouiUIbB4JrCLCiEk1PzysjtBMNAqnwsAS6i1YPbnEwzZAd1wTvhLdS0gXjRqhkexXuYQ5API2QLiwtwh5RbPsLh3QLiKsPuke1wQwPTcrS0rSNwT1VwQQRcLsPuiQTuTslr6OazgzfnzTeXAPwTvhLvRM2sl3ZmPwf6qH4kEAYAPwnzDut3Qqhkexrtwhf04zLnRJu10dS0YDtAIJhJXGw1ieJSHzMu2NtJiBQ0e2GgHdpkdRFEFOWTnk9HvPHp4D1hpgJXX8U6Jp(4Jp(4Jp(yDutN2QJmu2ZRvh14Xt9iHhqRIoiTPtB1jO2QJSk0HcXv0K1rbnEwzZP(PvZ1rbnEwzZ6OgpEAtN2QtqDKxJHCJ4DBuJkv0SRokLG9jICAezFiaY6OMo3iE3QJYnwzDuqJNv2SosvtpWsl3njNAdkuOyIJhJXGw1GpchEqkbwInYPMMX(y6iBAKoS(59JhJXymgdAvJqmYgMzszFonISPstydAeo8ODK7QhECgEG1KTuBqHcftmchEqQHYEETKoS(59Hc32O0hwLg(G3vF8ymg8U6JhJX44XymoM3vF8XhF8XhFSoQPtB1rgk751QJ4gX7wpDebwInYPMMX(y6iBAuBySebBqeyjYgtaPrK9HaitTHXseSbrGLiBmbKASev6iUr8UvhzA8mJ1VoY6ljCDuqJNv2SokOXZkBo16ljCDe3iE3QJA84PEKWdOvrhK20PT6euh51yi3iE3sGOWvrZU6OiceJnDMoTvB1wDKAAp2jn9alTrCDuMHrhPWdrl3j7ljCDKLZU2gfUok3PnNT0YDnzDK5mDxtwhz9LeUoIefUh3QJirH7XT6Omdj(ZeinmECTvh5zZkwnzDK1xs46isu4ECRoIefUh3QJuLvZ1wDKk6oTNFnzDK1xs46isu4ECRoIefUh3QJcPiZETvB1rwf6qH4kAY6i6UrCfpUob1r9SzUNMSwQvhf1OOW7Q5kdR8Wuz1DUNN2QT6i6oTnnq2mjmClxTwQvhzidVR2uYQ56iFOIkDKLZU2gfUokIeodJxcnzJtOMmbMamokHob5zZPr(ZQLzFAPvhPsjBMhzvY2SwQQoIDnivQ84wTu1QukLsHO2s1kTvishXiNvRjRJutRsfDqdJ1xnzDK5gglTMS2QT6iv5alTCxtwhzUHXsRjRTARoQXJN6rcpqNG6OaMSNNMSoYJUhIHRJiqia2moIS2QJSzgE3QjRJm3WyP1K1wDKhDpedxlXQvB1rk5aUMSoYCdJLwtwB1wDKhj8anzDKhDpedxlvvB1rnE80aMSNNob1rkYmCnzDK5gglTMS2QT6OgpEQnZW7wDcQJA84PbYMnmB1jOoIeJiXMz4DRMSoYCdJLwtwB1wTvh1BmtwHouiUINwILokhyPL7EAY6ipBwXQjRJ8KB6Q1rS1TCfv5aEcTpQvl39sOn48CI(0OK9sOjqKzpxXNgLSNP4QPZj0rYnD1Ej0ghrG4dbq9wkYHcPJulN6j30vRtqDKA50qmYSxBO2QT6iA16OiYMknHL1r(50H8B1sSARqX5CUcHetCswj1r5alTrCYk0HcXvmLSAUwQvB1sv0K1rmYz1AY6i10Qurh0Wy9vtwhzUHXsRjRTARoQXJN25gXv0gQJuLdS0YDnzDK5gglTMS2QT6ismIeBMH3TAY6iZnmwAnzTvB1rkYmCnzDK5gglTMS2QT6iBMH3TAY6iZnmwAnzTvB1rk5aUMSoYCdJLwtwB1wTvhXEA1w)AjIO4CohHereXewPIJiDKAApsyY(sMZUwDuciqhrRwhrDAgMuY0M5Pur7rct2xDuwTAAlTCpZKAvOdfIR4PjRT6OGgpRSzYC21QJecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiehled2z2z2z25bboYNe2yd2WMvcXTJ8WlBex9WqzpVrUREy9Le(Gu2bjAjDq3TYdLmT6rG)SLAdsYkwFhb(Z2HSYGa1l77yy6z6z6z6DSqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecH44Jv10dS0YDtAIJhJX4yEx9XhF8XhF8XhF8XhF8XhFSosnTh7KMEGL2iUok39vhPWdrl3j7ljCDKLZUwDKvHouiUIMSokOXZkBo1pTAUokOXZkBwhzM75LdX1rSdOondZGmTzUoQPZnI3T6OCJvwhf04zLnRJecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqCSqigrKq3Zmbk5GenG3WhJ4k5q8b1PzygKPnZhgCEoXCJsEied2ZE2tXVm7TYKOqZ9SucKnpecXXcHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqio(yHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecXXcXGDMDMDMDEqGJ8jHn2GnSzLqC7ip8YgXvpmu2ZBK7QhwFjHpiLDqIwsh0DR8qjtREe4pBP2GKSI13rG)SDiRmiq9Y(ogMEMEMEMEhlecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqio(4JfIbFeEe4pBhCJ4D7ONnZpwigzLqTJWJa)z7Wm3ZlhIFSqmYkHyncpmZ98YH4JCJ1VSYXcXiReIWr4rG)CVZzg9gZgYvowigzLqUr4rG)CVZzg9Sz(Xhle1QniaUkUcVhWhm0E2HSQHvHouiUYiWFU35mEJJpMGnnFiNAQOeonYh2XJjytZhYPMkkHtjaFyJQutNX(qLXeWXeSP5d5utfLWPeGpSr1XeSP5d5utfLWPei(qaKzhtnDg7dvgtahtWMMpKtnvucNsG4dbqMD8yc208HCQPIs4uc208rsYyt344JRx)4JpwvtpWsl3njNAzLqTulReIf1sPwk1sPwk1sPwwjeHulReYrTbfkumXXJXyqRAKvc5myQO7QnjPKvYQ5KAIHSYiReYzWur3vBssnDYbzgQ4Q4DpoPMyy9Z7dfUTrPpuLz84dEx9XJXyC8ymgcbjk0DRj5M44XymecsuO7wtMvc1AIJhJXqiirHUBnzwjeltC8ymghpgJbJCqMzesMGYKdncpkhpgJbJCqMzW7burRs1i8GuspEmgdg5GmZG3dKB6wUcBuncpiL0JhJXGroiZmc8N7K9Le(i8GuspEmgdg5GmZiWFwrkBMpcpiWDARu2m3KKsct2xUcPM44XymyKdYmJa)zfcGNzmpcpsyULa4zgZszZCtskjmzF5kKAIJhJXGroiZmAKYM5JWJa)zfPSzofkKMskfkb(ZkeapZy(4XymyKdYmdBwrkBMpcpiWDARu2m3KKAZkH4wsnXXJXyWihKzgmzplzAZ8r4r54XymyKdYmJePzyiNnKHpcpsijWJhJXGroiZmsKMHHC2qgozAZCVr4rcjbE8ymghpgJbJCqMzKsTrk1gQPvPIoOHX6l1gPuBKsTrk1gPuBKsTr6i8iH5w26E2CpGZwxLSjnXXJXyC8ymg0Qg2SIu2mFeo8OtZmS(59Hc32O0hQYmE8bVR(4XymoEmgdAvddopNOpnkzVOSrC11mGAApsyY(6zG61mGpgXvYH4PuNMHjLmTzUbQxZauNMHjLTUkzduFmbj8OtZmS(59XXJXymgJrI0mmKZgYWhHhgCEorFAuYErzJ4QRza10EKWK91Za1RzaFmIRKdXtPondtkzAZCduVMbOondtkBDvYgO(ymghpgJXymghpgJbVR(4XymoEmgJJhJXGw1GpchEqkbBA(qo1urjCAKpSJKoS(59XiWFUt2xs4JWdsJ8HDK0bVR(4XymOvn4JWHhKsWMMpKtnvucNsa(WgvPMoJ9HkJjashw)8(iWFUt2xs4JWdsztkISpseSXPeSP5dzsh8U6JhJXGw1GpchEqkbBA(qo1urjCkb4dBur6W6N3hb(ZDY(scFeEqkBsrK9rIGnoLGnnFit6G3vF8ymg0Qg8r4WdsjytZhYPMkkHtjq8HaiZoMA6m2hQmMaiDy9Z7Ja)5ozFjHpcpiLaXhcGm7iPdEx9XJXyqRAWhHdpiLGnnFiNAQOeoLaXhcGm7iPdRFEFe4p3j7lj8r4bPei(qaKzhjDW7QpEmgdAvd(iC4bPeSP5d5utfLWPeSP5JKKXMoshw)8(iWFUt2xs4JWdsjytZhjjJnDKo4D1hpgJXXJXyie0QgzLqTgmv0D1MKujFT(5D1kzsnXW6N3h8EGCt3YvyJQr4rlHvQo4D1hpgJHqqRAKvc1AWur3vBssL816N3vRKj1edRFEFW7bYnDlxHnQgHhTewP6G3vF8ymghpgJXXJXyC8ymghpgJbTQrwjuRbtfDxTjjLDqIwsnXqwzKvc1AWur3vBsszhKODKzyi1eJCx9iReILbtfDxTjd8NvKYM5Myy9Z7hpgJXymgcbjk0DRj5M44XymgJXqiirHUBnzwjeltC8ymgJXyieKOq3TMKudUbzWzhWoGDa7asnXXJXymgJHkzLrICFP2WOmtdFq3hKKPv8mzI0mmKZgYWnXqT8XJXymgJXymg0QgjsZWqoBidVwICFRxZMvKYM51htqcp60mdRFE)4XymgJXymgJXymujRmsK7llQnmkZ0WznO7dsY0kEMmrAggYzdz41sK7B9A2SIu2mVUjgQLpEmgJXymgJXymgJXymOvnsKMHHC2qgETe5(wVMnRiLnZRxlrUVSQpMGeE0Pzgw)8(XJXymgJXymgJXymgJXymg0QgzLqTgmv0D1MKu2bjAhzggsnXW6N3pEmgJXymgJXymgJXymgJXymgdEpGkAvQgHhjY9L1XJXymgJXymgJXymgJXymgCgp(XJXymgJXymgJXymgJXymgJXyW7burRs1i8qnTkv0bnmwFpEmgJXymgJXymgJXymgJXG3vF8ymgJXymgJXymgJXymgJbTQrI0mmKZgYWRLi3361SzfPSzE9A8Eav0QuvVwJu2mV(ycs4rNMzy9Z7hpgJXymgJXymgJXymgJXymgJXXJXymgJXymgJXymgJXymgJXyesMGYKdncpApEmgJXymgJXymgJXymgJXymgJiExnb7pBnf3ZlhIBsshKsTrG)CNSVKWP2Gucw2Sz5oPuBKvcrOjoEmgJXymgJXymgJXymgJXymgJiExnb7pBnf3ZlhIBssfcHqiecHqiecHqiecHqiecsP2iWFUt2xs4uBqkblB2SCNuQnYkHi0ehpgJXymgJXymgJXymgJXymgJreVRMG9NTMI75LdXnjPcHyqkfkMKroRo14EGCt3YvOIwLk2OQgVhqfTkv1nbfkKoecbPuBe4p3j7ljCQniLGLnBwUtk1gzLqeAIJhJXymgJXymgJXymgJXymgJXiI3vtW(ZwtX98YH4MKuHqiecHqiecHqiecHqiecHGuQnc8N7K9Leo1gKsWYMnl3jLAJSsicnXXJXymgJXymgJXymgJXymgJXyC8ymgJXymgJXymgJXymgJXymgQKvgKeULATLHA5JhJXymgJXymgJXymgJXymgJXymgdHGef6U1KKsIbBqkfkKyIJhJXymgJXymgJXymgJXymgJXymgdAvJa)5ozFjHpMGeEqkbBA(ijzSPJ0H1pVF8ymgJXymgJXymgJXymgJXymgJXymgJrizckto0i8O94XymgJXymgJXymgJXymgJXymgJXymgdg5GmZWYntcb7pBhHhjsZWqoBidVwICFRxZMvKYM51RX7burRsv9AnszZ861inrAgMuY0M5EKwVgj1pEmgJXymgJXymgJXymgJXymgJXymgJX44XymgJXymgJXymgJXymgJXymgJXymgdAvdMSNLmTz(ycs4HLBMec2F2oS(59JhJXymgJXymgJXymgJXymgJXymgJXymgJXGroiZmSCZKqW(ZwwJWdt6zvO7HOOswXC2AsstafwQnyjGcl1KsTHLBMec2F2sGsuHAJHLBMec2F2MaiQyctC8ymgJXymgJXymgJXymgJXymgJXymgJXymgr8UAc2F2AkUNxoe3KwUzsiy)zllQnc8N7K9LeUjoEmgJXymgJXymgJXymgJXymgJXymgJXG3vF8ymgJXymgJXymgJXymgJXymgJXymgJXXJXymgJXymgJXymgJXymgJXymgJXymgmzplzAZ8r4HLBMec2F2E8ymgJXymgJXymgJXymgJXymgJXymgJXXJXymgJXymgJXymgJXymgJXymgJbNXJF8ymgJXymgJXymgJXymgJXymgJXymgJrizckto0i8O94XymgJXymgJXymgJXymgJXymgJXymgdg5GmZWYntcb7pBhHhjsZWqoBidVwICFRxZMvKYM51RX7burRsv9AnszZ861inrAgMuY0M5EKwVgj1pEmgJXymgJXymgJXymgJXymgJXymgJX44XymgJXymgJXymgJXymgJXymgJXymgdAvdMSNLmTz(ycs4HLBMec2F2oS(59JhJXymgJXymgJXymgJXymgJXymgJXymgJXGroiZmSCZKqW(ZwwJWdt6zvO7HOOswXC2AsstafwQnyjGcl1KsTHLBMec2F2sGsuHAJHLBMec2F2MaiQyctC8ymgJXymgJXymgJXymgJXymgJXymgJXymgr8UAc2F2AkUNxoe3KwUzsiy)zllQnc8N7K9Leo1iLGLnBwUtk1gzLqeAIJhJXymgJXymgJXymgJXymgJXymgJXym4D1hpgJXymgJXymgJXymgJXymgJXymgJXyC8ymgJXymgJXymgJXymgJXymgJXymgJbt2ZsM2mFeEy5MjHG9NThpgJXymgJXymgJXymgJXymgJXymgJXyC8ymgJXymgJXymgJXymgJXymgJXyW7QpEmgJXymgJXymgJXymgJXymgJXymoEmgJXymgJXymgJXymgJXymgdEx9XJXymgJXymgJXymgJXymgJXyqRAKvc1AWur3vBsszhKODKzyi1edRFE)4XymgJXymgJXymgJXymgJXym4mE8JhJXymgJXymgJXymgJXymgJXymgddv45epEmgJXymgJXymgJXymgJXymgdEx9XJXymgJXymgJXymgJXymgJXyC8ymgJXymgJXymgJXymgJbVR(4XymgJXymgJXymgJXG3vF8ymgJXymgJXymg8U6JhJXymgJXym4D1hpgJXymg8U6JhJXymgdAvJqYeuMCOr4WJ2H1pVF8ymgJXymgJHc32O0hwLg(44XymgJXGZ4XpEmgJXymgJXqHBBu6dvzgp(XJXymgJXymghpgJXymg8U6JhJXymgJJhJXymgJJhJXG3vF8ymghZ7Q1rCJ4DRNoIGnnFiNAQOeonYh2rQrWMMpKtnvucNsa(WgvPMoJ9HkJjaQrWMMpKtnvucNsa(WgvuJGnnFiNAQOeoLaXhcGm7yQPZyFOYycGAeSP5d5utfLWPei(qaKzhPgbBA(qo1urjCkbBA(ijzSPthXnI3T6ic2F2omf3ZlhIRJS(scxhf04zLnRJcA8SYMtT(scxhXnI3T6i1nkzlTCxhvvh14XtnZ98YH46euB1r5alTrCYk0HcXvmLSAUws0w0r0DABAGSzsy4wUATuRokhyPL7EAY6i6oTvtwhf04zLnRJecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqCSqigrKq3Zmbk5GenG3WhJ4k5q8b1PzygKPnZhgCEoXCJsEied2ZE2tXVm7TYKOqZ9SucKnpecXXcHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqio(yHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecXXcXGDMDMDMDEqGJ8jHn2GnSzLqC7ip8YgXvpmu2ZBK7QhwFjHpiLDqIwsh0DR8qjtREe4pBP2GKSI13rG)SDiRmiq9Y(ogMEMEMEMEhlecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqio(yHyqazA1dQOvPIoOHX67GnQmG3qioMroRo14EGCt3YvOIwLk2OAeEKqsGhFmJCwDQX9a5MULRqfTkvSrvTs9r4bPsYDoPhZiNvNACpqUPB5kurRsfBuvRT(i8G0kcsyY(Yvi9yg5S6uJ7bYnDlxHkAvQyJQASQpcpiTIGeMSVCLHPXvKPdi9yg5S6uJ7bYnDlxHkAvQyJQAvRpcpiTTiiHj7lxzqazA1KEmJCwDQX9a5MULRqfTkvSrvnIRpcpiLvfbjmzF5kdcitRM0JzKZQtnUhi30TCfQOvPInQQvP(i8G02IGeMSVCLHPXvKPdgeqMwnPhZiNvNACpqUPB5kurRsfBuvJO6JWdszvrqct2xUYW04kY0bdcitRM0JzKZQtnUhi30TCfQOvPInQQLS(i8GucitREqqP7Q5kKEmJCwDQX9a5MULRqfTkvSrvncRpcpiLG9Nzy49q8HPKvZj9yg5S6uJ7bYnDlxHkAvQyJQAU6JWdsjUiiHj7lxzqazA1KEmJCwDQX9a5MULRqfTkvSrvT2s9r4bPTLHyijBhnEC1KEmJCwDQX9a5MULRqfTkvSrvT226JWdsnnUImDWikG3Zk0YKEmJCwDQX9a5MULRqfTkvSrvTww1hHhKgfW7zfAzspMroRo14EGCt3YvOIwLk2OQwB16JWdsBRoedjz7OXJRM0JzKZQtnUhi30TCfQOvPInQQ1sC9r4bPeugo7sBidFqazA1KEmJCwDQX9a5MULRqfTkvSrvT2k1hHhKAACfz6GbbLHZU0gYWheqMwnPhZiNvNACpqUPB5kurRsfBuvRLO6JWdsnLVw)0bdcitRM0JzKZQtnUhi30TCfQOvPInQQ1MS(i8GuthbLageqMwnPhZiNvNACpqUPB5kurRsfBuvRLW6JWdsnLmJL3heSScF0wS(h(070gXv8Yk(s6XmYz1Pg3dKB6wUcv0QuXgv1AD1hHhKwrqct2xUYWJeEaDMzWnI3TKEmJCwDQX9a5MULRqfTkvSrvnwL6JWdszvrqct2xUYWyJ4D7ikG3Zk0YKE8XhRJulNg04zLnRtqTvB1rnDRcDOqCfnzDuqJNv2SosiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecXXcHyercDpZeOKds0aEdFmIRKdXhuNMHzqM2mFyW55eZnk5Hqmyp7zpf)YS3ktIcn3Zsjq28qiehlecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecHqiecH44Jv10dS0YDtAIJhJXqHBBu6dRsd)4XymoM3vF8XhF8XARokOXZkBMmNDTeysuNTCDe3iE3QJ8ZPd53QLABP4CoxfclvjSAvDuVXmzf6qH4kEAPwTvlrKMSoI90QT(1serX5CocjIiIjSsfhr6i10EKWK9LmNDT6OeqGokqMrwrtwlrSwQOT6OSA10wA5EMj1QqhkexXttwB1rbnEwzZK5SRvhPQPhyPL7M0ehpgJXXJXyW(CAigzdZmPkCpUnnWppiXr4b7ZPHyKnmZKQW9420a)8GehSdhThpgJbTQb7ZPHyKnmZKQW9420a)8GehHdpAhw)8(iYMT0beiYK0qsAKFz2pmjPea3JBtjy)8GetnOoNutm4D1hpgJXX8U6Jp(4JpwhPM2JDstpWsBexhL7(QJu4HOL7K9LeUoYYzxRoYQqhkexrtwh14XtB60wDcQJcA8SYMt9tRMRJS0M5Q1rCJ4DRoIGL7QPT0YDpDK1xs46ipB224PJcA8SYMtT(scxhXnI3T6OgpEAMH9zF9SknCDcQJA6CJ4DRok3yL1wDuoWsBeNScDOqCftjRMRLeTfDeDN2MgiBMegULRwl1QJYbwA5UNMSoIUtB1K1rbnEwzZ6i2NtdXiByMjvH7XTPb(5bjocpkhFSqigeScpB5dQOZmYHgw5Hc3JBhw)8H6SnBy2JpecXXr2SLoGarMKgsOIoZihYRgPea3JBtjy)8GetnOoN06JWJeYXJXyy5SRDeEqk7OCZiRWhzdLBSdR8Ga4EC7iZWm8vUrz4LnIREKindZWsBM7rHcLrwHp8vUz41OWtOiPu74XymmSXAL7TJWdszh5EKsTJhJXWWgRvUZAeEqQKmPu74XymmOUpbbCsSJWdvn9alTC3KM44XymgJXiIe6EMjLa4ECBkb7NhKyQb15PeizpptAIJhJXG3vtTJhJXWsBMl3yhHhfQD8ymgS3pndNkEw9i8WQ0WP2XJXy4Nwn3G6g7fKjHpcpSknCQD8ymgKOWvXvu4QzRRMZUJWJQuBmoobE8Xr2SLoGarMKgsOIoZihYRgPea3JBtjy)8GetjZEzsRpcpsihpgJHLZU2r4bPK9t7ncY9USDyiF00vl35ugdtx2Zoc8N7bCkuOmYk8HVYndVgfEcfjLAhpgJHHnwRCVDeEqk7i3JuQD8ymgg2yTYDwJWdsLKjLAhpgJHb19jiGtIDeEOQPhyPL7M0ehpgJXymgrKq3ZmPea3JBtjy)8GetjZE5ucKSNNjnXXJXyW7QP2XJXyyPnZLBSJWJc1oEmgd27NMHtfpREeEyvA4u74Xym8tRMBqDJ9cYKWhHhwLgo1oEmgdsu4Q4kkC1S1vZz3r4rvQnghNap(4Jv10dS0Y9rej09mtkbW942uc2ppiXudQZtjqYEEM0ehpgJrKnBPdiqKjPHK0i)YSFyssjaUh3MsW(5bjMsM9YKAIJhJX4yEx9XhRQPhyPL7JisO7zMucG7XTPeSFEqIPKzVCkbs2ZZKM44Xym8SYk8uJ7bYnDlxHnQgHhjKe4XJXyyW55e9Prj7fLnIRUMbut7rct2xpduVMb8XiUsoepL60mmPKPnZnq9AgG60mmPS1vjBG6JWJonZXJXyyW55e9Prj7fLnIRUMbut7rct2xpduVMbiythBem1tnLXPKnOucG7XTPuNMHjLmTzUxAcACkb7dbymbLaB6mq9AgGroR2a1RrAJhpTZnIRqA9r4HvPHF8ymghpgJbbWzKZQjWSzstKqbhZ7Q1rQLtdA8SYM1jO2QT6ig5SAnzDKAAvQOdAyS(QjRJm3WyP1K1wTvh14Xt7CJ4k6euhPkhyPL7AY6iZnmwAnzTvB1rKyej2mdVB1K1rMByS0AYAR2QJuKz4AY6iZnmwAnzTvB1r2mdVB1K1rMByS0AYAR2QJuYbCnzDK5gglTMS2QTARoIwToIGnDSrWup1ugNs2GsjaUh3MsDAgMuY0M5EPjOXPeSpeGXeucSPth5NthYVvl12sX5CUkewQsy1Q6OEJzYk0HcXv80sTAR2QTAn
WeakAura Custom Code
c.0.actions.init.custom
----------------------------------------------------------------------- --- Spinalcrack's Average Kill Time Weakaura -- www.howtopriest.com --- ----------------------------------------------------------------------- -- number of seconds from end of fight you want to pop Surrender to Madness global_maxSTM_secs = 100 ---------------------------------------------- ---- DO NOT EDIT ANYTHING BELOW THIS LINE ---- ---------------------------------------------- aura_env.StartTime = nil global_wa_outputInfo = 0 global_wa_STM_GO = 0 -- Raid Difficulty ID's -- load_EncounterDiffID = {} load_EncounterDiffID[0] = "None" load_EncounterDiffID[1] = "5-player" load_EncounterDiffID[2] = "5-player Heroic" load_EncounterDiffID[3] = "10-player Raid" load_EncounterDiffID[4] = "25-player Raid" load_EncounterDiffID[5] = "10-player Heroic Raid" load_EncounterDiffID[6] = "25-player Heroic Raid" load_EncounterDiffID[7] = "Raid Finder" load_EncounterDiffID[8] = "Challenge Mode" load_EncounterDiffID[9] = "40-player Raid" load_EncounterDiffID[10] = "10 - Not used" load_EncounterDiffID[11] = "Heroic Scenario" load_EncounterDiffID[12] = "Scenario" load_EncounterDiffID[13] = "13 - Not used" load_EncounterDiffID[14] = "Flexible Raid" load_EncounterDiffID[15] = "Heroic Flexible Raid" load_EncounterDiffID[16] = "Mythic Raid" load_EncounterDiffID[17] = "LFR Raid" load_EncounterDiffID[18] = "Molten Core 10th Anniversary" load_EncounterDiffID[19] = "5-player special event" load_EncounterDiffID[20] = "25-player Event Scenario"
c.0.actions.start.custom
aura_env.StartTime = GetTime()
c.0.actions.finish.custom
aura_env.StartTime = nil
c.0.trigger.custom
----------------------------------------------------------------------- --- Spinalcrack's Average Kill Time Weakaura -- www.howtopriest.com --- ----------------------------------------------------------------------- function(e, ...) --print(encounterID) if e == "ENCOUNTER_START" then local encounterID = select(1, ...) local encounterNAME = select(2, ...) local difficultyID = select(3, ...) local raidSize = select(4, ...) local charName = UnitName("player") local charRealm = GetRealmName("player") local uName = charName.."_"..charRealm ---------------------------------------------- -- check each key and if missing initialize -- ---------------------------------------------- -- saved, but no active table -- if WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] ~= nil and store_EncounterID == nil then -- load the saved table -- store_EncounterID = {} store_EncounterID = WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] -- Never done the encounter -- if store_EncounterID[encounterID] == nil then global_AverageKT = 00.00 -- Done the encounter but not on this difficulty -- elseif store_EncounterID[encounterID][encounterNAME][difficultyID] == nil then global_AverageKT = 00.00 -- Done the encounter on this difficulty but not on this toon -- elseif store_EncounterID[encounterID][encounterNAME][difficultyID][uName] == nil then global_AverageKT = 00.00 -- Done the encounter, on this difficulty on this toon -- load the values -- else if store_EncounterID[encounterID][encounterNAME][difficultyID][uName]['average_KT'] == nil then global_AverageKT = 00.00 else global_AverageKT = store_EncounterID[encounterID][encounterNAME][difficultyID][uName]['average_KT'] end end -- none saved, but an active table -- elseif WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] == nil and store_EncounterID ~= nil then -- Never done the encounter -- if store_EncounterID[encounterID] == nil then global_AverageKT = 00.00 -- Done the encounter but not on this difficulty -- elseif store_Encounter[encounterID][encounterNAME][difficultyID] == nil then global_AverageKT = 00.00 -- Done the encounter on this difficulty but not on this toon -- elseif store_Encounter[encounterID][encounterNAME][difficultyID][uName] == nil then global_AverageKT = 00.00 -- Done the encounter, on this difficulty on this toon -- load the values -- else if store_EncounterID[encounterID][encounterNAME][difficultyID][uName]['average_KT'] == nil then global_AverageKT = 00.00 else global_AverageKT = store_EncounterID[encounterID][encounterNAME][difficultyID][uName]['average_KT'] end end -- saved, and active table -- elseif WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] ~= nil and store_EncounterID ~= nil then -- Never done the encounter -- if store_EncounterID[encounterID] == nil and WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'][encounterID] == nil then global_AverageKT = 00.00 -- Encounter active in current table, but does not have a save -- elseif store_EncounterID[encounterID] ~= nil and WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'][encounterID] == nil then -- if active table has entry for this difficulty -- if store_EncounterID[encounterID][encounterNAME][difficultyID] ~= nil then -- if active table has entry for this difficulty on this toon -- if store_EncounterID[encounterID][encounterNAME][difficultyID][uName] ~= nil then if store_EncounterID[encounterID][encounterNAME][difficultyID][uName]['average_KT'] == nil then global_AverageKT = 00.00 else global_AverageKT = store_EncounterID[encounterID][encounterNAME][difficultyID][uName]['average_KT'] end else global_AverageKT = 00.00 end else global_AverageKT = 00.00 end -- Encounter not active in current table, but does have a save -- elseif store_EncounterID[encounterID] == nil and WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'][encounterID] ~= nil then -- load the save into the active table -- store_EncounterID[encounterID] = WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'][encounterID] -- if active table has entry for this difficulty -- if store_EncounterID[encounterID][encounterNAME][difficultyID] ~= nil then -- if active table has entry for this difficulty on this toon -- if store_EncounterID[encounterID][encounterNAME][difficultyID][uName] ~= nil then if store_EncounterID[encounterID][encounterNAME][difficultyID][uName]['average_KT'] == nil then global_AverageKT = 00.00 else global_AverageKT = store_EncounterID[encounterID][encounterNAME][difficultyID][uName]['average_KT'] end else global_AverageKT = 00.00 end else global_AverageKT = 00.00 end -- Done the encounter, on this difficulty on this toon -- load the values -- else if store_EncounterID ~= nil then if store_EncounterID[encounterID] ~= nil then if store_EncounterID[encounterID][encounterNAME] ~= nil then if store_EncounterID[encounterID][encounterNAME][difficultyID] ~= nil then if store_EncounterID[encounterID][encounterNAME][difficultyID][uName] ~= nil then if store_EncounterID[encounterID][encounterNAME][difficultyID][uName]['average_KT'] == nil then global_AverageKT = 00.00 else global_AverageKT = store_EncounterID[encounterID][encounterNAME][difficultyID][uName]['average_KT'] end else global_AverageKT = 00.00 end else global_AverageKT = 00.00 end else global_AverageKT = 00.00 end else global_AverageKT = 00.00 end else global_AverageKT = 00.00 end end -- none saved but there is an active table elseif WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] == nil and store_EncounterID ~= nil then if store_EncounterID ~= nil then if store_EncounterID[encounterID] ~= nil then if store_EncounterID[encounterID][encounterNAME] ~= nil then if store_EncounterID[encounterID][encounterNAME][difficultyID] ~= nil then if store_EncounterID[encounterID][encounterNAME][difficultyID][uName] ~= nil then if store_EncounterID[encounterID][encounterNAME][difficultyID][uName]['average_KT'] == nil then global_AverageKT = 00.00 else global_AverageKT = store_EncounterID[encounterID][encounterNAME][difficultyID][uName]['average_KT'] end else global_AverageKT = 00.00 end else global_AverageKT = 00.00 end else global_AverageKT = 00.00 end else global_AverageKT = 00.00 end else global_AverageKT = 00.00 end end --print("EncounterID: "..encounterID.."\nEncounterName: "..encounterNAME.."\nDifficultyID: "..difficultyID.."\nRaidSize: "..raidSize) print(encounterNAME.." has started...") return true elseif e == "ENCOUNTER_END" then return false end end
c.0.untrigger.custom
----------------------------------------------------------------------- --- Spinalcrack's Average Kill Time Weakaura -- www.howtopriest.com --- ----------------------------------------------------------------------- function(e, ...) local encounterID = select(1, ...) local encounterNAME = select(2, ...) local difficultyID = select(3, ...) local raidSize = select(4, ...) local endStatus = select(5, ...) local charName = UnitName("player") local charRealm = GetRealmName("player") local uName = charName.."_"..charRealm local wipeORwin = 1000 --initializing local tempTableFill = 0 if endStatus == 0 then wipeORwin = "Wipe" elseif endStatus == 1 then wipeORwin = "Success" end -- Enable and load all the encounter IDs in intit if you want to output ie Heroic 25 --for i=0,15 do -- if difficultyID == i then -- difficultyID = load_EncounterDiffID[i] -- end --end if e == "ENCOUNTER_START" then return false elseif e == "ENCOUNTER_END" then if select(5, ...) == 0 then print(select(2, ...).." has ended...") return true else -- none saved, and no active table -- if WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] == nil and store_EncounterID == nil then store_EncounterID = {} -- create an active table -- Saved table, but no active table -- elseif WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] ~= nil and store_EncounterID == nil then store_EncounterID = {} -- create an active table and load the whole saved table into the active table -- store_EncounterID = WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] -- No saved table, but active table -- elseif WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] == nil and store_EncounterID ~= nil then ----** Nothing to do here, but wanted this logic in place to keep everything straight **---- -- Saved table and active table -- elseif WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] ~= nil and store_EncounterID ~= nil then -- merge the tables -- for k,v in ipairs(WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info']) do table.insert(store_EncounterID, v) end end -- Check the active table, key by key and create new rows if nil -- if store_EncounterID[encounterID] ~= nil then if store_EncounterID[encounterID][encounterNAME] ~= nil then if store_EncounterID[encounterID][encounterNAME][difficultyID] ~= nil then if store_EncounterID[encounterID][encounterNAME][difficultyID][uName] ~= nil then -- Data already active -- this is a repeat kill -- else store_EncounterID[encounterID][encounterNAME][difficultyID][uName] = {} store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"] = {} store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["average_KT"] = {} end else store_EncounterID[encounterID][encounterNAME][difficultyID] = {} store_EncounterID[encounterID][encounterNAME][difficultyID][uName] = {} store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"] = {} store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["average_KT"] = {} end else store_EncounterID[encounterID][encounterNAME] = {} store_EncounterID[encounterID][encounterNAME][difficultyID] = {} store_EncounterID[encounterID][encounterNAME][difficultyID][uName] = {} store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"] = {} store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["average_KT"] = {} end else store_EncounterID[encounterID] = {} store_EncounterID[encounterID][encounterNAME] = {} store_EncounterID[encounterID][encounterNAME][difficultyID] = {} store_EncounterID[encounterID][encounterNAME][difficultyID][uName] = {} store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"] = {} store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["average_KT"] = {} end -- Sort the newly formed table kill times -- table.sort(store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"]) -- if there are kill times, check for duplicates and if found leave one entry and fill the rest with current time for p=1,10 do if store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"][p] ~= nil then if p >=2 then local tempP = (p-1) if store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"][p] == store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"][tempP]then for q=p,10 do store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"][q] = wa_gct_noFormat end tempTableFill = 1 p=10 end end end end -- if there are no kill times fill the table with this kill time -- if there are kill times, add this kill time, sort the table, remove the longest kill time -- then average the 10 kill times and assign to the global for i=1,10 do if store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"][i] ~= nil then if tempTableFill == 0 then store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"][11] = wa_gct_noFormat end table.sort(store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"]) store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"][11] = nil local tempAvg = 0 for j=1,10 do tempAvg = tempAvg + store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"][j] if j == 10 then global_AverageKT = (tempAvg/10) end end if tempTableFill == 0 then break end else store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["kill_Times"][i] = wa_gct_noFormat global_AverageKT = wa_gct_noFormat end end -- store average kill time in the table store_EncounterID[encounterID][encounterNAME][difficultyID][uName]["average_KT"] = global_AverageKT -- Save the kill time table to weakauras variable WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] = store_EncounterID print(encounterNAME.." has ended...") print("Time spent fighting "..encounterNAME..": "..wa_global_combatTime) print("New Average Kill Time: "..(string.format("%02d:%02d", global_AverageKT/60, global_AverageKT%60))) if endStatus == 0 then print("RESET") end global_wa_STM_GO = 0 -- shut down STM glow warning return true end end end
c.0.customText
----------------------------------------------------------------------- --- Spinalcrack's Average Kill Time Weakaura -- www.howtopriest.com --- ----------------------------------------------------------------------- function() local colour = "|cffdd1600" if aura_env.StartTime and global_AverageKT ~= nil then -- print(global_encounterNAME) local combatTime = GetTime() - aura_env.StartTime --print(combatTime) wa_gct_noFormat = combatTime --print(global_AverageKT) wa_global_combatTime = string.format("%02d:%02d", combatTime/60, combatTime%60) global_AvgKT = string.format("%02d:%02d", global_AverageKT/60, global_AverageKT%60) if global_AverageKT == 00.00 then global_AvgKT = " ----.---- " end --local checkName = UnitName("target") --if load_EncounterID[checkName] == 1101 then print("works") end local outputInfo = "Avg KT: "..global_AvgKT.."\nCombat: "..wa_global_combatTime if global_AverageKT ~= 00.00 then if global_AverageKT - combatTime >= (global_maxSTM_secs + 10) then colour = "|cffdd1600" -- red (default: greater than 160 seconds remain) global_wa_outputInfo = 0 end if global_AverageKT - combatTime < (global_maxSTM_secs + 10) then colour = "|cffffc425" global_wa_outputInfo = 1 end -- yellow (default: less than 160 seconds remain) if global_AverageKT - combatTime <= (global_maxSTM_secs - 5) then colour = "|cff0eae21" global_wa_outputInfo = 1 end -- green (default: less than 145 seconds remain) return colour..outputInfo else return outputInfo end else global_AverageKT = 00.00 return " ----.---- " end end
c.1.actions.init.custom
--------------------------------------------------------------------- -- Set the npcID of the boss you want to offset the health -- -- to time to and make equal to new health percentage -- -- You can get the npcID from the url of the npc on wowhead.com -- -- ie. http://www.wowhead.com/npc=104215/patrol-captain-gerdo -- --------------------------------------------------------------------- BossExceptionTable = {} BossExceptionTable["114263"] = 10 -- Odyn Raid Boss BossExceptionTable["114361"] = 25 -- Hymdall Raid Boss BossExceptionTable["114360"] = 25 -- Hyrja Raid Boss ----------------------------------------------------------- FiveManExceptionTable = {} FiveManExceptionTable["95676"] = 80 -- Odyn 5 Man FiveManExceptionTable["94960"] = 10 -- Hymdall 5 Man FiveManExceptionTable["96759"] = 70 -- Helya 5 Man FiveManExceptionTable["104215"] = 25 -- Patrol Captain Gerdo *** Only use this if you have an alchemist
c.1.customText
----------------------------------------------------------------------- --- Spinalcrack's Average Kill Time Weakaura -- www.howtopriest.com --- ----------------------------------------------------------------------- function() if UnitIsDead("target") then return "" end --local tarName = UnitName("target") local bossOffsetFactor = 1 --local npcId = tonumber((UnitGUID("target")):sub(-12, -9), 16) local guid = UnitGUID("target") local _, _, _, _, _, npcId, _ = strsplit("-",guid) local _, _, difficulty, _, _, _, _, _, _ = GetInstanceInfo() if difficulty == 1 or difficulty == 2 or difficulty == 23 then -- 5 man version of same boss if FiveManExceptionTable[npcId] then bossOffsetFactor = (FiveManExceptionTable[npcId] / 100) + bossOffsetFactor end else if BossExceptionTable[npcId] then bossOffsetFactor = (BossExceptionTable[npcId] / 100) + bossOffsetFactor end end local colour = "|cffffffff" local health = UnitHealth("target") local maxHealth = UnitHealthMax("target") local time = GetTime() local text local oldhealth local bossOffset = (maxHealth * bossOffsetFactor) - maxHealth if oldhealth ~= health then oldhealth = health if health == maxHealth then -- THiS BLOCK IS GOOD wa_Spinal_health0, wa_Spinal_time0, wa_Spinal_mhealth, wa_Spinal_mtime = nil text = " - - " return colour..text end health = health - bossOffset if not wa_Spinal_health0 then -- GOOD wa_Spinal_health0, wa_Spinal_time0 = health, time wa_Spinal_mhealth, wa_Spinal_mtime = health, time return end wa_Spinal_mhealth = (wa_Spinal_mhealth + health) * .5 wa_Spinal_mtime = (wa_Spinal_mtime + time) * .5 if wa_Spinal_mhealth >= wa_Spinal_health0 then text = " - - " wa_Spinal_health0, wa_Spinal_time0, wa_Spinal_mhealth, wa_Spinal_mtime =nil else time = health * (wa_Spinal_time0 - wa_Spinal_mtime) / (wa_Spinal_mhealth - wa_Spinal_health0) if time < 0 then time = 0 colour = "|cffdd1600" text = format("%0.2d",time) elseif (time <= 60) then text = format("%0.2d",time) elseif (time > 60) then text = format("%d:%0.2d",time / 60, time % 60) end return colour..text end end end
c.2.actions.init.custom
-- Do not remove this comment, it is part of this trigger: Average_Kill_Time_Output
c.2.customText
----------------------------------------------------------------------- --- Spinalcrack's Average Kill Time Weakaura -- www.howtopriest.com --- ----------------------------------------------------------------------- function() if UnitIsDead("boss1") then return "" end -- local boss_tarName = UnitName("boss1") local bossOffsetFactor = 1 --local npcId = tonumber((UnitGUID("boss1")):sub(-12, -9), 16) local guid = UnitGUID("boss1") local _, _, _, _, _, npcId, _ = strsplit("-",guid) local _, _, difficulty, _, _, _, _, _, _ = GetInstanceInfo() if difficulty == 1 or difficulty == 2 or difficulty == 23 then -- 5 man version of same boss if FiveManExceptionTable[npcId] then bossOffsetFactor = (FiveManExceptionTable[npcId] / 100) + bossOffsetFactor end else if BossExceptionTable[npcId] then bossOffsetFactor = (BossExceptionTable[npcId] / 100) + bossOffsetFactor end end local colour = "|cffffffff" local boss_health = UnitHealth("boss1") local boss_maxHealth = UnitHealthMax("boss1") local boss_time = GetTime() local boss_text local boss_oldhealth local boss_TTD = "Boss TTD: " local bossOffset = (boss_maxHealth * bossOffsetFactor) - boss_maxHealth if boss_oldhealth ~= boss_health then boss_oldhealth = boss_health if boss_health == boss_maxHealth then -- THiS BLOCK IS GOOD wa_Spinal_boss_health0, wa_Spinal_boss_time0, wa_Spinal_boss_mhealth, wa_Spinal_boss_mtime = nil boss_text = " - - " return colour..boss_TTD..boss_text end boss_health = boss_health - bossOffset if not wa_Spinal_boss_health0 then -- GOOD wa_Spinal_boss_health0, wa_Spinal_boss_time0 = boss_health, boss_time wa_Spinal_boss_mhealth, wa_Spinal_boss_mtime = boss_health, boss_time return end wa_Spinal_boss_mhealth = (wa_Spinal_boss_mhealth + boss_health) * .5 wa_Spinal_boss_mtime = (wa_Spinal_boss_mtime + boss_time) * .5 if wa_Spinal_boss_mhealth >= wa_Spinal_boss_health0 then boss_text = " - - " wa_Spinal_boss_health0, wa_Spinal_boss_time0, wa_Spinal_boss_mhealth, wa_Spinal_boss_mtime = nil else boss_time = boss_health * (wa_Spinal_boss_time0 - wa_Spinal_boss_mtime) / (wa_Spinal_boss_mhealth - wa_Spinal_boss_health0) if boss_time < 0 then boss_time = 0 colour = "|cffdd1600" boss_text = format("%0.2d",boss_time) elseif (boss_time <= 60) then boss_text = format("%0.2d",boss_time) elseif (boss_time > 60) then boss_text = format("%d:%0.2d",boss_time / 60, boss_time % 60) end if global_wa_outputInfo == 1 and boss_time == global_maxSTM_secs then global_wa_STM_GO = 1 else global_wa_STM_GO = 0 end return colour..boss_TTD..boss_text end end end
c.3.additional_triggers.0.trigger.custom
function(e, ...) if e == "UNIT_HEALTH" then if global_wa_STM_GO == 1 and select(1, ...) == "boss1" then return true end end end
c.3.additional_triggers.0.untrigger.custom
function() if global_wa_STM_GO == 0 then return true end end
c.4.actions.init.custom
----------------------------------------------------------------------- --- Spinalcrack's Average Kill Time Weakaura -- www.howtopriest.com --- ----------------------------------------------------------------------- ------------------------------------------------------------------------------------------- -- >>>> USAGE: target a saved boss and type "!kt" into raid chat, party chat or /say <<<< ------------------------------------------------------------------------------------------- -- Raid Difficulty ID's -- load_EncounterDiffID = {} load_EncounterDiffID[0] = "None" load_EncounterDiffID[1] = "5-player" load_EncounterDiffID[2] = "5-player Heroic" load_EncounterDiffID[3] = "10-player Raid" load_EncounterDiffID[4] = "25-player Raid" load_EncounterDiffID[5] = "10-player Heroic Raid" load_EncounterDiffID[6] = "25-player Heroic Raid" load_EncounterDiffID[7] = "Raid Finder" load_EncounterDiffID[8] = "Challenge Mode" load_EncounterDiffID[9] = "40-player Raid" load_EncounterDiffID[10] = "10 - Not used" load_EncounterDiffID[11] = "Heroic Scenario" load_EncounterDiffID[12] = "Scenario" load_EncounterDiffID[13] = "13 - Not used" load_EncounterDiffID[14] = "Flexible Raid" load_EncounterDiffID[15] = "Heroic Flexible Raid" load_EncounterDiffID[16] = "Mythic Raid" load_EncounterDiffID[17] = "LFR Raid" load_EncounterDiffID[18] = "Molten Core 10th Anniversary" load_EncounterDiffID[19] = "5-player special event" load_EncounterDiffID[20] = "25-player Event Scenario"
c.4.trigger.custom
----------------------------------------------------------------------- --- Spinalcrack's Average Kill Time Weakaura -- www.howtopriest.com --- ----------------------------------------------------------------------- ------------------------------------------------------------------------------------------- -- >>>> USAGE: target a saved boss and type "!kt" into raid chat, party chat or /say <<<< ------------------------------------------------------------------------------------------- -- e = chat event name -- arg1 = chat message -- arg2 = message author -- arg8 = channel number -- arg9 = channel name --[[ Reference list of trigger channels CHAT_MSG_SAY CHAT_MSG_RAID_LEADER CHAT_MSG_RAID CHAT_MSG_PARTY_LEADER CHAT_MSG_PARTY CHAT_MSG_CHANNEL ]] function(e,arg1,arg2,_,_,_,_,_,arg8,arg9, ...) if arg9:find("Trade") or arg9:find("LocalDefense") then return false end --print(e) --print(arg1) --print(arg2) local goFlag = 0 local encDiff = "" local encounterID = "" local chanType = "" local charName = UnitName("player") local charRealm = GetRealmName("player") local uName = charName.."_"..charRealm local tarName = UnitName("target") local lastTime = 0 local killTable = {} local killTableTimes = {} local _, _, difficulty, _, _, _, _, _, _ = GetInstanceInfo() if tarName == nil then return false end if WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] ~= nil then killTable = WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] end if e == "CHAT_MSG_SAY" then chanType = "SAY" end if e == "CHAT_MSG_RAID_LEADER" then chanType = "INSTANCE_CHAT" end if e == "CHAT_MSG_RAID" then chanType = "INSTANCE_CHAT" end if e == "CHAT_MSG_PARTY_LEADER" then chanType = "PARTY" end if e == "CHAT_MSG_PARTY" then chanType = "PARTY" end if e == "CHAT_MSG_CHANNEL" then chanType = "CHANNEL" end --if arg1:find("Nythendra") then encounterID = 1853 end --if arg1:find("Nythendra") then encounterID = 1853 end if arg1:find("!kt") or arg1:find("!kt all") and arg2:find(charName) then --print(e) --print(arg2) --print("WOW!!!!") for key, value in pairs(killTable) do if killTable[key][tarName] ~= nil then for key2, value2 in pairs(killTable[key][tarName]) do if killTable[key][tarName][key2] ~= nil then if arg1:find("!kt all") then encDiff = key2 else encDiff = difficulty end if killTable[key][tarName][encDiff][uName] ~= nil then goFlag = 1 SendChatMessage(" ", chanType, "Common", arg8) SendChatMessage("--------------------------", chanType, "Common", arg8) SendChatMessage("--- "..(load_EncounterDiffID[encDiff]).." ---", chanType, "Common", arg8) SendChatMessage("--------------------------", chanType, "Common", arg8) for p=1,10 do --print("p: "..p) if chanType ~= "CHANNEL" then goFlag = 1 local tempChat = killTable[key][tarName][encDiff][uName]["kill_Times"][p] if lastTime ~= tempChat then local tempChat2 = (string.format("%02d:%02d", tempChat/60, tempChat%60)) SendChatMessage(tempChat2, chanType) end lastTime = tempChat else goFlag = 1 local tempChat = killTable[key][tarName][encDiff][uName]["kill_Times"][p] if lastTime ~= tempChat then local tempChat2 = (string.format("%02d:%02d", tempChat/60, tempChat%60)) SendChatMessage(tempChat2, chanType,"Common", arg8) end lastTime = tempChat end end if arg1:find("!kt all") then else break end end end end end end if goFlag == 1 then return true else return false end end end
c.4.untrigger.custom
----------------------------------------------------------------------- --- Spinalcrack's Average Kill Time Weakaura -- www.howtopriest.com --- ----------------------------------------------------------------------- function() return true end
c.4.customText
------------------------------------------------------------------------------------------- -- >>>> USAGE: target a saved boss and type "!kt" into raid chat, party chat or /say <<<< ------------------------------------------------------------------------------------------- function() end
c.5.actions.init.custom
wa_global_reset_check = 0 --- Create Dialog to reset the database --- StaticPopupDialogs["Reset_Check_One"] = { text = "You are about to Reset all your saved kill times... are you sure?", button1 = "Yes", button2 = "No", OnAccept = function() Spinal_Reset_Check_One_Pass() end, timeout = 0, whileDead = true, hideOnEscape = true, preferredIndex = 3, } StaticPopupDialogs["Reset_Check_Two"] = { text = "This cannot be undone. Last chance... are you sure?", button1 = "Yes", button2 = "No", OnAccept = function() Spinal_Reset_Check_Two_Pass() end, timeout = 0, whileDead = true, hideOnEscape = true, preferredIndex = 3, } function Spinal_Reset_Check_One_Pass() StaticPopup_Show ("Reset_Check_Two") end function Spinal_Reset_Check_Two_Pass() store_EncounterID = {} WeakAurasSaved['displays']['Average_Kill_Time']['Kill_Info'] = nil WeakAurasSaved['displays']['CLICK_ME_TO_Reset_Kill_Times_BE_CAREFUL']['load']["use_never"] = true ReloadUI(); end
c.5.customText
function() wa_global_reset_check = wa_global_reset_check + 1 if wa_global_reset_check == 1 then StaticPopup_Show ("Reset_Check_One") end end
Current version: 1.0.2
Version | WoW Addon | Updated |
---|