fastlane 2.40.0.beta.20170622010014 → 2.40.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (45) hide show
  1. checksums.yaml +4 -4
  2. data/cert/README.md +3 -1
  3. data/deliver/README.md +5 -1
  4. data/deliver/lib/deliver/options.rb +16 -0
  5. data/deliver/lib/deliver/runner.rb +36 -2
  6. data/fastlane/README.md +3 -1
  7. data/fastlane/lib/fastlane/actions/precheck.rb +52 -0
  8. data/fastlane/lib/fastlane/tools.rb +2 -1
  9. data/fastlane/lib/fastlane/version.rb +1 -1
  10. data/fastlane_core/README.md +2 -1
  11. data/frameit/README.md +3 -1
  12. data/gym/README.md +3 -1
  13. data/match/README.md +3 -1
  14. data/pem/README.md +3 -1
  15. data/pilot/README.md +3 -1
  16. data/precheck/README.md +174 -0
  17. data/precheck/lib/assets/PrecheckfileTemplate +28 -0
  18. data/precheck/lib/precheck.rb +22 -0
  19. data/precheck/lib/precheck/commands_generator.rb +56 -0
  20. data/precheck/lib/precheck/item_to_check.rb +58 -0
  21. data/precheck/lib/precheck/options.rb +63 -0
  22. data/precheck/lib/precheck/rule.rb +169 -0
  23. data/precheck/lib/precheck/rule_check_result.rb +19 -0
  24. data/precheck/lib/precheck/rule_processor.rb +199 -0
  25. data/precheck/lib/precheck/rules/abstract_text_match_rule.rb +64 -0
  26. data/precheck/lib/precheck/rules/copyright_date_rule.rb +38 -0
  27. data/precheck/lib/precheck/rules/curse_words_rule.rb +57 -0
  28. data/precheck/lib/precheck/rules/custom_text_rule.rb +36 -0
  29. data/precheck/lib/precheck/rules/future_functionality_rule.rb +34 -0
  30. data/precheck/lib/precheck/rules/negative_apple_sentiment_rule.rb +38 -0
  31. data/precheck/lib/precheck/rules/other_platforms_rule.rb +38 -0
  32. data/precheck/lib/precheck/rules/placeholder_words_rule.rb +33 -0
  33. data/precheck/lib/precheck/rules/rules_data/curse_word_hashes/en_us.txt +349 -0
  34. data/precheck/lib/precheck/rules/test_words_rule.rb +31 -0
  35. data/precheck/lib/precheck/rules/unreachable_urls_rule.rb +42 -0
  36. data/precheck/lib/precheck/runner.rb +164 -0
  37. data/produce/README.md +3 -1
  38. data/scan/README.md +3 -1
  39. data/screengrab/README.md +2 -1
  40. data/sigh/README.md +3 -1
  41. data/snapshot/README.md +3 -1
  42. data/spaceship/README.md +2 -1
  43. data/spaceship/lib/spaceship/tunes/language_item.rb +5 -1
  44. data/supply/README.md +3 -1
  45. metadata +38 -14
@@ -0,0 +1,64 @@
1
+ require 'precheck/rule'
2
+
3
+ module Precheck
4
+ # abstract class that defines a default way to check for the presence of a list of words within a block of text
5
+ class AbstractTextMatchRule < TextRule
6
+ WORD_SEARCH_TYPES = {
7
+ fail_on_inclusion: "fail_on_inclusion",
8
+ fail_on_exclusion: "fail_on_exclusion"
9
+ }
10
+
11
+ attr_accessor :lowercased_words_to_look_for
12
+
13
+ def lowercased_words_to_look_for
14
+ not_implemented(__method__)
15
+ end
16
+
17
+ def pass_if_empty?
18
+ return true
19
+ end
20
+
21
+ def word_search_type
22
+ WORD_SEARCH_TYPES[:fail_on_inclusion]
23
+ end
24
+
25
+ # rule block that checks text for any instance of each string in lowercased_words_to_look_for
26
+ def rule_block
27
+ return lambda { |text|
28
+ text = text.to_s.strip.downcase
29
+ if text.empty?
30
+ if pass_if_empty?
31
+ return RuleReturn.new(validation_state: Precheck::VALIDATION_STATES[:passed])
32
+ else
33
+ return RuleReturn.new(validation_state: VALIDATION_STATES[:failed], failure_data: "missing text")
34
+ end
35
+ end
36
+
37
+ matches = lowercased_words_to_look_for.each_with_object([]) do |word, found_words|
38
+ if text.include?(word)
39
+ found_words << word
40
+ end
41
+ end
42
+
43
+ if matches.length > 0 && word_search_type == WORD_SEARCH_TYPES[:fail_on_inclusion]
44
+ # we are supposed to fail if any of the words are found
45
+ friendly_matches = matches.join(', ')
46
+ UI.verbose "😭 #{self.class.name.split('::').last ||= self.class.name} found words \"#{friendly_matches}\""
47
+
48
+ return RuleReturn.new(validation_state: VALIDATION_STATES[:failed], failure_data: "found: #{friendly_matches}")
49
+ elsif matches.length < lowercased_words_to_look_for.length && word_search_type == WORD_SEARCH_TYPES[:fail_on_exclusion]
50
+ # we are supposed to fail if any of the words are not found (like current copyright date in the copyright field)
51
+ search_data_set = lowercased_words_to_look_for.to_set
52
+ search_data_set.subtract(matches)
53
+
54
+ missing_words = search_data_set.to_a.join(', ')
55
+ UI.verbose "😭 #{self.class.name.split('::').last ||= self.class.name} didn't find words \"#{missing_words}\""
56
+
57
+ return RuleReturn.new(validation_state: VALIDATION_STATES[:failed], failure_data: "missing: #{missing_words}")
58
+ else
59
+ return RuleReturn.new(validation_state: VALIDATION_STATES[:passed])
60
+ end
61
+ }
62
+ end
63
+ end
64
+ end
@@ -0,0 +1,38 @@
1
+ require 'precheck/rule'
2
+ require 'precheck/rules/abstract_text_match_rule'
3
+
4
+ module Precheck
5
+ class CopyrightDateRule < AbstractTextMatchRule
6
+ def self.key
7
+ :copyright_date
8
+ end
9
+
10
+ def self.env_name
11
+ "RULE_COPYRIGHT_DATE"
12
+ end
13
+
14
+ def self.friendly_name
15
+ "No incorrect, or missing copyright date"
16
+ end
17
+
18
+ def self.description
19
+ "using a copyright date that is any different from this current year, or missing a date"
20
+ end
21
+
22
+ def pass_if_empty?
23
+ return false
24
+ end
25
+
26
+ def supported_fields_symbol_set
27
+ [:copyright].to_set
28
+ end
29
+
30
+ def word_search_type
31
+ WORD_SEARCH_TYPES[:fail_on_exclusion]
32
+ end
33
+
34
+ def lowercased_words_to_look_for
35
+ [DateTime.now.year.to_s]
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,57 @@
1
+ require 'digest'
2
+ require 'precheck/rule'
3
+
4
+ module Precheck
5
+ class CurseWordsRule < TextRule
6
+ def self.key
7
+ :curse_words
8
+ end
9
+
10
+ def self.env_name
11
+ "RULE_CURSE_WORDS"
12
+ end
13
+
14
+ def self.friendly_name
15
+ "No curse words"
16
+ end
17
+
18
+ def self.description
19
+ "including words that might be considered objectionable"
20
+ end
21
+
22
+ def rule_block
23
+ return lambda { |text|
24
+ return RuleReturn.new(validation_state: Precheck::VALIDATION_STATES[:passed]) if text.to_s.strip.empty?
25
+
26
+ all_metadata_words_list = text.to_s.downcase.split
27
+ metadata_word_hashes = all_metadata_words_list.map { |word| Digest::SHA256.hexdigest(word) }
28
+ curse_hashes_set = hashed_curse_word_set
29
+
30
+ found_words = []
31
+ metadata_word_hashes.each_with_index do |word, index|
32
+ if curse_hashes_set.include?(word)
33
+ found_words << all_metadata_words_list[index]
34
+ end
35
+ end
36
+
37
+ if found_words.length > 0
38
+ friendly_found_words = found_words.join(', ')
39
+ UI.verbose "#{self.class.name.split('::').last ||= self.class.name} found potential curse words 😬"
40
+ UI.verbose "Keep in mind, these words might be ok given the context they are used in"
41
+ UI.verbose "Matched: \"#{friendly_found_words}\""
42
+ return RuleReturn.new(validation_state: VALIDATION_STATES[:failed], failure_data: "found: #{friendly_found_words}")
43
+ else
44
+ return RuleReturn.new(validation_state: VALIDATION_STATES[:passed])
45
+ end
46
+ }
47
+ end
48
+
49
+ def hashed_curse_word_set
50
+ curse_hashes = []
51
+ File.open(File.dirname(__FILE__) + '/rules_data/curse_word_hashes/en_us.txt').each do |line|
52
+ curse_hashes << line.to_s.strip
53
+ end
54
+ return curse_hashes.to_set
55
+ end
56
+ end
57
+ end
@@ -0,0 +1,36 @@
1
+ require 'precheck/rule'
2
+ require 'precheck/rules/abstract_text_match_rule'
3
+
4
+ module Precheck
5
+ class CustomTextRule < AbstractTextMatchRule
6
+ attr_accessor :data
7
+
8
+ def self.key
9
+ :custom_text
10
+ end
11
+
12
+ def self.env_name
13
+ "RULE_CUSTOM_TEXT"
14
+ end
15
+
16
+ def self.friendly_name
17
+ "No user-specified words are included"
18
+ end
19
+
20
+ def self.description
21
+ "mentioning any of the user-specified words passed to #{self.key}(data: [words])"
22
+ end
23
+
24
+ def needs_customization?
25
+ return true
26
+ end
27
+
28
+ def lowercased_words_to_look_for
29
+ return @data
30
+ end
31
+
32
+ def customize_with_data(data: nil)
33
+ @data = data.map { |word| word.strip.downcase }
34
+ end
35
+ end
36
+ end
@@ -0,0 +1,34 @@
1
+ require 'precheck/rule'
2
+ require 'precheck/rules/abstract_text_match_rule'
3
+
4
+ module Precheck
5
+ class FutureFunctionalityRule < AbstractTextMatchRule
6
+ def self.key
7
+ :future_functionality
8
+ end
9
+
10
+ def self.env_name
11
+ "RULE_FUTURE_FUNCTIONALITY"
12
+ end
13
+
14
+ def self.friendly_name
15
+ "No future functionality promises"
16
+ end
17
+
18
+ def self.description
19
+ "mentioning features or content that is not currently available in your app"
20
+ end
21
+
22
+ def lowercased_words_to_look_for
23
+ [
24
+ "coming soon",
25
+ "coming shortly",
26
+ "in the next release",
27
+ "arriving soon",
28
+ "arriving shortly",
29
+ "here soon",
30
+ "here shortly"
31
+ ].map(&:downcase)
32
+ end
33
+ end
34
+ end
@@ -0,0 +1,38 @@
1
+ require 'precheck/rule'
2
+ require 'precheck/rules/abstract_text_match_rule'
3
+
4
+ module Precheck
5
+ class NegativeAppleSentimentRule < AbstractTextMatchRule
6
+ def self.key
7
+ :negative_apple_sentiment
8
+ end
9
+
10
+ def self.env_name
11
+ "RULE_NEGATIVE_APPLE_SENTIMENT"
12
+ end
13
+
14
+ def self.friendly_name
15
+ "No negative  sentiment"
16
+ end
17
+
18
+ def self.description
19
+ "mentioning  in a way that could be considered negative"
20
+ end
21
+
22
+ def lowercased_words_to_look_for
23
+ [
24
+ "ios",
25
+ "macos",
26
+ "safari",
27
+ "webkit",
28
+ "uikit",
29
+ "apple store"
30
+ ].map { |word| (word + " bug").downcase } +
31
+ [
32
+ "slow iphone",
33
+ "slow ipad",
34
+ "old iphone"
35
+ ]
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,38 @@
1
+ require 'precheck/rule'
2
+ require 'precheck/rules/abstract_text_match_rule'
3
+
4
+ module Precheck
5
+ class OtherPlatformsRule < AbstractTextMatchRule
6
+ def self.key
7
+ :other_platforms
8
+ end
9
+
10
+ def self.env_name
11
+ "RULE_OTHER_PLATFORMS"
12
+ end
13
+
14
+ def self.friendly_name
15
+ "No mentioning  competitors"
16
+ end
17
+
18
+ def self.description
19
+ "mentioning other platforms, like Android or Blackberry"
20
+ end
21
+
22
+ def lowercased_words_to_look_for
23
+ [
24
+ "android",
25
+ "google",
26
+ "compuserve",
27
+ "windows phone",
28
+ "tizen",
29
+ "windows 10 mobile",
30
+ "sailfish os",
31
+ "windows universal app",
32
+ "blackberry",
33
+ "palm os",
34
+ "symbian"
35
+ ].map(&:downcase)
36
+ end
37
+ end
38
+ end
@@ -0,0 +1,33 @@
1
+ require 'precheck/rule'
2
+ require 'precheck/rules/abstract_text_match_rule'
3
+
4
+ module Precheck
5
+ class PlaceholderWordsRule < AbstractTextMatchRule
6
+ def self.key
7
+ :placeholder_text
8
+ end
9
+
10
+ def self.env_name
11
+ "RULE_PLACEHOLDER_TEXT_THINGS"
12
+ end
13
+
14
+ def self.friendly_name
15
+ "No placeholder text"
16
+ end
17
+
18
+ def self.description
19
+ "using placeholder text (e.g.:\"lorem ipsum\", \"text here\", etc...)"
20
+ end
21
+
22
+ def lowercased_words_to_look_for
23
+ [
24
+ "hipster ipsum",
25
+ "bacon ipsum",
26
+ "lorem ipsum",
27
+ "placeholder",
28
+ "text here",
29
+ "todo"
30
+ ].map(&:downcase)
31
+ end
32
+ end
33
+ end
@@ -0,0 +1,349 @@
1
+ 6bdcd7cca5e8cfb6b4273d6ec3efad1ceaa9e973f3d595cd9803a2b10bd2bd4e
2
+ 80d5286b2d57fb0f66bd8aab0d0f4387831ecfdf67a27662e0863e912cc0db15
3
+ 85fc17f7069acd39a5c636cd0a6530651096128da447959f5e250824857dc559
4
+ e9f152ccf708f9f7c4cd428e2351b9b76692fc53a9442a3fc9379bf596819615
5
+ fd0568e53f09cd0b8050b492b142f35a94db7f4e241a217accc1b2b2a4fdb63b
6
+ 4324678cdfdb108656fa26f186f9c2e743883de3d6673861876affd019375eb9
7
+ f713587a15dc1df7c9ae2b58832d8e65cd454dc97ee744b65039e5e84b0f7689
8
+ a7cc703265a09aa0ceedbc04dd9eb59c13658c36e9cf071e1c73fbe1be651006
9
+ ebb4ec81e4481fe5d8006cdd9ff0e45da07a78b63fcf4bc92d4f8e33135f97e5
10
+ b9799a4bf1121e9fdffa2c36a43e2ab6aff7b4b72a6ab97f13a087b58148d005
11
+ f986fdad5a18a23d7346b9a9bfb9674798b96a294fe76cdc127adb5807039888
12
+ 2e3ed22ae41e2cae4afff985df9d2feea444a7b019a988cb981af02ecd0db52b
13
+ 1be3c70fe71f301d585a2b004bfe1b659281346a567d6397de1ac0cca1fa1e58
14
+ 4c54f07432f827cbec4fa224701d8eeac1027f907635d4a03267775bce6e4614
15
+ 9c7c9920804ad3135fa6484e93b656d52fe60bed1b3e4145bfcf289084e0ac60
16
+ bace38aa4d2f7ad7e434b7d3ab8540ba9955abe23782bdb1b57c238a7efd6318
17
+ ed9abe013c9efecd996605f03b9acbb51bc12e15950b9d2d25db4701e0a743ea
18
+ 85c05bf85bffc0e54bd7c0a6dbe4a08234361511fb1392289aa510b7deea65ff
19
+ d99a8f5b10509c81a0f9e74626402a6b277aaec7bfd41e90e98a30dd8c7d69e9
20
+ 706ab4c08c538ca8d87837d357c2e156ef8dae78e634c37bdc1e1bde1248d55e
21
+ 17e167888de57af1f950e127887ec133c9514714a7a031df1950cfdf3e59d18b
22
+ 6609c6c68d91d8762c3fe5380eeb577a2556967389acb079e81248e749fb162e
23
+ 65922651b3dd892e6c01a8bdd99191ab1d9e9e1dcddda7186a63eb846d2944c3
24
+ 91e2b804933e6bcbf47c74e2aacc48197183f4b38c69c255baa6e30fb5a7ea34
25
+ 39dae8a4e3fa95232cbb84556153e1ec59c7119a62cda1c7c2b3766fd3b1b329
26
+ 6ed7c1cb3df3bb672b5e97e9dc8517aced554c8e578ca4fd0812a89a34485fd7
27
+ 8a492c4f0ecf1224a318875ccfcbd08f08d79af84f8e613f22a0afad8c4b53a5
28
+ d4ff487252522978a8ff05b9495c77e9ca3cff965a1677c3b5db84e58298df99
29
+ 6bc926508d9918f1ed7d68b44542dca152be99c7cd794b58fc93053c4b680e33
30
+ a3ca065ead65f40fec52db3cedb9f3bdc6506e7a73c6b6b372787d6dc808da66
31
+ 502bc981cc085b7304c232b6c24169749e87ebd5babf1c135dbde09cae59b8ff
32
+ d8c294c1a7db259c365cebe39f4ac3f73910e0afb68cc1d706fd16d244d6a613
33
+ abfc0b5d744cf28ef3a86c16d5875116d0fdc5c64951eb3741d84ae3cddf1fa9
34
+ 9e754e041135531909822a038b0e7562a794955ce4109c5c4acd8647ed8f9bdd
35
+ b4f63d53b08d3b621de799a9436b76447e6ee84635045ca7eda05656c58a5d18
36
+ d6f3e67fd0ea4c2325b55a5b6c8dc19e932d0206f5e5e2f66245cec98900fe02
37
+ 43a2695b5c2f8d00e8c0a91ebc33104691ca8c59704415e9389bde37de36ac28
38
+ 8bed5f675f8265fba5d4cc51ac4322bbb4d148143d5f1ae61852ab0c0bf3166c
39
+ eb13c1d47ffc957dc7e48d1334e5fb972a68ca2ca313223d0f269c2bad97490f
40
+ 54d6017efc42883ed28fda9743c60af5151a5fe67acb2ae7d66c824d9af9eea8
41
+ a196e4d9877646696f9f554a05d1498419299857046f315b7d195c4f93c90371
42
+ 231e535e450b8b4b5eb77ad8088ff848c380ef30e5ed86b269c123b75f4ac4a9
43
+ 2da82d0b0440e9f83df4c55bcb0bebb01a225a907f34ab073a62845054ceace0
44
+ 9a11486d94f89dccce4211ebdfdf49431bd936f9d0198a25ed10125900b76578
45
+ 60a62a48cbea19e0def473339b09f365d6f3264aaf6e4e612da9c0aae38b7831
46
+ 567085dc6ea1d2ea62d583ed979287235356845bf09949ac13bb3bc6cbfcb167
47
+ e2993098664b4dbee92d1d1950ee44516d943113fcf22e5bf9c7f7b6832dd553
48
+ 8e7bfef9146715fca7a1503ad46e448d6d108af9033d8b9971438c1d42a21154
49
+ c26d2c7de1b57692c880befe50b774f04d12b603cfe8252f2a066018940a2e1d
50
+ eaa60e795dbc58c4ecd01f566b95efc3eb897474f83bfa1c7353145e401e1c4b
51
+ 829017291df68b04037edbc66d22d30c6399fb3ecede6fe45f0fe4c1655e1ec6
52
+ d499b93a95c69c28d2f47b61c2cde6c39c3bd28c3a0c1eade515a8a1f6f97a02
53
+ 3ccd3caca8f7ffdbf0dd2abcae433ac8c43986f859a70287a6e3700e572517c3
54
+ 5d4be736ae0aab5404899e975aef1f63691fc1e0988e27e0f00d475d7f194447
55
+ 983e346e43ed6cb12de344917da131f0d96febaa90eff40346dfa73217be2109
56
+ c6d3b0988901335e5844cf3905777ccdd87099eba04df94a23716fc64940f271
57
+ f554f9f419c4e6075a7fb812df0da8b7f0e195e69a8cd3c384adfe9e5d077fee
58
+ 26e07eeae8dc04219391e4c351e6b04f29217eaa41002c0facdb8be447d241d1
59
+ edf1c410ef275d24c143c685f7138abdd27b5f95da65e25421880c0d1f84c046
60
+ eaea5e2d746b3695f466e269d71309484b13e1b8aac880207a36d45f4f139e40
61
+ c086d1d3860ccf9c3270f94886cb4a17ad26cd79cb5bb527da951aecde6ac12d
62
+ 24076e79643c17bc37a826fd7f9381fdd822e1326bf76a8bf6ad4669d7cc0043
63
+ d146986248111351e1605003c6a795ef9daea62a31c0bb9f0fc850d6fb983dba
64
+ 055d92837a484f4deda3d6ff9f212eaf00f362edc5c8edd3eec78ba42a93cfae
65
+ 31edcf09f6893f831cd7dc8e048dc35c75411cfa3281d68dcb060f41a310eb04
66
+ 57e4f72cdc6ca4408ee174065282e3f8f25bbe0d08902208969775fcb1909ba0
67
+ 5846f9d3d3ec5d09ceb878cf4a40e006a7415cfa66e2c1e3b703f5ea7b20457a
68
+ 9a6de5325ccef35f30d6673ec41e32ad5d1ff580c11d96c4a0562e479d2d2605
69
+ dbeea5834e89c56ede31f4c2b29217238576ccdfc85245e0c059b83a72f4395f
70
+ 5b7a9a9e58ee843e5909d3f00c5f90b639838af76d5f3358b955ed538fb813c2
71
+ be5f4d1dde0bd7ce89b0a0ab5739fc6c013c0e67ec6a56f90a7063b7378fe21e
72
+ 431ceb69ede327a3f475a0066a6a483ad3203db78a103f735b5f27ec73aaa2d8
73
+ d414bb518b3ca22082aa5498b6b9455bc1212374670bc6bc20999b288663b318
74
+ 1279e8c67cf0e8af8e25b8bbd87b950c396fb8460b006a28419cc846f6c39b92
75
+ eb4289139fb8d61b9c71377437f307d51c83664e56b6b2487be2a0244c8ffc58
76
+ b6a6a1eeddd14be3f9e76f4c3fc6b819fa71a43c2c07f02470b594478d2a87a6
77
+ 299eb8bc335b43b75076c9f25f01213838657e02a7fe25da865fa11f06684b76
78
+ 0c98f3137d0f7cb834fb1f0366799f39351c5c0a846f1fe9df1f806297b75c0a
79
+ 8e1c107292512bbb9ab47cda4aee3a966b3f3c626316ee7961f9fefbbbed0986
80
+ cb5cebe77f325e85bb761382f66f2ba85c9ffda73b2ba81ca877e947615ebce4
81
+ 789d505eef4c78a1537f950ce69bb92bd62ea38e029e5e4a49d4274eb2c77b99
82
+ fa130ebb6f8dc01b58d21de6eab033a0ec845f845b8345bc1e0a3b182cadebff
83
+ 8d749a52f4d123b906ea92b0a1b5b4189ed8c3c1a2ce1e7b5c23ded48fb87b4e
84
+ 3c37a76de8251cc5cbca2790a424f4ca1d4b4eddcbe0d8c2667554cc06403f79
85
+ ecae6af52ea295206df13f865f19d48348d5dc4bdcd5f0f8666937926edf16e7
86
+ 34de7adfb216d2b8b2c212401094e095cd466c73c2a8b78ced70652b98f367fc
87
+ 4044ba5bd5a757c6e77e490ce2b07c010fd06f115dd1288ff36b036c231fce3a
88
+ 3f424f8620627c2da217046b795ff089633b6a590faa56ca0a1c18af0e425088
89
+ 943f12359b5da759e5ea610afe0b34ed5802278dc5d2e032dd2ce97ca02fbadf
90
+ 35d2d3cc595d0ca8db7937efa6f65b94639248597c0051bd8e3f577e38ffdee7
91
+ 6650418d812244b6f02264f377479fc8c3f6bccf4966d4f12d5acf35501c8eca
92
+ 37a054a54a3a9d3c5387aa8991d5e2b59eb1b1bee4c26a77fefb5faf59def1ff
93
+ 17d726daac596bf6ebcf0e6e841b8bc8b02e003f1ad93cb9ec981a3462750de7
94
+ e0ac125b48261aa6147264a4d1b270b72e25b1bbd953d83910606375b69b0503
95
+ ea0e2f785ca7e11048bbd1fede3f81624f08d82a53ebab056e769b6661cd2af0
96
+ 9ab59f65398cee08fa512a7ee48567266ee1d351e2c09a0c42114cee87c2557e
97
+ 210f096e6e1c1319a7b196872fe3abefa12f39fda4e0e9e23d2b7cde5d104f41
98
+ 81999a70da6a506fcd718ba4170a271213dd4849f227da5f8f189a3f6d3f0053
99
+ dc540b6bcc0f2234ebdc0d1620b30ba8c35521bee4c85ba6ab74654471b46c92
100
+ 6d17a9c59b65740c3cccd6733041cc1e51cd5d988d790a53830317d0fbe6a533
101
+ c88180140ba930b55cd910bd941672970e84b1e6c8150f03be491acce599634b
102
+ c53acb191c734a332f451b7e6e045baafc121b0ff1f91b64e5a26973316ec332
103
+ e07caf2600c28ffb4247a11966113e291b180a933a245979ccaae949338f1e99
104
+ ff8be6932f4e0b768de0b5e4ceb027100373bab404f4a0d7f58347184dc845e1
105
+ 0f97b6981f98becf5720df7ba7bfbec9deb8c302c417aba1e04036126790dbad
106
+ 78fd29decf28baeec9a171aa1bb976ad779537599ce5215518255a42228b0b59
107
+ a038308494ebebd64b1765c1fc1d6454b893aed98b759a5f8bbece491fe54bd3
108
+ 6710222d74d930bc26e0e4fad4c8cbcefbaac7ae7b46c63fc482ec6032c26e39
109
+ 04eb306e90d809eef7e9eed2d4ca3fca6466b60bd5a10815ba8bbc25117e13bc
110
+ 2c47da014a8e6521cced48704ba650b23866db947e01b1e73de815751223d50e
111
+ 9dae04df86aa488e1ea50c54f82d9c2bccf3577b7c77fdfe1a60a9bc43bc56a3
112
+ 4e2f93fd65e8fcd1cfada825f51f444ebdef0173292714c5c815fab8bfaa5e9d
113
+ 4dcac36b14a72c64e41b7d03638899e01ff5d9bf0f8ed822cee40e0435180b2c
114
+ 5faa72938405972a574ce3b02fb698db3a2abb30119911c4552caa5896076fa3
115
+ aeb820a10a54282f8529938d4f9bbc4aac1752254b84136d0e5c2dd832abe60a
116
+ a6e909237df113bc6c754d7472bdeb2777b4664f1739f9f4bd6f3fbfb4668665
117
+ 48b369a1aaa8e92a1f789d6f8743abd55439d4434e99450622992d58754e328d
118
+ 9558491a75cd8fa3a0f83b513fda152fba123df719ac5f77f775c9bde652f0c9
119
+ e3015bc4a7a6e9f3963244d8e43371229ac8b2411a80af898658a5d42318c867
120
+ 5ba80a4faef8090ddac95bf9031b36fd029affcbbb3d7b966687e56be0d06dbe
121
+ 08c2d9cbfd9366d9acbace759b3839c2d8b25d115e884a4cdbc2d14ba0092949
122
+ 804361b60042b12ae6c171873a2f4933ef24dbbcb6ff7c57bb497116af6aff68
123
+ a163cb9b4ebef89564918dae1883c120feffb66c6a6073663011d4ad8b70969d
124
+ e11e85e6664fd203c3ac67a706b7969d7533209b67fe0ac98a60950df567a63d
125
+ cf8820c6016bbac82eee8a8d7d4c15169092286c788121ec172cf145c200c8dc
126
+ ea606def2d08b64ea3ee1aeb099cbb20a76f923e8a005fb0e5434b642b619ccd
127
+ 0a24b5b27c3f19d7b85e06e30f5ee4c8513390d8b2df909035bfdd8d1dac621d
128
+ e6c928bea11c184f6bcc7d94bd9efabd47398709a35ce445c6e67291db5a597f
129
+ 66f37c8d87140b68cc7ddf39f797ca1212918d94a5649e1cf475ec6046319296
130
+ 2bb690823d03de32b64c578984916812644e109104113325faad6351d352f937
131
+ 4413bd3d6bc82fb36a9054ceb2613d40f54cda27b426f77fe7cb6b58f27bf515
132
+ 787b4e18e3a886e573ef2ae501b6c6947d51c22a4945b414b80908a7b57c6fbb
133
+ ede03155c7536e1a361226e34403a43f06af4c34b6f61e7c8f9ac3d1e22496a2
134
+ 341599a9c57775db81cea402aa90515ccac4d26e2df5429c0513a1019782416a
135
+ bd90c7977f68167f37fa57dfa6f5aaffafb7e6135b068f52a761429889d7d03b
136
+ 9fa47f82e58e2e5c8a3606a3db64a1e614ea1e9e1cd081b8b0e11af4b76ffcc9
137
+ a94a92fdac9d6e0a7465811bc875e0e61b5cf784f3c90505a5b2d944e6cdbd1b
138
+ 3b15a7e086ee3ca6f0e8473a0c874b2c8f5f1f8d2c5a425de5a534daabf9d5c9
139
+ 5791ac86438225e5ce3336bf7784aa314443d86e009b70161c37f02e4822228a
140
+ c5aa9b542e5639c7291e3afa633b0c8a583a3b6da097c490d2e226874b8daf71
141
+ 8ec41bc7bc5a409dc712aeff23db9a30d9dd4f723e98f5cd65324958d98c0b7f
142
+ 2b9305b756b22b26fa87a4dca893c55f39004399d579bb12bdf46b74f109a9e2
143
+ 24d1443c868fe359f811c6c7fada5fbdda0a7bd72b06639db24ad9e0b50f8683
144
+ 8b597562c8df34b25f004dac4c3d3ea1bbbdfa0f226009373ac58442884c09c2
145
+ 904166bc854e93684d7f708b2f406a1bd54acb5ab6c04036353354803fa97ae5
146
+ 25e143aa21f2d1d5e3d7e1a0a56091868def17654452f5b00d156470c1a82fe8
147
+ 808c2221b3b1e15b34930acf37b8f39de1cf8dd165aedd5394f844f6e5a71604
148
+ d4e0b60bd4654b692f47281f14ec6a52be933bc68ee7c8e27e8fb9fe3e20d155
149
+ d708a039207009d669e7946dd540fe7cf920c111c9450f57213a45759b4b0ae2
150
+ 463955ac86ca0c1f1b230c3d0677db1132966978040e1081be66506460af2147
151
+ 05349b35fb8b5b574339b5efd5875c699434d06209a8086dc9a4b3e10c053628
152
+ 89221da8a8681efb976f418a5f133c5b4d7bec11c0fea323385555ac895b9307
153
+ 0b5e7e9041ade2abcfdb7a297ad8301d88f0c4130a60160d26c081e777fabaa6
154
+ 4f0f72cd10fd00388f3ccb7f9e63fcf3a836cc096a27045c988dd2088339c526
155
+ e1d2c882be53343160070548c39202ed25871849c820445a0194074a799ac7dc
156
+ 87d772cfcf4dd26724ceb60765ad7d593fa03cfa4bd48a3027c345934f89c7f8
157
+ 0c462f1f0170b74fd885522b947ede95164441357bee36bb344a69e0fefb816f
158
+ 58d8a3b034df6a6680bad30b578052ff2d06034c321dab9584e42cd4ed7afeed
159
+ e0201e00b773f0efa64d90f2aeded7d4658e0aa61df5e54fc495a107af6fbfc9
160
+ 8dc80ee63adf38709b07baa199aa3d9f7c25b990bf3b6f76fd7d44598a178f1f
161
+ 6e8aee59d102f84330dc75b5b7f2bbfca03b01b35ea6dcedcb0a0e1515bee651
162
+ c5b16d3a41922193c33b7ba2a298a8d906e25f9628da745f008d05bbff56ff23
163
+ 6f3cf81263c21674bf647c7d750b45a7c21392a0bacdf542203f2b3152425dab
164
+ f4d4c175a9f71d24ec1e9ccf867b96461a062fee910e6164fdd8aea80eede0ed
165
+ dfc7027894e168c3292c50b5461ef8ec635a5e04874b1e13b5ad7596a98f3bda
166
+ c55be07fc18de6e7e6919151059cac4ece6d102e5dc3cbb5a0a9ff5795ca3464
167
+ dc8471b126c728c557577971fc7bfb35657f419dff1d4b85e2aae9781017b70a
168
+ cc86205781253fbae9e2e39b27c8bc91932db698e3ad292b907bb115bd0a96ca
169
+ 1b414ddbbdb42cf57ee7ffbf5efaf454e83a0f85dbfdc95d9d1000091732957d
170
+ d5abb98f953dc5989736633f816ff5d099838af12d1831776aefdeb2840a621a
171
+ 6467bc523f9ce64981a6b4d42888e42a3d90f75ea1677c5b211451e5e0140262
172
+ 920ff50308f848e6e1d0cff3bf04aaf291284c3b7af8f5328458bcd15c90b27d
173
+ 79322029119727090018f3bd0cc5be592d278057a0f90073121c3aee20e7463e
174
+ cd16accebfd660bf221245ecc81cad241a006d6ffeec3a0a810453dfd0b5ef69
175
+ b93aad9057c0e39cb3fe3e07c44aba674165a744fb03243df663a00dd71e6ff8
176
+ 18eb676c8fa616f619fc06794b85c86576ac3c29cdeca7ad3e1754ab4596cb85
177
+ e7b25e6297326d559f918f2650884e6c3541e2ecaafff7fcc7ec4e2225faf6ac
178
+ 50758caf8689ee6d3abe420691d2df076afa939cc1c54572bc609d79c5dd2a4d
179
+ d799c81cf6bbeab94c2dc7953019e5356f0d5d6305e3e877af715fb8a9f4e533
180
+ 17fa0a3e6e94bb3cd35f1052a7d5648560657c1b88fa45e1a90997b4e57c47c8
181
+ 608b5bf065f25cd1c6ac145e3bcdf0b1b6dc742a08e59ec0ce136fe5142774e9
182
+ 3f1afae32a24931c6d58e50bfe74ea4994b95d97cda42578f7f2e563c65f762d
183
+ 77d761b24e41126a805ac246e09d603f9eef053c1cebd377bdc2ca4252dcc2b8
184
+ db56b95a015cc1056e60e8e576d4f18b647db21073c6f157fe5b8553d04389c9
185
+ 8b5e7b27f6dd2fd93ad455238d667238c8ae436de07bf218a3e08be7e46c3db6
186
+ 92371422cca91fdb59492bcbfada9bb5a34558f23a09b48d211cff115ed23eab
187
+ 2b1d5c4fd9ff27aaa8a5dfccf4f09e7eb1855359adfc8839ef30d1e2d8863648
188
+ a07f9451591423465c762191b3dfb1fb76f3da98db2e9064b406682ab215ac4b
189
+ b7504f29020be68108b402d37174eaee834d6a813ea84222be48cc494d05b863
190
+ 5dc5147b5e2164841b69e5b1ca763096a8b8b7a7c902e437084d699180e6c766
191
+ d69359728436256f505b3f19fd440370500b17af156c0d25c48572c75af04a84
192
+ 7284bdfc78e17e365704319778248b19c0e88417bd4f5273bf03cb9018a34c5d
193
+ 4928ecc993a69765646bef43d64952a079dc406f985ee696ec587ca6e623f568
194
+ f77d7859b45c9db289712104679a91142344e09fe8a3019baa1504e76d638518
195
+ 4bcc6fe8a6ca897378b891a78ef0556e62a155d650c9ba68fa8b9e7056a48bb5
196
+ a67af1a9bdac8712b37c11b55f3ff8fd5153c02a3837d77cd06252b5ba64fa8e
197
+ bd84528174ba6c7754adf91a78053ef69d40d9dee4d07f078876a5eac324da68
198
+ 089f6a3455b86e5d4bec183f71d48aa54424a0fbff993d70cf67c39726e6bc8d
199
+ 0e2b2527cd53a00b0f478b4391ee4753660c4ef18aa3a24b42f737f82fae0c88
200
+ cef818f5d3e9d0cfe3713e3d4d3a65c9180c9cd82d641aefdf2f12175baf5d08
201
+ 6dd6f9886a2ba576fba217827e2f21ddaa5c531717d80d176e9a0eea9354ba7f
202
+ 4e3791927a302e08613d932aa263fec502be72f6d8a0d466d09ab44fd9460c7c
203
+ 666c76e1e37cc0d8e83e96baac93ae12b43e62cd670ef74719c1b6e52f10dbc7
204
+ cf745f77084025340899ec183210adb5a85075c042b9b36495ec8ca7452cd923
205
+ 55747576547286b610e889628b275a282f0ee916319ef219a5cf51ff94ef9179
206
+ a13faa5db02db30132e7938bef770dbb45284b39e9f28f7fdad3e574720a6c9f
207
+ ff2b20bc1caf34d4e765d0737636673c08a6bcf62317ad5317eb7857558ccf1e
208
+ a9be3d9a4c369682bec34858e5810b88af760e61fb08555d282b372040189ae2
209
+ 5f3facd8ab627927a71f17be7c6a3862c48c8c86edac5044b8d08aea3b760168
210
+ 56cc5eec55dc58c7043ac724f962e41892ef591552dd023a9b81f95958bfff63
211
+ 5412f65a35117c9c7fb85922e69611694ef44f52ed68a149e8fb6451a69409f4
212
+ c65d01c220498d2072a93a1b5fa3d0bfb2fc29e4fd553e63a354e0ea0e738589
213
+ b830586c9ca9b3cb36e8ff7186454a7da5cfd363d607cc499623ff7cb2d0e041
214
+ 5d3be6f4cfa9b115c571e168fdc05da20fb1b4b1974ec096687607420a6f229f
215
+ f38e953043c8fec840863c9c16f179399f87a7b47c9d2a98943669839c4cbd2c
216
+ 94553c000a16366cf30b47e0b55f67dd8712731f88daf2213ce638e9dd25b933
217
+ 6edc0c87e7772089b081d67a26a70c114db381a59d0f112c039a4373e96f2240
218
+ ea95279b18825124ef8888a1459384e55a7b954bbb7da90d13dd7e7e31d30513
219
+ a0376ece8d1d3fb4f6ba486e597771d7ab033a8894cfc754395b1105a5471276
220
+ 21cbb80827831ac662bf691f6c74cd9ca5ccd3cd36b59ab6230c975fd1b7c4ba
221
+ ad311bcfd222942c0982fa2a514d7fbd7c69d9c2d7fd2f1f731ce6c9017bdfa1
222
+ 16a09b7ac1d8f492b2d53aca5bff8cde13bc1d8444b88a8ed4fc885a776508b4
223
+ 6c6fc8352ba0a7706ccf42798a4fddcd4bdcd1a06346838021d5db2f4d588018
224
+ 3b7ee504db2b57f8cffbf9c7add0c2ab8c0e44678f390504decac41c0f34e8b3
225
+ 2cb2d0b0eeec9df79312eafe8c1460f289a5eb5dfe7fd7aa99d3b008a0b37812
226
+ abc872e3a322dac915e132afed9f045206fd75611900578dab39702912a8ecf2
227
+ 1a2d060ef02640b6c881d0b95cc10fb8f0a1919fccf4dcb2e440cf5016cbff6f
228
+ 56d8db18e762ac96f4df8e116ca5a0a1d4fb1e19bd13b81c77205a03bbfeb74f
229
+ a45c6988a2cf78fef04fb468137cdde496e3735de5199905e131f2758464cb57
230
+ 79d6e64de1a4cc5c94fcaccc62bb42818516d19bf83c0990393073f8578a260e
231
+ ed7cd68149c6e6633d98a481b083241e36455aeeab394fe412d2cc7b06f29c42
232
+ a013cca0b992d963fa55036fc511fd60203cc6832998ddf0e67741b3a4536180
233
+ 40626c3c0a2969c8ae347b8da8e28ade428880cbf1a28f4441757a0536da511a
234
+ 1495000e906fae0a9024e233780f28db2afee28351ef759876ff8cb475154d42
235
+ 6e22f1b8178a6ba5000ffc5293b035098d208327b8214c0a523fde849824664b
236
+ 693338c2a602d225ab08ef98bdb380d2191c838c8387d3a1ed8ed15363fe457e
237
+ bd28bb6bf002dd38cc74a92e99e2203cfa7176646b3be41f425ae0196b62f936
238
+ e2a7ee541f13f28326f0ac701d2014651896d305e47bf58d83cc169e4b6f5e68
239
+ b359dc2ae24693bd9c7d3555cba18f88275ef80d17955136a7ac14c605ddd7ac
240
+ 89688d8ef6ed17ce15544ae1503b2870176028cc92663330791f88bc832161db
241
+ 3884d94f281f62ef40f1a41f2cdc1e267af47c6c4c70174688b6146e09fc8d2e
242
+ ebd058520e665d2ed0cb1e7fe42ce8dfe2f9fad83220d21abc82fe70491bbcc4
243
+ 69a3e2452cbbef0e81695ca39c452e28ec80748f6480f53bb24907a17a8a7cb3
244
+ 1efe26da389ac03e8dfb1ec64619034e2dd85b540cd8578335fd0280f00551e8
245
+ 4210ca126a7893f64a5a691948243d61fecd112e2bba7745a77c41367d7e9f4b
246
+ a8b8e6f12515915aeab88867ab7d0420e0c66a4df3ff4f55a2696dd4e23ff9cf
247
+ d79d1b30505d431705264c46b6cbe90ac64404b88aaad6471810dd44c3630049
248
+ 7f23d42198a3b688f7094df24f17a018dde8390869212eae9d5f00cebfac6457
249
+ 71f453558de50865fb6feec836f4ed868542664afac639bc070304259418bc52
250
+ 23759a2a9feff1c0c21f83930be32be125ac488a10ea8ab9e5cae9ce35767687
251
+ 206228a1437ee5b9222c7296559d8829114403c3bad862ec2e4ede06675c92f2
252
+ 36c37dea9ff960d45ea324ac5c1515ce55fdc31e249a65cba0621c4d12d2a5e4
253
+ 7717b949bca8fb3449dca88bd334e8d81ee323adfcfa4c5c4203a063e1994816
254
+ 19d7ecb53868acb260e5c60dcba93eb5368f6690a21bc03d6a5c60aeb04afb56
255
+ 99520ec4c46758a1541b9819a99687c72fbdf5abe5610ae827388a73c36400d4
256
+ 2ab7771d4a59ce92880c5e825935a5955f9fbc6b6e79a5b6ecb3385fef85f893
257
+ caf29a27720b2e7435af9bf86e13183186f0c65dc92fb3885aa182e97cd2ac50
258
+ 9cc57f2ca39c2d81aed7e3d82af0b5711863bd3403bb8f024c4c3b4ecf9652a4
259
+ 93066aeae95cef2d8d2534f9dfd1afc406346f17ea093bffd826639eb9c61d4c
260
+ 8d1111ade647bef0b6d09807aca376530e6ea96a7e277018dcba315bc782a1c3
261
+ 5d61898c6ff287cb854c554f7b42cd12f0582b83d23eadf5ae3df616b4a7e22a
262
+ f8f6bef4cf7c4c91f125484cbb8027e73a19c1ba916c1a89ed5f6625d04e1bcd
263
+ 86be583bf001425703e1d5aa8e3149f8d5539952f84d6f457777e60c00599fca
264
+ 6e98083af0e456bf1f3cd79c110db1e8c3cc000b2f5b2760b2076ca0c327a4b6
265
+ e83ed841145697bed75db27dccafaf0744318a21ac29fc80a3b543d770e63297
266
+ 84731f74bbe5db6b89e90b58bd9d366817d01f2ff05b6eeb6ef4aa51d9a9d2a2
267
+ 1ad75da76ec23141b37aa05b91cb1124f20c656e240bbf78bd04de983372e47c
268
+ 62e5785b87b9049540b7a08421cf82f68a33cb437824699b60e8bf0a4e9b7f9d
269
+ 21c063ffab9f97eae129f0bdb0e7a339d709d8c4521e5beef0e0994fb1fd175d
270
+ 87aa80ce38affed20ba0b899fcd1bfe26a8c612503502a8dc9e0e3aa60366bb9
271
+ e379815a0f6e219565101dc769143352bea4cf4627c816e2a63290e0ac2bb81f
272
+ c12d45049a1938064e87d9ee06d566f9f88a183b9001c03234832ae6a3e7935c
273
+ 59e785f1f554c714ba520812b4f1376f5841bc24542a00235ad50d8c67e8800a
274
+ a4330d6cf67418ba1945b32f2b9107ec54ecb996a9b43ca31b133514781c393c
275
+ 091c15e25d0e0cc2e8248e9394cbda2628c9d71c810e749770cec382ff53c5db
276
+ 0b4f4062dab7f186cefec13ca73559bfd272df2194bd38d72b21ca239b58c289
277
+ a007d548d991e8c3e780d6f7dd09058d604b3926824943a34a17dd8aa71cffd2
278
+ 7d63c4e278d7950c9b968d89a16bd653018b3d84bbb668e01b0444f9f8271b2c
279
+ a18dbbe5317dc7f620377aab43455d2e0f311e9da268c02d7115e90018e71dc3
280
+ 08628e746fc356235e3c4c0c98d14b225d15ffc5585baf39262540e074547b22
281
+ 1817779382936ea6f650c5cdef48bef39eb251f14e6f85c09a1d0ffe7d2433e5
282
+ 3c2b896fba3480ba3b0ae1e8b13e2eb93a08ef9a89bc53bf8647536e866a5984
283
+ 0bc51cfe253fd0f1e98c54a511757b099368e072b0d273804f1c647c245b3e3e
284
+ e9587d5292af24f40998007bddcbedb4c6f2dedb4287c6f7e8ad34b4e76b826b
285
+ 72dc5c8416ec57763f5243257ae5aa5d0e0330775e8d8d366d877a90b2a808cd
286
+ 48152edd41b74e56130d8f6ef1038447363848bdb34ab6eb3bf3cda7079c1b02
287
+ da6cae5d935b579afafe1e6873345dfd1ce1e2167751e157c0920ba8a90e083a
288
+ d42ef95b24aa73af9b6a71e2c27c3173282502171f4007ffaf8ddf382820271d
289
+ ace6eb047f53074d8327b056e8e824f2e6159db76b983bee5fca82441ee3b988
290
+ 9346e86e908ceeabda5f20303ea93dadcf8b9c0a18e07a40616a070751a1d9bf
291
+ 6011884a59c523cd6363c639ae689ef69409f85a94877b5baa52f5f650ad514c
292
+ 4811c5c00d9af8b1bacaf4248dc3f332bf2e3cfaf9bf5f25b16d1847c721d853
293
+ 1651eb64db0840962f21ddd69e6c314529ea328d069fcfdc9f0cb613d4eb3664
294
+ 6864f6863a6bad7a78d5d561028a3d20f97319c557e87c1ae37eb09a4adf3732
295
+ 98061f199c3b8df0c314fb49a6686174993d8bb18fc31cd5d759c27f42cd6136
296
+ d66bff5c471075925830c8a16e15b7dfd2cf04a740b3be93157a50937dd4c292
297
+ 1403298b9dc439f6e31d8efc6677ea9d0c4cb7662b572eb6cb76747828de8cf3
298
+ a2c8072c171e935a89697d02a724289f8856d920b06791739ffeb5fb0f802c95
299
+ a747099e35e4a09e2c6c72ba30ea3869d90c7042b3cdd024bd361cc181af3cde
300
+ 4167973a65bb1c269989525a9e05080bc60d25e23813ac26c68324309400c6eb
301
+ 2a77ea48e69de5b64e86060995e2412a7c4172c2c55d30bc06bea7e670b22fc8
302
+ 634a24d20423eff0985bc75d5bd584bdf086ff2d91f7902ef4324280ba42b95b
303
+ 4fcad6f30bb0393196b2a35f382f1e6d64c259378636421513d25904dd222861
304
+ 645a69527f332321a3b34fc9b2e3165d233ec4e8661a2e4f5da048cbc75f080a
305
+ b19fc975ce27ac89f86a547de0e9890fb559c48aebe4decd87db32acc6b36135
306
+ 12a0144c80bb17d97212a26d0cf3f649517e99e36429b4e95e3b8aa265680407
307
+ b09cb6e5397c16181e841e6fa94d4be290fb0b4e5ae66000b2351f8c1b768eeb
308
+ 52e72568f1059995212438a51113f45124c43178d89a78fab41a0610e5373b56
309
+ ec31724a9cf4f3b75d124140e7de0dff03e5f4204f0bbdbc581ec5948fb7ab33
310
+ a1d9cf0192b1dfcfa231eea6d7bbffc0084fc689fafae5b2de4b00599f3fb884
311
+ e5c4308df9f2d9cb7993269fb8af467d38e874c01990fa39735d613fd9557a7f
312
+ 4c805f242e7b17c6cefc978b3430e5804411f16df0e2b1e643f36e38fb6d10c4
313
+ 2212ce502e792ac93d09ddee20e6da56608eebe4f9ccafc5bd24e2c361e7322d
314
+ 42a6b1bfb41204676688ed7f04f3888dbef6da3bebce5c171036801d11a39529
315
+ 7c15ef34aef487ea6528e7be8513968659f77d8b216a23865c9322ffb7d73e28
316
+ 82fcad3eb76f2c34d416f4783653626d748417098b7b78fa3f6e936335baa9c7
317
+ 6ef20e1dd1ca376589faae64f4ef1c63774135e7c3a13cda6a5b53b37ed07b65
318
+ 8c19bfd5cce56ff9f4bf97721ddfa6f3f48cd4805bd3e3a9737dacb22595e9ee
319
+ bf1658dcfee7b74b3b58303f6015e4dcf8ad9d2a5b84c9d13d9fc16bb90cbcfc
320
+ 23840bc3803d4bd7d33e3ff4e9426a98cfc3d8d990cf032ec67a67d62815572a
321
+ ddb65fb747a947d9778acafd37785b6aae5aaed8d1ca088aa5d4cbc9f560248d
322
+ c2a73cda55b65e262ad673888fac3720155fdfb1f937f3a68dac48c8f2db0f27
323
+ ecee1fe2a6df72ccdaa45bf2bb873b3ca1d5c3ef9353402337d1dc57781a1c67
324
+ db061699ee4133492c771c147ee3c85efdbce78c8a54c04819a806a0fea3b598
325
+ 36017d1e5e788948123d32d91ef5640fdc846518d51293e4e97ab488e48d06b6
326
+ dd30e46291e01b4fd75af5b328e05987955fce24aea7f3bb2ada37d37ae79e9c
327
+ 5024dfc060ce6616feb5f446d2dd6b5576cf564afd622f36a0c9d835c269130a
328
+ 5b8dd139ca8ca21d4034e7cd565f7f07b11eb096b69c705a8227bd4128d40498
329
+ 92fe712b45ec9d1b8dd3f9bc1c2f57f7606cec1c91f67de3da4cb45732c77aaa
330
+ d788fdaa8b7c8f398db503a1aca964b2634930b11697530e44a9d6edec113ef3
331
+ 70b0f301e77024ae7cc6cc5799115898cfbd452fec2030b63ab14cfd7b440ebe
332
+ 0fae55d46b29f2b3f306ddd676b76497d507c6b13dc0925bd47cea4f8f54cca1
333
+ 9d2a309a130952dd59e27342b3b8a702266c08229d25131598b106c668596a38
334
+ 11a0f0935e0c1b365f38295471b9b9a8e1081bf10a4fd91bdb41729747418964
335
+ a3c9f10315e0c26353170f2d2197eac9d4de31e3d43408bc30e8d110e344e374
336
+ af9a766ec39b2876115845c29cc6c26aa6842243803f857e5377b84654102a68
337
+ 99b7beecf4dd06ab30f4c6752cde47dfb50f872302b33fbfd41bbdb2bfd0c1ce
338
+ 4f0558e61a9fc60765975900739d885f2ff5d64d0b727b31264085bf34e96f9d
339
+ 74cb57be9186851dfdf18a9c5eb5d5e9b254c36d6f8426acf4b0c6e85d771d26
340
+ 44acd8afb631ff7612097d832b9a76b5ce669ff898abbb2379c56611389e67f0
341
+ 75e229f2d71bcab9142a5309e9b99992f0ebf51555257caaa05442147c3b272a
342
+ 3a4c982e787da5c6b12626f826db90f4ae822c93d9fc33eff7e4d2f9bdacadea
343
+ 97861fc31cfa55b43a508961bd12120e10286000f7cb8b35d4c6272bad8f24ce
344
+ f2a60e984c7c336fe337f7dfb52bcf87f04393badd4b492abd187d6663969e3a
345
+ bc8059fe9118fcf7b2c20a0bf9fdd8111942f2cb4754b45fc0b16916ab679ddb
346
+ 9f02f229004cc97cbe3e41ad839a73dab5f68d4c296dd64055317cf90dd11a1a
347
+ dab70d211b90bf5e931b5626bc558850752e107daf995bf9e8cb1a08ca7309bf
348
+ 4efb200187aa257858d45bc72b8e590bac33db176aba6576cdd6623655a5a74f
349
+ 0be9b885f4a35a18f6af6b1ac0acd7fa4b19993999c3fbf66dd1e3e0c4c753c8