<?php
yii\base\ErrorException#1
(
[*:message] => 'unlink(/tmp/purifier/HTML/4.18.0,9f510bfab9ed08ca54cc82a3c1f513ac30644a8f,1.ser): No such file or directory'
[Exception:string] => ''
[*:code] => 2
[*:file] => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer.php'
[*:line] => 144
[Exception:trace] => [
0 => [
'function' => 'handleError'
'class' => 'yii\\base\\ErrorHandler'
'type' => '->'
'args' => [
0 => 2
1 => 'unlink(/tmp/purifier/HTML/4.18.0,9f510bfab9ed08ca54cc82a3c1f513ac30644a8f,1.ser): No such file or directory'
2 => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer.php'
3 => 144
]
]
1 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Serializer.php'
'line' => 144
'function' => 'unlink'
'args' => [
0 => '/tmp/purifier/HTML/4.18.0,9f510bfab9ed08ca54cc82a3c1f513ac30644a8f,1.ser'
]
]
2 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator.php'
'line' => 108
'function' => 'cleanup'
'class' => 'HTMLPurifier_DefinitionCache_Serializer'
'type' => '->'
'args' => [
0 => HTMLPurifier_Config#2
(
[version] => '4.19.0'
[autoFinalize] => true
[*:serials] => [
'HTML' => 'a0be0b83c2a4580acb95574ae52776eaf0db8ca7'
'URI' => false
'AutoFormat' => false
'Cache' => false
]
[*:serial] => null
[*:parser] => null
[def] => HTMLPurifier_ConfigSchema#3
(
[defaults] => [
'Attr.AllowedClasses' => null
'Attr.AllowedFrameTargets' => []
'Attr.AllowedRel' => []
'Attr.AllowedRev' => []
'Attr.ClassUseCDATA' => null
'Attr.DefaultImageAlt' => null
'Attr.DefaultInvalidImage' => ''
'Attr.DefaultInvalidImageAlt' => 'Invalid image'
'Attr.DefaultTextDir' => 'ltr'
'Attr.EnableID' => false
'Attr.ForbiddenClasses' => []
'Attr.ID.HTML5' => null
'Attr.IDBlacklist' => []
'Attr.IDBlacklistRegexp' => null
'Attr.IDPrefix' => ''
'Attr.IDPrefixLocal' => ''
'AutoFormat.AutoParagraph' => false
'AutoFormat.Custom' => []
'AutoFormat.DisplayLinkURI' => false
'AutoFormat.Linkify' => false
'AutoFormat.PurifierLinkify.DocURL' => '#%s'
'AutoFormat.PurifierLinkify' => false
'AutoFormat.RemoveEmpty.Predicate' => [
'colgroup' => []
'th' => []
'td' => []
'iframe' => [
0 => 'src'
]
]
'AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions' => [
'td' => true
'th' => true
]
'AutoFormat.RemoveEmpty.RemoveNbsp' => false
'AutoFormat.RemoveEmpty' => false
'AutoFormat.RemoveSpansWithoutAttributes' => false
'CSS.AllowDuplicates' => false
'CSS.AllowImportant' => false
'CSS.AllowTricky' => false
'CSS.AllowedFonts' => null
'CSS.AllowedProperties' => null
'CSS.DefinitionRev' => 1
'CSS.ForbiddenProperties' => []
'CSS.MaxImgLength' => null
'CSS.Proprietary' => false
'CSS.Trusted' => false
'Cache.DefinitionImpl' => 'Serializer'
'Cache.SerializerPath' => null
'Cache.SerializerPermissions' => 493
'Core.AggressivelyFixLt' => true
'Core.AggressivelyRemoveScript' => true
'Core.AllowHostnameUnderscore' => false
'Core.AllowParseManyTags' => false
'Core.CollectErrors' => false
'Core.ColorKeywords' => [
'aliceblue' => '#F0F8FF'
'antiquewhite' => '#FAEBD7'
'aqua' => '#00FFFF'
'aquamarine' => '#7FFFD4'
'azure' => '#F0FFFF'
'beige' => '#F5F5DC'
'bisque' => '#FFE4C4'
'black' => '#000000'
'blanchedalmond' => '#FFEBCD'
'blue' => '#0000FF'
'blueviolet' => '#8A2BE2'
'brown' => '#A52A2A'
'burlywood' => '#DEB887'
'cadetblue' => '#5F9EA0'
'chartreuse' => '#7FFF00'
'chocolate' => '#D2691E'
'coral' => '#FF7F50'
'cornflowerblue' => '#6495ED'
'cornsilk' => '#FFF8DC'
'crimson' => '#DC143C'
'cyan' => '#00FFFF'
'darkblue' => '#00008B'
'darkcyan' => '#008B8B'
'darkgoldenrod' => '#B8860B'
'darkgray' => '#A9A9A9'
'darkgrey' => '#A9A9A9'
'darkgreen' => '#006400'
'darkkhaki' => '#BDB76B'
'darkmagenta' => '#8B008B'
'darkolivegreen' => '#556B2F'
'darkorange' => '#FF8C00'
'darkorchid' => '#9932CC'
'darkred' => '#8B0000'
'darksalmon' => '#E9967A'
'darkseagreen' => '#8FBC8F'
'darkslateblue' => '#483D8B'
'darkslategray' => '#2F4F4F'
'darkslategrey' => '#2F4F4F'
'darkturquoise' => '#00CED1'
'darkviolet' => '#9400D3'
'deeppink' => '#FF1493'
'deepskyblue' => '#00BFFF'
'dimgray' => '#696969'
'dimgrey' => '#696969'
'dodgerblue' => '#1E90FF'
'firebrick' => '#B22222'
'floralwhite' => '#FFFAF0'
'forestgreen' => '#228B22'
'fuchsia' => '#FF00FF'
'gainsboro' => '#DCDCDC'
'ghostwhite' => '#F8F8FF'
'gold' => '#FFD700'
'goldenrod' => '#DAA520'
'gray' => '#808080'
'grey' => '#808080'
'green' => '#008000'
'greenyellow' => '#ADFF2F'
'honeydew' => '#F0FFF0'
'hotpink' => '#FF69B4'
'indianred' => '#CD5C5C'
'indigo' => '#4B0082'
'ivory' => '#FFFFF0'
'khaki' => '#F0E68C'
'lavender' => '#E6E6FA'
'lavenderblush' => '#FFF0F5'
'lawngreen' => '#7CFC00'
'lemonchiffon' => '#FFFACD'
'lightblue' => '#ADD8E6'
'lightcoral' => '#F08080'
'lightcyan' => '#E0FFFF'
'lightgoldenrodyellow' => '#FAFAD2'
'lightgray' => '#D3D3D3'
'lightgrey' => '#D3D3D3'
'lightgreen' => '#90EE90'
'lightpink' => '#FFB6C1'
'lightsalmon' => '#FFA07A'
'lightseagreen' => '#20B2AA'
'lightskyblue' => '#87CEFA'
'lightslategray' => '#778899'
'lightslategrey' => '#778899'
'lightsteelblue' => '#B0C4DE'
'lightyellow' => '#FFFFE0'
'lime' => '#00FF00'
'limegreen' => '#32CD32'
'linen' => '#FAF0E6'
'magenta' => '#FF00FF'
'maroon' => '#800000'
'mediumaquamarine' => '#66CDAA'
'mediumblue' => '#0000CD'
'mediumorchid' => '#BA55D3'
'mediumpurple' => '#9370DB'
'mediumseagreen' => '#3CB371'
'mediumslateblue' => '#7B68EE'
'mediumspringgreen' => '#00FA9A'
'mediumturquoise' => '#48D1CC'
'mediumvioletred' => '#C71585'
'midnightblue' => '#191970'
'mintcream' => '#F5FFFA'
'mistyrose' => '#FFE4E1'
'moccasin' => '#FFE4B5'
'navajowhite' => '#FFDEAD'
'navy' => '#000080'
'oldlace' => '#FDF5E6'
'olive' => '#808000'
'olivedrab' => '#6B8E23'
'orange' => '#FFA500'
'orangered' => '#FF4500'
'orchid' => '#DA70D6'
'palegoldenrod' => '#EEE8AA'
'palegreen' => '#98FB98'
'paleturquoise' => '#AFEEEE'
'palevioletred' => '#DB7093'
'papayawhip' => '#FFEFD5'
'peachpuff' => '#FFDAB9'
'peru' => '#CD853F'
'pink' => '#FFC0CB'
'plum' => '#DDA0DD'
'powderblue' => '#B0E0E6'
'purple' => '#800080'
'rebeccapurple' => '#663399'
'red' => '#FF0000'
'rosybrown' => '#BC8F8F'
'royalblue' => '#4169E1'
'saddlebrown' => '#8B4513'
'salmon' => '#FA8072'
'sandybrown' => '#F4A460'
'seagreen' => '#2E8B57'
'seashell' => '#FFF5EE'
'sienna' => '#A0522D'
'silver' => '#C0C0C0'
'skyblue' => '#87CEEB'
'slateblue' => '#6A5ACD'
'slategray' => '#708090'
'slategrey' => '#708090'
'snow' => '#FFFAFA'
'springgreen' => '#00FF7F'
'steelblue' => '#4682B4'
'tan' => '#D2B48C'
'teal' => '#008080'
'thistle' => '#D8BFD8'
'tomato' => '#FF6347'
'turquoise' => '#40E0D0'
'violet' => '#EE82EE'
'wheat' => '#F5DEB3'
'white' => '#FFFFFF'
'whitesmoke' => '#F5F5F5'
'yellow' => '#FFFF00'
'yellowgreen' => '#9ACD32'
]
'Core.ConvertDocumentToFragment' => true
'Core.DirectLexLineNumberSyncInterval' => 0
'Core.DisableExcludes' => false
'Core.EnableIDNA' => false
'Core.Encoding' => 'utf-8'
'Core.EscapeInvalidChildren' => false
'Core.EscapeInvalidTags' => false
'Core.EscapeNonASCIICharacters' => false
'Core.HiddenElements' => [
'script' => true
'style' => true
]
'Core.Language' => 'en'
'Core.LegacyEntityDecoder' => false
'Core.LexerImpl' => null
'Core.MaintainLineNumbers' => null
'Core.NormalizeNewlines' => true
'Core.RemoveBlanks' => false
'Core.RemoveInvalidImg' => true
'Core.RemoveProcessingInstructions' => false
'Core.RemoveScriptContents' => null
'Filter.Custom' => []
'Filter.ExtractStyleBlocks.Escaping' => true
'Filter.ExtractStyleBlocks.Scope' => null
'Filter.ExtractStyleBlocks.TidyImpl' => null
'Filter.ExtractStyleBlocks' => false
'Filter.YouTube' => false
'HTML.Allowed' => null
'HTML.AllowedAttributes' => null
'HTML.AllowedComments' => []
'HTML.AllowedCommentsRegexp' => null
'HTML.AllowedElements' => null
'HTML.AllowedModules' => null
'HTML.Attr.Name.UseCDATA' => false
'HTML.BlockWrapper' => 'p'
'HTML.CoreModules' => [
'Structure' => true
'Text' => true
'Hypertext' => true
'List' => true
'NonXMLCommonAttributes' => true
'XMLCommonAttributes' => true
'CommonAttributes' => true
]
'HTML.CustomDoctype' => null
'HTML.DefinitionID' => null
'HTML.DefinitionRev' => 1
'HTML.Doctype' => null
'HTML.FlashAllowFullScreen' => false
'HTML.ForbiddenAttributes' => []
'HTML.ForbiddenElements' => []
'HTML.Forms' => false
'HTML.MaxImgLength' => null
'HTML.Nofollow' => false
'HTML.Parent' => 'div'
'HTML.Proprietary' => false
'HTML.SafeEmbed' => false
'HTML.SafeIframe' => false
'HTML.SafeObject' => false
'HTML.SafeScripting' => []
'HTML.Strict' => false
'HTML.TargetBlank' => false
'HTML.TargetNoopener' => true
'HTML.TargetNoreferrer' => true
'HTML.TidyAdd' => []
'HTML.TidyLevel' => 'medium'
'HTML.TidyRemove' => []
'HTML.Trusted' => false
'HTML.XHTML' => true
'Output.CommentScriptContents' => true
'Output.FixInnerHTML' => true
'Output.FlashCompat' => false
'Output.Newline' => null
'Output.SortAttr' => false
'Output.TidyFormat' => false
'Test.ForceNoIconv' => false
'URI.AllowedSchemes' => [
'http' => true
'https' => true
'mailto' => true
'ftp' => true
'nntp' => true
'news' => true
'tel' => true
]
'URI.AllowedSymbols' => '!$&\'()*+,;='
'URI.Base' => null
'URI.DefaultScheme' => 'http'
'URI.DefinitionID' => null
'URI.DefinitionRev' => 1
'URI.Disable' => false
'URI.DisableExternal' => false
'URI.DisableExternalResources' => false
'URI.DisableResources' => false
'URI.Host' => null
'URI.HostBlacklist' => []
'URI.MakeAbsolute' => false
'URI.Munge' => null
'URI.MungeResources' => false
'URI.MungeSecretKey' => null
'URI.OverrideAllowedSchemes' => true
'URI.SafeIframeHosts' => null
'URI.SafeIframeRegexp' => null
]
[defaultPlist] => HTMLPurifier_PropertyList#4
(
[*:data] => [
'Attr.AllowedClasses' => null
'Attr.AllowedFrameTargets' => []
'Attr.AllowedRel' => []
'Attr.AllowedRev' => []
'Attr.ClassUseCDATA' => null
'Attr.DefaultImageAlt' => null
'Attr.DefaultInvalidImage' => ''
'Attr.DefaultInvalidImageAlt' => 'Invalid image'
'Attr.DefaultTextDir' => 'ltr'
'Attr.EnableID' => false
'Attr.ForbiddenClasses' => []
'Attr.ID.HTML5' => null
'Attr.IDBlacklist' => []
'Attr.IDBlacklistRegexp' => null
'Attr.IDPrefix' => ''
'Attr.IDPrefixLocal' => ''
'AutoFormat.AutoParagraph' => false
'AutoFormat.Custom' => []
'AutoFormat.DisplayLinkURI' => false
'AutoFormat.Linkify' => false
'AutoFormat.PurifierLinkify.DocURL' => '#%s'
'AutoFormat.PurifierLinkify' => false
'AutoFormat.RemoveEmpty.Predicate' => [
'colgroup' => []
'th' => []
'td' => []
'iframe' => [
0 => 'src'
]
]
'AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions' => [
'td' => true
'th' => true
]
'AutoFormat.RemoveEmpty.RemoveNbsp' => false
'AutoFormat.RemoveEmpty' => false
'AutoFormat.RemoveSpansWithoutAttributes' => false
'CSS.AllowDuplicates' => false
'CSS.AllowImportant' => false
'CSS.AllowTricky' => false
'CSS.AllowedFonts' => null
'CSS.AllowedProperties' => null
'CSS.DefinitionRev' => 1
'CSS.ForbiddenProperties' => []
'CSS.MaxImgLength' => null
'CSS.Proprietary' => false
'CSS.Trusted' => false
'Cache.DefinitionImpl' => 'Serializer'
'Cache.SerializerPath' => null
'Cache.SerializerPermissions' => 493
'Core.AggressivelyFixLt' => true
'Core.AggressivelyRemoveScript' => true
'Core.AllowHostnameUnderscore' => false
'Core.AllowParseManyTags' => false
'Core.CollectErrors' => false
'Core.ColorKeywords' => [
'aliceblue' => '#F0F8FF'
'antiquewhite' => '#FAEBD7'
'aqua' => '#00FFFF'
'aquamarine' => '#7FFFD4'
'azure' => '#F0FFFF'
'beige' => '#F5F5DC'
'bisque' => '#FFE4C4'
'black' => '#000000'
'blanchedalmond' => '#FFEBCD'
'blue' => '#0000FF'
'blueviolet' => '#8A2BE2'
'brown' => '#A52A2A'
'burlywood' => '#DEB887'
'cadetblue' => '#5F9EA0'
'chartreuse' => '#7FFF00'
'chocolate' => '#D2691E'
'coral' => '#FF7F50'
'cornflowerblue' => '#6495ED'
'cornsilk' => '#FFF8DC'
'crimson' => '#DC143C'
'cyan' => '#00FFFF'
'darkblue' => '#00008B'
'darkcyan' => '#008B8B'
'darkgoldenrod' => '#B8860B'
'darkgray' => '#A9A9A9'
'darkgrey' => '#A9A9A9'
'darkgreen' => '#006400'
'darkkhaki' => '#BDB76B'
'darkmagenta' => '#8B008B'
'darkolivegreen' => '#556B2F'
'darkorange' => '#FF8C00'
'darkorchid' => '#9932CC'
'darkred' => '#8B0000'
'darksalmon' => '#E9967A'
'darkseagreen' => '#8FBC8F'
'darkslateblue' => '#483D8B'
'darkslategray' => '#2F4F4F'
'darkslategrey' => '#2F4F4F'
'darkturquoise' => '#00CED1'
'darkviolet' => '#9400D3'
'deeppink' => '#FF1493'
'deepskyblue' => '#00BFFF'
'dimgray' => '#696969'
'dimgrey' => '#696969'
'dodgerblue' => '#1E90FF'
'firebrick' => '#B22222'
'floralwhite' => '#FFFAF0'
'forestgreen' => '#228B22'
'fuchsia' => '#FF00FF'
'gainsboro' => '#DCDCDC'
'ghostwhite' => '#F8F8FF'
'gold' => '#FFD700'
'goldenrod' => '#DAA520'
'gray' => '#808080'
'grey' => '#808080'
'green' => '#008000'
'greenyellow' => '#ADFF2F'
'honeydew' => '#F0FFF0'
'hotpink' => '#FF69B4'
'indianred' => '#CD5C5C'
'indigo' => '#4B0082'
'ivory' => '#FFFFF0'
'khaki' => '#F0E68C'
'lavender' => '#E6E6FA'
'lavenderblush' => '#FFF0F5'
'lawngreen' => '#7CFC00'
'lemonchiffon' => '#FFFACD'
'lightblue' => '#ADD8E6'
'lightcoral' => '#F08080'
'lightcyan' => '#E0FFFF'
'lightgoldenrodyellow' => '#FAFAD2'
'lightgray' => '#D3D3D3'
'lightgrey' => '#D3D3D3'
'lightgreen' => '#90EE90'
'lightpink' => '#FFB6C1'
'lightsalmon' => '#FFA07A'
'lightseagreen' => '#20B2AA'
'lightskyblue' => '#87CEFA'
'lightslategray' => '#778899'
'lightslategrey' => '#778899'
'lightsteelblue' => '#B0C4DE'
'lightyellow' => '#FFFFE0'
'lime' => '#00FF00'
'limegreen' => '#32CD32'
'linen' => '#FAF0E6'
'magenta' => '#FF00FF'
'maroon' => '#800000'
'mediumaquamarine' => '#66CDAA'
'mediumblue' => '#0000CD'
'mediumorchid' => '#BA55D3'
'mediumpurple' => '#9370DB'
'mediumseagreen' => '#3CB371'
'mediumslateblue' => '#7B68EE'
'mediumspringgreen' => '#00FA9A'
'mediumturquoise' => '#48D1CC'
'mediumvioletred' => '#C71585'
'midnightblue' => '#191970'
'mintcream' => '#F5FFFA'
'mistyrose' => '#FFE4E1'
'moccasin' => '#FFE4B5'
'navajowhite' => '#FFDEAD'
'navy' => '#000080'
'oldlace' => '#FDF5E6'
'olive' => '#808000'
'olivedrab' => '#6B8E23'
'orange' => '#FFA500'
'orangered' => '#FF4500'
'orchid' => '#DA70D6'
'palegoldenrod' => '#EEE8AA'
'palegreen' => '#98FB98'
'paleturquoise' => '#AFEEEE'
'palevioletred' => '#DB7093'
'papayawhip' => '#FFEFD5'
'peachpuff' => '#FFDAB9'
'peru' => '#CD853F'
'pink' => '#FFC0CB'
'plum' => '#DDA0DD'
'powderblue' => '#B0E0E6'
'purple' => '#800080'
'rebeccapurple' => '#663399'
'red' => '#FF0000'
'rosybrown' => '#BC8F8F'
'royalblue' => '#4169E1'
'saddlebrown' => '#8B4513'
'salmon' => '#FA8072'
'sandybrown' => '#F4A460'
'seagreen' => '#2E8B57'
'seashell' => '#FFF5EE'
'sienna' => '#A0522D'
'silver' => '#C0C0C0'
'skyblue' => '#87CEEB'
'slateblue' => '#6A5ACD'
'slategray' => '#708090'
'slategrey' => '#708090'
'snow' => '#FFFAFA'
'springgreen' => '#00FF7F'
'steelblue' => '#4682B4'
'tan' => '#D2B48C'
'teal' => '#008080'
'thistle' => '#D8BFD8'
'tomato' => '#FF6347'
'turquoise' => '#40E0D0'
'violet' => '#EE82EE'
'wheat' => '#F5DEB3'
'white' => '#FFFFFF'
'whitesmoke' => '#F5F5F5'
'yellow' => '#FFFF00'
'yellowgreen' => '#9ACD32'
]
'Core.ConvertDocumentToFragment' => true
'Core.DirectLexLineNumberSyncInterval' => 0
'Core.DisableExcludes' => false
'Core.EnableIDNA' => false
'Core.Encoding' => 'utf-8'
'Core.EscapeInvalidChildren' => false
'Core.EscapeInvalidTags' => false
'Core.EscapeNonASCIICharacters' => false
'Core.HiddenElements' => [
'script' => true
'style' => true
]
'Core.Language' => 'en'
'Core.LegacyEntityDecoder' => false
'Core.LexerImpl' => null
'Core.MaintainLineNumbers' => null
'Core.NormalizeNewlines' => true
'Core.RemoveBlanks' => false
'Core.RemoveInvalidImg' => true
'Core.RemoveProcessingInstructions' => false
'Core.RemoveScriptContents' => null
'Filter.Custom' => []
'Filter.ExtractStyleBlocks.Escaping' => true
'Filter.ExtractStyleBlocks.Scope' => null
'Filter.ExtractStyleBlocks.TidyImpl' => null
'Filter.ExtractStyleBlocks' => false
'Filter.YouTube' => false
'HTML.Allowed' => null
'HTML.AllowedAttributes' => null
'HTML.AllowedComments' => []
'HTML.AllowedCommentsRegexp' => null
'HTML.AllowedElements' => null
'HTML.AllowedModules' => null
'HTML.Attr.Name.UseCDATA' => false
'HTML.BlockWrapper' => 'p'
'HTML.CoreModules' => [
'Structure' => true
'Text' => true
'Hypertext' => true
'List' => true
'NonXMLCommonAttributes' => true
'XMLCommonAttributes' => true
'CommonAttributes' => true
]
'HTML.CustomDoctype' => null
'HTML.DefinitionID' => null
'HTML.DefinitionRev' => 1
'HTML.Doctype' => null
'HTML.FlashAllowFullScreen' => false
'HTML.ForbiddenAttributes' => []
'HTML.ForbiddenElements' => []
'HTML.Forms' => false
'HTML.MaxImgLength' => null
'HTML.Nofollow' => false
'HTML.Parent' => 'div'
'HTML.Proprietary' => false
'HTML.SafeEmbed' => false
'HTML.SafeIframe' => false
'HTML.SafeObject' => false
'HTML.SafeScripting' => []
'HTML.Strict' => false
'HTML.TargetBlank' => false
'HTML.TargetNoopener' => true
'HTML.TargetNoreferrer' => true
'HTML.TidyAdd' => []
'HTML.TidyLevel' => 'medium'
'HTML.TidyRemove' => []
'HTML.Trusted' => false
'HTML.XHTML' => true
'Output.CommentScriptContents' => true
'Output.FixInnerHTML' => true
'Output.FlashCompat' => false
'Output.Newline' => null
'Output.SortAttr' => false
'Output.TidyFormat' => false
'Test.ForceNoIconv' => false
'URI.AllowedSchemes' => [
'http' => true
'https' => true
'mailto' => true
'ftp' => true
'nntp' => true
'news' => true
'tel' => true
]
'URI.AllowedSymbols' => '!$&\'()*+,;='
'URI.Base' => null
'URI.DefaultScheme' => 'http'
'URI.DefinitionID' => null
'URI.DefinitionRev' => 1
'URI.Disable' => false
'URI.DisableExternal' => false
'URI.DisableExternalResources' => false
'URI.DisableResources' => false
'URI.Host' => null
'URI.HostBlacklist' => []
'URI.MakeAbsolute' => false
'URI.Munge' => null
'URI.MungeResources' => false
'URI.MungeSecretKey' => null
'URI.OverrideAllowedSchemes' => true
'URI.SafeIframeHosts' => null
'URI.SafeIframeRegexp' => null
]
[*:parent] => null
[*:cache] => [
'Attr.AllowedClasses' => null
'Attr.AllowedFrameTargets' => []
'Attr.AllowedRel' => []
'Attr.AllowedRev' => []
'Attr.ClassUseCDATA' => null
'Attr.DefaultImageAlt' => null
'Attr.DefaultInvalidImage' => ''
'Attr.DefaultInvalidImageAlt' => 'Invalid image'
'Attr.DefaultTextDir' => 'ltr'
'Attr.EnableID' => false
'Attr.ForbiddenClasses' => []
'Attr.ID.HTML5' => null
'Attr.IDBlacklist' => []
'Attr.IDBlacklistRegexp' => null
'Attr.IDPrefix' => ''
'Attr.IDPrefixLocal' => ''
'AutoFormat.AutoParagraph' => false
'AutoFormat.Custom' => []
'AutoFormat.DisplayLinkURI' => false
'AutoFormat.Linkify' => false
'AutoFormat.PurifierLinkify.DocURL' => '#%s'
'AutoFormat.PurifierLinkify' => false
'AutoFormat.RemoveEmpty.Predicate' => [
'colgroup' => []
'th' => []
'td' => []
'iframe' => [
0 => 'src'
]
]
'AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions' => [
'td' => true
'th' => true
]
'AutoFormat.RemoveEmpty.RemoveNbsp' => false
'AutoFormat.RemoveEmpty' => false
'AutoFormat.RemoveSpansWithoutAttributes' => false
'CSS.AllowDuplicates' => false
'CSS.AllowImportant' => false
'CSS.AllowTricky' => false
'CSS.AllowedFonts' => null
'CSS.AllowedProperties' => null
'CSS.DefinitionRev' => 1
'CSS.ForbiddenProperties' => []
'CSS.MaxImgLength' => null
'CSS.Proprietary' => false
'CSS.Trusted' => false
'Cache.DefinitionImpl' => 'Serializer'
'Cache.SerializerPath' => null
'Cache.SerializerPermissions' => 493
'Core.AggressivelyFixLt' => true
'Core.AggressivelyRemoveScript' => true
'Core.AllowHostnameUnderscore' => false
'Core.AllowParseManyTags' => false
'Core.CollectErrors' => false
'Core.ColorKeywords' => [
'aliceblue' => '#F0F8FF'
'antiquewhite' => '#FAEBD7'
'aqua' => '#00FFFF'
'aquamarine' => '#7FFFD4'
'azure' => '#F0FFFF'
'beige' => '#F5F5DC'
'bisque' => '#FFE4C4'
'black' => '#000000'
'blanchedalmond' => '#FFEBCD'
'blue' => '#0000FF'
'blueviolet' => '#8A2BE2'
'brown' => '#A52A2A'
'burlywood' => '#DEB887'
'cadetblue' => '#5F9EA0'
'chartreuse' => '#7FFF00'
'chocolate' => '#D2691E'
'coral' => '#FF7F50'
'cornflowerblue' => '#6495ED'
'cornsilk' => '#FFF8DC'
'crimson' => '#DC143C'
'cyan' => '#00FFFF'
'darkblue' => '#00008B'
'darkcyan' => '#008B8B'
'darkgoldenrod' => '#B8860B'
'darkgray' => '#A9A9A9'
'darkgrey' => '#A9A9A9'
'darkgreen' => '#006400'
'darkkhaki' => '#BDB76B'
'darkmagenta' => '#8B008B'
'darkolivegreen' => '#556B2F'
'darkorange' => '#FF8C00'
'darkorchid' => '#9932CC'
'darkred' => '#8B0000'
'darksalmon' => '#E9967A'
'darkseagreen' => '#8FBC8F'
'darkslateblue' => '#483D8B'
'darkslategray' => '#2F4F4F'
'darkslategrey' => '#2F4F4F'
'darkturquoise' => '#00CED1'
'darkviolet' => '#9400D3'
'deeppink' => '#FF1493'
'deepskyblue' => '#00BFFF'
'dimgray' => '#696969'
'dimgrey' => '#696969'
'dodgerblue' => '#1E90FF'
'firebrick' => '#B22222'
'floralwhite' => '#FFFAF0'
'forestgreen' => '#228B22'
'fuchsia' => '#FF00FF'
'gainsboro' => '#DCDCDC'
'ghostwhite' => '#F8F8FF'
'gold' => '#FFD700'
'goldenrod' => '#DAA520'
'gray' => '#808080'
'grey' => '#808080'
'green' => '#008000'
'greenyellow' => '#ADFF2F'
'honeydew' => '#F0FFF0'
'hotpink' => '#FF69B4'
'indianred' => '#CD5C5C'
'indigo' => '#4B0082'
'ivory' => '#FFFFF0'
'khaki' => '#F0E68C'
'lavender' => '#E6E6FA'
'lavenderblush' => '#FFF0F5'
'lawngreen' => '#7CFC00'
'lemonchiffon' => '#FFFACD'
'lightblue' => '#ADD8E6'
'lightcoral' => '#F08080'
'lightcyan' => '#E0FFFF'
'lightgoldenrodyellow' => '#FAFAD2'
'lightgray' => '#D3D3D3'
'lightgrey' => '#D3D3D3'
'lightgreen' => '#90EE90'
'lightpink' => '#FFB6C1'
'lightsalmon' => '#FFA07A'
'lightseagreen' => '#20B2AA'
'lightskyblue' => '#87CEFA'
'lightslategray' => '#778899'
'lightslategrey' => '#778899'
'lightsteelblue' => '#B0C4DE'
'lightyellow' => '#FFFFE0'
'lime' => '#00FF00'
'limegreen' => '#32CD32'
'linen' => '#FAF0E6'
'magenta' => '#FF00FF'
'maroon' => '#800000'
'mediumaquamarine' => '#66CDAA'
'mediumblue' => '#0000CD'
'mediumorchid' => '#BA55D3'
'mediumpurple' => '#9370DB'
'mediumseagreen' => '#3CB371'
'mediumslateblue' => '#7B68EE'
'mediumspringgreen' => '#00FA9A'
'mediumturquoise' => '#48D1CC'
'mediumvioletred' => '#C71585'
'midnightblue' => '#191970'
'mintcream' => '#F5FFFA'
'mistyrose' => '#FFE4E1'
'moccasin' => '#FFE4B5'
'navajowhite' => '#FFDEAD'
'navy' => '#000080'
'oldlace' => '#FDF5E6'
'olive' => '#808000'
'olivedrab' => '#6B8E23'
'orange' => '#FFA500'
'orangered' => '#FF4500'
'orchid' => '#DA70D6'
'palegoldenrod' => '#EEE8AA'
'palegreen' => '#98FB98'
'paleturquoise' => '#AFEEEE'
'palevioletred' => '#DB7093'
'papayawhip' => '#FFEFD5'
'peachpuff' => '#FFDAB9'
'peru' => '#CD853F'
'pink' => '#FFC0CB'
'plum' => '#DDA0DD'
'powderblue' => '#B0E0E6'
'purple' => '#800080'
'rebeccapurple' => '#663399'
'red' => '#FF0000'
'rosybrown' => '#BC8F8F'
'royalblue' => '#4169E1'
'saddlebrown' => '#8B4513'
'salmon' => '#FA8072'
'sandybrown' => '#F4A460'
'seagreen' => '#2E8B57'
'seashell' => '#FFF5EE'
'sienna' => '#A0522D'
'silver' => '#C0C0C0'
'skyblue' => '#87CEEB'
'slateblue' => '#6A5ACD'
'slategray' => '#708090'
'slategrey' => '#708090'
'snow' => '#FFFAFA'
'springgreen' => '#00FF7F'
'steelblue' => '#4682B4'
'tan' => '#D2B48C'
'teal' => '#008080'
'thistle' => '#D8BFD8'
'tomato' => '#FF6347'
'turquoise' => '#40E0D0'
'violet' => '#EE82EE'
'wheat' => '#F5DEB3'
'white' => '#FFFFFF'
'whitesmoke' => '#F5F5F5'
'yellow' => '#FFFF00'
'yellowgreen' => '#9ACD32'
]
'Core.ConvertDocumentToFragment' => true
'Core.DirectLexLineNumberSyncInterval' => 0
'Core.DisableExcludes' => false
'Core.EnableIDNA' => false
'Core.Encoding' => 'utf-8'
'Core.EscapeInvalidChildren' => false
'Core.EscapeInvalidTags' => false
'Core.EscapeNonASCIICharacters' => false
'Core.HiddenElements' => [
'script' => true
'style' => true
]
'Core.Language' => 'en'
'Core.LegacyEntityDecoder' => false
'Core.LexerImpl' => null
'Core.MaintainLineNumbers' => null
'Core.NormalizeNewlines' => true
'Core.RemoveBlanks' => false
'Core.RemoveInvalidImg' => true
'Core.RemoveProcessingInstructions' => false
'Core.RemoveScriptContents' => null
'Filter.Custom' => []
'Filter.ExtractStyleBlocks.Escaping' => true
'Filter.ExtractStyleBlocks.Scope' => null
'Filter.ExtractStyleBlocks.TidyImpl' => null
'Filter.ExtractStyleBlocks' => false
'Filter.YouTube' => false
'HTML.Allowed' => null
'HTML.AllowedAttributes' => null
'HTML.AllowedComments' => []
'HTML.AllowedCommentsRegexp' => null
'HTML.AllowedElements' => null
'HTML.AllowedModules' => null
'HTML.Attr.Name.UseCDATA' => false
'HTML.BlockWrapper' => 'p'
'HTML.CoreModules' => [
'Structure' => true
'Text' => true
'Hypertext' => true
'List' => true
'NonXMLCommonAttributes' => true
'XMLCommonAttributes' => true
'CommonAttributes' => true
]
'HTML.CustomDoctype' => null
'HTML.DefinitionID' => null
'HTML.DefinitionRev' => 1
'HTML.Doctype' => null
'HTML.FlashAllowFullScreen' => false
'HTML.ForbiddenAttributes' => []
'HTML.ForbiddenElements' => []
'HTML.Forms' => false
'HTML.MaxImgLength' => null
'HTML.Nofollow' => false
'HTML.Parent' => 'div'
'HTML.Proprietary' => false
'HTML.SafeEmbed' => false
'HTML.SafeIframe' => false
'HTML.SafeObject' => false
'HTML.SafeScripting' => []
'HTML.Strict' => false
'HTML.TargetBlank' => false
'HTML.TargetNoopener' => true
'HTML.TargetNoreferrer' => true
'HTML.TidyAdd' => []
'HTML.TidyLevel' => 'medium'
'HTML.TidyRemove' => []
'HTML.Trusted' => false
'HTML.XHTML' => true
'Output.CommentScriptContents' => true
'Output.FixInnerHTML' => true
'Output.FlashCompat' => false
'Output.Newline' => null
'Output.SortAttr' => false
'Output.TidyFormat' => false
'Test.ForceNoIconv' => false
'URI.AllowedSchemes' => [
'http' => true
'https' => true
'mailto' => true
'ftp' => true
'nntp' => true
'news' => true
'tel' => true
]
'URI.AllowedSymbols' => '!$&\'()*+,;='
'URI.Base' => null
'URI.DefaultScheme' => 'http'
'URI.DefinitionID' => null
'URI.DefinitionRev' => 1
'URI.Disable' => false
'URI.DisableExternal' => false
'URI.DisableExternalResources' => false
'URI.DisableResources' => false
'URI.Host' => null
'URI.HostBlacklist' => []
'URI.MakeAbsolute' => false
'URI.Munge' => null
'URI.MungeResources' => false
'URI.MungeSecretKey' => null
'URI.OverrideAllowedSchemes' => true
'URI.SafeIframeHosts' => null
'URI.SafeIframeRegexp' => null
]
)
[info] => [
'Attr.AllowedClasses' => -8
'Attr.AllowedFrameTargets' => 8
'Attr.AllowedRel' => 8
'Attr.AllowedRev' => 8
'Attr.ClassUseCDATA' => -7
'Attr.DefaultImageAlt' => -1
'Attr.DefaultInvalidImage' => 1
'Attr.DefaultInvalidImageAlt' => 1
'Attr.DefaultTextDir' => stdClass#5
(
[type] => 1
[allowed] => [
'ltr' => true
'rtl' => true
]
)
'Attr.EnableID' => 7
'HTML.EnableAttrID' => stdClass#6
(
[key] => 'Attr.EnableID'
[isAlias] => true
)
'Attr.ForbiddenClasses' => 8
'Attr.ID.HTML5' => -7
'Attr.IDBlacklist' => 9
'Attr.IDBlacklistRegexp' => -1
'Attr.IDPrefix' => 1
'Attr.IDPrefixLocal' => 1
'AutoFormat.AutoParagraph' => 7
'AutoFormat.Custom' => 9
'AutoFormat.DisplayLinkURI' => 7
'AutoFormat.Linkify' => 7
'AutoFormat.PurifierLinkify.DocURL' => 1
'AutoFormatParam.PurifierLinkifyDocURL' => stdClass#7
(
[key] => 'AutoFormat.PurifierLinkify.DocURL'
[isAlias] => true
)
'AutoFormat.PurifierLinkify' => 7
'AutoFormat.RemoveEmpty.Predicate' => 10
'AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions' => 8
'AutoFormat.RemoveEmpty.RemoveNbsp' => 7
'AutoFormat.RemoveEmpty' => 7
'AutoFormat.RemoveSpansWithoutAttributes' => 7
'CSS.AllowDuplicates' => 7
'CSS.AllowImportant' => 7
'CSS.AllowTricky' => 7
'CSS.AllowedFonts' => -8
'CSS.AllowedProperties' => -8
'CSS.DefinitionRev' => 5
'CSS.ForbiddenProperties' => 8
'CSS.MaxImgLength' => -1
'CSS.Proprietary' => 7
'CSS.Trusted' => 7
'Cache.DefinitionImpl' => -1
'Core.DefinitionCache' => stdClass#8
(
[key] => 'Cache.DefinitionImpl'
[isAlias] => true
)
'Cache.SerializerPath' => -1
'Cache.SerializerPermissions' => -5
'Core.AggressivelyFixLt' => 7
'Core.AggressivelyRemoveScript' => 7
'Core.AllowHostnameUnderscore' => 7
'Core.AllowParseManyTags' => 7
'Core.CollectErrors' => 7
'Core.ColorKeywords' => 10
'Core.ConvertDocumentToFragment' => 7
'Core.AcceptFullDocuments' => stdClass#9
(
[key] => 'Core.ConvertDocumentToFragment'
[isAlias] => true
)
'Core.DirectLexLineNumberSyncInterval' => 5
'Core.DisableExcludes' => 7
'Core.EnableIDNA' => 7
'Core.Encoding' => 2
'Core.EscapeInvalidChildren' => 7
'Core.EscapeInvalidTags' => 7
'Core.EscapeNonASCIICharacters' => 7
'Core.HiddenElements' => 8
'Core.Language' => 1
'Core.LegacyEntityDecoder' => 7
'Core.LexerImpl' => -11
'Core.MaintainLineNumbers' => -7
'Core.NormalizeNewlines' => 7
'Core.RemoveBlanks' => 7
'Core.RemoveInvalidImg' => 7
'Core.RemoveProcessingInstructions' => 7
'Core.RemoveScriptContents' => -7
'Filter.Custom' => 9
'Filter.ExtractStyleBlocks.Escaping' => 7
'Filter.ExtractStyleBlocksEscaping' => stdClass#10
(
[key] => 'Filter.ExtractStyleBlocks.Escaping'
[isAlias] => true
)
'FilterParam.ExtractStyleBlocksEscaping' => stdClass#11
(
[key] => 'Filter.ExtractStyleBlocks.Escaping'
[isAlias] => true
)
'Filter.ExtractStyleBlocks.Scope' => -1
'Filter.ExtractStyleBlocksScope' => stdClass#12
(
[key] => 'Filter.ExtractStyleBlocks.Scope'
[isAlias] => true
)
'FilterParam.ExtractStyleBlocksScope' => stdClass#13
(
[key] => 'Filter.ExtractStyleBlocks.Scope'
[isAlias] => true
)
'Filter.ExtractStyleBlocks.TidyImpl' => -11
'FilterParam.ExtractStyleBlocksTidyImpl' => stdClass#14
(
[key] => 'Filter.ExtractStyleBlocks.TidyImpl'
[isAlias] => true
)
'Filter.ExtractStyleBlocks' => 7
'Filter.YouTube' => 7
'HTML.Allowed' => -4
'HTML.AllowedAttributes' => -8
'HTML.AllowedComments' => 8
'HTML.AllowedCommentsRegexp' => -1
'HTML.AllowedElements' => -8
'HTML.AllowedModules' => -8
'HTML.Attr.Name.UseCDATA' => 7
'HTML.BlockWrapper' => 1
'HTML.CoreModules' => 8
'HTML.CustomDoctype' => -1
'HTML.DefinitionID' => -1
'HTML.DefinitionRev' => 5
'HTML.Doctype' => stdClass#15
(
[type] => 1
[allow_null] => true
[allowed] => [
'HTML 4.01 Transitional' => true
'HTML 4.01 Strict' => true
'XHTML 1.0 Transitional' => true
'XHTML 1.0 Strict' => true
'XHTML 1.1' => true
]
)
'HTML.FlashAllowFullScreen' => 7
'HTML.ForbiddenAttributes' => 8
'HTML.ForbiddenElements' => 8
'HTML.Forms' => 7
'HTML.MaxImgLength' => -5
'HTML.Nofollow' => 7
'HTML.Parent' => 1
'HTML.Proprietary' => 7
'HTML.SafeEmbed' => 7
'HTML.SafeIframe' => 7
'HTML.SafeObject' => 7
'HTML.SafeScripting' => 8
'HTML.Strict' => 7
'HTML.TargetBlank' => 7
'HTML.TargetNoopener' => 7
'HTML.TargetNoreferrer' => 7
'HTML.TidyAdd' => 8
'HTML.TidyLevel' => stdClass#16
(
[type] => 1
[allowed] => [
'none' => true
'light' => true
'medium' => true
'heavy' => true
]
)
'HTML.TidyRemove' => 8
'HTML.Trusted' => 7
'HTML.XHTML' => 7
'Core.XHTML' => stdClass#17
(
[key] => 'HTML.XHTML'
[isAlias] => true
)
'Output.CommentScriptContents' => 7
'Core.CommentScriptContents' => stdClass#18
(
[key] => 'Output.CommentScriptContents'
[isAlias] => true
)
'Output.FixInnerHTML' => 7
'Output.FlashCompat' => 7
'Output.Newline' => -1
'Output.SortAttr' => 7
'Output.TidyFormat' => 7
'Core.TidyFormat' => stdClass#19
(
[key] => 'Output.TidyFormat'
[isAlias] => true
)
'Test.ForceNoIconv' => 7
'URI.AllowedSchemes' => 8
'URI.AllowedSymbols' => -1
'URI.Base' => -1
'URI.DefaultScheme' => -1
'URI.DefinitionID' => -1
'URI.DefinitionRev' => 5
'URI.Disable' => 7
'Attr.DisableURI' => stdClass#20
(
[key] => 'URI.Disable'
[isAlias] => true
)
'URI.DisableExternal' => 7
'URI.DisableExternalResources' => 7
'URI.DisableResources' => 7
'URI.Host' => -1
'URI.HostBlacklist' => 9
'URI.MakeAbsolute' => 7
'URI.Munge' => -1
'URI.MungeResources' => 7
'URI.MungeSecretKey' => -1
'URI.OverrideAllowedSchemes' => 7
'URI.SafeIframeHosts' => -8
'URI.SafeIframeRegexp' => -1
]
)
[*:definitions] => [
'HTML' => null
'URI' => null
]
[*:finalized] => true
[*:plist] => HTMLPurifier_PropertyList#21
(
[*:data] => [
'HTML.TargetBlank' => true
'URI.AllowedSchemes' => [
'http' => true
'https' => true
'mailto' => true
'tel' => true
]
'AutoFormat.RemoveEmpty' => true
'HTML.DefinitionID' => 'html5-definitions'
'Cache.SerializerPath' => '/tmp/purifier'
'HTML.Allowed' => 'i,b,u,a[href],mark'
]
[*:parent] => HTMLPurifier_PropertyList#4(...)
[*:cache] => [
'Attr.AllowedClasses' => null
'Attr.AllowedFrameTargets' => []
'Attr.AllowedRel' => []
'Attr.AllowedRev' => []
'Attr.ClassUseCDATA' => null
'Attr.DefaultImageAlt' => null
'Attr.DefaultInvalidImage' => ''
'Attr.DefaultInvalidImageAlt' => 'Invalid image'
'Attr.DefaultTextDir' => 'ltr'
'Attr.EnableID' => false
'Attr.ForbiddenClasses' => []
'Attr.ID.HTML5' => null
'Attr.IDBlacklist' => []
'Attr.IDBlacklistRegexp' => null
'Attr.IDPrefix' => ''
'Attr.IDPrefixLocal' => ''
'AutoFormat.AutoParagraph' => false
'AutoFormat.Custom' => []
'AutoFormat.DisplayLinkURI' => false
'AutoFormat.Linkify' => false
'AutoFormat.PurifierLinkify.DocURL' => '#%s'
'AutoFormat.PurifierLinkify' => false
'AutoFormat.RemoveEmpty.Predicate' => [
'colgroup' => []
'th' => []
'td' => []
'iframe' => [
0 => 'src'
]
]
'AutoFormat.RemoveEmpty.RemoveNbsp.Exceptions' => [
'td' => true
'th' => true
]
'AutoFormat.RemoveEmpty.RemoveNbsp' => false
'AutoFormat.RemoveEmpty' => true
'AutoFormat.RemoveSpansWithoutAttributes' => false
'CSS.AllowDuplicates' => false
'CSS.AllowImportant' => false
'CSS.AllowTricky' => false
'CSS.AllowedFonts' => null
'CSS.AllowedProperties' => null
'CSS.DefinitionRev' => 1
'CSS.ForbiddenProperties' => []
'CSS.MaxImgLength' => null
'CSS.Proprietary' => false
'CSS.Trusted' => false
'Cache.DefinitionImpl' => 'Serializer'
'Cache.SerializerPath' => '/tmp/purifier'
'Cache.SerializerPermissions' => 493
'Core.AggressivelyFixLt' => true
'Core.AggressivelyRemoveScript' => true
'Core.AllowHostnameUnderscore' => false
'Core.AllowParseManyTags' => false
'Core.CollectErrors' => false
'Core.ColorKeywords' => [
'aliceblue' => '#F0F8FF'
'antiquewhite' => '#FAEBD7'
'aqua' => '#00FFFF'
'aquamarine' => '#7FFFD4'
'azure' => '#F0FFFF'
'beige' => '#F5F5DC'
'bisque' => '#FFE4C4'
'black' => '#000000'
'blanchedalmond' => '#FFEBCD'
'blue' => '#0000FF'
'blueviolet' => '#8A2BE2'
'brown' => '#A52A2A'
'burlywood' => '#DEB887'
'cadetblue' => '#5F9EA0'
'chartreuse' => '#7FFF00'
'chocolate' => '#D2691E'
'coral' => '#FF7F50'
'cornflowerblue' => '#6495ED'
'cornsilk' => '#FFF8DC'
'crimson' => '#DC143C'
'cyan' => '#00FFFF'
'darkblue' => '#00008B'
'darkcyan' => '#008B8B'
'darkgoldenrod' => '#B8860B'
'darkgray' => '#A9A9A9'
'darkgrey' => '#A9A9A9'
'darkgreen' => '#006400'
'darkkhaki' => '#BDB76B'
'darkmagenta' => '#8B008B'
'darkolivegreen' => '#556B2F'
'darkorange' => '#FF8C00'
'darkorchid' => '#9932CC'
'darkred' => '#8B0000'
'darksalmon' => '#E9967A'
'darkseagreen' => '#8FBC8F'
'darkslateblue' => '#483D8B'
'darkslategray' => '#2F4F4F'
'darkslategrey' => '#2F4F4F'
'darkturquoise' => '#00CED1'
'darkviolet' => '#9400D3'
'deeppink' => '#FF1493'
'deepskyblue' => '#00BFFF'
'dimgray' => '#696969'
'dimgrey' => '#696969'
'dodgerblue' => '#1E90FF'
'firebrick' => '#B22222'
'floralwhite' => '#FFFAF0'
'forestgreen' => '#228B22'
'fuchsia' => '#FF00FF'
'gainsboro' => '#DCDCDC'
'ghostwhite' => '#F8F8FF'
'gold' => '#FFD700'
'goldenrod' => '#DAA520'
'gray' => '#808080'
'grey' => '#808080'
'green' => '#008000'
'greenyellow' => '#ADFF2F'
'honeydew' => '#F0FFF0'
'hotpink' => '#FF69B4'
'indianred' => '#CD5C5C'
'indigo' => '#4B0082'
'ivory' => '#FFFFF0'
'khaki' => '#F0E68C'
'lavender' => '#E6E6FA'
'lavenderblush' => '#FFF0F5'
'lawngreen' => '#7CFC00'
'lemonchiffon' => '#FFFACD'
'lightblue' => '#ADD8E6'
'lightcoral' => '#F08080'
'lightcyan' => '#E0FFFF'
'lightgoldenrodyellow' => '#FAFAD2'
'lightgray' => '#D3D3D3'
'lightgrey' => '#D3D3D3'
'lightgreen' => '#90EE90'
'lightpink' => '#FFB6C1'
'lightsalmon' => '#FFA07A'
'lightseagreen' => '#20B2AA'
'lightskyblue' => '#87CEFA'
'lightslategray' => '#778899'
'lightslategrey' => '#778899'
'lightsteelblue' => '#B0C4DE'
'lightyellow' => '#FFFFE0'
'lime' => '#00FF00'
'limegreen' => '#32CD32'
'linen' => '#FAF0E6'
'magenta' => '#FF00FF'
'maroon' => '#800000'
'mediumaquamarine' => '#66CDAA'
'mediumblue' => '#0000CD'
'mediumorchid' => '#BA55D3'
'mediumpurple' => '#9370DB'
'mediumseagreen' => '#3CB371'
'mediumslateblue' => '#7B68EE'
'mediumspringgreen' => '#00FA9A'
'mediumturquoise' => '#48D1CC'
'mediumvioletred' => '#C71585'
'midnightblue' => '#191970'
'mintcream' => '#F5FFFA'
'mistyrose' => '#FFE4E1'
'moccasin' => '#FFE4B5'
'navajowhite' => '#FFDEAD'
'navy' => '#000080'
'oldlace' => '#FDF5E6'
'olive' => '#808000'
'olivedrab' => '#6B8E23'
'orange' => '#FFA500'
'orangered' => '#FF4500'
'orchid' => '#DA70D6'
'palegoldenrod' => '#EEE8AA'
'palegreen' => '#98FB98'
'paleturquoise' => '#AFEEEE'
'palevioletred' => '#DB7093'
'papayawhip' => '#FFEFD5'
'peachpuff' => '#FFDAB9'
'peru' => '#CD853F'
'pink' => '#FFC0CB'
'plum' => '#DDA0DD'
'powderblue' => '#B0E0E6'
'purple' => '#800080'
'rebeccapurple' => '#663399'
'red' => '#FF0000'
'rosybrown' => '#BC8F8F'
'royalblue' => '#4169E1'
'saddlebrown' => '#8B4513'
'salmon' => '#FA8072'
'sandybrown' => '#F4A460'
'seagreen' => '#2E8B57'
'seashell' => '#FFF5EE'
'sienna' => '#A0522D'
'silver' => '#C0C0C0'
'skyblue' => '#87CEEB'
'slateblue' => '#6A5ACD'
'slategray' => '#708090'
'slategrey' => '#708090'
'snow' => '#FFFAFA'
'springgreen' => '#00FF7F'
'steelblue' => '#4682B4'
'tan' => '#D2B48C'
'teal' => '#008080'
'thistle' => '#D8BFD8'
'tomato' => '#FF6347'
'turquoise' => '#40E0D0'
'violet' => '#EE82EE'
'wheat' => '#F5DEB3'
'white' => '#FFFFFF'
'whitesmoke' => '#F5F5F5'
'yellow' => '#FFFF00'
'yellowgreen' => '#9ACD32'
]
'Core.ConvertDocumentToFragment' => true
'Core.DirectLexLineNumberSyncInterval' => 0
'Core.DisableExcludes' => false
'Core.EnableIDNA' => false
'Core.Encoding' => 'utf-8'
'Core.EscapeInvalidChildren' => false
'Core.EscapeInvalidTags' => false
'Core.EscapeNonASCIICharacters' => false
'Core.HiddenElements' => [
'script' => true
'style' => true
]
'Core.Language' => 'en'
'Core.LegacyEntityDecoder' => false
'Core.LexerImpl' => null
'Core.MaintainLineNumbers' => null
'Core.NormalizeNewlines' => true
'Core.RemoveBlanks' => false
'Core.RemoveInvalidImg' => true
'Core.RemoveProcessingInstructions' => false
'Core.RemoveScriptContents' => null
'Filter.Custom' => []
'Filter.ExtractStyleBlocks.Escaping' => true
'Filter.ExtractStyleBlocks.Scope' => null
'Filter.ExtractStyleBlocks.TidyImpl' => null
'Filter.ExtractStyleBlocks' => false
'Filter.YouTube' => false
'HTML.Allowed' => 'i,b,u,a[href],mark'
'HTML.AllowedAttributes' => null
'HTML.AllowedComments' => []
'HTML.AllowedCommentsRegexp' => null
'HTML.AllowedElements' => null
'HTML.AllowedModules' => null
'HTML.Attr.Name.UseCDATA' => false
'HTML.BlockWrapper' => 'p'
'HTML.CoreModules' => [
'Structure' => true
'Text' => true
'Hypertext' => true
'List' => true
'NonXMLCommonAttributes' => true
'XMLCommonAttributes' => true
'CommonAttributes' => true
]
'HTML.CustomDoctype' => null
'HTML.DefinitionID' => 'html5-definitions'
'HTML.DefinitionRev' => 1
'HTML.Doctype' => null
'HTML.FlashAllowFullScreen' => false
'HTML.ForbiddenAttributes' => []
'HTML.ForbiddenElements' => []
'HTML.Forms' => false
'HTML.MaxImgLength' => null
'HTML.Nofollow' => false
'HTML.Parent' => 'div'
'HTML.Proprietary' => false
'HTML.SafeEmbed' => false
'HTML.SafeIframe' => false
'HTML.SafeObject' => false
'HTML.SafeScripting' => []
'HTML.Strict' => false
'HTML.TargetBlank' => true
'HTML.TargetNoopener' => true
'HTML.TargetNoreferrer' => true
'HTML.TidyAdd' => []
'HTML.TidyLevel' => 'medium'
'HTML.TidyRemove' => []
'HTML.Trusted' => false
'HTML.XHTML' => true
'Output.CommentScriptContents' => true
'Output.FixInnerHTML' => true
'Output.FlashCompat' => false
'Output.Newline' => null
'Output.SortAttr' => false
'Output.TidyFormat' => false
'Test.ForceNoIconv' => false
'URI.AllowedSchemes' => [
'http' => true
'https' => true
'mailto' => true
'tel' => true
]
'URI.AllowedSymbols' => '!$&\'()*+,;='
'URI.Base' => null
'URI.DefaultScheme' => 'http'
'URI.DefinitionID' => null
'URI.DefinitionRev' => 1
'URI.Disable' => false
'URI.DisableExternal' => false
'URI.DisableExternalResources' => false
'URI.DisableResources' => false
'URI.Host' => null
'URI.HostBlacklist' => []
'URI.MakeAbsolute' => false
'URI.Munge' => null
'URI.MungeResources' => false
'URI.MungeSecretKey' => null
'URI.OverrideAllowedSchemes' => true
'URI.SafeIframeHosts' => null
'URI.SafeIframeRegexp' => null
]
)
[HTMLPurifier_Config:aliasMode] => null
[chatty] => true
[HTMLPurifier_Config:lock] => null
)
]
]
3 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/ezyang/htmlpurifier/library/HTMLPurifier/DefinitionCache/Decorator/Cleanup.php'
'line' => 72
'function' => 'cleanup'
'class' => 'HTMLPurifier_DefinitionCache_Decorator'
'type' => '->'
'args' => [
0 => HTMLPurifier_Config#2(...)
]
]
4 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php'
'line' => 579
'function' => 'get'
'class' => 'HTMLPurifier_DefinitionCache_Decorator_Cleanup'
'type' => '->'
'args' => [
0 => HTMLPurifier_Config#2(...)
]
]
5 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/ezyang/htmlpurifier/library/HTMLPurifier/Config.php'
'line' => 654
'function' => 'getDefinition'
'class' => 'HTMLPurifier_Config'
'type' => '->'
'args' => [
0 => 'HTML'
1 => true
2 => true
]
]
6 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/codex-team/editor.js/EditorJS/BlockHandler.php'
'line' => 249
'function' => 'maybeGetRawHTMLDefinition'
'class' => 'HTMLPurifier_Config'
'type' => '->'
'args' => []
]
7 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/codex-team/editor.js/EditorJS/BlockHandler.php'
'line' => 218
'function' => 'getPurifier'
'class' => 'EditorJS\\BlockHandler'
'type' => '->'
'args' => [
0 => 'i,b,u,a[href],mark'
]
]
8 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/codex-team/editor.js/EditorJS/BlockHandler.php'
'line' => 74
'function' => 'sanitize'
'class' => 'EditorJS\\BlockHandler'
'type' => '->'
'args' => [
0 => [
'text' => [
'type' => 'string'
'allowedTags' => 'i,b,u,a[href],mark'
]
]
1 => [
'text' => 'Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики: ношение на правой руке традиционно подчеркивает активную внешнюю энергию, логику и статус (особенно если это золотой браслет), в то время как браслет на левой руке чаще символизирует интуицию, творческое начало и внутреннюю защиту.'
]
]
]
9 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/codex-team/editor.js/EditorJS/EditorJS.php'
'line' => 109
'function' => 'sanitizeBlock'
'class' => 'EditorJS\\BlockHandler'
'type' => '->'
'args' => [
0 => 'paragraph'
1 => [
'text' => 'Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики: ношение на правой руке традиционно подчеркивает активную внешнюю энергию, логику и статус (особенно если это золотой браслет), в то время как браслет на левой руке чаще символизирует интуицию, творческое начало и внутреннюю защиту.'
]
2 => []
]
]
10 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/app_project/widgets/content/EditorJs/EditorJsWidget.php'
'line' => 42
'function' => 'getBlocks'
'class' => 'EditorJS\\EditorJS'
'type' => '->'
'args' => []
]
11 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/base/BaseObject.php'
'line' => 112
'function' => 'init'
'class' => 'app\\app_project\\widgets\\content\\EditorJs\\EditorJsWidget'
'type' => '->'
'args' => []
]
12 => [
'function' => '__construct'
'class' => 'yii\\base\\BaseObject'
'type' => '->'
'args' => [
0 => [
'content' => '{\"time\":1784231526322,\"blocks\":[{\"id\":\"njoFxqvGdy\",\"type\":\"paragraph\",\"data\":{\"text\":\"Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики: ношение на правой руке традиционно подчеркивает активную внешнюю энергию, логику и статус (особенно если это золотой браслет), в то время как браслет на левой руке чаще символизирует интуицию, творческое начало и внутреннюю защиту.\"},\"tunes\":{}},{\"id\":\"0ZlLuPnwt_\",\"type\":\"anchorLinks\",\"data\":{\"items\":[{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"anchor\":\"istoriya-brasleta\"},{\"text\":\"Функции браслета в различных культурах: зачем его носили предки\",\"anchor\":\"funktsii-brasleta\"},{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"anchor\":\"na-kakoy-ruke\"},{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"anchor\":\"simvolika-ruk\"},{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"anchor\":\"pravila-i-primety\"},{\"text\":\"Мнение эксперта violet\",\"anchor\":\"expert-block\"},{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"anchor\":\"faq-block\"},{\"text\":\"Источники\",\"anchor\":\"sources-block\"}]},\"tunes\":{}},{\"id\":\"wz2x5ePp8q\",\"type\":\"header\",\"data\":{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"istoriya-brasleta\"}}},{\"id\":\"kXpbUMNAes\",\"type\":\"paragraph\",\"data\":{\"text\":\"История браслетов насчитывает десятки тысяч лет — древнейшие археологические находки (например, браслет из зеленоватого хлоритолита, найденный в Денисовой пещере на Алтае) датируются эпохой палеолита. Название украшения произошло от французского слова bracelet, корень которого восходит к латинскому brachium — «рука».\"},\"tunes\":{}},{\"id\":\"HpB4rjPiZb\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>В разные исторические эпохи этот элемент менял свои визуальные формы и материалы:</b>\"},\"tunes\":{}},{\"id\":\"wWmtMJcPtx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tКаменный век: Изделия изготавливались из бивней мамонтов, костей животных, ракушек, кожи и гибких древесных волокон.\"},\"tunes\":{}},{\"id\":\"My4BhcejIx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревний Египет: Браслеты превратились в массивные золотые обручи, инкрустированные бирюзой, лазуритом и карнеолом. Они плотно ассоциировались с божественной властью фараонов и жрецов.\"},\"tunes\":{}},{\"id\":\"O1QObde-_A\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tАнтичность (Греция и Рим): Браслеты носили как женщины, так и мужчины. Римские воины использовали широкие металлические наручи из бронзы и золота для защиты запястий в ближнем бою.\"},\"tunes\":{}},{\"id\":\"wW7p9TVsly\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревняя Русь: Украшения назывались «обручами» или «наручами». Они скрепляли широкие рукава традиционной женской рубахи. На них часто изображались мифологические сюжеты, русалии и орнаменты-обереги.\"},\"tunes\":{}},{\"id\":\"XyE-nl0he-\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/26af84a4302d8d2752d881fcdd318a68.jpg\"},\"caption\":\"История браслета\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"1s01xzNjfA\",\"type\":\"header\",\"data\":{\"text\":\" Функции браслета в различных культурах: зачем его носили предки\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"funktsii-brasleta\"}}},{\"id\":\"0vwjZ2jFUU\",\"type\":\"paragraph\",\"data\":{\"text\":\"Понимая, зачем нужны браслеты в историческом контексте, становится ясно, что декоративная роль всегда была вторичной. Первостепенное обозначение браслетов сводилось к сакральным, социальным и защитным аспектам.\"},\"tunes\":{}},{\"id\":\"Qd-J3ocHwL\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>Основные функции браслета в истории цивилизаций:</b>\"},\"tunes\":{}},{\"id\":\"QPtrGbCrQ7\",\"type\":\"list\",\"data\":{\"style\":\"ordered\",\"items\":[{\"content\":\"Магическая (обережная): Браслет смысл которого заключался в создании замкнутого круга, закрывал энергетические каналы человека на запястьях и защищал от злых духов, сглаза или болезней.\",\"items\":[]},{\"content\":\"Социально-иераХическая: По материалу украшения (золото, платина, кость, железо) мгновенно определялся сословный статус, богатство рода и кастовая принадлежность владельца.\",\"items\":[]},{\"content\":\" Информационная (паспорт воина): В скандинавских и германских племенах тяжелые серебряные и золотые браслеты-гривны вручались конунгом верным воинам как клятва верности и материальный эквивалент боевых заслуг.\",\"items\":[]}]},\"tunes\":{}},{\"id\":\"fxGqwGkGIN\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/c4cf96d67547f665c6d72bb3da399f60.jpg\"},\"caption\":\"Функции браслетов в различных культурах\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"I1OKoEwqG1\",\"type\":\"header\",\"data\":{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"na-kakoy-ruke\"}}},{\"id\":\"b492JmGTlL\",\"type\":\"paragraph\",\"data\":{\"text\":\"В современном мире строгих ограничений, предписывающих, на какую руку можно или нельзя надевать украшения, не существует. Главный критерий — личное удобство, сохранность изделия и сочетаемость с другими аксессуарами. Однако современный классический этикет выработал несколько общих рекомендаций.\"},\"tunes\":{}},{\"id\":\"6OahuWBzT4\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет женщины:</b>\"},\"tunes\":{}},{\"id\":\"YUHGy00vRn\",\"type\":\"paragraph\",\"data\":{\"text\":\"Исторически большинство женщин предпочитает надевать браслет на правую руку, поскольку большинство людей являются правшами. Активная правая рука чаще находится на виду при жестикуляции, приветствии или письме, что позволяет эффектно продемонстрировать ювелирное изделие. Если женщина одновременно носит наручные часы, их традиционно надевают на левое запястье, а браслеты — на правое, чтобы металл корпуса и замков не царапал друг друга.\"},\"tunes\":{}},{\"id\":\"IjzeIdqoLx\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет мужчины:</b>\"},\"tunes\":{}},{\"id\":\"ehxibL_MVP\",\"type\":\"paragraph\",\"data\":{\"text\":\"Мужской ювелирный этикет более сдержан. Выбирая, на какой руке носят brasslet мужчины, стилисты советуют ориентироваться на баланс с часами. Если на левой руке надеты крупные механические часы, лаконичный кожаный, стальной или золотой браслет перемещают на правую руку. В стиле кэжуал допускается ношение часов и тонкого браслета на одном (обычно левом) запястье.\"},\"tunes\":{}},{\"id\":\"sx_DlwSMgi\",\"type\":\"header\",\"data\":{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"simvolika-ruk\"}}},{\"id\":\"H8PkUBxKIi\",\"type\":\"paragraph\",\"data\":{\"text\":\"Разделение на правую и левую стороны уходит корнями в философию, эзотерику и древние психофизиологические концепции. То, что означает браслет на руке, напрямую связано с полушариями человеческого мозга и потоками энергии.\"},\"tunes\":{}},{\"id\":\"JrtlVTyIFl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на левой руке:</b> Левая сторона во многих восточных философиях (включая концепцию Инь) считается «принимающей». Она отвечает за подсознание, интуицию, творчество, внутренние эмоции и защиту от внешнего негатива. Ношение браслета здесь символизирует желание укрепить внутренний баланс, развить интуитивные способности или защитить личные границы.\"},\"tunes\":{}},{\"id\":\"qcN0b4_LWl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на правой руке:</b> Правая сторона (энергия Ян) считается «отдающей». Она управляет логикой, действием, волей, карьерой, внешними коммуникациями и социальным статусом. Твердый золотой браслет на правой руке транслирует окружающим уверенность, материальный успех, авторитет и лидерские качества владельца.\"},\"tunes\":{}},{\"id\":\"1nXPkx03h5\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/149edaa32e18067590ada7c465b7f910.jpg\"},\"caption\":\"На какой руке носить браслет\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"zCaJEtF0Tk\",\"type\":\"header\",\"data\":{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"pravila-i-primety\"}}},{\"id\":\"KxoiRkUONh\",\"type\":\"paragraph\",\"data\":{\"text\":\"В народном фольклоре и ювелирном сообществе сформировались определенные приметы и правила стиля, которые помогают избежать стилистических ошибок и сохранить целостность украшений.\"},\"tunes\":{}},{\"id\":\"oVvEAzM4ML\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Сочетание металлов</b>: Современная мода позволяет одновременно носить белое золото, платину и классическое желтое золото на одной руке, при условии, что изделия объединены общим стилем или геометрией.\"},\"tunes\":{}},{\"id\":\"Z_Q0M8LioA\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Примета на разрыв</b>: считается, что, если браслет-оберег (например, с натуральными защитными камнями) внезапно рвется или теряется сам по себе, это означает, что он выполнил свою защитную функцию, приняв на себя сильный энергетический удар или отведя беду от владельца.\"},\"tunes\":{}},{\"id\":\"AFNZOwU2AB\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Правило соразмерности</b>: Массивные широкие браслеты лучше носить сольно, чтобы не перегружать образ. Утонченные жесткие обручи или цепочки тонкого плетения, напротив, великолепно смотрятся сетами из 3–5 штук на одном запястье.\"},\"tunes\":{}},{\"id\":\"XBWFq9yjdw\",\"type\":\"header\",\"data\":{\"text\":\"Мнение эксперта violet\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"expert-block\"}}},{\"id\":\"HFTc-59uAW\",\"type\":\"quote\",\"data\":{\"text\":\"«Главная ошибка, с которой я сталкиваюсь при подборе украшений для клиентов — это игнорирование соразмерности браслета и анатомических особенностей запястья. Тонкая изящная цепочка просто потеряется на широком запястье, а избыточно массивный, широкий кафф утяжелит хрупкую женскую ручку.Если вы выбираете золотой браслет, который планируете носить каждый день, обратите внимание на эргономику замка и плотность прилегания к коже. Между металлом и запястьем должно оставаться свободноепространство примерно в один палец — тогда изделие будет красиво скользить, подчеркивая хрупкость руки, и не доставит дискомфорта при сгибании кисти. И помните про баланс: если на вашей руке надет крупный, притягивающий внимание стейтмент-браслет, откажитесь от массивных коктейльных колец на этой же кисти, чтобы образ оставался элегантным, а не перегруженным».\",\"caption\":\"Ефремова Мария Владимировна - главный редактор Ювелирного дома VIOLET\",\"alignment\":\"left\"},\"tunes\":{}},{\"id\":\"hHpqU-ephW\",\"type\":\"header\",\"data\":{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"faq-block\"}}},{\"id\":\"S6UZkRnZ7Q\",\"type\":\"faq\",\"data\":{\"items\":[{\"question\":\"На какой руке носят браслет женщины по правилам этикета?\",\"answer\":\"Согласно классическому ювелирному этикету, браслет на руке носят женщины преимущественно с правой стороны. Это обусловлено тем, что правая рука чаще находится в движении и на виду при жестикуляции. Однако если на правой руке уже есть массивное акцентное кольцо, украшение лучше переодеть на левую сторону, чтобы сбалансировать ювелирный ансамбль.\"},{\"question\":\"На какой руке носят золотой браслет мужчины и женщины?\",\"answer\":\"Четких гендерных ограничений нет. Но традиционно золотой браслет на какой руке бы ни находился, он должен гармонировать с часами. Изделия из желтого или красного золота чаще надевают на правую руку правши, оставляя левую для наручных часов. Если часы выполнены из стали или белого золота, то золотой браслет теплого оттенка на левой руке рядом с ними носить не стоит — лучше развести их на разные запястья.\"},{\"question\":\"Что означает браслет на левой руке согласно народным приметам?\",\"answer\":\"Народный фольклор и браслет на руку, приметы связывают левое запястье с защитой от сглаза и внутренним миром. Считается, что браслет на левой руке оберегает владельца от зависти, негативной энергетики и помогает сохранить внутреннюю гармонию. Именно на левую сторону принято надевать защитные амулеты, красные нити и браслеты с камнями-оберегами.\"},{\"question\":\"Что значит браслет на правой руке с точки зрения энергетики?\",\"answer\":\"Браслет правая рука воспринимает как символ активного действия. Поскольку правая сторона отвечает за логику, рацио, волю и успех в социуме, украшение на этом запястье активизирует деловые качества, помогает в переговорах и символизирует уверенность в себе. Золотой браслет на этой руке часто носят как манифестацию лидерства и материального достатка.\"},{\"question\":\"Можно ли носить браслеты на руке одновременно на левой и правой стороне?\",\"answer\":\"Да, можно ли носить браслеты на руке сразу на обоих запястьях — вопрос актуальный для современной моды. Это частый прием в стилях бохо или авангард. Главное правило — соблюдать визуальный баланс. Например, если на одной руке надет широкий и массивный браслет-кафф, то на другую руку лучше выбрать сет из нескольких тонких и изящных цепочек, чтобы образ не выглядел перегруженным.\"},{\"question\":\"Для чего носят браслеты из натуральных камней и каков их смысл?\",\"answer\":\"Помимо декоративной функции, такие браслеты и их значение тесно связаны с литотерапией. Браслет символизирует непрерывный круг, транслирующий энергию минерала в тело через биологически активные точки на запястье. Их носят для привлечения удачи, гармонизации эмоционального фона или как персональный якорь для концентрации на личных целях.\"}]},\"tunes\":{}},{\"id\":\"LTZQXWDyRb\",\"type\":\"header\",\"data\":{\"text\":\"Источники\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"sources-block\"}}},{\"id\":\"zSr_qCUW7t\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tГОСТ Р 53047-2008 — Изделия ювелирные. Термины и определения. Классификация и типы конструкций шейных и запястных украшений.\"},\"tunes\":{}},{\"id\":\"vfgjDkXuNu\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tОСТ 117-3-002-95 — Изделия ювелирные из драгоценных металлов. Общие технические условия (в части прочности замковых соединений браслетов и цепей).\"},\"tunes\":{}},{\"id\":\"6FT7hXRpvz\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tИсторико-археологические сборники Института археологии РАН (материалы по исследованию древнерусских наручей и античных украшений).\"},\"tunes\":{}}],\"version\":\"2.25.0\"}'
]
]
]
13 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/di/Container.php'
'line' => 440
'function' => 'newInstanceArgs'
'class' => 'ReflectionClass'
'type' => '->'
'args' => [
0 => [
0 => [
'content' => '{\"time\":1784231526322,\"blocks\":[{\"id\":\"njoFxqvGdy\",\"type\":\"paragraph\",\"data\":{\"text\":\"Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики: ношение на правой руке традиционно подчеркивает активную внешнюю энергию, логику и статус (особенно если это золотой браслет), в то время как браслет на левой руке чаще символизирует интуицию, творческое начало и внутреннюю защиту.\"},\"tunes\":{}},{\"id\":\"0ZlLuPnwt_\",\"type\":\"anchorLinks\",\"data\":{\"items\":[{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"anchor\":\"istoriya-brasleta\"},{\"text\":\"Функции браслета в различных культурах: зачем его носили предки\",\"anchor\":\"funktsii-brasleta\"},{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"anchor\":\"na-kakoy-ruke\"},{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"anchor\":\"simvolika-ruk\"},{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"anchor\":\"pravila-i-primety\"},{\"text\":\"Мнение эксперта violet\",\"anchor\":\"expert-block\"},{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"anchor\":\"faq-block\"},{\"text\":\"Источники\",\"anchor\":\"sources-block\"}]},\"tunes\":{}},{\"id\":\"wz2x5ePp8q\",\"type\":\"header\",\"data\":{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"istoriya-brasleta\"}}},{\"id\":\"kXpbUMNAes\",\"type\":\"paragraph\",\"data\":{\"text\":\"История браслетов насчитывает десятки тысяч лет — древнейшие археологические находки (например, браслет из зеленоватого хлоритолита, найденный в Денисовой пещере на Алтае) датируются эпохой палеолита. Название украшения произошло от французского слова bracelet, корень которого восходит к латинскому brachium — «рука».\"},\"tunes\":{}},{\"id\":\"HpB4rjPiZb\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>В разные исторические эпохи этот элемент менял свои визуальные формы и материалы:</b>\"},\"tunes\":{}},{\"id\":\"wWmtMJcPtx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tКаменный век: Изделия изготавливались из бивней мамонтов, костей животных, ракушек, кожи и гибких древесных волокон.\"},\"tunes\":{}},{\"id\":\"My4BhcejIx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревний Египет: Браслеты превратились в массивные золотые обручи, инкрустированные бирюзой, лазуритом и карнеолом. Они плотно ассоциировались с божественной властью фараонов и жрецов.\"},\"tunes\":{}},{\"id\":\"O1QObde-_A\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tАнтичность (Греция и Рим): Браслеты носили как женщины, так и мужчины. Римские воины использовали широкие металлические наручи из бронзы и золота для защиты запястий в ближнем бою.\"},\"tunes\":{}},{\"id\":\"wW7p9TVsly\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревняя Русь: Украшения назывались «обручами» или «наручами». Они скрепляли широкие рукава традиционной женской рубахи. На них часто изображались мифологические сюжеты, русалии и орнаменты-обереги.\"},\"tunes\":{}},{\"id\":\"XyE-nl0he-\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/26af84a4302d8d2752d881fcdd318a68.jpg\"},\"caption\":\"История браслета\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"1s01xzNjfA\",\"type\":\"header\",\"data\":{\"text\":\" Функции браслета в различных культурах: зачем его носили предки\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"funktsii-brasleta\"}}},{\"id\":\"0vwjZ2jFUU\",\"type\":\"paragraph\",\"data\":{\"text\":\"Понимая, зачем нужны браслеты в историческом контексте, становится ясно, что декоративная роль всегда была вторичной. Первостепенное обозначение браслетов сводилось к сакральным, социальным и защитным аспектам.\"},\"tunes\":{}},{\"id\":\"Qd-J3ocHwL\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>Основные функции браслета в истории цивилизаций:</b>\"},\"tunes\":{}},{\"id\":\"QPtrGbCrQ7\",\"type\":\"list\",\"data\":{\"style\":\"ordered\",\"items\":[{\"content\":\"Магическая (обережная): Браслет смысл которого заключался в создании замкнутого круга, закрывал энергетические каналы человека на запястьях и защищал от злых духов, сглаза или болезней.\",\"items\":[]},{\"content\":\"Социально-иераХическая: По материалу украшения (золото, платина, кость, железо) мгновенно определялся сословный статус, богатство рода и кастовая принадлежность владельца.\",\"items\":[]},{\"content\":\" Информационная (паспорт воина): В скандинавских и германских племенах тяжелые серебряные и золотые браслеты-гривны вручались конунгом верным воинам как клятва верности и материальный эквивалент боевых заслуг.\",\"items\":[]}]},\"tunes\":{}},{\"id\":\"fxGqwGkGIN\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/c4cf96d67547f665c6d72bb3da399f60.jpg\"},\"caption\":\"Функции браслетов в различных культурах\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"I1OKoEwqG1\",\"type\":\"header\",\"data\":{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"na-kakoy-ruke\"}}},{\"id\":\"b492JmGTlL\",\"type\":\"paragraph\",\"data\":{\"text\":\"В современном мире строгих ограничений, предписывающих, на какую руку можно или нельзя надевать украшения, не существует. Главный критерий — личное удобство, сохранность изделия и сочетаемость с другими аксессуарами. Однако современный классический этикет выработал несколько общих рекомендаций.\"},\"tunes\":{}},{\"id\":\"6OahuWBzT4\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет женщины:</b>\"},\"tunes\":{}},{\"id\":\"YUHGy00vRn\",\"type\":\"paragraph\",\"data\":{\"text\":\"Исторически большинство женщин предпочитает надевать браслет на правую руку, поскольку большинство людей являются правшами. Активная правая рука чаще находится на виду при жестикуляции, приветствии или письме, что позволяет эффектно продемонстрировать ювелирное изделие. Если женщина одновременно носит наручные часы, их традиционно надевают на левое запястье, а браслеты — на правое, чтобы металл корпуса и замков не царапал друг друга.\"},\"tunes\":{}},{\"id\":\"IjzeIdqoLx\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет мужчины:</b>\"},\"tunes\":{}},{\"id\":\"ehxibL_MVP\",\"type\":\"paragraph\",\"data\":{\"text\":\"Мужской ювелирный этикет более сдержан. Выбирая, на какой руке носят brasslet мужчины, стилисты советуют ориентироваться на баланс с часами. Если на левой руке надеты крупные механические часы, лаконичный кожаный, стальной или золотой браслет перемещают на правую руку. В стиле кэжуал допускается ношение часов и тонкого браслета на одном (обычно левом) запястье.\"},\"tunes\":{}},{\"id\":\"sx_DlwSMgi\",\"type\":\"header\",\"data\":{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"simvolika-ruk\"}}},{\"id\":\"H8PkUBxKIi\",\"type\":\"paragraph\",\"data\":{\"text\":\"Разделение на правую и левую стороны уходит корнями в философию, эзотерику и древние психофизиологические концепции. То, что означает браслет на руке, напрямую связано с полушариями человеческого мозга и потоками энергии.\"},\"tunes\":{}},{\"id\":\"JrtlVTyIFl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на левой руке:</b> Левая сторона во многих восточных философиях (включая концепцию Инь) считается «принимающей». Она отвечает за подсознание, интуицию, творчество, внутренние эмоции и защиту от внешнего негатива. Ношение браслета здесь символизирует желание укрепить внутренний баланс, развить интуитивные способности или защитить личные границы.\"},\"tunes\":{}},{\"id\":\"qcN0b4_LWl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на правой руке:</b> Правая сторона (энергия Ян) считается «отдающей». Она управляет логикой, действием, волей, карьерой, внешними коммуникациями и социальным статусом. Твердый золотой браслет на правой руке транслирует окружающим уверенность, материальный успех, авторитет и лидерские качества владельца.\"},\"tunes\":{}},{\"id\":\"1nXPkx03h5\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/149edaa32e18067590ada7c465b7f910.jpg\"},\"caption\":\"На какой руке носить браслет\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"zCaJEtF0Tk\",\"type\":\"header\",\"data\":{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"pravila-i-primety\"}}},{\"id\":\"KxoiRkUONh\",\"type\":\"paragraph\",\"data\":{\"text\":\"В народном фольклоре и ювелирном сообществе сформировались определенные приметы и правила стиля, которые помогают избежать стилистических ошибок и сохранить целостность украшений.\"},\"tunes\":{}},{\"id\":\"oVvEAzM4ML\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Сочетание металлов</b>: Современная мода позволяет одновременно носить белое золото, платину и классическое желтое золото на одной руке, при условии, что изделия объединены общим стилем или геометрией.\"},\"tunes\":{}},{\"id\":\"Z_Q0M8LioA\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Примета на разрыв</b>: считается, что, если браслет-оберег (например, с натуральными защитными камнями) внезапно рвется или теряется сам по себе, это означает, что он выполнил свою защитную функцию, приняв на себя сильный энергетический удар или отведя беду от владельца.\"},\"tunes\":{}},{\"id\":\"AFNZOwU2AB\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Правило соразмерности</b>: Массивные широкие браслеты лучше носить сольно, чтобы не перегружать образ. Утонченные жесткие обручи или цепочки тонкого плетения, напротив, великолепно смотрятся сетами из 3–5 штук на одном запястье.\"},\"tunes\":{}},{\"id\":\"XBWFq9yjdw\",\"type\":\"header\",\"data\":{\"text\":\"Мнение эксперта violet\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"expert-block\"}}},{\"id\":\"HFTc-59uAW\",\"type\":\"quote\",\"data\":{\"text\":\"«Главная ошибка, с которой я сталкиваюсь при подборе украшений для клиентов — это игнорирование соразмерности браслета и анатомических особенностей запястья. Тонкая изящная цепочка просто потеряется на широком запястье, а избыточно массивный, широкий кафф утяжелит хрупкую женскую ручку.Если вы выбираете золотой браслет, который планируете носить каждый день, обратите внимание на эргономику замка и плотность прилегания к коже. Между металлом и запястьем должно оставаться свободноепространство примерно в один палец — тогда изделие будет красиво скользить, подчеркивая хрупкость руки, и не доставит дискомфорта при сгибании кисти. И помните про баланс: если на вашей руке надет крупный, притягивающий внимание стейтмент-браслет, откажитесь от массивных коктейльных колец на этой же кисти, чтобы образ оставался элегантным, а не перегруженным».\",\"caption\":\"Ефремова Мария Владимировна - главный редактор Ювелирного дома VIOLET\",\"alignment\":\"left\"},\"tunes\":{}},{\"id\":\"hHpqU-ephW\",\"type\":\"header\",\"data\":{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"faq-block\"}}},{\"id\":\"S6UZkRnZ7Q\",\"type\":\"faq\",\"data\":{\"items\":[{\"question\":\"На какой руке носят браслет женщины по правилам этикета?\",\"answer\":\"Согласно классическому ювелирному этикету, браслет на руке носят женщины преимущественно с правой стороны. Это обусловлено тем, что правая рука чаще находится в движении и на виду при жестикуляции. Однако если на правой руке уже есть массивное акцентное кольцо, украшение лучше переодеть на левую сторону, чтобы сбалансировать ювелирный ансамбль.\"},{\"question\":\"На какой руке носят золотой браслет мужчины и женщины?\",\"answer\":\"Четких гендерных ограничений нет. Но традиционно золотой браслет на какой руке бы ни находился, он должен гармонировать с часами. Изделия из желтого или красного золота чаще надевают на правую руку правши, оставляя левую для наручных часов. Если часы выполнены из стали или белого золота, то золотой браслет теплого оттенка на левой руке рядом с ними носить не стоит — лучше развести их на разные запястья.\"},{\"question\":\"Что означает браслет на левой руке согласно народным приметам?\",\"answer\":\"Народный фольклор и браслет на руку, приметы связывают левое запястье с защитой от сглаза и внутренним миром. Считается, что браслет на левой руке оберегает владельца от зависти, негативной энергетики и помогает сохранить внутреннюю гармонию. Именно на левую сторону принято надевать защитные амулеты, красные нити и браслеты с камнями-оберегами.\"},{\"question\":\"Что значит браслет на правой руке с точки зрения энергетики?\",\"answer\":\"Браслет правая рука воспринимает как символ активного действия. Поскольку правая сторона отвечает за логику, рацио, волю и успех в социуме, украшение на этом запястье активизирует деловые качества, помогает в переговорах и символизирует уверенность в себе. Золотой браслет на этой руке часто носят как манифестацию лидерства и материального достатка.\"},{\"question\":\"Можно ли носить браслеты на руке одновременно на левой и правой стороне?\",\"answer\":\"Да, можно ли носить браслеты на руке сразу на обоих запястьях — вопрос актуальный для современной моды. Это частый прием в стилях бохо или авангард. Главное правило — соблюдать визуальный баланс. Например, если на одной руке надет широкий и массивный браслет-кафф, то на другую руку лучше выбрать сет из нескольких тонких и изящных цепочек, чтобы образ не выглядел перегруженным.\"},{\"question\":\"Для чего носят браслеты из натуральных камней и каков их смысл?\",\"answer\":\"Помимо декоративной функции, такие браслеты и их значение тесно связаны с литотерапией. Браслет символизирует непрерывный круг, транслирующий энергию минерала в тело через биологически активные точки на запястье. Их носят для привлечения удачи, гармонизации эмоционального фона или как персональный якорь для концентрации на личных целях.\"}]},\"tunes\":{}},{\"id\":\"LTZQXWDyRb\",\"type\":\"header\",\"data\":{\"text\":\"Источники\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"sources-block\"}}},{\"id\":\"zSr_qCUW7t\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tГОСТ Р 53047-2008 — Изделия ювелирные. Термины и определения. Классификация и типы конструкций шейных и запястных украшений.\"},\"tunes\":{}},{\"id\":\"vfgjDkXuNu\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tОСТ 117-3-002-95 — Изделия ювелирные из драгоценных металлов. Общие технические условия (в части прочности замковых соединений браслетов и цепей).\"},\"tunes\":{}},{\"id\":\"6FT7hXRpvz\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tИсторико-археологические сборники Института археологии РАН (материалы по исследованию древнерусских наручей и античных украшений).\"},\"tunes\":{}}],\"version\":\"2.25.0\"}'
]
]
]
]
14 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/di/Container.php'
'line' => 180
'function' => 'build'
'class' => 'yii\\di\\Container'
'type' => '->'
'args' => [
0 => 'app\\app_project\\widgets\\content\\EditorJs\\EditorJsWidget'
1 => []
2 => [
'content' => '{\"time\":1784231526322,\"blocks\":[{\"id\":\"njoFxqvGdy\",\"type\":\"paragraph\",\"data\":{\"text\":\"Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики: ношение на правой руке традиционно подчеркивает активную внешнюю энергию, логику и статус (особенно если это золотой браслет), в то время как браслет на левой руке чаще символизирует интуицию, творческое начало и внутреннюю защиту.\"},\"tunes\":{}},{\"id\":\"0ZlLuPnwt_\",\"type\":\"anchorLinks\",\"data\":{\"items\":[{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"anchor\":\"istoriya-brasleta\"},{\"text\":\"Функции браслета в различных культурах: зачем его носили предки\",\"anchor\":\"funktsii-brasleta\"},{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"anchor\":\"na-kakoy-ruke\"},{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"anchor\":\"simvolika-ruk\"},{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"anchor\":\"pravila-i-primety\"},{\"text\":\"Мнение эксперта violet\",\"anchor\":\"expert-block\"},{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"anchor\":\"faq-block\"},{\"text\":\"Источники\",\"anchor\":\"sources-block\"}]},\"tunes\":{}},{\"id\":\"wz2x5ePp8q\",\"type\":\"header\",\"data\":{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"istoriya-brasleta\"}}},{\"id\":\"kXpbUMNAes\",\"type\":\"paragraph\",\"data\":{\"text\":\"История браслетов насчитывает десятки тысяч лет — древнейшие археологические находки (например, браслет из зеленоватого хлоритолита, найденный в Денисовой пещере на Алтае) датируются эпохой палеолита. Название украшения произошло от французского слова bracelet, корень которого восходит к латинскому brachium — «рука».\"},\"tunes\":{}},{\"id\":\"HpB4rjPiZb\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>В разные исторические эпохи этот элемент менял свои визуальные формы и материалы:</b>\"},\"tunes\":{}},{\"id\":\"wWmtMJcPtx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tКаменный век: Изделия изготавливались из бивней мамонтов, костей животных, ракушек, кожи и гибких древесных волокон.\"},\"tunes\":{}},{\"id\":\"My4BhcejIx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревний Египет: Браслеты превратились в массивные золотые обручи, инкрустированные бирюзой, лазуритом и карнеолом. Они плотно ассоциировались с божественной властью фараонов и жрецов.\"},\"tunes\":{}},{\"id\":\"O1QObde-_A\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tАнтичность (Греция и Рим): Браслеты носили как женщины, так и мужчины. Римские воины использовали широкие металлические наручи из бронзы и золота для защиты запястий в ближнем бою.\"},\"tunes\":{}},{\"id\":\"wW7p9TVsly\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревняя Русь: Украшения назывались «обручами» или «наручами». Они скрепляли широкие рукава традиционной женской рубахи. На них часто изображались мифологические сюжеты, русалии и орнаменты-обереги.\"},\"tunes\":{}},{\"id\":\"XyE-nl0he-\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/26af84a4302d8d2752d881fcdd318a68.jpg\"},\"caption\":\"История браслета\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"1s01xzNjfA\",\"type\":\"header\",\"data\":{\"text\":\" Функции браслета в различных культурах: зачем его носили предки\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"funktsii-brasleta\"}}},{\"id\":\"0vwjZ2jFUU\",\"type\":\"paragraph\",\"data\":{\"text\":\"Понимая, зачем нужны браслеты в историческом контексте, становится ясно, что декоративная роль всегда была вторичной. Первостепенное обозначение браслетов сводилось к сакральным, социальным и защитным аспектам.\"},\"tunes\":{}},{\"id\":\"Qd-J3ocHwL\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>Основные функции браслета в истории цивилизаций:</b>\"},\"tunes\":{}},{\"id\":\"QPtrGbCrQ7\",\"type\":\"list\",\"data\":{\"style\":\"ordered\",\"items\":[{\"content\":\"Магическая (обережная): Браслет смысл которого заключался в создании замкнутого круга, закрывал энергетические каналы человека на запястьях и защищал от злых духов, сглаза или болезней.\",\"items\":[]},{\"content\":\"Социально-иераХическая: По материалу украшения (золото, платина, кость, железо) мгновенно определялся сословный статус, богатство рода и кастовая принадлежность владельца.\",\"items\":[]},{\"content\":\" Информационная (паспорт воина): В скандинавских и германских племенах тяжелые серебряные и золотые браслеты-гривны вручались конунгом верным воинам как клятва верности и материальный эквивалент боевых заслуг.\",\"items\":[]}]},\"tunes\":{}},{\"id\":\"fxGqwGkGIN\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/c4cf96d67547f665c6d72bb3da399f60.jpg\"},\"caption\":\"Функции браслетов в различных культурах\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"I1OKoEwqG1\",\"type\":\"header\",\"data\":{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"na-kakoy-ruke\"}}},{\"id\":\"b492JmGTlL\",\"type\":\"paragraph\",\"data\":{\"text\":\"В современном мире строгих ограничений, предписывающих, на какую руку можно или нельзя надевать украшения, не существует. Главный критерий — личное удобство, сохранность изделия и сочетаемость с другими аксессуарами. Однако современный классический этикет выработал несколько общих рекомендаций.\"},\"tunes\":{}},{\"id\":\"6OahuWBzT4\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет женщины:</b>\"},\"tunes\":{}},{\"id\":\"YUHGy00vRn\",\"type\":\"paragraph\",\"data\":{\"text\":\"Исторически большинство женщин предпочитает надевать браслет на правую руку, поскольку большинство людей являются правшами. Активная правая рука чаще находится на виду при жестикуляции, приветствии или письме, что позволяет эффектно продемонстрировать ювелирное изделие. Если женщина одновременно носит наручные часы, их традиционно надевают на левое запястье, а браслеты — на правое, чтобы металл корпуса и замков не царапал друг друга.\"},\"tunes\":{}},{\"id\":\"IjzeIdqoLx\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет мужчины:</b>\"},\"tunes\":{}},{\"id\":\"ehxibL_MVP\",\"type\":\"paragraph\",\"data\":{\"text\":\"Мужской ювелирный этикет более сдержан. Выбирая, на какой руке носят brasslet мужчины, стилисты советуют ориентироваться на баланс с часами. Если на левой руке надеты крупные механические часы, лаконичный кожаный, стальной или золотой браслет перемещают на правую руку. В стиле кэжуал допускается ношение часов и тонкого браслета на одном (обычно левом) запястье.\"},\"tunes\":{}},{\"id\":\"sx_DlwSMgi\",\"type\":\"header\",\"data\":{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"simvolika-ruk\"}}},{\"id\":\"H8PkUBxKIi\",\"type\":\"paragraph\",\"data\":{\"text\":\"Разделение на правую и левую стороны уходит корнями в философию, эзотерику и древние психофизиологические концепции. То, что означает браслет на руке, напрямую связано с полушариями человеческого мозга и потоками энергии.\"},\"tunes\":{}},{\"id\":\"JrtlVTyIFl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на левой руке:</b> Левая сторона во многих восточных философиях (включая концепцию Инь) считается «принимающей». Она отвечает за подсознание, интуицию, творчество, внутренние эмоции и защиту от внешнего негатива. Ношение браслета здесь символизирует желание укрепить внутренний баланс, развить интуитивные способности или защитить личные границы.\"},\"tunes\":{}},{\"id\":\"qcN0b4_LWl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на правой руке:</b> Правая сторона (энергия Ян) считается «отдающей». Она управляет логикой, действием, волей, карьерой, внешними коммуникациями и социальным статусом. Твердый золотой браслет на правой руке транслирует окружающим уверенность, материальный успех, авторитет и лидерские качества владельца.\"},\"tunes\":{}},{\"id\":\"1nXPkx03h5\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/149edaa32e18067590ada7c465b7f910.jpg\"},\"caption\":\"На какой руке носить браслет\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"zCaJEtF0Tk\",\"type\":\"header\",\"data\":{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"pravila-i-primety\"}}},{\"id\":\"KxoiRkUONh\",\"type\":\"paragraph\",\"data\":{\"text\":\"В народном фольклоре и ювелирном сообществе сформировались определенные приметы и правила стиля, которые помогают избежать стилистических ошибок и сохранить целостность украшений.\"},\"tunes\":{}},{\"id\":\"oVvEAzM4ML\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Сочетание металлов</b>: Современная мода позволяет одновременно носить белое золото, платину и классическое желтое золото на одной руке, при условии, что изделия объединены общим стилем или геометрией.\"},\"tunes\":{}},{\"id\":\"Z_Q0M8LioA\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Примета на разрыв</b>: считается, что, если браслет-оберег (например, с натуральными защитными камнями) внезапно рвется или теряется сам по себе, это означает, что он выполнил свою защитную функцию, приняв на себя сильный энергетический удар или отведя беду от владельца.\"},\"tunes\":{}},{\"id\":\"AFNZOwU2AB\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Правило соразмерности</b>: Массивные широкие браслеты лучше носить сольно, чтобы не перегружать образ. Утонченные жесткие обручи или цепочки тонкого плетения, напротив, великолепно смотрятся сетами из 3–5 штук на одном запястье.\"},\"tunes\":{}},{\"id\":\"XBWFq9yjdw\",\"type\":\"header\",\"data\":{\"text\":\"Мнение эксперта violet\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"expert-block\"}}},{\"id\":\"HFTc-59uAW\",\"type\":\"quote\",\"data\":{\"text\":\"«Главная ошибка, с которой я сталкиваюсь при подборе украшений для клиентов — это игнорирование соразмерности браслета и анатомических особенностей запястья. Тонкая изящная цепочка просто потеряется на широком запястье, а избыточно массивный, широкий кафф утяжелит хрупкую женскую ручку.Если вы выбираете золотой браслет, который планируете носить каждый день, обратите внимание на эргономику замка и плотность прилегания к коже. Между металлом и запястьем должно оставаться свободноепространство примерно в один палец — тогда изделие будет красиво скользить, подчеркивая хрупкость руки, и не доставит дискомфорта при сгибании кисти. И помните про баланс: если на вашей руке надет крупный, притягивающий внимание стейтмент-браслет, откажитесь от массивных коктейльных колец на этой же кисти, чтобы образ оставался элегантным, а не перегруженным».\",\"caption\":\"Ефремова Мария Владимировна - главный редактор Ювелирного дома VIOLET\",\"alignment\":\"left\"},\"tunes\":{}},{\"id\":\"hHpqU-ephW\",\"type\":\"header\",\"data\":{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"faq-block\"}}},{\"id\":\"S6UZkRnZ7Q\",\"type\":\"faq\",\"data\":{\"items\":[{\"question\":\"На какой руке носят браслет женщины по правилам этикета?\",\"answer\":\"Согласно классическому ювелирному этикету, браслет на руке носят женщины преимущественно с правой стороны. Это обусловлено тем, что правая рука чаще находится в движении и на виду при жестикуляции. Однако если на правой руке уже есть массивное акцентное кольцо, украшение лучше переодеть на левую сторону, чтобы сбалансировать ювелирный ансамбль.\"},{\"question\":\"На какой руке носят золотой браслет мужчины и женщины?\",\"answer\":\"Четких гендерных ограничений нет. Но традиционно золотой браслет на какой руке бы ни находился, он должен гармонировать с часами. Изделия из желтого или красного золота чаще надевают на правую руку правши, оставляя левую для наручных часов. Если часы выполнены из стали или белого золота, то золотой браслет теплого оттенка на левой руке рядом с ними носить не стоит — лучше развести их на разные запястья.\"},{\"question\":\"Что означает браслет на левой руке согласно народным приметам?\",\"answer\":\"Народный фольклор и браслет на руку, приметы связывают левое запястье с защитой от сглаза и внутренним миром. Считается, что браслет на левой руке оберегает владельца от зависти, негативной энергетики и помогает сохранить внутреннюю гармонию. Именно на левую сторону принято надевать защитные амулеты, красные нити и браслеты с камнями-оберегами.\"},{\"question\":\"Что значит браслет на правой руке с точки зрения энергетики?\",\"answer\":\"Браслет правая рука воспринимает как символ активного действия. Поскольку правая сторона отвечает за логику, рацио, волю и успех в социуме, украшение на этом запястье активизирует деловые качества, помогает в переговорах и символизирует уверенность в себе. Золотой браслет на этой руке часто носят как манифестацию лидерства и материального достатка.\"},{\"question\":\"Можно ли носить браслеты на руке одновременно на левой и правой стороне?\",\"answer\":\"Да, можно ли носить браслеты на руке сразу на обоих запястьях — вопрос актуальный для современной моды. Это частый прием в стилях бохо или авангард. Главное правило — соблюдать визуальный баланс. Например, если на одной руке надет широкий и массивный браслет-кафф, то на другую руку лучше выбрать сет из нескольких тонких и изящных цепочек, чтобы образ не выглядел перегруженным.\"},{\"question\":\"Для чего носят браслеты из натуральных камней и каков их смысл?\",\"answer\":\"Помимо декоративной функции, такие браслеты и их значение тесно связаны с литотерапией. Браслет символизирует непрерывный круг, транслирующий энергию минерала в тело через биологически активные точки на запястье. Их носят для привлечения удачи, гармонизации эмоционального фона или как персональный якорь для концентрации на личных целях.\"}]},\"tunes\":{}},{\"id\":\"LTZQXWDyRb\",\"type\":\"header\",\"data\":{\"text\":\"Источники\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"sources-block\"}}},{\"id\":\"zSr_qCUW7t\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tГОСТ Р 53047-2008 — Изделия ювелирные. Термины и определения. Классификация и типы конструкций шейных и запястных украшений.\"},\"tunes\":{}},{\"id\":\"vfgjDkXuNu\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tОСТ 117-3-002-95 — Изделия ювелирные из драгоценных металлов. Общие технические условия (в части прочности замковых соединений браслетов и цепей).\"},\"tunes\":{}},{\"id\":\"6FT7hXRpvz\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tИсторико-археологические сборники Института археологии РАН (материалы по исследованию древнерусских наручей и античных украшений).\"},\"tunes\":{}}],\"version\":\"2.25.0\"}'
]
]
]
15 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/BaseYii.php'
'line' => 380
'function' => 'get'
'class' => 'yii\\di\\Container'
'type' => '->'
'args' => [
0 => 'app\\app_project\\widgets\\content\\EditorJs\\EditorJsWidget'
1 => []
2 => [
'content' => '{\"time\":1784231526322,\"blocks\":[{\"id\":\"njoFxqvGdy\",\"type\":\"paragraph\",\"data\":{\"text\":\"Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики: ношение на правой руке традиционно подчеркивает активную внешнюю энергию, логику и статус (особенно если это золотой браслет), в то время как браслет на левой руке чаще символизирует интуицию, творческое начало и внутреннюю защиту.\"},\"tunes\":{}},{\"id\":\"0ZlLuPnwt_\",\"type\":\"anchorLinks\",\"data\":{\"items\":[{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"anchor\":\"istoriya-brasleta\"},{\"text\":\"Функции браслета в различных культурах: зачем его носили предки\",\"anchor\":\"funktsii-brasleta\"},{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"anchor\":\"na-kakoy-ruke\"},{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"anchor\":\"simvolika-ruk\"},{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"anchor\":\"pravila-i-primety\"},{\"text\":\"Мнение эксперта violet\",\"anchor\":\"expert-block\"},{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"anchor\":\"faq-block\"},{\"text\":\"Источники\",\"anchor\":\"sources-block\"}]},\"tunes\":{}},{\"id\":\"wz2x5ePp8q\",\"type\":\"header\",\"data\":{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"istoriya-brasleta\"}}},{\"id\":\"kXpbUMNAes\",\"type\":\"paragraph\",\"data\":{\"text\":\"История браслетов насчитывает десятки тысяч лет — древнейшие археологические находки (например, браслет из зеленоватого хлоритолита, найденный в Денисовой пещере на Алтае) датируются эпохой палеолита. Название украшения произошло от французского слова bracelet, корень которого восходит к латинскому brachium — «рука».\"},\"tunes\":{}},{\"id\":\"HpB4rjPiZb\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>В разные исторические эпохи этот элемент менял свои визуальные формы и материалы:</b>\"},\"tunes\":{}},{\"id\":\"wWmtMJcPtx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tКаменный век: Изделия изготавливались из бивней мамонтов, костей животных, ракушек, кожи и гибких древесных волокон.\"},\"tunes\":{}},{\"id\":\"My4BhcejIx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревний Египет: Браслеты превратились в массивные золотые обручи, инкрустированные бирюзой, лазуритом и карнеолом. Они плотно ассоциировались с божественной властью фараонов и жрецов.\"},\"tunes\":{}},{\"id\":\"O1QObde-_A\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tАнтичность (Греция и Рим): Браслеты носили как женщины, так и мужчины. Римские воины использовали широкие металлические наручи из бронзы и золота для защиты запястий в ближнем бою.\"},\"tunes\":{}},{\"id\":\"wW7p9TVsly\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревняя Русь: Украшения назывались «обручами» или «наручами». Они скрепляли широкие рукава традиционной женской рубахи. На них часто изображались мифологические сюжеты, русалии и орнаменты-обереги.\"},\"tunes\":{}},{\"id\":\"XyE-nl0he-\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/26af84a4302d8d2752d881fcdd318a68.jpg\"},\"caption\":\"История браслета\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"1s01xzNjfA\",\"type\":\"header\",\"data\":{\"text\":\" Функции браслета в различных культурах: зачем его носили предки\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"funktsii-brasleta\"}}},{\"id\":\"0vwjZ2jFUU\",\"type\":\"paragraph\",\"data\":{\"text\":\"Понимая, зачем нужны браслеты в историческом контексте, становится ясно, что декоративная роль всегда была вторичной. Первостепенное обозначение браслетов сводилось к сакральным, социальным и защитным аспектам.\"},\"tunes\":{}},{\"id\":\"Qd-J3ocHwL\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>Основные функции браслета в истории цивилизаций:</b>\"},\"tunes\":{}},{\"id\":\"QPtrGbCrQ7\",\"type\":\"list\",\"data\":{\"style\":\"ordered\",\"items\":[{\"content\":\"Магическая (обережная): Браслет смысл которого заключался в создании замкнутого круга, закрывал энергетические каналы человека на запястьях и защищал от злых духов, сглаза или болезней.\",\"items\":[]},{\"content\":\"Социально-иераХическая: По материалу украшения (золото, платина, кость, железо) мгновенно определялся сословный статус, богатство рода и кастовая принадлежность владельца.\",\"items\":[]},{\"content\":\" Информационная (паспорт воина): В скандинавских и германских племенах тяжелые серебряные и золотые браслеты-гривны вручались конунгом верным воинам как клятва верности и материальный эквивалент боевых заслуг.\",\"items\":[]}]},\"tunes\":{}},{\"id\":\"fxGqwGkGIN\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/c4cf96d67547f665c6d72bb3da399f60.jpg\"},\"caption\":\"Функции браслетов в различных культурах\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"I1OKoEwqG1\",\"type\":\"header\",\"data\":{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"na-kakoy-ruke\"}}},{\"id\":\"b492JmGTlL\",\"type\":\"paragraph\",\"data\":{\"text\":\"В современном мире строгих ограничений, предписывающих, на какую руку можно или нельзя надевать украшения, не существует. Главный критерий — личное удобство, сохранность изделия и сочетаемость с другими аксессуарами. Однако современный классический этикет выработал несколько общих рекомендаций.\"},\"tunes\":{}},{\"id\":\"6OahuWBzT4\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет женщины:</b>\"},\"tunes\":{}},{\"id\":\"YUHGy00vRn\",\"type\":\"paragraph\",\"data\":{\"text\":\"Исторически большинство женщин предпочитает надевать браслет на правую руку, поскольку большинство людей являются правшами. Активная правая рука чаще находится на виду при жестикуляции, приветствии или письме, что позволяет эффектно продемонстрировать ювелирное изделие. Если женщина одновременно носит наручные часы, их традиционно надевают на левое запястье, а браслеты — на правое, чтобы металл корпуса и замков не царапал друг друга.\"},\"tunes\":{}},{\"id\":\"IjzeIdqoLx\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет мужчины:</b>\"},\"tunes\":{}},{\"id\":\"ehxibL_MVP\",\"type\":\"paragraph\",\"data\":{\"text\":\"Мужской ювелирный этикет более сдержан. Выбирая, на какой руке носят brasslet мужчины, стилисты советуют ориентироваться на баланс с часами. Если на левой руке надеты крупные механические часы, лаконичный кожаный, стальной или золотой браслет перемещают на правую руку. В стиле кэжуал допускается ношение часов и тонкого браслета на одном (обычно левом) запястье.\"},\"tunes\":{}},{\"id\":\"sx_DlwSMgi\",\"type\":\"header\",\"data\":{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"simvolika-ruk\"}}},{\"id\":\"H8PkUBxKIi\",\"type\":\"paragraph\",\"data\":{\"text\":\"Разделение на правую и левую стороны уходит корнями в философию, эзотерику и древние психофизиологические концепции. То, что означает браслет на руке, напрямую связано с полушариями человеческого мозга и потоками энергии.\"},\"tunes\":{}},{\"id\":\"JrtlVTyIFl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на левой руке:</b> Левая сторона во многих восточных философиях (включая концепцию Инь) считается «принимающей». Она отвечает за подсознание, интуицию, творчество, внутренние эмоции и защиту от внешнего негатива. Ношение браслета здесь символизирует желание укрепить внутренний баланс, развить интуитивные способности или защитить личные границы.\"},\"tunes\":{}},{\"id\":\"qcN0b4_LWl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на правой руке:</b> Правая сторона (энергия Ян) считается «отдающей». Она управляет логикой, действием, волей, карьерой, внешними коммуникациями и социальным статусом. Твердый золотой браслет на правой руке транслирует окружающим уверенность, материальный успех, авторитет и лидерские качества владельца.\"},\"tunes\":{}},{\"id\":\"1nXPkx03h5\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/149edaa32e18067590ada7c465b7f910.jpg\"},\"caption\":\"На какой руке носить браслет\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"zCaJEtF0Tk\",\"type\":\"header\",\"data\":{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"pravila-i-primety\"}}},{\"id\":\"KxoiRkUONh\",\"type\":\"paragraph\",\"data\":{\"text\":\"В народном фольклоре и ювелирном сообществе сформировались определенные приметы и правила стиля, которые помогают избежать стилистических ошибок и сохранить целостность украшений.\"},\"tunes\":{}},{\"id\":\"oVvEAzM4ML\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Сочетание металлов</b>: Современная мода позволяет одновременно носить белое золото, платину и классическое желтое золото на одной руке, при условии, что изделия объединены общим стилем или геометрией.\"},\"tunes\":{}},{\"id\":\"Z_Q0M8LioA\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Примета на разрыв</b>: считается, что, если браслет-оберег (например, с натуральными защитными камнями) внезапно рвется или теряется сам по себе, это означает, что он выполнил свою защитную функцию, приняв на себя сильный энергетический удар или отведя беду от владельца.\"},\"tunes\":{}},{\"id\":\"AFNZOwU2AB\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Правило соразмерности</b>: Массивные широкие браслеты лучше носить сольно, чтобы не перегружать образ. Утонченные жесткие обручи или цепочки тонкого плетения, напротив, великолепно смотрятся сетами из 3–5 штук на одном запястье.\"},\"tunes\":{}},{\"id\":\"XBWFq9yjdw\",\"type\":\"header\",\"data\":{\"text\":\"Мнение эксперта violet\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"expert-block\"}}},{\"id\":\"HFTc-59uAW\",\"type\":\"quote\",\"data\":{\"text\":\"«Главная ошибка, с которой я сталкиваюсь при подборе украшений для клиентов — это игнорирование соразмерности браслета и анатомических особенностей запястья. Тонкая изящная цепочка просто потеряется на широком запястье, а избыточно массивный, широкий кафф утяжелит хрупкую женскую ручку.Если вы выбираете золотой браслет, который планируете носить каждый день, обратите внимание на эргономику замка и плотность прилегания к коже. Между металлом и запястьем должно оставаться свободноепространство примерно в один палец — тогда изделие будет красиво скользить, подчеркивая хрупкость руки, и не доставит дискомфорта при сгибании кисти. И помните про баланс: если на вашей руке надет крупный, притягивающий внимание стейтмент-браслет, откажитесь от массивных коктейльных колец на этой же кисти, чтобы образ оставался элегантным, а не перегруженным».\",\"caption\":\"Ефремова Мария Владимировна - главный редактор Ювелирного дома VIOLET\",\"alignment\":\"left\"},\"tunes\":{}},{\"id\":\"hHpqU-ephW\",\"type\":\"header\",\"data\":{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"faq-block\"}}},{\"id\":\"S6UZkRnZ7Q\",\"type\":\"faq\",\"data\":{\"items\":[{\"question\":\"На какой руке носят браслет женщины по правилам этикета?\",\"answer\":\"Согласно классическому ювелирному этикету, браслет на руке носят женщины преимущественно с правой стороны. Это обусловлено тем, что правая рука чаще находится в движении и на виду при жестикуляции. Однако если на правой руке уже есть массивное акцентное кольцо, украшение лучше переодеть на левую сторону, чтобы сбалансировать ювелирный ансамбль.\"},{\"question\":\"На какой руке носят золотой браслет мужчины и женщины?\",\"answer\":\"Четких гендерных ограничений нет. Но традиционно золотой браслет на какой руке бы ни находился, он должен гармонировать с часами. Изделия из желтого или красного золота чаще надевают на правую руку правши, оставляя левую для наручных часов. Если часы выполнены из стали или белого золота, то золотой браслет теплого оттенка на левой руке рядом с ними носить не стоит — лучше развести их на разные запястья.\"},{\"question\":\"Что означает браслет на левой руке согласно народным приметам?\",\"answer\":\"Народный фольклор и браслет на руку, приметы связывают левое запястье с защитой от сглаза и внутренним миром. Считается, что браслет на левой руке оберегает владельца от зависти, негативной энергетики и помогает сохранить внутреннюю гармонию. Именно на левую сторону принято надевать защитные амулеты, красные нити и браслеты с камнями-оберегами.\"},{\"question\":\"Что значит браслет на правой руке с точки зрения энергетики?\",\"answer\":\"Браслет правая рука воспринимает как символ активного действия. Поскольку правая сторона отвечает за логику, рацио, волю и успех в социуме, украшение на этом запястье активизирует деловые качества, помогает в переговорах и символизирует уверенность в себе. Золотой браслет на этой руке часто носят как манифестацию лидерства и материального достатка.\"},{\"question\":\"Можно ли носить браслеты на руке одновременно на левой и правой стороне?\",\"answer\":\"Да, можно ли носить браслеты на руке сразу на обоих запястьях — вопрос актуальный для современной моды. Это частый прием в стилях бохо или авангард. Главное правило — соблюдать визуальный баланс. Например, если на одной руке надет широкий и массивный браслет-кафф, то на другую руку лучше выбрать сет из нескольких тонких и изящных цепочек, чтобы образ не выглядел перегруженным.\"},{\"question\":\"Для чего носят браслеты из натуральных камней и каков их смысл?\",\"answer\":\"Помимо декоративной функции, такие браслеты и их значение тесно связаны с литотерапией. Браслет символизирует непрерывный круг, транслирующий энергию минерала в тело через биологически активные точки на запястье. Их носят для привлечения удачи, гармонизации эмоционального фона или как персональный якорь для концентрации на личных целях.\"}]},\"tunes\":{}},{\"id\":\"LTZQXWDyRb\",\"type\":\"header\",\"data\":{\"text\":\"Источники\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"sources-block\"}}},{\"id\":\"zSr_qCUW7t\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tГОСТ Р 53047-2008 — Изделия ювелирные. Термины и определения. Классификация и типы конструкций шейных и запястных украшений.\"},\"tunes\":{}},{\"id\":\"vfgjDkXuNu\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tОСТ 117-3-002-95 — Изделия ювелирные из драгоценных металлов. Общие технические условия (в части прочности замковых соединений браслетов и цепей).\"},\"tunes\":{}},{\"id\":\"6FT7hXRpvz\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tИсторико-археологические сборники Института археологии РАН (материалы по исследованию древнерусских наручей и античных украшений).\"},\"tunes\":{}}],\"version\":\"2.25.0\"}'
]
]
]
16 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/base/Widget.php'
'line' => 145
'function' => 'createObject'
'class' => 'yii\\BaseYii'
'type' => '::'
'args' => [
0 => [
'content' => '{\"time\":1784231526322,\"blocks\":[{\"id\":\"njoFxqvGdy\",\"type\":\"paragraph\",\"data\":{\"text\":\"Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики: ношение на правой руке традиционно подчеркивает активную внешнюю энергию, логику и статус (особенно если это золотой браслет), в то время как браслет на левой руке чаще символизирует интуицию, творческое начало и внутреннюю защиту.\"},\"tunes\":{}},{\"id\":\"0ZlLuPnwt_\",\"type\":\"anchorLinks\",\"data\":{\"items\":[{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"anchor\":\"istoriya-brasleta\"},{\"text\":\"Функции браслета в различных культурах: зачем его носили предки\",\"anchor\":\"funktsii-brasleta\"},{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"anchor\":\"na-kakoy-ruke\"},{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"anchor\":\"simvolika-ruk\"},{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"anchor\":\"pravila-i-primety\"},{\"text\":\"Мнение эксперта violet\",\"anchor\":\"expert-block\"},{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"anchor\":\"faq-block\"},{\"text\":\"Источники\",\"anchor\":\"sources-block\"}]},\"tunes\":{}},{\"id\":\"wz2x5ePp8q\",\"type\":\"header\",\"data\":{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"istoriya-brasleta\"}}},{\"id\":\"kXpbUMNAes\",\"type\":\"paragraph\",\"data\":{\"text\":\"История браслетов насчитывает десятки тысяч лет — древнейшие археологические находки (например, браслет из зеленоватого хлоритолита, найденный в Денисовой пещере на Алтае) датируются эпохой палеолита. Название украшения произошло от французского слова bracelet, корень которого восходит к латинскому brachium — «рука».\"},\"tunes\":{}},{\"id\":\"HpB4rjPiZb\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>В разные исторические эпохи этот элемент менял свои визуальные формы и материалы:</b>\"},\"tunes\":{}},{\"id\":\"wWmtMJcPtx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tКаменный век: Изделия изготавливались из бивней мамонтов, костей животных, ракушек, кожи и гибких древесных волокон.\"},\"tunes\":{}},{\"id\":\"My4BhcejIx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревний Египет: Браслеты превратились в массивные золотые обручи, инкрустированные бирюзой, лазуритом и карнеолом. Они плотно ассоциировались с божественной властью фараонов и жрецов.\"},\"tunes\":{}},{\"id\":\"O1QObde-_A\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tАнтичность (Греция и Рим): Браслеты носили как женщины, так и мужчины. Римские воины использовали широкие металлические наручи из бронзы и золота для защиты запястий в ближнем бою.\"},\"tunes\":{}},{\"id\":\"wW7p9TVsly\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревняя Русь: Украшения назывались «обручами» или «наручами». Они скрепляли широкие рукава традиционной женской рубахи. На них часто изображались мифологические сюжеты, русалии и орнаменты-обереги.\"},\"tunes\":{}},{\"id\":\"XyE-nl0he-\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/26af84a4302d8d2752d881fcdd318a68.jpg\"},\"caption\":\"История браслета\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"1s01xzNjfA\",\"type\":\"header\",\"data\":{\"text\":\" Функции браслета в различных культурах: зачем его носили предки\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"funktsii-brasleta\"}}},{\"id\":\"0vwjZ2jFUU\",\"type\":\"paragraph\",\"data\":{\"text\":\"Понимая, зачем нужны браслеты в историческом контексте, становится ясно, что декоративная роль всегда была вторичной. Первостепенное обозначение браслетов сводилось к сакральным, социальным и защитным аспектам.\"},\"tunes\":{}},{\"id\":\"Qd-J3ocHwL\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>Основные функции браслета в истории цивилизаций:</b>\"},\"tunes\":{}},{\"id\":\"QPtrGbCrQ7\",\"type\":\"list\",\"data\":{\"style\":\"ordered\",\"items\":[{\"content\":\"Магическая (обережная): Браслет смысл которого заключался в создании замкнутого круга, закрывал энергетические каналы человека на запястьях и защищал от злых духов, сглаза или болезней.\",\"items\":[]},{\"content\":\"Социально-иераХическая: По материалу украшения (золото, платина, кость, железо) мгновенно определялся сословный статус, богатство рода и кастовая принадлежность владельца.\",\"items\":[]},{\"content\":\" Информационная (паспорт воина): В скандинавских и германских племенах тяжелые серебряные и золотые браслеты-гривны вручались конунгом верным воинам как клятва верности и материальный эквивалент боевых заслуг.\",\"items\":[]}]},\"tunes\":{}},{\"id\":\"fxGqwGkGIN\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/c4cf96d67547f665c6d72bb3da399f60.jpg\"},\"caption\":\"Функции браслетов в различных культурах\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"I1OKoEwqG1\",\"type\":\"header\",\"data\":{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"na-kakoy-ruke\"}}},{\"id\":\"b492JmGTlL\",\"type\":\"paragraph\",\"data\":{\"text\":\"В современном мире строгих ограничений, предписывающих, на какую руку можно или нельзя надевать украшения, не существует. Главный критерий — личное удобство, сохранность изделия и сочетаемость с другими аксессуарами. Однако современный классический этикет выработал несколько общих рекомендаций.\"},\"tunes\":{}},{\"id\":\"6OahuWBzT4\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет женщины:</b>\"},\"tunes\":{}},{\"id\":\"YUHGy00vRn\",\"type\":\"paragraph\",\"data\":{\"text\":\"Исторически большинство женщин предпочитает надевать браслет на правую руку, поскольку большинство людей являются правшами. Активная правая рука чаще находится на виду при жестикуляции, приветствии или письме, что позволяет эффектно продемонстрировать ювелирное изделие. Если женщина одновременно носит наручные часы, их традиционно надевают на левое запястье, а браслеты — на правое, чтобы металл корпуса и замков не царапал друг друга.\"},\"tunes\":{}},{\"id\":\"IjzeIdqoLx\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет мужчины:</b>\"},\"tunes\":{}},{\"id\":\"ehxibL_MVP\",\"type\":\"paragraph\",\"data\":{\"text\":\"Мужской ювелирный этикет более сдержан. Выбирая, на какой руке носят brasslet мужчины, стилисты советуют ориентироваться на баланс с часами. Если на левой руке надеты крупные механические часы, лаконичный кожаный, стальной или золотой браслет перемещают на правую руку. В стиле кэжуал допускается ношение часов и тонкого браслета на одном (обычно левом) запястье.\"},\"tunes\":{}},{\"id\":\"sx_DlwSMgi\",\"type\":\"header\",\"data\":{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"simvolika-ruk\"}}},{\"id\":\"H8PkUBxKIi\",\"type\":\"paragraph\",\"data\":{\"text\":\"Разделение на правую и левую стороны уходит корнями в философию, эзотерику и древние психофизиологические концепции. То, что означает браслет на руке, напрямую связано с полушариями человеческого мозга и потоками энергии.\"},\"tunes\":{}},{\"id\":\"JrtlVTyIFl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на левой руке:</b> Левая сторона во многих восточных философиях (включая концепцию Инь) считается «принимающей». Она отвечает за подсознание, интуицию, творчество, внутренние эмоции и защиту от внешнего негатива. Ношение браслета здесь символизирует желание укрепить внутренний баланс, развить интуитивные способности или защитить личные границы.\"},\"tunes\":{}},{\"id\":\"qcN0b4_LWl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на правой руке:</b> Правая сторона (энергия Ян) считается «отдающей». Она управляет логикой, действием, волей, карьерой, внешними коммуникациями и социальным статусом. Твердый золотой браслет на правой руке транслирует окружающим уверенность, материальный успех, авторитет и лидерские качества владельца.\"},\"tunes\":{}},{\"id\":\"1nXPkx03h5\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/149edaa32e18067590ada7c465b7f910.jpg\"},\"caption\":\"На какой руке носить браслет\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"zCaJEtF0Tk\",\"type\":\"header\",\"data\":{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"pravila-i-primety\"}}},{\"id\":\"KxoiRkUONh\",\"type\":\"paragraph\",\"data\":{\"text\":\"В народном фольклоре и ювелирном сообществе сформировались определенные приметы и правила стиля, которые помогают избежать стилистических ошибок и сохранить целостность украшений.\"},\"tunes\":{}},{\"id\":\"oVvEAzM4ML\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Сочетание металлов</b>: Современная мода позволяет одновременно носить белое золото, платину и классическое желтое золото на одной руке, при условии, что изделия объединены общим стилем или геометрией.\"},\"tunes\":{}},{\"id\":\"Z_Q0M8LioA\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Примета на разрыв</b>: считается, что, если браслет-оберег (например, с натуральными защитными камнями) внезапно рвется или теряется сам по себе, это означает, что он выполнил свою защитную функцию, приняв на себя сильный энергетический удар или отведя беду от владельца.\"},\"tunes\":{}},{\"id\":\"AFNZOwU2AB\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Правило соразмерности</b>: Массивные широкие браслеты лучше носить сольно, чтобы не перегружать образ. Утонченные жесткие обручи или цепочки тонкого плетения, напротив, великолепно смотрятся сетами из 3–5 штук на одном запястье.\"},\"tunes\":{}},{\"id\":\"XBWFq9yjdw\",\"type\":\"header\",\"data\":{\"text\":\"Мнение эксперта violet\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"expert-block\"}}},{\"id\":\"HFTc-59uAW\",\"type\":\"quote\",\"data\":{\"text\":\"«Главная ошибка, с которой я сталкиваюсь при подборе украшений для клиентов — это игнорирование соразмерности браслета и анатомических особенностей запястья. Тонкая изящная цепочка просто потеряется на широком запястье, а избыточно массивный, широкий кафф утяжелит хрупкую женскую ручку.Если вы выбираете золотой браслет, который планируете носить каждый день, обратите внимание на эргономику замка и плотность прилегания к коже. Между металлом и запястьем должно оставаться свободноепространство примерно в один палец — тогда изделие будет красиво скользить, подчеркивая хрупкость руки, и не доставит дискомфорта при сгибании кисти. И помните про баланс: если на вашей руке надет крупный, притягивающий внимание стейтмент-браслет, откажитесь от массивных коктейльных колец на этой же кисти, чтобы образ оставался элегантным, а не перегруженным».\",\"caption\":\"Ефремова Мария Владимировна - главный редактор Ювелирного дома VIOLET\",\"alignment\":\"left\"},\"tunes\":{}},{\"id\":\"hHpqU-ephW\",\"type\":\"header\",\"data\":{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"faq-block\"}}},{\"id\":\"S6UZkRnZ7Q\",\"type\":\"faq\",\"data\":{\"items\":[{\"question\":\"На какой руке носят браслет женщины по правилам этикета?\",\"answer\":\"Согласно классическому ювелирному этикету, браслет на руке носят женщины преимущественно с правой стороны. Это обусловлено тем, что правая рука чаще находится в движении и на виду при жестикуляции. Однако если на правой руке уже есть массивное акцентное кольцо, украшение лучше переодеть на левую сторону, чтобы сбалансировать ювелирный ансамбль.\"},{\"question\":\"На какой руке носят золотой браслет мужчины и женщины?\",\"answer\":\"Четких гендерных ограничений нет. Но традиционно золотой браслет на какой руке бы ни находился, он должен гармонировать с часами. Изделия из желтого или красного золота чаще надевают на правую руку правши, оставляя левую для наручных часов. Если часы выполнены из стали или белого золота, то золотой браслет теплого оттенка на левой руке рядом с ними носить не стоит — лучше развести их на разные запястья.\"},{\"question\":\"Что означает браслет на левой руке согласно народным приметам?\",\"answer\":\"Народный фольклор и браслет на руку, приметы связывают левое запястье с защитой от сглаза и внутренним миром. Считается, что браслет на левой руке оберегает владельца от зависти, негативной энергетики и помогает сохранить внутреннюю гармонию. Именно на левую сторону принято надевать защитные амулеты, красные нити и браслеты с камнями-оберегами.\"},{\"question\":\"Что значит браслет на правой руке с точки зрения энергетики?\",\"answer\":\"Браслет правая рука воспринимает как символ активного действия. Поскольку правая сторона отвечает за логику, рацио, волю и успех в социуме, украшение на этом запястье активизирует деловые качества, помогает в переговорах и символизирует уверенность в себе. Золотой браслет на этой руке часто носят как манифестацию лидерства и материального достатка.\"},{\"question\":\"Можно ли носить браслеты на руке одновременно на левой и правой стороне?\",\"answer\":\"Да, можно ли носить браслеты на руке сразу на обоих запястьях — вопрос актуальный для современной моды. Это частый прием в стилях бохо или авангард. Главное правило — соблюдать визуальный баланс. Например, если на одной руке надет широкий и массивный браслет-кафф, то на другую руку лучше выбрать сет из нескольких тонких и изящных цепочек, чтобы образ не выглядел перегруженным.\"},{\"question\":\"Для чего носят браслеты из натуральных камней и каков их смысл?\",\"answer\":\"Помимо декоративной функции, такие браслеты и их значение тесно связаны с литотерапией. Браслет символизирует непрерывный круг, транслирующий энергию минерала в тело через биологически активные точки на запястье. Их носят для привлечения удачи, гармонизации эмоционального фона или как персональный якорь для концентрации на личных целях.\"}]},\"tunes\":{}},{\"id\":\"LTZQXWDyRb\",\"type\":\"header\",\"data\":{\"text\":\"Источники\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"sources-block\"}}},{\"id\":\"zSr_qCUW7t\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tГОСТ Р 53047-2008 — Изделия ювелирные. Термины и определения. Классификация и типы конструкций шейных и запястных украшений.\"},\"tunes\":{}},{\"id\":\"vfgjDkXuNu\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tОСТ 117-3-002-95 — Изделия ювелирные из драгоценных металлов. Общие технические условия (в части прочности замковых соединений браслетов и цепей).\"},\"tunes\":{}},{\"id\":\"6FT7hXRpvz\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tИсторико-археологические сборники Института археологии РАН (материалы по исследованию древнерусских наручей и античных украшений).\"},\"tunes\":{}}],\"version\":\"2.25.0\"}'
]
]
]
17 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/app_project/views/blog/post.php'
'line' => 40
'function' => 'widget'
'class' => 'yii\\base\\Widget'
'type' => '::'
'args' => [
0 => [
'content' => '{\"time\":1784231526322,\"blocks\":[{\"id\":\"njoFxqvGdy\",\"type\":\"paragraph\",\"data\":{\"text\":\"Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики: ношение на правой руке традиционно подчеркивает активную внешнюю энергию, логику и статус (особенно если это золотой браслет), в то время как браслет на левой руке чаще символизирует интуицию, творческое начало и внутреннюю защиту.\"},\"tunes\":{}},{\"id\":\"0ZlLuPnwt_\",\"type\":\"anchorLinks\",\"data\":{\"items\":[{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"anchor\":\"istoriya-brasleta\"},{\"text\":\"Функции браслета в различных культурах: зачем его носили предки\",\"anchor\":\"funktsii-brasleta\"},{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"anchor\":\"na-kakoy-ruke\"},{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"anchor\":\"simvolika-ruk\"},{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"anchor\":\"pravila-i-primety\"},{\"text\":\"Мнение эксперта violet\",\"anchor\":\"expert-block\"},{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"anchor\":\"faq-block\"},{\"text\":\"Источники\",\"anchor\":\"sources-block\"}]},\"tunes\":{}},{\"id\":\"wz2x5ePp8q\",\"type\":\"header\",\"data\":{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"istoriya-brasleta\"}}},{\"id\":\"kXpbUMNAes\",\"type\":\"paragraph\",\"data\":{\"text\":\"История браслетов насчитывает десятки тысяч лет — древнейшие археологические находки (например, браслет из зеленоватого хлоритолита, найденный в Денисовой пещере на Алтае) датируются эпохой палеолита. Название украшения произошло от французского слова bracelet, корень которого восходит к латинскому brachium — «рука».\"},\"tunes\":{}},{\"id\":\"HpB4rjPiZb\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>В разные исторические эпохи этот элемент менял свои визуальные формы и материалы:</b>\"},\"tunes\":{}},{\"id\":\"wWmtMJcPtx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tКаменный век: Изделия изготавливались из бивней мамонтов, костей животных, ракушек, кожи и гибких древесных волокон.\"},\"tunes\":{}},{\"id\":\"My4BhcejIx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревний Египет: Браслеты превратились в массивные золотые обручи, инкрустированные бирюзой, лазуритом и карнеолом. Они плотно ассоциировались с божественной властью фараонов и жрецов.\"},\"tunes\":{}},{\"id\":\"O1QObde-_A\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tАнтичность (Греция и Рим): Браслеты носили как женщины, так и мужчины. Римские воины использовали широкие металлические наручи из бронзы и золота для защиты запястий в ближнем бою.\"},\"tunes\":{}},{\"id\":\"wW7p9TVsly\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревняя Русь: Украшения назывались «обручами» или «наручами». Они скрепляли широкие рукава традиционной женской рубахи. На них часто изображались мифологические сюжеты, русалии и орнаменты-обереги.\"},\"tunes\":{}},{\"id\":\"XyE-nl0he-\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/26af84a4302d8d2752d881fcdd318a68.jpg\"},\"caption\":\"История браслета\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"1s01xzNjfA\",\"type\":\"header\",\"data\":{\"text\":\" Функции браслета в различных культурах: зачем его носили предки\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"funktsii-brasleta\"}}},{\"id\":\"0vwjZ2jFUU\",\"type\":\"paragraph\",\"data\":{\"text\":\"Понимая, зачем нужны браслеты в историческом контексте, становится ясно, что декоративная роль всегда была вторичной. Первостепенное обозначение браслетов сводилось к сакральным, социальным и защитным аспектам.\"},\"tunes\":{}},{\"id\":\"Qd-J3ocHwL\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>Основные функции браслета в истории цивилизаций:</b>\"},\"tunes\":{}},{\"id\":\"QPtrGbCrQ7\",\"type\":\"list\",\"data\":{\"style\":\"ordered\",\"items\":[{\"content\":\"Магическая (обережная): Браслет смысл которого заключался в создании замкнутого круга, закрывал энергетические каналы человека на запястьях и защищал от злых духов, сглаза или болезней.\",\"items\":[]},{\"content\":\"Социально-иераХическая: По материалу украшения (золото, платина, кость, железо) мгновенно определялся сословный статус, богатство рода и кастовая принадлежность владельца.\",\"items\":[]},{\"content\":\" Информационная (паспорт воина): В скандинавских и германских племенах тяжелые серебряные и золотые браслеты-гривны вручались конунгом верным воинам как клятва верности и материальный эквивалент боевых заслуг.\",\"items\":[]}]},\"tunes\":{}},{\"id\":\"fxGqwGkGIN\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/c4cf96d67547f665c6d72bb3da399f60.jpg\"},\"caption\":\"Функции браслетов в различных культурах\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"I1OKoEwqG1\",\"type\":\"header\",\"data\":{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"na-kakoy-ruke\"}}},{\"id\":\"b492JmGTlL\",\"type\":\"paragraph\",\"data\":{\"text\":\"В современном мире строгих ограничений, предписывающих, на какую руку можно или нельзя надевать украшения, не существует. Главный критерий — личное удобство, сохранность изделия и сочетаемость с другими аксессуарами. Однако современный классический этикет выработал несколько общих рекомендаций.\"},\"tunes\":{}},{\"id\":\"6OahuWBzT4\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет женщины:</b>\"},\"tunes\":{}},{\"id\":\"YUHGy00vRn\",\"type\":\"paragraph\",\"data\":{\"text\":\"Исторически большинство женщин предпочитает надевать браслет на правую руку, поскольку большинство людей являются правшами. Активная правая рука чаще находится на виду при жестикуляции, приветствии или письме, что позволяет эффектно продемонстрировать ювелирное изделие. Если женщина одновременно носит наручные часы, их традиционно надевают на левое запястье, а браслеты — на правое, чтобы металл корпуса и замков не царапал друг друга.\"},\"tunes\":{}},{\"id\":\"IjzeIdqoLx\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет мужчины:</b>\"},\"tunes\":{}},{\"id\":\"ehxibL_MVP\",\"type\":\"paragraph\",\"data\":{\"text\":\"Мужской ювелирный этикет более сдержан. Выбирая, на какой руке носят brasslet мужчины, стилисты советуют ориентироваться на баланс с часами. Если на левой руке надеты крупные механические часы, лаконичный кожаный, стальной или золотой браслет перемещают на правую руку. В стиле кэжуал допускается ношение часов и тонкого браслета на одном (обычно левом) запястье.\"},\"tunes\":{}},{\"id\":\"sx_DlwSMgi\",\"type\":\"header\",\"data\":{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"simvolika-ruk\"}}},{\"id\":\"H8PkUBxKIi\",\"type\":\"paragraph\",\"data\":{\"text\":\"Разделение на правую и левую стороны уходит корнями в философию, эзотерику и древние психофизиологические концепции. То, что означает браслет на руке, напрямую связано с полушариями человеческого мозга и потоками энергии.\"},\"tunes\":{}},{\"id\":\"JrtlVTyIFl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на левой руке:</b> Левая сторона во многих восточных философиях (включая концепцию Инь) считается «принимающей». Она отвечает за подсознание, интуицию, творчество, внутренние эмоции и защиту от внешнего негатива. Ношение браслета здесь символизирует желание укрепить внутренний баланс, развить интуитивные способности или защитить личные границы.\"},\"tunes\":{}},{\"id\":\"qcN0b4_LWl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на правой руке:</b> Правая сторона (энергия Ян) считается «отдающей». Она управляет логикой, действием, волей, карьерой, внешними коммуникациями и социальным статусом. Твердый золотой браслет на правой руке транслирует окружающим уверенность, материальный успех, авторитет и лидерские качества владельца.\"},\"tunes\":{}},{\"id\":\"1nXPkx03h5\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/149edaa32e18067590ada7c465b7f910.jpg\"},\"caption\":\"На какой руке носить браслет\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"zCaJEtF0Tk\",\"type\":\"header\",\"data\":{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"pravila-i-primety\"}}},{\"id\":\"KxoiRkUONh\",\"type\":\"paragraph\",\"data\":{\"text\":\"В народном фольклоре и ювелирном сообществе сформировались определенные приметы и правила стиля, которые помогают избежать стилистических ошибок и сохранить целостность украшений.\"},\"tunes\":{}},{\"id\":\"oVvEAzM4ML\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Сочетание металлов</b>: Современная мода позволяет одновременно носить белое золото, платину и классическое желтое золото на одной руке, при условии, что изделия объединены общим стилем или геометрией.\"},\"tunes\":{}},{\"id\":\"Z_Q0M8LioA\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Примета на разрыв</b>: считается, что, если браслет-оберег (например, с натуральными защитными камнями) внезапно рвется или теряется сам по себе, это означает, что он выполнил свою защитную функцию, приняв на себя сильный энергетический удар или отведя беду от владельца.\"},\"tunes\":{}},{\"id\":\"AFNZOwU2AB\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Правило соразмерности</b>: Массивные широкие браслеты лучше носить сольно, чтобы не перегружать образ. Утонченные жесткие обручи или цепочки тонкого плетения, напротив, великолепно смотрятся сетами из 3–5 штук на одном запястье.\"},\"tunes\":{}},{\"id\":\"XBWFq9yjdw\",\"type\":\"header\",\"data\":{\"text\":\"Мнение эксперта violet\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"expert-block\"}}},{\"id\":\"HFTc-59uAW\",\"type\":\"quote\",\"data\":{\"text\":\"«Главная ошибка, с которой я сталкиваюсь при подборе украшений для клиентов — это игнорирование соразмерности браслета и анатомических особенностей запястья. Тонкая изящная цепочка просто потеряется на широком запястье, а избыточно массивный, широкий кафф утяжелит хрупкую женскую ручку.Если вы выбираете золотой браслет, который планируете носить каждый день, обратите внимание на эргономику замка и плотность прилегания к коже. Между металлом и запястьем должно оставаться свободноепространство примерно в один палец — тогда изделие будет красиво скользить, подчеркивая хрупкость руки, и не доставит дискомфорта при сгибании кисти. И помните про баланс: если на вашей руке надет крупный, притягивающий внимание стейтмент-браслет, откажитесь от массивных коктейльных колец на этой же кисти, чтобы образ оставался элегантным, а не перегруженным».\",\"caption\":\"Ефремова Мария Владимировна - главный редактор Ювелирного дома VIOLET\",\"alignment\":\"left\"},\"tunes\":{}},{\"id\":\"hHpqU-ephW\",\"type\":\"header\",\"data\":{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"faq-block\"}}},{\"id\":\"S6UZkRnZ7Q\",\"type\":\"faq\",\"data\":{\"items\":[{\"question\":\"На какой руке носят браслет женщины по правилам этикета?\",\"answer\":\"Согласно классическому ювелирному этикету, браслет на руке носят женщины преимущественно с правой стороны. Это обусловлено тем, что правая рука чаще находится в движении и на виду при жестикуляции. Однако если на правой руке уже есть массивное акцентное кольцо, украшение лучше переодеть на левую сторону, чтобы сбалансировать ювелирный ансамбль.\"},{\"question\":\"На какой руке носят золотой браслет мужчины и женщины?\",\"answer\":\"Четких гендерных ограничений нет. Но традиционно золотой браслет на какой руке бы ни находился, он должен гармонировать с часами. Изделия из желтого или красного золота чаще надевают на правую руку правши, оставляя левую для наручных часов. Если часы выполнены из стали или белого золота, то золотой браслет теплого оттенка на левой руке рядом с ними носить не стоит — лучше развести их на разные запястья.\"},{\"question\":\"Что означает браслет на левой руке согласно народным приметам?\",\"answer\":\"Народный фольклор и браслет на руку, приметы связывают левое запястье с защитой от сглаза и внутренним миром. Считается, что браслет на левой руке оберегает владельца от зависти, негативной энергетики и помогает сохранить внутреннюю гармонию. Именно на левую сторону принято надевать защитные амулеты, красные нити и браслеты с камнями-оберегами.\"},{\"question\":\"Что значит браслет на правой руке с точки зрения энергетики?\",\"answer\":\"Браслет правая рука воспринимает как символ активного действия. Поскольку правая сторона отвечает за логику, рацио, волю и успех в социуме, украшение на этом запястье активизирует деловые качества, помогает в переговорах и символизирует уверенность в себе. Золотой браслет на этой руке часто носят как манифестацию лидерства и материального достатка.\"},{\"question\":\"Можно ли носить браслеты на руке одновременно на левой и правой стороне?\",\"answer\":\"Да, можно ли носить браслеты на руке сразу на обоих запястьях — вопрос актуальный для современной моды. Это частый прием в стилях бохо или авангард. Главное правило — соблюдать визуальный баланс. Например, если на одной руке надет широкий и массивный браслет-кафф, то на другую руку лучше выбрать сет из нескольких тонких и изящных цепочек, чтобы образ не выглядел перегруженным.\"},{\"question\":\"Для чего носят браслеты из натуральных камней и каков их смысл?\",\"answer\":\"Помимо декоративной функции, такие браслеты и их значение тесно связаны с литотерапией. Браслет символизирует непрерывный круг, транслирующий энергию минерала в тело через биологически активные точки на запястье. Их носят для привлечения удачи, гармонизации эмоционального фона или как персональный якорь для концентрации на личных целях.\"}]},\"tunes\":{}},{\"id\":\"LTZQXWDyRb\",\"type\":\"header\",\"data\":{\"text\":\"Источники\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"sources-block\"}}},{\"id\":\"zSr_qCUW7t\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tГОСТ Р 53047-2008 — Изделия ювелирные. Термины и определения. Классификация и типы конструкций шейных и запястных украшений.\"},\"tunes\":{}},{\"id\":\"vfgjDkXuNu\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tОСТ 117-3-002-95 — Изделия ювелирные из драгоценных металлов. Общие технические условия (в части прочности замковых соединений браслетов и цепей).\"},\"tunes\":{}},{\"id\":\"6FT7hXRpvz\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tИсторико-археологические сборники Института археологии РАН (материалы по исследованию древнерусских наручей и античных украшений).\"},\"tunes\":{}}],\"version\":\"2.25.0\"}'
'class' => 'app\\app_project\\widgets\\content\\EditorJs\\EditorJsWidget'
]
]
]
18 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/base/View.php'
'line' => 347
'args' => [
0 => '/var/www/main/data/www/violet-jewelry-shop.ru/app_project/views/blog/post.php'
]
'function' => 'require'
]
19 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/base/View.php'
'line' => 257
'function' => 'renderPhpFile'
'class' => 'yii\\base\\View'
'type' => '->'
'args' => [
0 => '/var/www/main/data/www/violet-jewelry-shop.ru/app_project/views/blog/post.php'
1 => [
'post' => app\app_project\models\blog\BlogPost#22
(
[yii\base\Component:_events] => [
'beforeInsert' => [
0 => [
0 => [
0 => app\app_base\behaviors\DateActionBehavior#23
(
[owner] => app\app_project\models\blog\BlogPost#22(...)
[yii\base\Behavior:_attachedEvents] => [
'beforeInsert' => 'dateCreate'
'beforeUpdate' => 'dateUpdate'
]
[createdAtAttribute] => 'created_at'
[updatedAtAttribute] => 'updated_at'
)
1 => 'dateCreate'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\FileBehavior#24
(
[owner] => app\app_project\models\blog\BlogPost#22(...)
[yii\base\Behavior:_attachedEvents] => [
'afterFind' => 'getCurrent'
'beforeValidate' => 'getFileInstance'
'afterValidate' => 'getFileInstance'
'beforeInsert' => 'save'
'beforeUpdate' => 'save'
'afterDelete' => 'delete'
]
[fields] => [
'images/blog/posts' => [
0 => 'cover_file'
]
]
[defaultDir] => 'images'
[maxImageSize] => null
[enableResize] => false
[maxSideSize] => null
[app\app_base\behaviors\BaseFileBehavior:oldFiles] => [
'cover_file' => 'images/blog/posts/m5/qZ/7K/m5qZ7KYZ3r2BoIU.jpg'
]
)
1 => 'save'
]
1 => null
]
]
'beforeUpdate' => [
0 => [
0 => [
0 => app\app_base\behaviors\DateActionBehavior#23(...)
1 => 'dateUpdate'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\FileBehavior#24(...)
1 => 'save'
]
1 => null
]
]
'afterInsert' => [
0 => [
0 => [
0 => app\app_base\behaviors\SeoBehavior#25
(
[owner] => app\app_project\models\blog\BlogPost#22(...)
[yii\base\Behavior:_attachedEvents] => [
'afterInsert' => 'process'
'afterUpdate' => 'process'
'afterDelete' => 'delete'
]
)
1 => 'process'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\CacheBehavior#26
(
[owner] => app\app_project\models\blog\BlogPost#22(...)
[yii\base\Behavior:_attachedEvents] => [
'afterInsert' => 'deleteCache'
'afterUpdate' => 'deleteCache'
'afterDelete' => 'deleteCache'
]
[keys] => [
0 => 'blog_posts'
1 => 'blog'
]
)
1 => 'deleteCache'
]
1 => null
]
]
'afterUpdate' => [
0 => [
0 => [
0 => app\app_base\behaviors\SeoBehavior#25(...)
1 => 'process'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\CacheBehavior#26(...)
1 => 'deleteCache'
]
1 => null
]
]
'afterDelete' => [
0 => [
0 => [
0 => app\app_base\behaviors\SeoBehavior#25(...)
1 => 'delete'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\FileBehavior#24(...)
1 => 'delete'
]
1 => null
]
2 => [
0 => [
0 => app\app_base\behaviors\CacheBehavior#26(...)
1 => 'deleteCache'
]
1 => null
]
]
'beforeValidate' => [
0 => [
0 => [
0 => app\app_base\behaviors\SluggableBehavior#27
(
[owner] => app\app_project\models\blog\BlogPost#22(...)
[yii\base\Behavior:_attachedEvents] => [
'beforeValidate' => 'evaluateAttributes'
]
[attributes] => [
'beforeValidate' => 'slug'
]
[value] => null
[skipUpdateOnClean] => true
[preserveNonEmptyValues] => false
[slugAttribute] => 'slug'
[attribute] => 'title'
[immutable] => false
[ensureUnique] => true
[skipOnEmpty] => false
[uniqueValidator] => []
[uniqueSlugGenerator] => null
)
1 => 'evaluateAttributes'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\FileBehavior#24(...)
1 => 'getFileInstance'
]
1 => null
]
]
'afterFind' => [
0 => [
0 => [
0 => app\app_base\behaviors\FileBehavior#24(...)
1 => 'getCurrent'
]
1 => null
]
]
'afterValidate' => [
0 => [
0 => [
0 => app\app_base\behaviors\FileBehavior#24(...)
1 => 'getFileInstance'
]
1 => null
]
]
]
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => [
'app\\app_base\\behaviors\\DateActionBehavior' => app\app_base\behaviors\DateActionBehavior#23(...)
'app\\app_base\\behaviors\\SeoBehavior' => app\app_base\behaviors\SeoBehavior#25(...)
'app\\app_base\\behaviors\\SluggableBehavior' => app\app_base\behaviors\SluggableBehavior#27(...)
'app\\app_base\\behaviors\\FileBehavior' => app\app_base\behaviors\FileBehavior#24(...)
'app\\app_base\\behaviors\\CacheBehavior' => app\app_base\behaviors\CacheBehavior#26(...)
]
[yii\base\Model:_errors] => null
[yii\base\Model:_validators] => null
[yii\base\Model:_scenario] => 'default'
[yii\db\BaseActiveRecord:_attributes] => [
'slug' => 'chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke'
'cover_file' => 'images/blog/posts/m5/qZ/7K/m5qZ7KYZ3r2BoIU.jpg'
'is_visible' => 1
'created_at' => '2026-07-16 22:52:10'
'id' => 37
'blog_category_id' => 7
'blog_author_id' => 1
'title' => 'Что такое браслет: история, культурное значение и правила ношения на левой и правой руке'
'description' => 'Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики.'
'content' => '{\"time\":1784231526322,\"blocks\":[{\"id\":\"njoFxqvGdy\",\"type\":\"paragraph\",\"data\":{\"text\":\"Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики: ношение на правой руке традиционно подчеркивает активную внешнюю энергию, логику и статус (особенно если это золотой браслет), в то время как браслет на левой руке чаще символизирует интуицию, творческое начало и внутреннюю защиту.\"},\"tunes\":{}},{\"id\":\"0ZlLuPnwt_\",\"type\":\"anchorLinks\",\"data\":{\"items\":[{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"anchor\":\"istoriya-brasleta\"},{\"text\":\"Функции браслета в различных культурах: зачем его носили предки\",\"anchor\":\"funktsii-brasleta\"},{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"anchor\":\"na-kakoy-ruke\"},{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"anchor\":\"simvolika-ruk\"},{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"anchor\":\"pravila-i-primety\"},{\"text\":\"Мнение эксперта violet\",\"anchor\":\"expert-block\"},{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"anchor\":\"faq-block\"},{\"text\":\"Источники\",\"anchor\":\"sources-block\"}]},\"tunes\":{}},{\"id\":\"wz2x5ePp8q\",\"type\":\"header\",\"data\":{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"istoriya-brasleta\"}}},{\"id\":\"kXpbUMNAes\",\"type\":\"paragraph\",\"data\":{\"text\":\"История браслетов насчитывает десятки тысяч лет — древнейшие археологические находки (например, браслет из зеленоватого хлоритолита, найденный в Денисовой пещере на Алтае) датируются эпохой палеолита. Название украшения произошло от французского слова bracelet, корень которого восходит к латинскому brachium — «рука».\"},\"tunes\":{}},{\"id\":\"HpB4rjPiZb\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>В разные исторические эпохи этот элемент менял свои визуальные формы и материалы:</b>\"},\"tunes\":{}},{\"id\":\"wWmtMJcPtx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tКаменный век: Изделия изготавливались из бивней мамонтов, костей животных, ракушек, кожи и гибких древесных волокон.\"},\"tunes\":{}},{\"id\":\"My4BhcejIx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревний Египет: Браслеты превратились в массивные золотые обручи, инкрустированные бирюзой, лазуритом и карнеолом. Они плотно ассоциировались с божественной властью фараонов и жрецов.\"},\"tunes\":{}},{\"id\":\"O1QObde-_A\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tАнтичность (Греция и Рим): Браслеты носили как женщины, так и мужчины. Римские воины использовали широкие металлические наручи из бронзы и золота для защиты запястий в ближнем бою.\"},\"tunes\":{}},{\"id\":\"wW7p9TVsly\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревняя Русь: Украшения назывались «обручами» или «наручами». Они скрепляли широкие рукава традиционной женской рубахи. На них часто изображались мифологические сюжеты, русалии и орнаменты-обереги.\"},\"tunes\":{}},{\"id\":\"XyE-nl0he-\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/26af84a4302d8d2752d881fcdd318a68.jpg\"},\"caption\":\"История браслета\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"1s01xzNjfA\",\"type\":\"header\",\"data\":{\"text\":\" Функции браслета в различных культурах: зачем его носили предки\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"funktsii-brasleta\"}}},{\"id\":\"0vwjZ2jFUU\",\"type\":\"paragraph\",\"data\":{\"text\":\"Понимая, зачем нужны браслеты в историческом контексте, становится ясно, что декоративная роль всегда была вторичной. Первостепенное обозначение браслетов сводилось к сакральным, социальным и защитным аспектам.\"},\"tunes\":{}},{\"id\":\"Qd-J3ocHwL\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>Основные функции браслета в истории цивилизаций:</b>\"},\"tunes\":{}},{\"id\":\"QPtrGbCrQ7\",\"type\":\"list\",\"data\":{\"style\":\"ordered\",\"items\":[{\"content\":\"Магическая (обережная): Браслет смысл которого заключался в создании замкнутого круга, закрывал энергетические каналы человека на запястьях и защищал от злых духов, сглаза или болезней.\",\"items\":[]},{\"content\":\"Социально-иераХическая: По материалу украшения (золото, платина, кость, железо) мгновенно определялся сословный статус, богатство рода и кастовая принадлежность владельца.\",\"items\":[]},{\"content\":\" Информационная (паспорт воина): В скандинавских и германских племенах тяжелые серебряные и золотые браслеты-гривны вручались конунгом верным воинам как клятва верности и материальный эквивалент боевых заслуг.\",\"items\":[]}]},\"tunes\":{}},{\"id\":\"fxGqwGkGIN\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/c4cf96d67547f665c6d72bb3da399f60.jpg\"},\"caption\":\"Функции браслетов в различных культурах\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"I1OKoEwqG1\",\"type\":\"header\",\"data\":{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"na-kakoy-ruke\"}}},{\"id\":\"b492JmGTlL\",\"type\":\"paragraph\",\"data\":{\"text\":\"В современном мире строгих ограничений, предписывающих, на какую руку можно или нельзя надевать украшения, не существует. Главный критерий — личное удобство, сохранность изделия и сочетаемость с другими аксессуарами. Однако современный классический этикет выработал несколько общих рекомендаций.\"},\"tunes\":{}},{\"id\":\"6OahuWBzT4\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет женщины:</b>\"},\"tunes\":{}},{\"id\":\"YUHGy00vRn\",\"type\":\"paragraph\",\"data\":{\"text\":\"Исторически большинство женщин предпочитает надевать браслет на правую руку, поскольку большинство людей являются правшами. Активная правая рука чаще находится на виду при жестикуляции, приветствии или письме, что позволяет эффектно продемонстрировать ювелирное изделие. Если женщина одновременно носит наручные часы, их традиционно надевают на левое запястье, а браслеты — на правое, чтобы металл корпуса и замков не царапал друг друга.\"},\"tunes\":{}},{\"id\":\"IjzeIdqoLx\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет мужчины:</b>\"},\"tunes\":{}},{\"id\":\"ehxibL_MVP\",\"type\":\"paragraph\",\"data\":{\"text\":\"Мужской ювелирный этикет более сдержан. Выбирая, на какой руке носят brasslet мужчины, стилисты советуют ориентироваться на баланс с часами. Если на левой руке надеты крупные механические часы, лаконичный кожаный, стальной или золотой браслет перемещают на правую руку. В стиле кэжуал допускается ношение часов и тонкого браслета на одном (обычно левом) запястье.\"},\"tunes\":{}},{\"id\":\"sx_DlwSMgi\",\"type\":\"header\",\"data\":{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"simvolika-ruk\"}}},{\"id\":\"H8PkUBxKIi\",\"type\":\"paragraph\",\"data\":{\"text\":\"Разделение на правую и левую стороны уходит корнями в философию, эзотерику и древние психофизиологические концепции. То, что означает браслет на руке, напрямую связано с полушариями человеческого мозга и потоками энергии.\"},\"tunes\":{}},{\"id\":\"JrtlVTyIFl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на левой руке:</b> Левая сторона во многих восточных философиях (включая концепцию Инь) считается «принимающей». Она отвечает за подсознание, интуицию, творчество, внутренние эмоции и защиту от внешнего негатива. Ношение браслета здесь символизирует желание укрепить внутренний баланс, развить интуитивные способности или защитить личные границы.\"},\"tunes\":{}},{\"id\":\"qcN0b4_LWl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на правой руке:</b> Правая сторона (энергия Ян) считается «отдающей». Она управляет логикой, действием, волей, карьерой, внешними коммуникациями и социальным статусом. Твердый золотой браслет на правой руке транслирует окружающим уверенность, материальный успех, авторитет и лидерские качества владельца.\"},\"tunes\":{}},{\"id\":\"1nXPkx03h5\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/149edaa32e18067590ada7c465b7f910.jpg\"},\"caption\":\"На какой руке носить браслет\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"zCaJEtF0Tk\",\"type\":\"header\",\"data\":{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"pravila-i-primety\"}}},{\"id\":\"KxoiRkUONh\",\"type\":\"paragraph\",\"data\":{\"text\":\"В народном фольклоре и ювелирном сообществе сформировались определенные приметы и правила стиля, которые помогают избежать стилистических ошибок и сохранить целостность украшений.\"},\"tunes\":{}},{\"id\":\"oVvEAzM4ML\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Сочетание металлов</b>: Современная мода позволяет одновременно носить белое золото, платину и классическое желтое золото на одной руке, при условии, что изделия объединены общим стилем или геометрией.\"},\"tunes\":{}},{\"id\":\"Z_Q0M8LioA\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Примета на разрыв</b>: считается, что, если браслет-оберег (например, с натуральными защитными камнями) внезапно рвется или теряется сам по себе, это означает, что он выполнил свою защитную функцию, приняв на себя сильный энергетический удар или отведя беду от владельца.\"},\"tunes\":{}},{\"id\":\"AFNZOwU2AB\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Правило соразмерности</b>: Массивные широкие браслеты лучше носить сольно, чтобы не перегружать образ. Утонченные жесткие обручи или цепочки тонкого плетения, напротив, великолепно смотрятся сетами из 3–5 штук на одном запястье.\"},\"tunes\":{}},{\"id\":\"XBWFq9yjdw\",\"type\":\"header\",\"data\":{\"text\":\"Мнение эксперта violet\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"expert-block\"}}},{\"id\":\"HFTc-59uAW\",\"type\":\"quote\",\"data\":{\"text\":\"«Главная ошибка, с которой я сталкиваюсь при подборе украшений для клиентов — это игнорирование соразмерности браслета и анатомических особенностей запястья. Тонкая изящная цепочка просто потеряется на широком запястье, а избыточно массивный, широкий кафф утяжелит хрупкую женскую ручку.Если вы выбираете золотой браслет, который планируете носить каждый день, обратите внимание на эргономику замка и плотность прилегания к коже. Между металлом и запястьем должно оставаться свободноепространство примерно в один палец — тогда изделие будет красиво скользить, подчеркивая хрупкость руки, и не доставит дискомфорта при сгибании кисти. И помните про баланс: если на вашей руке надет крупный, притягивающий внимание стейтмент-браслет, откажитесь от массивных коктейльных колец на этой же кисти, чтобы образ оставался элегантным, а не перегруженным».\",\"caption\":\"Ефремова Мария Владимировна - главный редактор Ювелирного дома VIOLET\",\"alignment\":\"left\"},\"tunes\":{}},{\"id\":\"hHpqU-ephW\",\"type\":\"header\",\"data\":{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"faq-block\"}}},{\"id\":\"S6UZkRnZ7Q\",\"type\":\"faq\",\"data\":{\"items\":[{\"question\":\"На какой руке носят браслет женщины по правилам этикета?\",\"answer\":\"Согласно классическому ювелирному этикету, браслет на руке носят женщины преимущественно с правой стороны. Это обусловлено тем, что правая рука чаще находится в движении и на виду при жестикуляции. Однако если на правой руке уже есть массивное акцентное кольцо, украшение лучше переодеть на левую сторону, чтобы сбалансировать ювелирный ансамбль.\"},{\"question\":\"На какой руке носят золотой браслет мужчины и женщины?\",\"answer\":\"Четких гендерных ограничений нет. Но традиционно золотой браслет на какой руке бы ни находился, он должен гармонировать с часами. Изделия из желтого или красного золота чаще надевают на правую руку правши, оставляя левую для наручных часов. Если часы выполнены из стали или белого золота, то золотой браслет теплого оттенка на левой руке рядом с ними носить не стоит — лучше развести их на разные запястья.\"},{\"question\":\"Что означает браслет на левой руке согласно народным приметам?\",\"answer\":\"Народный фольклор и браслет на руку, приметы связывают левое запястье с защитой от сглаза и внутренним миром. Считается, что браслет на левой руке оберегает владельца от зависти, негативной энергетики и помогает сохранить внутреннюю гармонию. Именно на левую сторону принято надевать защитные амулеты, красные нити и браслеты с камнями-оберегами.\"},{\"question\":\"Что значит браслет на правой руке с точки зрения энергетики?\",\"answer\":\"Браслет правая рука воспринимает как символ активного действия. Поскольку правая сторона отвечает за логику, рацио, волю и успех в социуме, украшение на этом запястье активизирует деловые качества, помогает в переговорах и символизирует уверенность в себе. Золотой браслет на этой руке часто носят как манифестацию лидерства и материального достатка.\"},{\"question\":\"Можно ли носить браслеты на руке одновременно на левой и правой стороне?\",\"answer\":\"Да, можно ли носить браслеты на руке сразу на обоих запястьях — вопрос актуальный для современной моды. Это частый прием в стилях бохо или авангард. Главное правило — соблюдать визуальный баланс. Например, если на одной руке надет широкий и массивный браслет-кафф, то на другую руку лучше выбрать сет из нескольких тонких и изящных цепочек, чтобы образ не выглядел перегруженным.\"},{\"question\":\"Для чего носят браслеты из натуральных камней и каков их смысл?\",\"answer\":\"Помимо декоративной функции, такие браслеты и их значение тесно связаны с литотерапией. Браслет символизирует непрерывный круг, транслирующий энергию минерала в тело через биологически активные точки на запястье. Их носят для привлечения удачи, гармонизации эмоционального фона или как персональный якорь для концентрации на личных целях.\"}]},\"tunes\":{}},{\"id\":\"LTZQXWDyRb\",\"type\":\"header\",\"data\":{\"text\":\"Источники\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"sources-block\"}}},{\"id\":\"zSr_qCUW7t\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tГОСТ Р 53047-2008 — Изделия ювелирные. Термины и определения. Классификация и типы конструкций шейных и запястных украшений.\"},\"tunes\":{}},{\"id\":\"vfgjDkXuNu\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tОСТ 117-3-002-95 — Изделия ювелирные из драгоценных металлов. Общие технические условия (в части прочности замковых соединений браслетов и цепей).\"},\"tunes\":{}},{\"id\":\"6FT7hXRpvz\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tИсторико-археологические сборники Института археологии РАН (материалы по исследованию древнерусских наручей и античных украшений).\"},\"tunes\":{}}],\"version\":\"2.25.0\"}'
'published_at' => '2026-07-16 22:52:00'
'updated_at' => '2026-07-16 22:53:59'
]
[yii\db\BaseActiveRecord:_oldAttributes] => [
'slug' => 'chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke'
'cover_file' => 'images/blog/posts/m5/qZ/7K/m5qZ7KYZ3r2BoIU.jpg'
'is_visible' => 1
'created_at' => '2026-07-16 22:52:10'
'id' => 37
'blog_category_id' => 7
'blog_author_id' => 1
'title' => 'Что такое браслет: история, культурное значение и правила ношения на левой и правой руке'
'description' => 'Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики.'
'content' => '{\"time\":1784231526322,\"blocks\":[{\"id\":\"njoFxqvGdy\",\"type\":\"paragraph\",\"data\":{\"text\":\"Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики: ношение на правой руке традиционно подчеркивает активную внешнюю энергию, логику и статус (особенно если это золотой браслет), в то время как браслет на левой руке чаще символизирует интуицию, творческое начало и внутреннюю защиту.\"},\"tunes\":{}},{\"id\":\"0ZlLuPnwt_\",\"type\":\"anchorLinks\",\"data\":{\"items\":[{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"anchor\":\"istoriya-brasleta\"},{\"text\":\"Функции браслета в различных культурах: зачем его носили предки\",\"anchor\":\"funktsii-brasleta\"},{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"anchor\":\"na-kakoy-ruke\"},{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"anchor\":\"simvolika-ruk\"},{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"anchor\":\"pravila-i-primety\"},{\"text\":\"Мнение эксперта violet\",\"anchor\":\"expert-block\"},{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"anchor\":\"faq-block\"},{\"text\":\"Источники\",\"anchor\":\"sources-block\"}]},\"tunes\":{}},{\"id\":\"wz2x5ePp8q\",\"type\":\"header\",\"data\":{\"text\":\"История браслета: от первобытного оберега до символа власти\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"istoriya-brasleta\"}}},{\"id\":\"kXpbUMNAes\",\"type\":\"paragraph\",\"data\":{\"text\":\"История браслетов насчитывает десятки тысяч лет — древнейшие археологические находки (например, браслет из зеленоватого хлоритолита, найденный в Денисовой пещере на Алтае) датируются эпохой палеолита. Название украшения произошло от французского слова bracelet, корень которого восходит к латинскому brachium — «рука».\"},\"tunes\":{}},{\"id\":\"HpB4rjPiZb\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>В разные исторические эпохи этот элемент менял свои визуальные формы и материалы:</b>\"},\"tunes\":{}},{\"id\":\"wWmtMJcPtx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tКаменный век: Изделия изготавливались из бивней мамонтов, костей животных, ракушек, кожи и гибких древесных волокон.\"},\"tunes\":{}},{\"id\":\"My4BhcejIx\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревний Египет: Браслеты превратились в массивные золотые обручи, инкрустированные бирюзой, лазуритом и карнеолом. Они плотно ассоциировались с божественной властью фараонов и жрецов.\"},\"tunes\":{}},{\"id\":\"O1QObde-_A\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tАнтичность (Греция и Рим): Браслеты носили как женщины, так и мужчины. Римские воины использовали широкие металлические наручи из бронзы и золота для защиты запястий в ближнем бою.\"},\"tunes\":{}},{\"id\":\"wW7p9TVsly\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tДревняя Русь: Украшения назывались «обручами» или «наручами». Они скрепляли широкие рукава традиционной женской рубахи. На них часто изображались мифологические сюжеты, русалии и орнаменты-обереги.\"},\"tunes\":{}},{\"id\":\"XyE-nl0he-\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/26af84a4302d8d2752d881fcdd318a68.jpg\"},\"caption\":\"История браслета\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"1s01xzNjfA\",\"type\":\"header\",\"data\":{\"text\":\" Функции браслета в различных культурах: зачем его носили предки\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"funktsii-brasleta\"}}},{\"id\":\"0vwjZ2jFUU\",\"type\":\"paragraph\",\"data\":{\"text\":\"Понимая, зачем нужны браслеты в историческом контексте, становится ясно, что декоративная роль всегда была вторичной. Первостепенное обозначение браслетов сводилось к сакральным, социальным и защитным аспектам.\"},\"tunes\":{}},{\"id\":\"Qd-J3ocHwL\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>Основные функции браслета в истории цивилизаций:</b>\"},\"tunes\":{}},{\"id\":\"QPtrGbCrQ7\",\"type\":\"list\",\"data\":{\"style\":\"ordered\",\"items\":[{\"content\":\"Магическая (обережная): Браслет смысл которого заключался в создании замкнутого круга, закрывал энергетические каналы человека на запястьях и защищал от злых духов, сглаза или болезней.\",\"items\":[]},{\"content\":\"Социально-иераХическая: По материалу украшения (золото, платина, кость, железо) мгновенно определялся сословный статус, богатство рода и кастовая принадлежность владельца.\",\"items\":[]},{\"content\":\" Информационная (паспорт воина): В скандинавских и германских племенах тяжелые серебряные и золотые браслеты-гривны вручались конунгом верным воинам как клятва верности и материальный эквивалент боевых заслуг.\",\"items\":[]}]},\"tunes\":{}},{\"id\":\"fxGqwGkGIN\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/c4cf96d67547f665c6d72bb3da399f60.jpg\"},\"caption\":\"Функции браслетов в различных культурах\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"I1OKoEwqG1\",\"type\":\"header\",\"data\":{\"text\":\"На какой руке носят браслет женщины и мужчины: ювелирный этикет\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"na-kakoy-ruke\"}}},{\"id\":\"b492JmGTlL\",\"type\":\"paragraph\",\"data\":{\"text\":\"В современном мире строгих ограничений, предписывающих, на какую руку можно или нельзя надевать украшения, не существует. Главный критерий — личное удобство, сохранность изделия и сочетаемость с другими аксессуарами. Однако современный классический этикет выработал несколько общих рекомендаций.\"},\"tunes\":{}},{\"id\":\"6OahuWBzT4\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет женщины:</b>\"},\"tunes\":{}},{\"id\":\"YUHGy00vRn\",\"type\":\"paragraph\",\"data\":{\"text\":\"Исторически большинство женщин предпочитает надевать браслет на правую руку, поскольку большинство людей являются правшами. Активная правая рука чаще находится на виду при жестикуляции, приветствии или письме, что позволяет эффектно продемонстрировать ювелирное изделие. Если женщина одновременно носит наручные часы, их традиционно надевают на левое запястье, а браслеты — на правое, чтобы металл корпуса и замков не царапал друг друга.\"},\"tunes\":{}},{\"id\":\"IjzeIdqoLx\",\"type\":\"paragraph\",\"data\":{\"text\":\"<b>На какой руке носят браслет мужчины:</b>\"},\"tunes\":{}},{\"id\":\"ehxibL_MVP\",\"type\":\"paragraph\",\"data\":{\"text\":\"Мужской ювелирный этикет более сдержан. Выбирая, на какой руке носят brasslet мужчины, стилисты советуют ориентироваться на баланс с часами. Если на левой руке надеты крупные механические часы, лаконичный кожаный, стальной или золотой браслет перемещают на правую руку. В стиле кэжуал допускается ношение часов и тонкого браслета на одном (обычно левом) запястье.\"},\"tunes\":{}},{\"id\":\"sx_DlwSMgi\",\"type\":\"header\",\"data\":{\"text\":\"Что означают браслеты на руке: символика левой и правой стороны\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"simvolika-ruk\"}}},{\"id\":\"H8PkUBxKIi\",\"type\":\"paragraph\",\"data\":{\"text\":\"Разделение на правую и левую стороны уходит корнями в философию, эзотерику и древние психофизиологические концепции. То, что означает браслет на руке, напрямую связано с полушариями человеческого мозга и потоками энергии.\"},\"tunes\":{}},{\"id\":\"JrtlVTyIFl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на левой руке:</b> Левая сторона во многих восточных философиях (включая концепцию Инь) считается «принимающей». Она отвечает за подсознание, интуицию, творчество, внутренние эмоции и защиту от внешнего негатива. Ношение браслета здесь символизирует желание укрепить внутренний баланс, развить интуитивные способности или защитить личные границы.\"},\"tunes\":{}},{\"id\":\"qcN0b4_LWl\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Браслет на правой руке:</b> Правая сторона (энергия Ян) считается «отдающей». Она управляет логикой, действием, волей, карьерой, внешними коммуникациями и социальным статусом. Твердый золотой браслет на правой руке транслирует окружающим уверенность, материальный успех, авторитет и лидерские качества владельца.\"},\"tunes\":{}},{\"id\":\"1nXPkx03h5\",\"type\":\"image\",\"data\":{\"file\":{\"url\":\"/uploads/editor/images/149edaa32e18067590ada7c465b7f910.jpg\"},\"caption\":\"На какой руке носить браслет\",\"withBorder\":false,\"stretched\":false,\"withBackground\":false},\"tunes\":{}},{\"id\":\"zCaJEtF0Tk\",\"type\":\"header\",\"data\":{\"text\":\"Ювелирные приметы и правила: какие браслеты можно носить вместе\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"pravila-i-primety\"}}},{\"id\":\"KxoiRkUONh\",\"type\":\"paragraph\",\"data\":{\"text\":\"В народном фольклоре и ювелирном сообществе сформировались определенные приметы и правила стиля, которые помогают избежать стилистических ошибок и сохранить целостность украшений.\"},\"tunes\":{}},{\"id\":\"oVvEAzM4ML\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Сочетание металлов</b>: Современная мода позволяет одновременно носить белое золото, платину и классическое желтое золото на одной руке, при условии, что изделия объединены общим стилем или геометрией.\"},\"tunes\":{}},{\"id\":\"Z_Q0M8LioA\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Примета на разрыв</b>: считается, что, если браслет-оберег (например, с натуральными защитными камнями) внезапно рвется или теряется сам по себе, это означает, что он выполнил свою защитную функцию, приняв на себя сильный энергетический удар или отведя беду от владельца.\"},\"tunes\":{}},{\"id\":\"AFNZOwU2AB\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\t<b>Правило соразмерности</b>: Массивные широкие браслеты лучше носить сольно, чтобы не перегружать образ. Утонченные жесткие обручи или цепочки тонкого плетения, напротив, великолепно смотрятся сетами из 3–5 штук на одном запястье.\"},\"tunes\":{}},{\"id\":\"XBWFq9yjdw\",\"type\":\"header\",\"data\":{\"text\":\"Мнение эксперта violet\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"expert-block\"}}},{\"id\":\"HFTc-59uAW\",\"type\":\"quote\",\"data\":{\"text\":\"«Главная ошибка, с которой я сталкиваюсь при подборе украшений для клиентов — это игнорирование соразмерности браслета и анатомических особенностей запястья. Тонкая изящная цепочка просто потеряется на широком запястье, а избыточно массивный, широкий кафф утяжелит хрупкую женскую ручку.Если вы выбираете золотой браслет, который планируете носить каждый день, обратите внимание на эргономику замка и плотность прилегания к коже. Между металлом и запястьем должно оставаться свободноепространство примерно в один палец — тогда изделие будет красиво скользить, подчеркивая хрупкость руки, и не доставит дискомфорта при сгибании кисти. И помните про баланс: если на вашей руке надет крупный, притягивающий внимание стейтмент-браслет, откажитесь от массивных коктейльных колец на этой же кисти, чтобы образ оставался элегантным, а не перегруженным».\",\"caption\":\"Ефремова Мария Владимировна - главный редактор Ювелирного дома VIOLET\",\"alignment\":\"left\"},\"tunes\":{}},{\"id\":\"hHpqU-ephW\",\"type\":\"header\",\"data\":{\"text\":\"Часто задаваемые вопросы (FAQ)\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"faq-block\"}}},{\"id\":\"S6UZkRnZ7Q\",\"type\":\"faq\",\"data\":{\"items\":[{\"question\":\"На какой руке носят браслет женщины по правилам этикета?\",\"answer\":\"Согласно классическому ювелирному этикету, браслет на руке носят женщины преимущественно с правой стороны. Это обусловлено тем, что правая рука чаще находится в движении и на виду при жестикуляции. Однако если на правой руке уже есть массивное акцентное кольцо, украшение лучше переодеть на левую сторону, чтобы сбалансировать ювелирный ансамбль.\"},{\"question\":\"На какой руке носят золотой браслет мужчины и женщины?\",\"answer\":\"Четких гендерных ограничений нет. Но традиционно золотой браслет на какой руке бы ни находился, он должен гармонировать с часами. Изделия из желтого или красного золота чаще надевают на правую руку правши, оставляя левую для наручных часов. Если часы выполнены из стали или белого золота, то золотой браслет теплого оттенка на левой руке рядом с ними носить не стоит — лучше развести их на разные запястья.\"},{\"question\":\"Что означает браслет на левой руке согласно народным приметам?\",\"answer\":\"Народный фольклор и браслет на руку, приметы связывают левое запястье с защитой от сглаза и внутренним миром. Считается, что браслет на левой руке оберегает владельца от зависти, негативной энергетики и помогает сохранить внутреннюю гармонию. Именно на левую сторону принято надевать защитные амулеты, красные нити и браслеты с камнями-оберегами.\"},{\"question\":\"Что значит браслет на правой руке с точки зрения энергетики?\",\"answer\":\"Браслет правая рука воспринимает как символ активного действия. Поскольку правая сторона отвечает за логику, рацио, волю и успех в социуме, украшение на этом запястье активизирует деловые качества, помогает в переговорах и символизирует уверенность в себе. Золотой браслет на этой руке часто носят как манифестацию лидерства и материального достатка.\"},{\"question\":\"Можно ли носить браслеты на руке одновременно на левой и правой стороне?\",\"answer\":\"Да, можно ли носить браслеты на руке сразу на обоих запястьях — вопрос актуальный для современной моды. Это частый прием в стилях бохо или авангард. Главное правило — соблюдать визуальный баланс. Например, если на одной руке надет широкий и массивный браслет-кафф, то на другую руку лучше выбрать сет из нескольких тонких и изящных цепочек, чтобы образ не выглядел перегруженным.\"},{\"question\":\"Для чего носят браслеты из натуральных камней и каков их смысл?\",\"answer\":\"Помимо декоративной функции, такие браслеты и их значение тесно связаны с литотерапией. Браслет символизирует непрерывный круг, транслирующий энергию минерала в тело через биологически активные точки на запястье. Их носят для привлечения удачи, гармонизации эмоционального фона или как персональный якорь для концентрации на личных целях.\"}]},\"tunes\":{}},{\"id\":\"LTZQXWDyRb\",\"type\":\"header\",\"data\":{\"text\":\"Источники\",\"level\":3},\"tunes\":{\"anchorTune\":{\"anchor\":\"sources-block\"}}},{\"id\":\"zSr_qCUW7t\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tГОСТ Р 53047-2008 — Изделия ювелирные. Термины и определения. Классификация и типы конструкций шейных и запястных украшений.\"},\"tunes\":{}},{\"id\":\"vfgjDkXuNu\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tОСТ 117-3-002-95 — Изделия ювелирные из драгоценных металлов. Общие технические условия (в части прочности замковых соединений браслетов и цепей).\"},\"tunes\":{}},{\"id\":\"6FT7hXRpvz\",\"type\":\"paragraph\",\"data\":{\"text\":\"•\\tИсторико-археологические сборники Института археологии РАН (материалы по исследованию древнерусских наручей и античных украшений).\"},\"tunes\":{}}],\"version\":\"2.25.0\"}'
'published_at' => '2026-07-16 22:52:00'
'updated_at' => '2026-07-16 22:53:59'
]
[yii\db\BaseActiveRecord:_related] => [
'author' => app\app_project\models\blog\BlogAuthor#28
(
[yii\base\Component:_events] => [
'beforeInsert' => [
0 => [
0 => [
0 => app\app_base\behaviors\DateActionBehavior#29
(
[owner] => app\app_project\models\blog\BlogAuthor#28(...)
[yii\base\Behavior:_attachedEvents] => [
'beforeInsert' => 'dateCreate'
'beforeUpdate' => 'dateUpdate'
]
[createdAtAttribute] => 'created_at'
[updatedAtAttribute] => 'updated_at'
)
1 => 'dateCreate'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\FileBehavior#30
(
[owner] => app\app_project\models\blog\BlogAuthor#28(...)
[yii\base\Behavior:_attachedEvents] => [
'afterFind' => 'getCurrent'
'beforeValidate' => 'getFileInstance'
'afterValidate' => 'getFileInstance'
'beforeInsert' => 'save'
'beforeUpdate' => 'save'
'afterDelete' => 'delete'
]
[fields] => [
'images/blog/authors' => [
0 => 'photo_file'
]
]
[defaultDir] => 'images'
[maxImageSize] => null
[enableResize] => false
[maxSideSize] => null
[app\app_base\behaviors\BaseFileBehavior:oldFiles] => [
'photo_file' => 'images/blog/authors/l9/0j/Tr/l90jTrfRVp83yKX.jpeg'
]
)
1 => 'save'
]
1 => null
]
]
'beforeUpdate' => [
0 => [
0 => [
0 => app\app_base\behaviors\DateActionBehavior#29(...)
1 => 'dateUpdate'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\FileBehavior#30(...)
1 => 'save'
]
1 => null
]
]
'afterFind' => [
0 => [
0 => [
0 => app\app_base\behaviors\FileBehavior#30(...)
1 => 'getCurrent'
]
1 => null
]
]
'beforeValidate' => [
0 => [
0 => [
0 => app\app_base\behaviors\FileBehavior#30(...)
1 => 'getFileInstance'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\SluggableBehavior#31
(
[owner] => app\app_project\models\blog\BlogAuthor#28(...)
[yii\base\Behavior:_attachedEvents] => [
'beforeValidate' => 'evaluateAttributes'
]
[attributes] => [
'beforeValidate' => 'slug'
]
[value] => null
[skipUpdateOnClean] => true
[preserveNonEmptyValues] => false
[slugAttribute] => 'slug'
[attribute] => 'name'
[immutable] => false
[ensureUnique] => true
[skipOnEmpty] => false
[uniqueValidator] => []
[uniqueSlugGenerator] => null
)
1 => 'evaluateAttributes'
]
1 => null
]
]
'afterValidate' => [
0 => [
0 => [
0 => app\app_base\behaviors\FileBehavior#30(...)
1 => 'getFileInstance'
]
1 => null
]
]
'afterDelete' => [
0 => [
0 => [
0 => app\app_base\behaviors\FileBehavior#30(...)
1 => 'delete'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\CacheBehavior#32
(
[owner] => app\app_project\models\blog\BlogAuthor#28(...)
[yii\base\Behavior:_attachedEvents] => [
'afterInsert' => 'deleteCache'
'afterUpdate' => 'deleteCache'
'afterDelete' => 'deleteCache'
]
[keys] => [
0 => 'blog_posts'
1 => 'blog'
]
)
1 => 'deleteCache'
]
1 => null
]
2 => [
0 => [
0 => app\app_base\behaviors\SeoBehavior#33
(
[owner] => app\app_project\models\blog\BlogAuthor#28(...)
[yii\base\Behavior:_attachedEvents] => [
'afterInsert' => 'process'
'afterUpdate' => 'process'
'afterDelete' => 'delete'
]
)
1 => 'delete'
]
1 => null
]
]
'afterInsert' => [
0 => [
0 => [
0 => app\app_base\behaviors\CacheBehavior#32(...)
1 => 'deleteCache'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\SeoBehavior#33(...)
1 => 'process'
]
1 => null
]
]
'afterUpdate' => [
0 => [
0 => [
0 => app\app_base\behaviors\CacheBehavior#32(...)
1 => 'deleteCache'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\SeoBehavior#33(...)
1 => 'process'
]
1 => null
]
]
]
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => [
'app\\app_base\\behaviors\\DateActionBehavior' => app\app_base\behaviors\DateActionBehavior#29(...)
'app\\app_base\\behaviors\\FileBehavior' => app\app_base\behaviors\FileBehavior#30(...)
'app\\app_base\\behaviors\\CacheBehavior' => app\app_base\behaviors\CacheBehavior#32(...)
'app\\app_base\\behaviors\\SluggableBehavior' => app\app_base\behaviors\SluggableBehavior#31(...)
'app\\app_base\\behaviors\\SeoBehavior' => app\app_base\behaviors\SeoBehavior#33(...)
]
[yii\base\Model:_errors] => null
[yii\base\Model:_validators] => null
[yii\base\Model:_scenario] => 'default'
[yii\db\BaseActiveRecord:_attributes] => [
'slug' => 'efremova-mariya-vladimirovna'
'photo_file' => 'images/blog/authors/l9/0j/Tr/l90jTrfRVp83yKX.jpeg'
'created_at' => '2026-05-21 22:30:41'
'id' => 1
'name' => 'Ефремова Мария Владимировна'
'description' => 'Главный редактор Ювелирного дома VIOLET'
'updated_at' => '2026-05-26 12:04:26'
]
[yii\db\BaseActiveRecord:_oldAttributes] => [
'slug' => 'efremova-mariya-vladimirovna'
'photo_file' => 'images/blog/authors/l9/0j/Tr/l90jTrfRVp83yKX.jpeg'
'created_at' => '2026-05-21 22:30:41'
'id' => 1
'name' => 'Ефремова Мария Владимировна'
'description' => 'Главный редактор Ювелирного дома VIOLET'
'updated_at' => '2026-05-26 12:04:26'
]
[yii\db\BaseActiveRecord:_related] => []
[yii\db\BaseActiveRecord:_relationsDependencies] => []
[pageSize] => [
'web' => 12
'manager' => 40
]
[defaultOrder] => [
'web' => [
'id' => 3
]
'manager' => [
'id' => 4
]
]
[isFormProcess] => false
[arrayAttributes] => []
[isFromForm] => false
[allowCopy] => false
[isCopyProcess] => false
[*:seoFields] => []
)
'category' => app\app_project\models\blog\BlogCategory#34
(
[yii\base\Component:_events] => [
'beforeInsert' => [
0 => [
0 => [
0 => app\app_base\behaviors\DateActionBehavior#35
(
[owner] => app\app_project\models\blog\BlogCategory#34(...)
[yii\base\Behavior:_attachedEvents] => [
'beforeInsert' => 'dateCreate'
'beforeUpdate' => 'dateUpdate'
]
[createdAtAttribute] => 'created_at'
[updatedAtAttribute] => 'updated_at'
)
1 => 'dateCreate'
]
1 => null
]
1 => [
0 => [
0 => app\app_base\behaviors\SortIndexBehavior#36
(
[owner] => app\app_project\models\blog\BlogCategory#34(...)
[yii\base\Behavior:_attachedEvents] => [
'beforeInsert' => 'beforeInsert'
]
[sortAttribute] => 'sort_index'
[groupAttributes] => []
[*:sortAttributeValueOnSave] => null
)
1 => 'beforeInsert'
]
1 => null
]
]
'beforeUpdate' => [
0 => [
0 => [
0 => app\app_base\behaviors\DateActionBehavior#35(...)
1 => 'dateUpdate'
]
1 => null
]
]
'afterInsert' => [
0 => [
0 => [
0 => app\app_base\behaviors\SeoBehavior#37
(
[owner] => app\app_project\models\blog\BlogCategory#34(...)
[yii\base\Behavior:_attachedEvents] => [
'afterInsert' => 'process'
'afterUpdate' => 'process'
'afterDelete' => 'delete'
]
)
1 => 'process'
]
1 => null
]
]
'afterUpdate' => [
0 => [
0 => [
0 => app\app_base\behaviors\SeoBehavior#37(...)
1 => 'process'
]
1 => null
]
]
'afterDelete' => [
0 => [
0 => [
0 => app\app_base\behaviors\SeoBehavior#37(...)
1 => 'delete'
]
1 => null
]
]
'beforeValidate' => [
0 => [
0 => [
0 => app\app_base\behaviors\SluggableBehavior#38
(
[owner] => app\app_project\models\blog\BlogCategory#34(...)
[yii\base\Behavior:_attachedEvents] => [
'beforeValidate' => 'evaluateAttributes'
]
[attributes] => [
'beforeValidate' => 'slug'
]
[value] => null
[skipUpdateOnClean] => true
[preserveNonEmptyValues] => false
[slugAttribute] => 'slug'
[attribute] => 'title'
[immutable] => false
[ensureUnique] => true
[skipOnEmpty] => false
[uniqueValidator] => []
[uniqueSlugGenerator] => null
)
1 => 'evaluateAttributes'
]
1 => null
]
]
]
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => [
'app\\app_base\\behaviors\\DateActionBehavior' => app\app_base\behaviors\DateActionBehavior#35(...)
'app\\app_base\\behaviors\\SortIndexBehavior' => app\app_base\behaviors\SortIndexBehavior#36(...)
'app\\app_base\\behaviors\\SeoBehavior' => app\app_base\behaviors\SeoBehavior#37(...)
'app\\app_base\\behaviors\\SluggableBehavior' => app\app_base\behaviors\SluggableBehavior#38(...)
]
[yii\base\Model:_errors] => null
[yii\base\Model:_validators] => null
[yii\base\Model:_scenario] => 'default'
[yii\db\BaseActiveRecord:_attributes] => [
'slug' => 'azbuka-yuvelira-bazovye-znaniya'
'sort_index' => 7
'is_visible' => 1
'created_at' => '2026-05-21 22:36:36'
'id' => 7
'title' => '«Азбука ювелира» - базовые знания'
'updated_at' => null
]
[yii\db\BaseActiveRecord:_oldAttributes] => [
'slug' => 'azbuka-yuvelira-bazovye-znaniya'
'sort_index' => 7
'is_visible' => 1
'created_at' => '2026-05-21 22:36:36'
'id' => 7
'title' => '«Азбука ювелира» - базовые знания'
'updated_at' => null
]
[yii\db\BaseActiveRecord:_related] => []
[yii\db\BaseActiveRecord:_relationsDependencies] => []
[pageSize] => [
'web' => 12
'manager' => 40
]
[defaultOrder] => [
'web' => [
'id' => 3
]
'manager' => [
'id' => 4
]
]
[isFormProcess] => false
[arrayAttributes] => []
[isFromForm] => false
[allowCopy] => false
[isCopyProcess] => false
[*:seoFields] => []
)
]
[yii\db\BaseActiveRecord:_relationsDependencies] => [
'blog_author_id' => [
'author' => 'author'
]
'blog_category_id' => [
'category' => 'category'
]
]
[pageSize] => [
'web' => 12
'manager' => 40
]
[defaultOrder] => [
'web' => [
'id' => 3
]
'manager' => [
'id' => 4
]
]
[isFormProcess] => false
[arrayAttributes] => []
[isFromForm] => false
[allowCopy] => false
[isCopyProcess] => false
[*:seoFields] => []
)
]
]
]
20 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/base/View.php'
'line' => 156
'function' => 'renderFile'
'class' => 'yii\\base\\View'
'type' => '->'
'args' => [
0 => '/var/www/main/data/www/violet-jewelry-shop.ru/app_project/views/blog/post.php'
1 => [
'post' => app\app_project\models\blog\BlogPost#22(...)
]
2 => app\app_project\controllers\BlogController#39
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => []
[id] => 'blog'
[module] => yii\web\Application#40
(
[yii\base\Component:_events] => [
'beforeRequest' => [
0 => [
0 => Closure#41
(
[0] => Closure#41(...)
)
1 => null
]
1 => [
0 => Closure#42
(
[0] => Closure#42(...)
)
1 => null
]
]
'beforeAction' => [
0 => [
0 => Closure#43
(
[0] => Closure#43(...)
)
1 => null
]
]
]
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => []
[yii\di\ServiceLocator:_components] => [
'errorHandler' => yii\web\ErrorHandler#44
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[discardExistingOutput] => true
[memoryReserveSize] => 262144
[exception] => null
[silentExitOnException] => false
[yii\base\ErrorHandler:_memoryReserve] => 'xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx'
[yii\base\ErrorHandler:_hhvmException] => null
[yii\base\ErrorHandler:_registered] => true
[yii\base\ErrorHandler:_workingDirectory] => '/var/www/main/data/www/violet-jewelry-shop.ru/web'
[maxSourceLines] => 19
[maxTraceSourceLines] => 13
[errorAction] => 'errors/index'
[errorView] => '@yii/views/errorHandler/error.php'
[exceptionView] => '@yii/views/errorHandler/exception.php'
[callStackItemView] => '@yii/views/errorHandler/callStackItem.php'
[previousExceptionView] => '@yii/views/errorHandler/previousException.php'
[displayVars] => [
0 => '_GET'
1 => '_POST'
2 => '_FILES'
3 => '_COOKIE'
4 => '_SESSION'
]
[traceLine] => '{html}'
)
'request' => yii\web\Request#45
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[yii\base\Request:_scriptFile] => null
[yii\base\Request:_isConsoleRequest] => null
[enableCsrfValidation] => true
[csrfHeader] => 'X-CSRF-Token'
[csrfTokenSafeMethods] => [
0 => 'GET'
1 => 'HEAD'
2 => 'OPTIONS'
]
[csrfHeaderUnsafeMethods] => [
0 => 'GET'
1 => 'HEAD'
2 => 'POST'
]
[validateCsrfHeaderOnly] => false
[csrfParam] => '_csrf'
[csrfCookie] => [
'httpOnly' => true
]
[enableCsrfCookie] => true
[enableCookieValidation] => true
[cookieValidationKey] => 'QLvlb3Z6hjpbUT+uyz72lVHlTc6fIwIrH5jZdtxDiDK28s'
[methodParam] => '_method'
[parsers] => []
[trustedHosts] => []
[secureHeaders] => [
0 => 'X-Forwarded-For'
1 => 'X-Forwarded-Host'
2 => 'X-Forwarded-Proto'
3 => 'X-Forwarded-Port'
4 => 'Front-End-Https'
5 => 'X-Rewrite-Url'
6 => 'X-Original-Host'
]
[ipHeaders] => [
0 => 'X-Forwarded-For'
]
[portHeaders] => [
0 => 'X-Forwarded-Port'
]
[secureProtocolHeaders] => [
'X-Forwarded-Proto' => [
0 => 'https'
]
'Front-End-Https' => [
0 => 'on'
]
]
[yii\web\Request:_cookies] => yii\web\CookieCollection#46
(
[readOnly] => true
[yii\web\CookieCollection:_cookies] => []
)
[yii\web\Request:_headers] => yii\web\HeaderCollection#47
(
[yii\web\HeaderCollection:_headers] => [
'host' => [
0 => 'violet-jewelry-shop.ru'
]
'accept' => [
0 => '*/*'
]
'user-agent' => [
0 => 'Mozilla/5.0 AppleWebKit/537.36 (KHTML, like Gecko; compatible; ClaudeBot/1.0; +claudebot@anthropic.com)'
]
'accept-encoding' => [
0 => 'gzip, br, zstd, deflate'
]
]
[yii\web\HeaderCollection:_originalHeaderNames] => [
'host' => 'Host'
'accept' => 'accept'
'user-agent' => 'user-agent'
'accept-encoding' => 'accept-encoding'
]
)
[yii\web\Request:_rawBody] => null
[yii\web\Request:_bodyParams] => null
[yii\web\Request:_queryParams] => null
[yii\web\Request:_hostInfo] => 'https://violet-jewelry-shop.ru'
[yii\web\Request:_hostName] => 'violet-jewelry-shop.ru'
[yii\web\Request:_baseUrl] => ''
[yii\web\Request:_scriptUrl] => '/index.php'
[yii\web\Request:_scriptFile] => null
[yii\web\Request:_pathInfo] => 'blog/post/37-chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke'
[yii\web\Request:_url] => '/blog/post/37-chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke'
[yii\web\Request:_ip] => null
[yii\web\Request:_port] => null
[yii\web\Request:_securePort] => null
[yii\web\Request:_contentTypes] => null
[yii\web\Request:_languages] => null
[yii\web\Request:_csrfToken] => null
[yii\web\Request:_secureForwardedHeaderTrustedParts] => []
[yii\web\Request:_secureForwardedHeaderParts] => []
)
'log' => yii\log\Dispatcher#48
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[targets] => [
0 => yii\log\FileTarget#49
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[categories] => []
[except] => [
0 => 'yii\\web\\HttpException:404'
1 => 'yii\\web\\Session::init'
]
[logVars] => [
0 => '_GET'
1 => '_POST'
2 => '_FILES'
3 => '_COOKIE'
4 => '_SESSION'
5 => '_SERVER'
]
[maskVars] => [
0 => '_SERVER.HTTP_AUTHORIZATION'
1 => '_SERVER.PHP_AUTH_USER'
2 => '_SERVER.PHP_AUTH_PW'
]
[prefix] => null
[exportInterval] => 1000
[messages] => []
[microtime] => false
[yii\log\Target:_levels] => 3
[yii\log\Target:_enabled] => true
[logFile] => '/var/www/main/data/www/violet-jewelry-shop.ru/runtime/logs/app.log'
[enableRotation] => true
[maxFileSize] => 10240
[maxLogFiles] => 5
[fileMode] => null
[dirMode] => 509
[rotateByCopy] => true
)
1 => yii\log\FileTarget#50
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[categories] => [
0 => 'yii\\web\\HttpException:404'
]
[except] => []
[logVars] => [
0 => '_GET'
1 => '_POST'
2 => '_FILES'
3 => '_COOKIE'
4 => '_SESSION'
5 => '_SERVER'
]
[maskVars] => [
0 => '_SERVER.HTTP_AUTHORIZATION'
1 => '_SERVER.PHP_AUTH_USER'
2 => '_SERVER.PHP_AUTH_PW'
]
[prefix] => null
[exportInterval] => 1000
[messages] => []
[microtime] => false
[yii\log\Target:_levels] => 3
[yii\log\Target:_enabled] => true
[logFile] => '/var/www/main/data/www/violet-jewelry-shop.ru/runtime/logs/404/error.log'
[enableRotation] => true
[maxFileSize] => 10240
[maxLogFiles] => 5
[fileMode] => null
[dirMode] => 509
[rotateByCopy] => true
)
2 => notamedia\sentry\SentryTarget#51
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[categories] => []
[except] => []
[logVars] => [
0 => '_GET'
1 => '_POST'
2 => '_FILES'
3 => '_COOKIE'
4 => '_SESSION'
5 => '_SERVER'
]
[maskVars] => [
0 => '_SERVER.HTTP_AUTHORIZATION'
1 => '_SERVER.PHP_AUTH_USER'
2 => '_SERVER.PHP_AUTH_PW'
]
[prefix] => null
[exportInterval] => 1000
[messages] => []
[microtime] => false
[yii\log\Target:_levels] => 3
[yii\log\Target:_enabled] => true
[dsn] => 'https://4d7c450b658d44158ed9816b16620b14@e.d.ilya-z.ru/4'
[clientOptions] => [
'environment' => 'prod'
'tags' => [
'mode' => 'web'
]
]
[context] => true
[extraCallback] => null
)
'debug' => yii\debug\LogTarget#52
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[categories] => []
[except] => []
[logVars] => [
0 => '_GET'
1 => '_POST'
2 => '_FILES'
3 => '_COOKIE'
4 => '_SESSION'
5 => '_SERVER'
]
[maskVars] => [
0 => '_SERVER.HTTP_AUTHORIZATION'
1 => '_SERVER.PHP_AUTH_USER'
2 => '_SERVER.PHP_AUTH_PW'
]
[prefix] => null
[exportInterval] => 1000
[messages] => []
[microtime] => false
[yii\log\Target:_levels] => 0
[yii\log\Target:_enabled] => true
[module] => yii\debug\Module#53
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[yii\di\ServiceLocator:_components] => []
[yii\di\ServiceLocator:_definitions] => []
[params] => []
[id] => 'debug'
[module] => yii\web\Application#40(...)
[layout] => null
[controllerMap] => []
[controllerNamespace] => 'yii\\debug\\controllers'
[defaultRoute] => 'default'
[yii\base\Module:_basePath] => null
[yii\base\Module:_controllerPath] => null
[yii\base\Module:_viewPath] => null
[yii\base\Module:_layoutPath] => null
[yii\base\Module:_modules] => []
[yii\base\Module:_version] => null
[allowedIPs] => []
[allowedHosts] => []
[checkAccessCallback] => null
[logTarget] => yii\debug\LogTarget#52(...)
[authManager] => 'authManager'
[panels] => [
'config' => yii\debug\panels\ConfigPanel#54
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'config'
[tag] => null
[module] => yii\debug\Module#53(...)
[data] => null
[actions] => []
[*:error] => null
)
'log' => yii\debug\panels\LogPanel#55
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'log'
[tag] => null
[module] => yii\debug\Module#53(...)
[data] => null
[actions] => []
[*:error] => null
[yii\debug\panels\LogPanel:_models] => null
)
'profiling' => yii\debug\panels\ProfilingPanel#56
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'profiling'
[tag] => null
[module] => yii\debug\Module#53(...)
[data] => null
[actions] => []
[*:error] => null
[yii\debug\panels\ProfilingPanel:_models] => null
)
'db' => yii\debug\panels\DbPanel#57
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'db'
[tag] => null
[module] => yii\debug\Module#53(...)
[data] => null
[actions] => [
'db-explain' => [
'class' => 'yii\\debug\\actions\\db\\ExplainAction'
'panel' => yii\debug\panels\DbPanel#57(...)
]
]
[*:error] => null
[criticalQueryThreshold] => null
[excessiveCallerThreshold] => null
[ignoredPathsInBacktrace] => []
[db] => 'db'
[defaultOrder] => [
'seq' => 4
]
[defaultFilter] => []
[yii\debug\panels\DbPanel:_models] => null
[yii\debug\panels\DbPanel:_timings] => null
[yii\debug\panels\DbPanel:_profileLogs] => null
[dbEventNames] => [
0 => 'yii\\db\\Command::query'
1 => 'yii\\db\\Command::execute'
]
)
'event' => yii\debug\panels\EventPanel#58
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'event'
[tag] => null
[module] => yii\debug\Module#53(...)
[data] => null
[actions] => []
[*:error] => null
[yii\debug\panels\EventPanel:_events] => [
0 => [
'time' => 1792026565.7901
'name' => 'beforeRequest'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'yii\\web\\Application'
]
1 => [
'time' => 1792026565.7907
'name' => 'beforeAction'
'class' => 'yii\\base\\ActionEvent'
'isStatic' => '0'
'senderClass' => 'yii\\web\\Application'
]
2 => [
'time' => 1792026565.7908
'name' => 'beforeAction'
'class' => 'yii\\base\\ActionEvent'
'isStatic' => '0'
'senderClass' => 'app\\app_project\\controllers\\BlogController'
]
3 => [
'time' => 1792026565.7909
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\db\\ActiveQuery'
]
4 => [
'time' => 1792026565.7913
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_project\\models\\blog\\BlogPost'
]
5 => [
'time' => 1792026565.7915
'name' => 'afterFind'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_project\\models\\blog\\BlogPost'
]
6 => [
'time' => 1792026565.7915
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\db\\ActiveQuery'
]
7 => [
'time' => 1792026565.7915
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_project\\models\\blog\\BlogPost'
]
8 => [
'time' => 1792026565.7916
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\db\\ActiveQuery'
]
9 => [
'time' => 1792026565.7921
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\db\\ActiveQuery'
]
10 => [
'time' => 1792026565.7924
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\db\\ActiveQuery'
]
11 => [
'time' => 1792026565.7925
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\db\\ActiveQuery'
]
12 => [
'time' => 1792026565.7928
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\db\\ActiveQuery'
]
13 => [
'time' => 1792026565.7931
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\db\\ActiveQuery'
]
14 => [
'time' => 1792026565.7936
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\db\\ActiveQuery'
]
15 => [
'time' => 1792026565.7945
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_project\\models\\blog\\BlogAuthor'
]
16 => [
'time' => 1792026565.7947
'name' => 'afterFind'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_project\\models\\blog\\BlogAuthor'
]
17 => [
'time' => 1792026565.7948
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\db\\ActiveQuery'
]
18 => [
'time' => 1792026565.7954
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\models\\pages\\CorePage'
]
19 => [
'time' => 1792026565.7955
'name' => 'afterFind'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\models\\pages\\CorePage'
]
20 => [
'time' => 1792026565.7955
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\db\\ActiveQuery'
]
21 => [
'time' => 1792026565.7958
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_project\\models\\blog\\BlogCategory'
]
22 => [
'time' => 1792026565.796
'name' => 'afterFind'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_project\\models\\blog\\BlogCategory'
]
23 => [
'time' => 1792026565.796
'name' => 'beforeRender'
'class' => 'yii\\base\\ViewEvent'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\base\\View'
]
24 => [
'time' => 1792026565.7962
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\widgets\\Breadcrumbs'
]
25 => [
'time' => 1792026565.7962
'name' => 'beforeRun'
'class' => 'yii\\base\\WidgetEvent'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\widgets\\Breadcrumbs'
]
26 => [
'time' => 1792026565.7965
'name' => 'afterRun'
'class' => 'yii\\base\\WidgetEvent'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\widgets\\Breadcrumbs'
]
27 => [
'time' => 1792026565.7965
'name' => 'init'
'class' => 'yii\\base\\Event'
'isStatic' => '0'
'senderClass' => 'app\\app_base\\db\\ActiveQuery'
]
]
)
'mail' => yii\debug\panels\MailPanel#59
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'mail'
[tag] => null
[module] => yii\debug\Module#53(...)
[data] => null
[actions] => []
[*:error] => null
[mailPath] => '@runtime/debug/mail'
[yii\debug\panels\MailPanel:_messages] => []
)
'timeline' => yii\debug\panels\TimelinePanel#60
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'timeline'
[tag] => null
[module] => yii\debug\Module#53(...)
[data] => null
[actions] => []
[*:error] => null
[yii\debug\panels\TimelinePanel:_colors] => [
20 => '#1e6823'
10 => '#44a340'
1 => '#8cc665'
]
[yii\debug\panels\TimelinePanel:_models] => null
[yii\debug\panels\TimelinePanel:_start] => null
[yii\debug\panels\TimelinePanel:_end] => null
[yii\debug\panels\TimelinePanel:_duration] => null
[yii\debug\panels\TimelinePanel:_svg] => null
[yii\debug\panels\TimelinePanel:_svgOptions] => [
'class' => 'yii\\debug\\models\\timeline\\Svg'
]
[yii\debug\panels\TimelinePanel:_memory] => null
)
'dump' => yii\debug\panels\DumpPanel#61
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'dump'
[tag] => null
[module] => yii\debug\Module#53(...)
[data] => null
[actions] => []
[*:error] => null
[categories] => [
0 => 'application'
]
[highlight] => true
[depth] => 10
[varDumpCallback] => null
[yii\debug\panels\DumpPanel:_models] => null
)
'router' => yii\debug\panels\RouterPanel#62
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'router'
[tag] => null
[module] => yii\debug\Module#53(...)
[data] => null
[actions] => []
[*:error] => null
[yii\debug\panels\RouterPanel:_categories] => [
0 => 'yii\\web\\UrlManager::parseRequest'
1 => 'yii\\web\\UrlRule::parseRequest'
2 => 'yii\\web\\CompositeUrlRule::parseRequest'
3 => 'yii\\rest\\UrlRule::parseRequest'
]
)
'request' => yii\debug\panels\RequestPanel#63
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'request'
[tag] => null
[module] => yii\debug\Module#53(...)
[data] => null
[actions] => []
[*:error] => null
[displayVars] => [
0 => '_SERVER'
1 => '_GET'
2 => '_POST'
3 => '_COOKIE'
4 => '_FILES'
5 => '_SESSION'
]
[censoredVariableNames] => []
[censorString] => '****'
)
'user' => yii\debug\panels\UserPanel#64
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'user'
[tag] => null
[module] => yii\debug\Module#53(...)
[data] => null
[actions] => []
[*:error] => null
[ruleUserSwitch] => [
'allow' => false
]
[userSwitch] => null
[filterModel] => null
[filterColumns] => []
[userComponent] => 'user'
[displayName] => 'User'
)
'asset' => yii\debug\panels\AssetPanel#65
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'asset'
[tag] => null
[module] => yii\debug\Module#53(...)
[data] => null
[actions] => []
[*:error] => null
)
]
[defaultPanel] => 'log'
[dataPath] => '/var/www/main/data/www/violet-jewelry-shop.ru/runtime/debug'
[fileMode] => null
[dirMode] => 509
[historySize] => '10000'
[defaultHeight] => 50
[toolbarPosition] => 'bottom'
[enableDebugLogs] => false
[disableIpRestrictionWarning] => true
[disableCallbackRestrictionWarning] => false
[traceLine] => '<a href=\"phpstorm://open?file={file}&line={line}\">{file}:{line}</a>'
[tracePathMappings] => []
[urlRuleClass] => 'yii\\web\\UrlRule'
[pageTitle] => null
[skipAjaxRequestUrl] => []
)
[tag] => '6ad027c5c0dd7'
)
]
[yii\log\Dispatcher:_logger] => yii\log\Logger#66
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[messages] => [
0 => [
0 => 'SELECT COUNT(*) FROM `base_geo_cities` WHERE `is_visible`=1'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.784
4 => []
5 => 865456
]
1 => [
0 => 'SELECT * FROM `base_geo_cities` WHERE (`is_default`=1) AND (`is_visible`=1)'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7841
4 => []
5 => 865976
]
2 => [
0 => 'SELECT `slug` FROM `base_text_pages`'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7854
4 => []
5 => 1069080
]
3 => [
0 => 'Opening DB connection: mysql:host=localhost;dbname=jewelry_shop_db'
1 => 4
2 => 'yii\\db\\Connection::open'
3 => 1792026565.7854
4 => []
5 => 1069392
]
4 => [
0 => 'Opening DB connection: mysql:host=localhost;dbname=jewelry_shop_db'
1 => 80
2 => 'yii\\db\\Connection::open'
3 => 1792026565.7854
4 => []
5 => 1069608
]
5 => [
0 => 'Opening DB connection: mysql:host=localhost;dbname=jewelry_shop_db'
1 => 96
2 => 'yii\\db\\Connection::open'
3 => 1792026565.7869
4 => []
5 => 1111928
]
6 => [
0 => 'SELECT `slug` FROM `base_text_pages`'
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7869
4 => []
5 => 1112624
]
7 => [
0 => 'SELECT `slug` FROM `base_text_pages`'
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7889
4 => []
5 => 1113400
]
8 => [
0 => 'SELECT `old_slug` FROM `base_slug_redirects` WHERE `obj_type`=\'TextPage\' GROUP BY `old_slug`'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.789
4 => []
5 => 1115192
]
9 => [
0 => 'SELECT `old_slug` FROM `base_slug_redirects` WHERE `obj_type`=\'TextPage\' GROUP BY `old_slug`'
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7891
4 => []
5 => 1116264
]
10 => [
0 => 'SELECT `old_slug` FROM `base_slug_redirects` WHERE `obj_type`=\'TextPage\' GROUP BY `old_slug`'
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7893
4 => []
5 => 1116688
]
11 => [
0 => 'SELECT * FROM `proj_blog_posts` WHERE ((`id`=\'37\') AND (`slug`=\'chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke\')) AND (`is_visible`=1) AND (`published_at` <= \'2026-10-15 04:09:25\')'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.791
4 => []
5 => 1194680
]
12 => [
0 => 'SELECT * FROM `proj_blog_posts` WHERE ((`id`=\'37\') AND (`slug`=\'chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke\')) AND (`is_visible`=1) AND (`published_at` <= \'2026-10-15 04:09:25\')'
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.791
4 => []
5 => 1195280
]
13 => [
0 => 'SELECT * FROM `proj_blog_posts` WHERE ((`id`=\'37\') AND (`slug`=\'chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke\')) AND (`is_visible`=1) AND (`published_at` <= \'2026-10-15 04:09:25\')'
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7913
4 => []
5 => 1222592
]
14 => [
0 => 'SELECT * FROM `base_model_classes` WHERE `name`=\'proj_blog_post\''
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7916
4 => []
5 => 1279432
]
15 => [
0 => 'SELECT * FROM `base_model_classes` WHERE `name`=\'proj_blog_post\''
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7916
4 => []
5 => 1280344
]
16 => [
0 => 'SELECT * FROM `base_model_classes` WHERE `name`=\'proj_blog_post\''
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7918
4 => []
5 => 1281312
]
17 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'meta_title\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7919
4 => []
5 => 1282864
]
18 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'meta_title\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC'
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7919
4 => []
5 => 1283464
]
19 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'meta_title\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC'
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7921
4 => []
5 => 1283928
]
20 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'meta_description\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7922
4 => []
5 => 1284488
]
21 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'meta_description\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC'
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7922
4 => []
5 => 1285088
]
22 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'meta_description\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC'
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7923
4 => []
5 => 1285552
]
23 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'meta_keywords\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7924
4 => []
5 => 1285736
]
24 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'meta_keywords\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC'
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7924
4 => []
5 => 1286336
]
25 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'meta_keywords\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC'
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7925
4 => []
5 => 1286800
]
26 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'meta_noindex\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7926
4 => []
5 => 1286984
]
27 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'meta_noindex\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC'
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7926
4 => []
5 => 1287584
]
28 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'meta_noindex\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC'
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7927
4 => []
5 => 1288048
]
29 => [
0 => 'SELECT EXISTS(SELECT * FROM `base_geo_cities` LIMIT 1) AS `result`'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7928
4 => []
5 => 1285536
]
30 => [
0 => 'SELECT EXISTS(SELECT * FROM `base_geo_cities` LIMIT 1) AS `result`'
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7928
4 => []
5 => 1286232
]
31 => [
0 => 'SELECT EXISTS(SELECT * FROM `base_geo_cities` LIMIT 1) AS `result`'
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.793
4 => []
5 => 1286472
]
32 => [
0 => 'SELECT `output_file` FROM `base_image_processing_tasks`'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7932
4 => []
5 => 1289112
]
33 => [
0 => 'SELECT `output_file` FROM `base_image_processing_tasks`'
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7932
4 => []
5 => 1290448
]
34 => [
0 => 'SELECT `output_file` FROM `base_image_processing_tasks`'
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7933
4 => []
5 => 1291000
]
35 => [
0 => 'SELECT * FROM `proj_blog_authors` WHERE `id`=1'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7937
4 => []
5 => 1360080
]
36 => [
0 => 'SELECT * FROM `proj_blog_authors` WHERE `id`=1'
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7937
4 => []
5 => 1360992
]
37 => [
0 => 'SELECT * FROM `proj_blog_authors` WHERE `id`=1'
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7945
4 => []
5 => 1362264
]
38 => [
0 => 'SELECT * FROM `base_core_pages` WHERE `name`=\'blog\''
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7951
4 => []
5 => 1405368
]
39 => [
0 => 'SELECT * FROM `base_core_pages` WHERE `name`=\'blog\''
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7951
4 => []
5 => 1406280
]
40 => [
0 => 'SELECT * FROM `base_core_pages` WHERE `name`=\'blog\''
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7954
4 => []
5 => 1407200
]
41 => [
0 => 'SELECT * FROM `proj_blog_categories` WHERE `id`=7'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7956
4 => []
5 => 1418032
]
42 => [
0 => 'SELECT * FROM `proj_blog_categories` WHERE `id`=7'
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7956
4 => []
5 => 1418944
]
43 => [
0 => 'SELECT * FROM `proj_blog_categories` WHERE `id`=7'
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7957
4 => []
5 => 1420008
]
44 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'h1_title\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC LIMIT 1'
1 => 4
2 => 'yii\\db\\Command::query'
3 => 1792026565.7966
4 => []
5 => 1474072
]
45 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'h1_title\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC LIMIT 1'
1 => 80
2 => 'yii\\db\\Command::query'
3 => 1792026565.7966
4 => []
5 => 1474672
]
46 => [
0 => 'SELECT `value` FROM `base_seo_fields` WHERE (`model_class_id`=9) AND (`model_id`=37) AND (`name`=\'h1_title\') AND (`city_id`=1 OR `city_id` IS NULL) ORDER BY `city_id` DESC LIMIT 1'
1 => 96
2 => 'yii\\db\\Command::query'
3 => 1792026565.7969
4 => []
5 => 1475136
]
]
[flushInterval] => 1000
[traceLevel] => 0
[dispatcher] => yii\log\Dispatcher#48(...)
[dbEventNames] => [
0 => 'yii\\db\\Command::query'
1 => 'yii\\db\\Command::execute'
]
[profilingAware] => false
)
)
'settings' => app\app_project\components\Settings#67
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[*:_values] => [
'sitename' => ''
'domain' => 'violet-jewelry-shop.ru'
'logo_file' => ''
'logo_text' => ''
'logo_descriptor' => ''
'favicon_image' => ''
'favicon_svg' => ''
'favicon_color' => ''
'currency' => 'rub'
'contacts_address' => ''
'contacts_telephones' => '[{\"number\":\"+7 (978) 600-13-88\",\"label\":\"\"}]'
'contacts_emails' => '[{\"mail\":\"shop@violet-jewelry.com\",\"label\":\"\"}]'
'contacts_socials' => '[{\"url\":\"https:\\/\\/vk.com\\/violet.jewelry\",\"label\":\"vk\"},{\"url\":\"https:\\/\\/t.me\\/violetjewelry\",\"label\":\"telegram\"}]'
'contacts_messenger_whatsapp' => ''
'contacts_messenger_viber' => ''
'contacts_messenger_telegram' => ''
'main_page_intro_title' => ''
'main_page_intro_text' => ''
'main_page_intro_link_label' => ''
'main_page_products_count' => '12'
'posts_page_name' => ''
'posts_page_description' => ''
'noindex' => '1'
'show_other_cities_in_catalog' => '1'
'robots' => 'User-Agent: *
Disallow: /manager
Disallow: /cart
Disallow: */filters/*
Disallow: */sort/*
Allow: *products*
User-Agent: Googlebot
Disallow: /manager
Disallow: /cart
Disallow: */filters/*
Disallow: */sort/*
Allow: *products*
User-Agent: Yandex
Disallow: /manager
Disallow: /cart
Disallow: */filters/*
Disallow: */sort/*
Allow: *products*
Sitemap: {сайтмап}'
'seo_geo_redirect_subdomain' => 'i'
'seo_product_meta_title_template' => '{название} купить в {городе} от {цена} арт. {артикул} | ЮД Виолет'
'seo_product_meta_description_template' => '{h1} купить в {городе}. Авторские изделия из золота 585 пробы на официальном сайте Violet. Гарантия качества на изделия. Страховка и быстрая доставка по РФ.'
'header_code' => ''
'footer_code' => ''
'notifications_email' => ''
'api_dadata_key' => ''
'export_yandex_yml_enabled' => '1'
'export_yandex_yml_shop_name' => 'Интернет-магазин Виолет'
'export_yandex_yml_company_name' => 'ООО «Торговый Дом «Виолет»'
'export_yandex_yml_url' => 'qCcJRdsP5L9BsOEkMYs5wvGNVpyjEgC0ZeAFz0GPg4fa0oiK90'
'contacts_phones' => '[{\"number\":\"8 (800) 505-84-40\",\"label\":\"\"}]'
'contacts_work_time' => 'Пн- Пт 9:00 — 17:00 МСК'
'seo_global_noindex' => '0'
'seo_robots' => 'User-Agent: Googlebot
Disallow: /cart
Disallow: /cart/
Disallow: /checkout
Disallow: /checkout/
Disallow: /order/
Disallow: /auth
Disallow: /auth/
Disallow: /login
Disallow: /register
Disallow: /user/
Disallow: /profile/
Disallow: /search/
Disallow: /catalog/search/
Disallow: /compare
Disallow: /compare/
Disallow: /wishlist
Disallow: /wishlist/
Disallow: /favorites/
Disallow: */filters/
Disallow: */sort/
Disallow: *sort=
Disallow: *limit=
Disallow: *view=
Allow: /jewelries
Allow: /jewelries/
User-Agent: Yandex
Clean-param: page&per-page&sort&limit&view&ybaip&etext&previewColor /
Disallow: /cart
Disallow: /cart/
Disallow: /checkout
Disallow: /checkout/
Disallow: /order/
Disallow: /auth
Disallow: /auth/
Disallow: /login
Disallow: /register
Disallow: /user/
Disallow: /profile/
Disallow: /search/
Disallow: /catalog/search/
Disallow: /compare
Disallow: /compare/
Disallow: /wishlist
Disallow: /wishlist/
Disallow: /favorites/
Disallow: */filters/
Disallow: */sort/
Allow: /jewelries
Allow: /jewelries/
User-Agent: *
Disallow: /cart
Disallow: /cart/
Disallow: /checkout
Disallow: /checkout/
Disallow: /order/
Disallow: /auth
Disallow: /auth/
Disallow: /login
Disallow: /register
Disallow: /user/
Disallow: /profile/
Disallow: /search/
Disallow: /catalog/search/
Disallow: /compare
Disallow: /compare/
Disallow: /wishlist
Disallow: /wishlist/
Disallow: /favorites/
Disallow: */filters/
Disallow: */sort/
Disallow: *sort=
Disallow: *order=
Disallow: *limit=
Disallow: *view=
Allow: /jewelries
Allow: /jewelries/
User-agent: GPTBot
User-agent: ChatGPT-User
User-agent: Google-Extended
User-agent: YandexGPT
User-agent: PerplexityBot
User-agent: ClaudeBot
User-agent: AnthropicAI
User-agent: Claude-Web
User-agent: CCBot
Allow: /jewelries
Allow: /jewelries/
Disallow: /cart
Disallow: /auth
Disallow: /search/
Disallow: *ybaip=
Disallow: *etext=
Disallow: *previewColor=
Sitemap: {сайтмап}'
'html_head' => ''
'html_footer' => '<script src=\"//code.jivosite.com/widget.js\" data-jv-id=\"PMc8FJq53z\" async></script>
<!-- Yandex.Metrika counter -->
<script type=\"text/javascript\">
(function(m,e,t,r,i,k,a){
m[i]=m[i]||function(){(m[i].a=m[i].a||[]).push(arguments)};
m[i].l=1*new Date();
for (var j = 0; j < document.scripts.length; j++) {if (document.scripts[j].src === r) { return; }}
k=e.createElement(t),a=e.getElementsByTagName(t)[0],k.async=1,k.src=r,a.parentNode.insertBefore(k,a)
})(window, document,\'script\',\'https://mc.yandex.ru/metrika/tag.js?id=56450410\', \'ym\');
ym(56450410, \'init\', {ssr:true, webvisor:true, clickmap:true, ecommerce:\"dataLayer\", referrer: document.referrer, url: location.href, accurateTrackBounce:true, trackLinks:true});
window.dataLayer = window.dataLayer || [];
ym(56450410, \'getClientID\', function(clientID) {
const days = 30;
const date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
document.cookie = \"ym_client_id=\" + clientID +
\"; expires=\" + date.toUTCString() +
\"; path=/; domain=.violet-jewelry-shop.ru\";
});
</script>
<noscript><div><img src=\"https://mc.yandex.ru/watch/56450410\" style=\"position:absolute; left:-9999px;\" alt=\"\" /></div></noscript>
<!-- /Yandex.Metrika counter -->
<script type=\"text/javascript\">!function(){var t=document.createElement(\"script\");t.type=\"text/javascript\",t.async=!0,t.src=\'https://vk.com/js/api/openapi.js?169\',t.onload=function(){VK.Retargeting.Init(\"VK-RTRG-1225421-dLqZM\"),VK.Retargeting.Hit()},document.head.appendChild(t)}();</script><noscript><img src=\"https://vk.com/rtrg?p=VK-RTRG-1225421-dLqZM\" style=\"position:fixed; left:-999px;\" alt=\"\"/></noscript>'
'dadata_api_key' => 'df7cffd00f148afbef488a1459d520c630b0ebce'
'seo_catalog_other_cities' => '1'
'site_name' => 'Ювелирный дом VIOLET'
'site_copyright' => ''
'logo_slogan_footer' => ''
'yandex_organization_rating_widget' => ''
'emails_for_notifications' => ''
'home_page_hero_title' => 'Карнизы
и комплектующие
для римских штор'
'home_page_hero_sub_title' => 'Под заказ с доставкой по всей России'
'jewelries_title_template' => '{ТИП} из {ЦВЕТ} {МЕТАЛЛ} {ПРОБА} {ДОП_МЕТАЛЛ} {ПРОБА_ДОП_МЕТАЛЛ} {ВСТАВКИ}'
'jewelries_exclude_materials' => '[\"47770947\"]'
'enable_maintenance' => '0'
'ai_jewelry_description_prompt' => 'Сделай описание для изделия.
Вместо имени коллекции впиши {collection}. Описание должно быть продающим и лаконичным и написанным под сео. Не надо выделять, что изделие из новой коллекции (в будущем она не будет новой) и не надо выделят что это эталонное изделие (мы этого не знаем). Количество символов в описании не менее 900. Не используй символы *.
Используй только те характеристики что указаны мной, не придумывай свои. Результат отдавай в html с использованием <p>. Учитывай так же внешний вид изделия на фото и из него же можешь брать некоторые характеристики. Характеристики изделия вписывай прямо в текст, а не отдельным списком. Пиши мне сразу готовый текст без своих пояснений. Не пиши про гендер: мужское или женское. Так же вместо длинного тире используй -. Не начинай предложения со слов \"представляем вашему вниманию\" или подобных.
{ПАРАМЕТРЫ_ИЗДЕЛИЯ}'
'jewelry_page_payment_delivery' => '<p>Мы обеспечиваем быструю и безопасную доставку ваших покупок по всей России.</p><ul><li><strong>Доставка</strong>: Бесплатная (при заказе от 50 000 руб). Осуществляется курьерской службой DPD до двери (3-23 рабочих дня) или через СДЭК.</li><li><strong>Безопасность</strong>: Каждый груз застрахован на полную стоимость заказа. В комплекте - фирменная подарочная упаковка.</li><li><strong>Оплата</strong>: Безналичный расчет картами любых банков или на расчетный счет Ювелирного Дома Violet.</li><li><strong>Рассрочка 0%</strong>: возможно оформление покупки без переплат (при условии одобрения банком).</li></ul><p>После оформления заказа наш менеджер свяжется с вами для уточнения удобных сроков и адреса получения.</p>'
'jewelry_page_guaranties' => '<p>Мы гарантируем подлинность материалов и высокое качество исполнения, подтвержденное трехуровневым контролем ОТК.</p><ul><li><strong>Бессрочная гарантия</strong>: действует на все изделия при отсутствии механических повреждений и соблюдении правил ухода.</li><li><strong>Паспорт изделия</strong>: каждое украшение сопровождается биркой с полными характеристиками - рекомендуем сохранять её.</li><li><strong>Важно</strong>: гарантия не распространяется на дефекты, возникшие из-за нарушения правил эксплуатации (контакт с морской водой, бани, кипячение).</li></ul><p>Бережное отношение и следование нашим рекомендациям по уходу позволят сохранить первозданную красоту вашего украшения Violet на десятилетия.</p>'
'jewelry_page_refund' => '<p>Мы делаем всё, чтобы покупка оправдала ваши ожидания. Если серийное изделие не подошло по размеру или цвету, вы можете обменять или вернуть его.</p><ul><li><strong>Условия</strong>: наличие всех бирок и пломб, отсутствие следов носки и сохранение товарного вида.</li><li><strong>Индивидуальные заказы</strong>: украшения, созданные по персональным параметрам, возврату не подлежат.</li><li><strong>Сервис</strong>: для всех клиентов доступна профессиональная чистка, ремонт и бессрочное обслуживание изделий.</li></ul><p>Наш менеджер проконсультирует вас до покупки и обеспечит бережное сопровождение на каждом этапе возврата или сервиса.</p>'
'redirects' => '[{\"from\":\"jewels\\/30233510\",\"to\":\"catalog\"},{\"from\":\"bonus\",\"to\":\"catalog\"},{\"from\":\"collections\\/batterflyai-diamonds\",\"to\":\"collections\\/babochka\"},{\"from\":\"collections\\/cikadi\\/kolca\",\"to\":\"catalog\\/kolca\"},{\"from\":\"collections\\/de-luxe-diamonds\\/kole\",\"to\":\"catalog\\/kole\"},{\"from\":\"collections\\/de-luxe-diamonds\\/podveski\",\"to\":\"catalog\\/podveski\"},{\"from\":\"collections\\/derzost-diamonds\",\"to\":\"collections\\/derzost\"},{\"from\":\"collections\\/hersones-pravoslavnii-diamonds\",\"to\":\"collections\\/hersones-pravoslavnii\"},{\"from\":\"collections\\/hrizantema\\/kolca\",\"to\":\"catalog\\/kolca\"},{\"from\":\"collections\\/kolca\",\"to\":\"catalog\\/kolca\"},{\"from\":\"collections\\/kresti-2\",\"to\":\"pravoslavnye-izdelia\\/kresty\"},{\"from\":\"collections\\/krilatii-lev\",\"to\":\"collections\\/venecianskii-lev\"},{\"from\":\"collections\\/kypidon-2\",\"to\":\"collections\\/cupids\"},{\"from\":\"collections\\/kypidon\\/kolca\",\"to\":\"collections\\/cupids\"},{\"from\":\"collections\\/kypidon\\/podveski\",\"to\":\"collections\\/cupids\"},{\"from\":\"collections\\/obrazki-2\",\"to\":\"pravoslavnye-izdelia\\/obrazki\"},{\"from\":\"collections\\/pyma-2\",\"to\":\"collections\\/pyma-diamonds\"},{\"from\":\"collections\\/tigri-2\",\"to\":\"collections\\/tigri\"},{\"from\":\"collections\\/zvyozdi\",\"to\":\"collections\\/zvyozdi-diamonds\"},{\"from\":\"en\\/secular\\/broshi\",\"to\":\"catalog\\/broshi\"},{\"from\":\"jewels\\/28296855\",\"to\":\"catalog\"},{\"from\":\"jewels\\/28986065\",\"to\":\"catalog\"},{\"from\":\"jewels\\/29057944\",\"to\":\"catalog\"},{\"from\":\"jewels\\/29870969\",\"to\":\"catalog\"},{\"from\":\"jewels\\/30087033\",\"to\":\"catalog\"},{\"from\":\"jewels\\/30185207\",\"to\":\"catalog\"},{\"from\":\"jewels\\/30233510\",\"to\":\"catalog\"},{\"from\":\"jewels\\/34266457\",\"to\":\"catalog\"},{\"from\":\"jewels\\/36213468\",\"to\":\"catalog\"},{\"from\":\"jewels\\/37831714\",\"to\":\"catalog\"},{\"from\":\"kontakty\",\"to\":\"contacts\"},{\"from\":\"kontaktyi\",\"to\":\"contacts\"},{\"from\":\"orthodox\",\"to\":\"pravoslavnye-izdelia\"},{\"from\":\"orthodox\\/kolca-hersones\",\"to\":\"collections\\/hersones-pravoslavnii\"},{\"from\":\"orthodox\\/kresti-hersones\",\"to\":\"collections\\/kresty\"},{\"from\":\"secular\\/cepi\",\"to\":\"pravoslavnye-izdelia\\/cepi\"},{\"from\":\"secular\\/kole\",\"to\":\"pravoslavnye-izdelia\\/podveski\"},{\"from\":\"secular\\/podveski\",\"to\":\"pravoslavnye-izdelia\\/podveski\"},{\"from\":\"secular\\/sergi\",\"to\":\"pravoslavnye-izdelia\\/sergi\"},{\"from\":\"jewelries\\/10907-braslet-iz-limonnogo-zolota\",\"to\":\"catalog\\/braslety\"},{\"from\":\"jewelries\\/5975-sergi-pusety-iz-belogo-zolota-585-proby-c-brilliantami\",\"to\":\"collections\\/venecianskaya-princessa\"},{\"from\":\"jewelries\\/7144-braslet-iz-limonnogo-zolota-585-proby-c-fianitom\",\"to\":\"catalog\\/braslety\"},{\"from\":\"jewelries\\/7145-braslet-iz-krasnogo-zolota-585-proby-c-granatom\",\"to\":\"catalog\\/braslety\"},{\"from\":\"jewelries\\/7527-braslet-iz-belogo-zolota-585-proby-c-brilliantami\",\"to\":\"catalog\\/braslety\"},{\"from\":\"jewelries\\/7534-kolco-iz-belogo-zolota-585-proby-c-brilliantami\",\"to\":\"catalog\\/kolca\"},{\"from\":\"jewelries\\/7562-kolco-iz-belogo-zolota-585-proby-c-brilliantami\",\"to\":\"catalog\\/kolca\"},{\"from\":\"jewelries\\/7563-sergi-iz-belogo-zolota-585-proby-c-brilliantami\",\"to\":\"catalog\\/sergi\"},{\"from\":\"jewelries\\/7572-kolco-iz-krasnogo-zolota-585-proby-c-brilliantami\",\"to\":\"catalog\\/kolca\"},{\"from\":\"jewelries\\/7574-sergi-iz-krasnogo-zolota-585-proby-c-brilliantami\",\"to\":\"catalog\\/sergi\"}]'
'jewelries_item_title_template' => '{ТИП} из {ЦВЕТ} {МЕТАЛЛ} {ДОП_МЕТАЛЛ} {ВСТАВКИ}'
'home_page_new_jewelries' => '[\"11556\",\"12654\",\"13185\",\"8176\",\"6827\",\"13398\",\"13455\",\"13318\",\"13313\",\"13446\",\"7154\",\"6814\",\"12717\",\"8092\"]'
'home_page_top_sale_jewelries' => '[\"5734\",\"7668\",\"7666\",\"1848\",\"3652\",\"1706\",\"12684\",\"7288\",\"13358\",\"12687\",\"6029\",\"12692\",\"1571\",\"1618\",\"1593\"]'
'seo_llms' => '# VIOLET Jewelry (Ювелирный дом VIOLET)
> Ювелирный дом VIOLET — российский производитель украшений премиального сегмента с 1994 года. Собственное производство в Севастополе, уникальный цикл создания изделий (в среднем 4,8 технологий на одно украшение) и 30 производственных участков. Широкий ассортимент украшений из золота и серебра с драгоценными камнями, доставка по всей России.
## Ключевые разделы для ИИ
- [Каталог изделий](/catalog) — Полный список украшений: кольца, серьги, цепи, подвески, колье, браслеты, броши.
- [Новости](/blog/novosti) — Новости ювелирного дома VIOLET.
- [Экспертный блог](/blog) — Профессиональные гиды по выбору камней, минералогии и ювелирному этикету.
- [Коллекция De luxe Premium](/collections/de-luxe-premium) — Премиальная коллекция уникальных ювелирных украшений ручной работы, со вставками из натуральных камней и бриллиантов. Сложнейшие в своем исполнении, с применением техник огранки натуральных камней и ручной росписи эмалью.
- [Коллекция De luxe](/collections/de-luxe) — Коллекция высокохудожественных ювелирных украшений, каждое из которых восхищает своей красотой и качеством. Она создается ювелирами-художниками завода «VIOLET», учитывая современные веяния моды.
- [Коллекция Херсонес Православный: Начало крещения Руси (Авторские работы)](/collections/hersones-pravoslavnii-avtorskie-raboti) — Премиальная коллекция авторских изделий ручной работы. Неоднократно отмеченные высшей экспертной коллегией на международных ювелирных конкурсах, получившие паспорта «Уникального ювелирного изделия», со вставками из кости мамонта и редких ценных пород деревьев в сочетании с идеями и высоким профессионализмом художников-ювелиров.
- [Коллекция Херсонес Православный: Начало крещения Руси](/collections/hersones-pravoslavnii) — Коллекция изделий ручной работы в линейке православных украшений: кресты нательные, иконки, образки, гайтаны, кольца, цепи, браслеты.
- [Коллекция Vizantino](/collections/vizantino) — Коллекция вдохновлена богатым наследием Византии, отражая и сочетая величие архитектуры с брутальными элементами в дизайне украшений. Эти изделия подчеркивают силу и стиль. В коллекции используются серебро 925 пробы, золото 750 пробы и драгоценные камни.
- [Коллекция Vioretty](/collections/vioretty) — Коллекция символизирует преображение, которое позволяет подчеркнуть свою уникальность и индивидуальность.
## Категории товаров
- Кольца: Помолвочные, обручальные, перстни, печатки.
- Серьги: Пусеты, конго, с английским замком, протяжки.
- Цепи и браслеты: Плетения (Бисмарк, Якорное, Панцирное) в золоте и серебре.
## Информация для покупателей
- [Доставка и оплата](/dostavka-i-oplata) — Условия курьерской доставки, самовывоз из салонов, способы оплаты.
- [Гарантия](/garantii) — Информация о сертификатах на камни и условия гарантии. Пожизненное сервисное обслуживание и строгий контроль качества согласно ГОСТ.
- [Обмен и возврат](/obmen-i-vozvrat) — Информация об условиях обмена и возврата.
- [Адреса магазинов](/shops) — Карта розничных точек продаж.
- [Ювелирные изделия под заказ](/custom-jewelry) — Вся информация о изготовлении изделия по индивидуальным характеристикам.
## Технические данные
- Материалы: Золото (585, 750 пробы), Серебро (925 пробы).
- Камни и вставки: Агат, Аметист, Бирюза, Бриллиант, Гранат, Железное дерево, бивень мамонта, жемчуг, изумруд, коралл, лазурит, малахит, оникс, перламутр, рубин, сапфир, тигровый глаз, топаз london, топаз london blue, турмалин, фианит, хризопраз, цитрин, шнурок кожаный, эбеновое дерево, эмаль, янтарь, янтарь роспись, полудрагоценные вставки.
- Технологии: Применение вакуумного литья, эмалирования, лазерной гравировки, ручной чеканки, родирования, чернения и ручной работы.
- Регион: Производство в Севастополе (Крым), доставка по всей территории РФ и СНГ
- Контакты: [Страница контактов](/contacts).
- Микроразметка: Сайт использует Schema.org (Article, Product, FAQPage, Organization).
- Sitemap: https://violet-jewelry-shop.ru/sitemap.xml
---
*Этот файл оптимизирован для LLM (ChatGPT, Gemini, YandexGPT и др.). Он содержит ключевые факты о бренде для формирования точных ответов на запросы пользователей.*'
]
)
'db' => yii\db\Connection#68
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => []
[dsn] => 'mysql:host=localhost;dbname=jewelry_shop_db'
[username] => 'jewelry_shop_db'
[password] => 'mO5tY2rX7f'
[attributes] => null
[pdo] => PDO#69
(
)
[enableSchemaCache] => true
[schemaCacheDuration] => 3600
[schemaCacheExclude] => []
[schemaCache] => 'cache'
[enableQueryCache] => true
[queryCacheDuration] => 3600
[queryCache] => 'cache'
[charset] => 'utf8mb4'
[emulatePrepare] => null
[tablePrefix] => ''
[schemaMap] => [
'pgsql' => 'yii\\db\\pgsql\\Schema'
'mysqli' => 'yii\\db\\mysql\\Schema'
'mysql' => 'yii\\db\\mysql\\Schema'
'sqlite' => 'yii\\db\\sqlite\\Schema'
'sqlite2' => 'yii\\db\\sqlite\\Schema'
'sqlsrv' => 'yii\\db\\mssql\\Schema'
'oci' => 'yii\\db\\oci\\Schema'
'mssql' => 'yii\\db\\mssql\\Schema'
'dblib' => 'yii\\db\\mssql\\Schema'
'cubrid' => 'yii\\db\\cubrid\\Schema'
]
[pdoClass] => null
[commandClass] => 'yii\\db\\Command'
[commandMap] => [
'pgsql' => 'yii\\db\\Command'
'mysqli' => 'yii\\db\\Command'
'mysql' => 'yii\\db\\Command'
'sqlite' => 'yii\\db\\sqlite\\Command'
'sqlite2' => 'yii\\db\\sqlite\\Command'
'sqlsrv' => 'yii\\db\\Command'
'oci' => 'yii\\db\\oci\\Command'
'mssql' => 'yii\\db\\Command'
'dblib' => 'yii\\db\\Command'
'cubrid' => 'yii\\db\\Command'
]
[enableSavepoint] => true
[serverStatusCache] => 'cache'
[serverRetryInterval] => 600
[enableSlaves] => true
[slaves] => []
[slaveConfig] => []
[masters] => []
[masterConfig] => []
[shuffleMasters] => true
[enableLogging] => true
[enableProfiling] => true
[isSybase] => false
[yii\db\Connection:_queryBuilderConfigurations] => []
[yii\db\Connection:_transaction] => null
[yii\db\Connection:_schema] => yii\db\mysql\Schema#70
(
[db] => yii\db\Connection#68(...)
[defaultSchema] => null
[exceptionMap] => [
'SQLSTATE[23' => 'yii\\db\\IntegrityException'
]
[columnSchemaClass] => 'yii\\db\\mysql\\ColumnSchema'
[*:tableQuoteCharacter] => '`'
[*:columnQuoteCharacter] => '`'
[yii\db\Schema:_schemaNames] => null
[yii\db\Schema:_tableNames] => []
[yii\db\Schema:_tableMetadata] => [
'base_geo_cities' => [
'schema' => yii\db\TableSchema#71
(
[schemaName] => null
[name] => 'base_geo_cities'
[fullName] => 'base_geo_cities'
[primaryKey] => [
0 => 'id'
]
[sequenceName] => ''
[foreignKeys] => [
'fk_base_geo_cities_region_id' => [
0 => 'base_geo_regions'
'region_id' => 'id'
]
]
[columns] => [
'id' => yii\db\mysql\ColumnSchema#72
(
[name] => 'id'
[allowNull] => false
[type] => 'integer'
[phpType] => 'integer'
[dbType] => 'int unsigned'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => true
[autoIncrement] => true
[unsigned] => true
[comment] => ''
[disableJsonSupport] => false
)
'region_id' => yii\db\mysql\ColumnSchema#73
(
[name] => 'region_id'
[allowNull] => true
[type] => 'integer'
[phpType] => 'integer'
[dbType] => 'int unsigned'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => true
[comment] => ''
[disableJsonSupport] => false
)
'name' => yii\db\mysql\ColumnSchema#74
(
[name] => 'name'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => null
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'subdomain' => yii\db\mysql\ColumnSchema#75
(
[name] => 'subdomain'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(30)'
[defaultValue] => null
[enumValues] => null
[size] => 30
[precision] => 30
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'domain' => yii\db\mysql\ColumnSchema#76
(
[name] => 'domain'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(30)'
[defaultValue] => ''
[enumValues] => null
[size] => 30
[precision] => 30
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'phones' => yii\db\mysql\ColumnSchema#77
(
[name] => 'phones'
[allowNull] => true
[type] => 'text'
[phpType] => 'string'
[dbType] => 'text'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'emails' => yii\db\mysql\ColumnSchema#78
(
[name] => 'emails'
[allowNull] => true
[type] => 'text'
[phpType] => 'string'
[dbType] => 'text'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'socials' => yii\db\mysql\ColumnSchema#79
(
[name] => 'socials'
[allowNull] => true
[type] => 'text'
[phpType] => 'string'
[dbType] => 'text'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'messenger_whatsapp' => yii\db\mysql\ColumnSchema#80
(
[name] => 'messenger_whatsapp'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => ''
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'messenger_viber' => yii\db\mysql\ColumnSchema#81
(
[name] => 'messenger_viber'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => ''
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'messenger_telegram' => yii\db\mysql\ColumnSchema#82
(
[name] => 'messenger_telegram'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => ''
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'emails_for_notifications' => yii\db\mysql\ColumnSchema#83
(
[name] => 'emails_for_notifications'
[allowNull] => true
[type] => 'text'
[phpType] => 'string'
[dbType] => 'text'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'cases' => yii\db\mysql\ColumnSchema#84
(
[name] => 'cases'
[allowNull] => true
[type] => 'text'
[phpType] => 'string'
[dbType] => 'text'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'header_code' => yii\db\mysql\ColumnSchema#85
(
[name] => 'header_code'
[allowNull] => true
[type] => 'text'
[phpType] => 'string'
[dbType] => 'text'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'footer_code' => yii\db\mysql\ColumnSchema#86
(
[name] => 'footer_code'
[allowNull] => true
[type] => 'text'
[phpType] => 'string'
[dbType] => 'text'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'robots' => yii\db\mysql\ColumnSchema#87
(
[name] => 'robots'
[allowNull] => true
[type] => 'text'
[phpType] => 'string'
[dbType] => 'text'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'is_default' => yii\db\mysql\ColumnSchema#88
(
[name] => 'is_default'
[allowNull] => false
[type] => 'tinyint'
[phpType] => 'integer'
[dbType] => 'tinyint(1)'
[defaultValue] => 0
[enumValues] => null
[size] => 1
[precision] => 1
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'is_visible' => yii\db\mysql\ColumnSchema#89
(
[name] => 'is_visible'
[allowNull] => false
[type] => 'tinyint'
[phpType] => 'integer'
[dbType] => 'tinyint(1)'
[defaultValue] => 1
[enumValues] => null
[size] => 1
[precision] => 1
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'created_at' => yii\db\mysql\ColumnSchema#90
(
[name] => 'created_at'
[allowNull] => true
[type] => 'datetime'
[phpType] => 'string'
[dbType] => 'datetime'
[defaultValue] => yii\db\Expression#91
(
[expression] => 'CURRENT_TIMESTAMP'
[params] => []
)
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'updated_at' => yii\db\mysql\ColumnSchema#92
(
[name] => 'updated_at'
[allowNull] => true
[type] => 'datetime'
[phpType] => 'string'
[dbType] => 'datetime'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
]
)
]
'proj_blog_posts' => [
'schema' => yii\db\TableSchema#93
(
[schemaName] => null
[name] => 'proj_blog_posts'
[fullName] => 'proj_blog_posts'
[primaryKey] => [
0 => 'id'
]
[sequenceName] => ''
[foreignKeys] => [
'fk_proj_blog_posts_blog_author_id' => [
0 => 'proj_blog_authors'
'blog_author_id' => 'id'
]
'fk_proj_blog_posts_blog_category_id' => [
0 => 'proj_blog_categories'
'blog_category_id' => 'id'
]
]
[columns] => [
'id' => yii\db\mysql\ColumnSchema#94
(
[name] => 'id'
[allowNull] => false
[type] => 'integer'
[phpType] => 'integer'
[dbType] => 'int unsigned'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => true
[autoIncrement] => true
[unsigned] => true
[comment] => ''
[disableJsonSupport] => false
)
'blog_category_id' => yii\db\mysql\ColumnSchema#95
(
[name] => 'blog_category_id'
[allowNull] => false
[type] => 'integer'
[phpType] => 'integer'
[dbType] => 'int unsigned'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => true
[comment] => ''
[disableJsonSupport] => false
)
'blog_author_id' => yii\db\mysql\ColumnSchema#96
(
[name] => 'blog_author_id'
[allowNull] => true
[type] => 'integer'
[phpType] => 'integer'
[dbType] => 'int unsigned'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => true
[comment] => ''
[disableJsonSupport] => false
)
'title' => yii\db\mysql\ColumnSchema#97
(
[name] => 'title'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => null
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'slug' => yii\db\mysql\ColumnSchema#98
(
[name] => 'slug'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => ''
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'cover_file' => yii\db\mysql\ColumnSchema#99
(
[name] => 'cover_file'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => ''
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'description' => yii\db\mysql\ColumnSchema#100
(
[name] => 'description'
[allowNull] => true
[type] => 'text'
[phpType] => 'string'
[dbType] => 'text'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'content' => yii\db\mysql\ColumnSchema#101
(
[name] => 'content'
[allowNull] => true
[type] => 'text'
[phpType] => 'string'
[dbType] => 'text'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'is_visible' => yii\db\mysql\ColumnSchema#102
(
[name] => 'is_visible'
[allowNull] => false
[type] => 'tinyint'
[phpType] => 'integer'
[dbType] => 'tinyint(1)'
[defaultValue] => 1
[enumValues] => null
[size] => 1
[precision] => 1
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'published_at' => yii\db\mysql\ColumnSchema#103
(
[name] => 'published_at'
[allowNull] => false
[type] => 'datetime'
[phpType] => 'string'
[dbType] => 'datetime'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'created_at' => yii\db\mysql\ColumnSchema#104
(
[name] => 'created_at'
[allowNull] => true
[type] => 'datetime'
[phpType] => 'string'
[dbType] => 'datetime'
[defaultValue] => yii\db\Expression#105
(
[expression] => 'CURRENT_TIMESTAMP'
[params] => []
)
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'updated_at' => yii\db\mysql\ColumnSchema#106
(
[name] => 'updated_at'
[allowNull] => true
[type] => 'datetime'
[phpType] => 'string'
[dbType] => 'datetime'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
]
)
]
'proj_blog_authors' => [
'schema' => yii\db\TableSchema#107
(
[schemaName] => null
[name] => 'proj_blog_authors'
[fullName] => 'proj_blog_authors'
[primaryKey] => [
0 => 'id'
]
[sequenceName] => ''
[foreignKeys] => []
[columns] => [
'id' => yii\db\mysql\ColumnSchema#108
(
[name] => 'id'
[allowNull] => false
[type] => 'integer'
[phpType] => 'integer'
[dbType] => 'int unsigned'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => true
[autoIncrement] => true
[unsigned] => true
[comment] => ''
[disableJsonSupport] => false
)
'name' => yii\db\mysql\ColumnSchema#109
(
[name] => 'name'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => null
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'slug' => yii\db\mysql\ColumnSchema#110
(
[name] => 'slug'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => ''
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'photo_file' => yii\db\mysql\ColumnSchema#111
(
[name] => 'photo_file'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => ''
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'description' => yii\db\mysql\ColumnSchema#112
(
[name] => 'description'
[allowNull] => true
[type] => 'text'
[phpType] => 'string'
[dbType] => 'text'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'created_at' => yii\db\mysql\ColumnSchema#113
(
[name] => 'created_at'
[allowNull] => true
[type] => 'datetime'
[phpType] => 'string'
[dbType] => 'datetime'
[defaultValue] => yii\db\Expression#114
(
[expression] => 'CURRENT_TIMESTAMP'
[params] => []
)
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'updated_at' => yii\db\mysql\ColumnSchema#115
(
[name] => 'updated_at'
[allowNull] => true
[type] => 'datetime'
[phpType] => 'string'
[dbType] => 'datetime'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
]
)
]
'base_core_pages' => [
'schema' => yii\db\TableSchema#116
(
[schemaName] => null
[name] => 'base_core_pages'
[fullName] => 'base_core_pages'
[primaryKey] => [
0 => 'id'
]
[sequenceName] => ''
[foreignKeys] => []
[columns] => [
'id' => yii\db\mysql\ColumnSchema#117
(
[name] => 'id'
[allowNull] => false
[type] => 'integer'
[phpType] => 'integer'
[dbType] => 'int unsigned'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => true
[autoIncrement] => true
[unsigned] => true
[comment] => ''
[disableJsonSupport] => false
)
'name' => yii\db\mysql\ColumnSchema#118
(
[name] => 'name'
[allowNull] => true
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => null
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'title' => yii\db\mysql\ColumnSchema#119
(
[name] => 'title'
[allowNull] => true
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => null
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'created_at' => yii\db\mysql\ColumnSchema#120
(
[name] => 'created_at'
[allowNull] => true
[type] => 'datetime'
[phpType] => 'string'
[dbType] => 'datetime'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'updated_at' => yii\db\mysql\ColumnSchema#121
(
[name] => 'updated_at'
[allowNull] => true
[type] => 'datetime'
[phpType] => 'string'
[dbType] => 'datetime'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
]
)
]
'proj_blog_categories' => [
'schema' => yii\db\TableSchema#122
(
[schemaName] => null
[name] => 'proj_blog_categories'
[fullName] => 'proj_blog_categories'
[primaryKey] => [
0 => 'id'
]
[sequenceName] => ''
[foreignKeys] => []
[columns] => [
'id' => yii\db\mysql\ColumnSchema#123
(
[name] => 'id'
[allowNull] => false
[type] => 'integer'
[phpType] => 'integer'
[dbType] => 'int unsigned'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => true
[autoIncrement] => true
[unsigned] => true
[comment] => ''
[disableJsonSupport] => false
)
'title' => yii\db\mysql\ColumnSchema#124
(
[name] => 'title'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => null
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'slug' => yii\db\mysql\ColumnSchema#125
(
[name] => 'slug'
[allowNull] => false
[type] => 'string'
[phpType] => 'string'
[dbType] => 'varchar(255)'
[defaultValue] => ''
[enumValues] => null
[size] => 255
[precision] => 255
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'sort_index' => yii\db\mysql\ColumnSchema#126
(
[name] => 'sort_index'
[allowNull] => false
[type] => 'integer'
[phpType] => 'integer'
[dbType] => 'int'
[defaultValue] => 0
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'is_visible' => yii\db\mysql\ColumnSchema#127
(
[name] => 'is_visible'
[allowNull] => false
[type] => 'tinyint'
[phpType] => 'integer'
[dbType] => 'tinyint unsigned'
[defaultValue] => 1
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => true
[comment] => ''
[disableJsonSupport] => false
)
'created_at' => yii\db\mysql\ColumnSchema#128
(
[name] => 'created_at'
[allowNull] => true
[type] => 'datetime'
[phpType] => 'string'
[dbType] => 'datetime'
[defaultValue] => yii\db\Expression#129
(
[expression] => 'CURRENT_TIMESTAMP'
[params] => []
)
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
'updated_at' => yii\db\mysql\ColumnSchema#130
(
[name] => 'updated_at'
[allowNull] => true
[type] => 'datetime'
[phpType] => 'string'
[dbType] => 'datetime'
[defaultValue] => null
[enumValues] => null
[size] => null
[precision] => null
[scale] => null
[isPrimaryKey] => false
[autoIncrement] => false
[unsigned] => false
[comment] => ''
[disableJsonSupport] => false
)
]
)
]
]
[yii\db\Schema:_builder] => yii\db\mysql\QueryBuilder#131
(
[db] => yii\db\Connection#68(...)
[separator] => ' '
[typeMap] => [
'pk' => 'int(11) NOT NULL AUTO_INCREMENT PRIMARY KEY'
'upk' => 'int(10) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY'
'bigpk' => 'bigint(20) NOT NULL AUTO_INCREMENT PRIMARY KEY'
'ubigpk' => 'bigint(20) UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY'
'char' => 'char(1)'
'string' => 'varchar(255)'
'text' => 'text'
'tinyint' => 'tinyint(3)'
'smallint' => 'smallint(6)'
'integer' => 'int(11)'
'bigint' => 'bigint(20)'
'float' => 'float'
'double' => 'double'
'decimal' => 'decimal(10,0)'
'date' => 'date'
'binary' => 'blob'
'boolean' => 'tinyint(1)'
'money' => 'decimal(19,4)'
'json' => 'json'
'datetime' => 'datetime(0)'
'timestamp' => 'timestamp(0)'
'time' => 'time(0)'
]
[*:conditionBuilders] => []
[*:conditionClasses] => [
'NOT' => 'yii\\db\\conditions\\NotCondition'
'AND' => 'yii\\db\\conditions\\AndCondition'
'OR' => 'yii\\db\\conditions\\OrCondition'
'BETWEEN' => 'yii\\db\\conditions\\BetweenCondition'
'NOT BETWEEN' => 'yii\\db\\conditions\\BetweenCondition'
'IN' => 'yii\\db\\conditions\\InCondition'
'NOT IN' => 'yii\\db\\conditions\\InCondition'
'LIKE' => 'yii\\db\\conditions\\LikeCondition'
'NOT LIKE' => 'yii\\db\\conditions\\LikeCondition'
'OR LIKE' => 'yii\\db\\conditions\\LikeCondition'
'OR NOT LIKE' => 'yii\\db\\conditions\\LikeCondition'
'EXISTS' => 'yii\\db\\conditions\\ExistsCondition'
'NOT EXISTS' => 'yii\\db\\conditions\\ExistsCondition'
]
[*:expressionBuilders] => [
'yii\\db\\Query' => 'yii\\db\\QueryExpressionBuilder'
'yii\\db\\PdoValue' => 'yii\\db\\PdoValueBuilder'
'yii\\db\\Expression' => 'yii\\db\\ExpressionBuilder'
'yii\\db\\conditions\\ConjunctionCondition' => 'yii\\db\\conditions\\ConjunctionConditionBuilder'
'yii\\db\\conditions\\NotCondition' => 'yii\\db\\conditions\\NotConditionBuilder'
'yii\\db\\conditions\\AndCondition' => yii\db\conditions\ConjunctionConditionBuilder#132
(
[*:queryBuilder] => yii\db\mysql\QueryBuilder#131(...)
)
'yii\\db\\conditions\\OrCondition' => 'yii\\db\\conditions\\ConjunctionConditionBuilder'
'yii\\db\\conditions\\BetweenCondition' => 'yii\\db\\conditions\\BetweenConditionBuilder'
'yii\\db\\conditions\\InCondition' => yii\db\conditions\InConditionBuilder#133
(
[*:queryBuilder] => yii\db\mysql\QueryBuilder#131(...)
)
'yii\\db\\conditions\\LikeCondition' => 'yii\\db\\conditions\\LikeConditionBuilder'
'yii\\db\\conditions\\ExistsCondition' => 'yii\\db\\conditions\\ExistsConditionBuilder'
'yii\\db\\conditions\\SimpleCondition' => yii\db\conditions\SimpleConditionBuilder#134
(
[*:queryBuilder] => yii\db\mysql\QueryBuilder#131(...)
)
'yii\\db\\conditions\\HashCondition' => yii\db\conditions\HashConditionBuilder#135
(
[*:queryBuilder] => yii\db\mysql\QueryBuilder#131(...)
)
'yii\\db\\conditions\\BetweenColumnsCondition' => 'yii\\db\\conditions\\BetweenColumnsConditionBuilder'
'yii\\db\\JsonExpression' => 'yii\\db\\mysql\\JsonExpressionBuilder'
]
)
[yii\db\Schema:_serverVersion] => null
[yii\db\mysql\Schema:_oldMysql] => null
[typeMap] => [
'tinyint' => 'tinyint'
'bool' => 'tinyint'
'boolean' => 'tinyint'
'bit' => 'integer'
'smallint' => 'smallint'
'mediumint' => 'integer'
'int' => 'integer'
'integer' => 'integer'
'bigint' => 'bigint'
'float' => 'float'
'double' => 'double'
'double precision' => 'double'
'real' => 'float'
'decimal' => 'decimal'
'numeric' => 'decimal'
'dec' => 'decimal'
'fixed' => 'decimal'
'tinytext' => 'text'
'mediumtext' => 'text'
'longtext' => 'text'
'longblob' => 'binary'
'blob' => 'binary'
'text' => 'text'
'varchar' => 'string'
'string' => 'string'
'char' => 'char'
'datetime' => 'datetime'
'year' => 'date'
'date' => 'date'
'time' => 'time'
'timestamp' => 'timestamp'
'enum' => 'string'
'set' => 'string'
'binary' => 'binary'
'varbinary' => 'binary'
'json' => 'json'
]
)
[yii\db\Connection:_driverName] => 'mysql'
[yii\db\Connection:_master] => false
[yii\db\Connection:_slave] => null
[yii\db\Connection:_queryCacheInfo] => []
[yii\db\Connection:_quotedTableNames] => [
'{{%base_geo_cities}}' => '{{%base_geo_cities}}'
'%base_geo_cities' => '`%base_geo_cities`'
'{{%base_text_pages}}' => '{{%base_text_pages}}'
'%base_text_pages' => '`%base_text_pages`'
'{{%base_slug_redirects}}' => '{{%base_slug_redirects}}'
'%base_slug_redirects' => '`%base_slug_redirects`'
'proj_blog_posts' => '`proj_blog_posts`'
'{{%base_model_classes}}' => '{{%base_model_classes}}'
'%base_model_classes' => '`%base_model_classes`'
'{{%base_seo_fields}}' => '{{%base_seo_fields}}'
'%base_seo_fields' => '`%base_seo_fields`'
'{{%base_image_processing_tasks}}' => '{{%base_image_processing_tasks}}'
'%base_image_processing_tasks' => '`%base_image_processing_tasks`'
'proj_blog_authors' => '`proj_blog_authors`'
'{{%base_core_pages}}' => '{{%base_core_pages}}'
'%base_core_pages' => '`%base_core_pages`'
'proj_blog_categories' => '`proj_blog_categories`'
]
[yii\db\Connection:_quotedColumnNames] => [
'is_visible' => '`is_visible`'
'is_default' => '`is_default`'
'slug' => '`slug`'
'old_slug' => '`old_slug`'
'obj_type' => '`obj_type`'
'id' => '`id`'
'published_at' => '`published_at`'
'name' => '`name`'
'value' => '`value`'
'model_class_id' => '`model_class_id`'
'model_id' => '`model_id`'
'city_id' => '`city_id`'
'result' => '`result`'
'output_file' => '`output_file`'
'title' => '`title`'
'created_at' => '`created_at`'
'updated_at' => '`updated_at`'
]
)
'cache' => yii\caching\FileCache#136
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[keyPrefix] => ''
[serializer] => null
[defaultDuration] => 3600
[yii\caching\Cache:_igbinaryAvailable] => false
[cachePath] => '/var/www/main/data/www/violet-jewelry-shop.ru/runtime/cache/default'
[cacheFileSuffix] => '.bin'
[directoryLevel] => 1
[gcProbability] => 10
[fileMode] => null
[dirMode] => 509
)
'i18n' => yii\i18n\I18N#137
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[translations] => [
'yii' => yii\i18n\PhpMessageSource#138
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[forceTranslation] => false
[sourceLanguage] => 'en-US'
[yii\i18n\MessageSource:_messages] => [
'ru-RU/yii' => [
' and ' => ' и '
'\"{attribute}\" does not support operator \"{operator}\".' => '\"{attribute}\" не поддерживает оператор \"{operator}\".'
'(not set)' => '(не задано)'
'Action not found.' => ''
'Aliases available: {aliases}' => ''
'An internal server error occurred.' => 'Возникла внутренняя ошибка сервера.'
'Are you sure you want to delete this item?' => 'Вы уверены, что хотите удалить этот элемент?'
'Condition for \"{attribute}\" should be either a value or valid operator specification.' => 'Условие для \"{attribute}\" должно быть или значением или верной спецификацией оператора.'
'Delete' => 'Удалить'
'Error' => 'Ошибка'
'File upload failed.' => 'Загрузка файла не удалась.'
'Home' => 'Главная'
'Invalid data received for parameter \"{param}\".' => 'Неправильное значение параметра \"{param}\".'
'Login Required' => 'Требуется вход.'
'Missing required arguments: {params}' => 'Отсутствуют обязательные аргументы: {params}'
'Missing required parameters: {params}' => 'Отсутствуют обязательные параметры: {params}'
'No' => 'Нет'
'No results found.' => 'Ничего не найдено.'
'Only files with these MIME types are allowed: {mimeTypes}.' => 'Разрешена загрузка файлов только со следующими MIME-типами: {mimeTypes}.'
'Only files with these extensions are allowed: {extensions}.' => 'Разрешена загрузка файлов только со следующими расширениями: {extensions}.'
'Operator \"{operator}\" must be used with a search attribute.' => 'Оператор \"{operator}\" должен использоваться через атрибут поиска.'
'Operator \"{operator}\" requires multiple operands.' => 'Оператор \"{operator}\" требует несколько операндов.'
'Options available: {options}' => ''
'Page not found.' => 'Страница не найдена.'
'Please fix the following errors:' => 'Исправьте следующие ошибки:'
'Please upload a file.' => 'Загрузите файл.'
'Showing <b>{begin, number}-{end, number}</b> of <b>{totalCount, number}</b> {totalCount, plural, one{item} other{items}}.' => 'Показаны записи <b>{begin, number}-{end, number}</b> из <b>{totalCount, number}</b>.'
'The combination {values} of {attributes} has already been taken.' => 'Комбинация {values} параметров {attributes} уже существует.'
'The file \"{file}\" is not an image.' => 'Файл «{file}» не является изображением.'
'The file \"{file}\" is too big. Its size cannot exceed {formattedLimit}.' => 'Файл «{file}» слишком большой. Размер не должен превышать {formattedLimit}.'
'The file \"{file}\" is too small. Its size cannot be smaller than {formattedLimit}.' => 'Файл «{file}» слишком маленький. Размер должен быть более {formattedLimit}.'
'The format of {attribute} is invalid.' => 'Неверный формат значения «{attribute}».'
'The format of {filter} is invalid.' => 'Формат фильтра {filter} не верен.'
'The image \"{file}\" is too large. The height cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Файл «{file}» слишком большой. Высота не должна превышать {limit, number} {limit, plural, one{пиксель} few{пикселя} many{пикселей} other{пикселя}}.'
'The image \"{file}\" is too large. The width cannot be larger than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Файл «{file}» слишком большой. Ширина не должна превышать {limit, number} {limit, plural, one{пиксель} few{пикселя} many{пикселей} other{пикселя}}.'
'The image \"{file}\" is too small. The height cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Файл «{file}» слишком маленький. Высота должна быть более {limit, number} {limit, plural, one{пиксель} few{пикселя} many{пикселей} other{пикселя}}.'
'The image \"{file}\" is too small. The width cannot be smaller than {limit, number} {limit, plural, one{pixel} other{pixels}}.' => 'Файл «{file}» слишком маленький. Ширина должна быть более {limit, number} {limit, plural, one{пиксель} few{пикселя} many{пикселей} other{пикселя}}.'
'The requested view \"{name}\" was not found.' => 'Запрашиваемый файл представления \"{name}\" не найден.'
'The verification code is incorrect.' => 'Неправильный проверочный код.'
'Total <b>{count, number}</b> {count, plural, one{item} other{items}}.' => 'Всего <b>{count, number}</b> {count, plural, one{запись} few{записи} many{записей} other{записи}}.'
'Unable to verify your data submission.' => 'Не удалось проверить переданные данные.'
'Unknown alias: -{name}' => 'Неизвестный псевдоним: -{name}'
'Unknown filter attribute \"{attribute}\"' => 'Неизвестный атрибут фильтра \"{attribute}\"'
'Unknown option: --{name}' => 'Неизвестная опция: --{name}'
'Update' => 'Редактировать'
'View' => 'Просмотр'
'Yes' => 'Да'
'You are not allowed to perform this action.' => 'Вам не разрешено производить данное действие.'
'You can upload at most {limit, number} {limit, plural, one{file} other{files}}.' => 'Вы не можете загружать более {limit, number} {limit, plural, one{файла} few{файлов} many{файлов} other{файла}}.'
'You should upload at least {limit, number} {limit, plural, one{file} other{files}}.' => 'Вы должны загрузить как минимум {limit, number} {limit, plural, one{файл} few{файла} many{файлов} other{файла}}.'
'in {delta, plural, =1{a day} other{# days}}' => 'через {delta, plural, =1{день} one{# день} few{# дня} many{# дней} other{# дня}}'
'in {delta, plural, =1{a minute} other{# minutes}}' => 'через {delta, plural, =1{минуту} one{# минуту} few{# минуты} many{# минут} other{# минуты}}'
'in {delta, plural, =1{a month} other{# months}}' => 'через {delta, plural, =1{месяц} one{# месяц} few{# месяца} many{# месяцев} other{# месяца}}'
'in {delta, plural, =1{a second} other{# seconds}}' => 'через {delta, plural, =1{секунду} one{# секунду} few{# секунды} many{# секунд} other{# секунды}}'
'in {delta, plural, =1{a year} other{# years}}' => 'через {delta, plural, =1{год} one{# год} few{# года} many{# лет} other{# года}}'
'in {delta, plural, =1{an hour} other{# hours}}' => 'через {delta, plural, =1{час} one{# час} few{# часа} many{# часов} other{# часа}}'
'just now' => 'прямо сейчас'
'the input value' => 'введённое значение'
'{attribute} \"{value}\" has already been taken.' => 'Значение «{value}» для «{attribute}» уже занято.'
'{attribute} cannot be blank.' => 'Необходимо заполнить «{attribute}».'
'{attribute} contains wrong subnet mask.' => 'Значение «{attribute}» содержит неверную маску подсети.'
'{attribute} is invalid.' => 'Значение «{attribute}» неверно.'
'{attribute} is not a valid URL.' => 'Значение «{attribute}» не является правильным URL.'
'{attribute} is not a valid email address.' => 'Значение «{attribute}» не является правильным email адресом.'
'{attribute} is not in the allowed range.' => 'Значение «{attribute}» не входит в список разрешенных диапазонов адресов.'
'{attribute} must be \"{requiredValue}\".' => 'Значение «{attribute}» должно быть равно «{requiredValue}».'
'{attribute} must be a number.' => 'Значение «{attribute}» должно быть числом.'
'{attribute} must be a string.' => 'Значение «{attribute}» должно быть строкой.'
'{attribute} must be a valid IP address.' => 'Значение «{attribute}» должно быть правильным IP адресом.'
'{attribute} must be an IP address with specified subnet.' => 'Значение «{attribute}» должно быть IP адресом с подсетью.'
'{attribute} must be an integer.' => 'Значение «{attribute}» должно быть целым числом.'
'{attribute} must be either \"{true}\" or \"{false}\".' => 'Значение «{attribute}» должно быть равно «{true}» или «{false}».'
'{attribute} must be equal to \"{compareValueOrAttribute}\".' => 'Значение «{attribute}» должно быть равно «{compareValueOrAttribute}».'
'{attribute} must be greater than \"{compareValueOrAttribute}\".' => 'Значение «{attribute}» должно быть больше значения «{compareValueOrAttribute}».'
'{attribute} must be greater than or equal to \"{compareValueOrAttribute}\".' => 'Значение «{attribute}» должно быть больше или равно значения «{compareValueOrAttribute}».'
'{attribute} must be less than \"{compareValueOrAttribute}\".' => 'Значение «{attribute}» должно быть меньше значения «{compareValueOrAttribute}».'
'{attribute} must be less than or equal to \"{compareValueOrAttribute}\".' => 'Значение «{attribute}» должно быть меньше или равно значения «{compareValueOrAttribute}».'
'{attribute} must be no greater than {max}.' => 'Значение «{attribute}» не должно превышать {max}.'
'{attribute} must be no less than {min}.' => 'Значение «{attribute}» должно быть не меньше {min}.'
'{attribute} must not be a subnet.' => 'Значение «{attribute}» не должно быть подсетью.'
'{attribute} must not be an IPv4 address.' => 'Значение «{attribute}» не должно быть IPv4 адресом.'
'{attribute} must not be an IPv6 address.' => 'Значение «{attribute}» не должно быть IPv6 адресом.'
'{attribute} must not be equal to \"{compareValueOrAttribute}\".' => 'Значение «{attribute}» не должно быть равно «{compareValueOrAttribute}».'
'{attribute} should contain at least {min, number} {min, plural, one{character} other{characters}}.' => 'Значение «{attribute}» должно содержать минимум {min, number} {min, plural, one{символ} few{символа} many{символов} other{символа}}.'
'{attribute} should contain at most {max, number} {max, plural, one{character} other{characters}}.' => 'Значение «{attribute}» должно содержать максимум {max, number} {max, plural, one{символ} few{символа} many{символов} other{символа}}.'
'{attribute} should contain {length, number} {length, plural, one{character} other{characters}}.' => 'Значение «{attribute}» должно содержать {length, number} {length, plural, one{символ} few{символа} many{символов} other{символа}}.'
'{compareAttribute} is invalid.' => ''
'{delta, plural, =1{1 day} other{# days}}' => '{delta, plural, one{# день} few{# дня} many{# дней} other{# дня}}'
'{delta, plural, =1{1 hour} other{# hours}}' => '{delta, plural, one{# час} few{# часа} many{# часов} other{# часа}}'
'{delta, plural, =1{1 minute} other{# minutes}}' => '{delta, plural, one{# минута} few{# минуты} many{# минут} other{# минуты}}'
'{delta, plural, =1{1 month} other{# months}}' => '{delta, plural, one{# месяц} few{# месяца} many{# месяцев} other{# месяца}}'
'{delta, plural, =1{1 second} other{# seconds}}' => '{delta, plural, one{# секунда} few{# секунды} many{# секунд} other{# секунды}}'
'{delta, plural, =1{1 year} other{# years}}' => '{delta, plural, one{# год} few{# года} many{# лет} other{# года}}'
'{delta, plural, =1{a day} other{# days}} ago' => '{delta, plural, =1{день} one{# день} few{# дня} many{# дней} other{# дня}} назад'
'{delta, plural, =1{a minute} other{# minutes}} ago' => '{delta, plural, =1{минуту} one{# минуту} few{# минуты} many{# минут} other{# минуты}} назад'
'{delta, plural, =1{a month} other{# months}} ago' => '{delta, plural, =1{месяц} one{# месяц} few{# месяца} many{# месяцев} other{# месяца}} назад'
'{delta, plural, =1{a second} other{# seconds}} ago' => '{delta, plural, =1{секунду} one{# секунду} few{# секунды} many{# секунд} other{# секунды}} назад'
'{delta, plural, =1{a year} other{# years}} ago' => '{delta, plural, =1{год} one{# год} few{# года} many{# лет} other{# года}} назад'
'{delta, plural, =1{an hour} other{# hours}} ago' => '{delta, plural, =1{час} one{# час} few{# часа} many{# часов} other{# часа}} назад'
'{nFormatted} B' => '{nFormatted} Б'
'{nFormatted} GB' => '{nFormatted} ГБ'
'{nFormatted} GiB' => '{nFormatted} ГиБ'
'{nFormatted} KiB' => '{nFormatted} КиБ'
'{nFormatted} MB' => '{nFormatted} МБ'
'{nFormatted} MiB' => '{nFormatted} МиБ'
'{nFormatted} PB' => '{nFormatted} ПБ'
'{nFormatted} PiB' => '{nFormatted} ПиБ'
'{nFormatted} TB' => '{nFormatted} ТБ'
'{nFormatted} TiB' => '{nFormatted} ТиБ'
'{nFormatted} kB' => '{nFormatted} КБ'
'{nFormatted} {n, plural, =1{byte} other{bytes}}' => '{nFormatted} {n, plural, one{байт} few{байта} many{байтов} other{байта}}'
'{nFormatted} {n, plural, =1{gibibyte} other{gibibytes}}' => '{nFormatted} {n, plural, one{гибибайт} few{гибибайта} many{гибибайтов} other{гибибайта}}'
'{nFormatted} {n, plural, =1{gigabyte} other{gigabytes}}' => '{nFormatted} {n, plural, one{гигабайт} few{гигабайта} many{гигабайтов} other{гигабайта}}'
'{nFormatted} {n, plural, =1{kibibyte} other{kibibytes}}' => '{nFormatted} {n, plural, one{кибибайт} few{кибибайта} many{кибибайтов} other{кибибайта}}'
'{nFormatted} {n, plural, =1{kilobyte} other{kilobytes}}' => '{nFormatted} {n, plural, one{килобайт} few{килобайта} many{килобайтов} other{килобайта}}'
'{nFormatted} {n, plural, =1{mebibyte} other{mebibytes}}' => '{nFormatted} {n, plural, one{мебибайт} few{мебибайта} many{мебибайтов} other{мебибайта}}'
'{nFormatted} {n, plural, =1{megabyte} other{megabytes}}' => '{nFormatted} {n, plural, one{мегабайт} few{мегабайта} many{мегабайтов} other{мегабайта}}'
'{nFormatted} {n, plural, =1{pebibyte} other{pebibytes}}' => '{nFormatted} {n, plural, one{пебибайт} few{пебибайта} many{пебибайтов} other{пебибайта}}'
'{nFormatted} {n, plural, =1{petabyte} other{petabytes}}' => '{nFormatted} {n, plural, one{петабайт} few{петабайта} many{петабайтов} other{петабайта}}'
'{nFormatted} {n, plural, =1{tebibyte} other{tebibytes}}' => '{nFormatted} {n, plural, one{тебибайт} few{тебибайта} many{тебибайтов} other{тебибайта}}'
'{nFormatted} {n, plural, =1{terabyte} other{terabytes}}' => '{nFormatted} {n, plural, one{терабайт} few{терабайта} many{терабайтов} other{терабайта}}'
]
]
[basePath] => '@yii/messages'
[fileMap] => null
)
'app' => [
'class' => 'yii\\i18n\\PhpMessageSource'
'sourceLanguage' => 'ru-RU'
'basePath' => '@app/messages'
]
]
[yii\i18n\I18N:_messageFormatter] => null
)
'geography' => app\app_base\components\Geography#139
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[*:default] => app\app_base\models\geography\City#140
(
[yii\base\Component:_events] => [
'beforeInsert' => [
0 => [
0 => [
0 => app\app_base\behaviors\DateActionBehavior#141
(
[owner] => app\app_base\models\geography\City#140(...)
[yii\base\Behavior:_attachedEvents] => [
'beforeInsert' => 'dateCreate'
'beforeUpdate' => 'dateUpdate'
]
[createdAtAttribute] => 'created_at'
[updatedAtAttribute] => 'updated_at'
)
1 => 'dateCreate'
]
1 => null
]
]
'beforeUpdate' => [
0 => [
0 => [
0 => app\app_base\behaviors\DateActionBehavior#141(...)
1 => 'dateUpdate'
]
1 => null
]
]
'afterInsert' => [
0 => [
0 => [
0 => app\app_base\behaviors\CacheBehavior#142
(
[owner] => app\app_base\models\geography\City#140(...)
[yii\base\Behavior:_attachedEvents] => [
'afterInsert' => 'deleteCache'
'afterUpdate' => 'deleteCache'
'afterDelete' => 'deleteCache'
]
[keys] => [
0 => 'cities'
1 => 'city_{id}'
2 => 'region_{region_id}'
3 => 'contacts'
]
)
1 => 'deleteCache'
]
1 => null
]
]
'afterUpdate' => [
0 => [
0 => [
0 => app\app_base\behaviors\CacheBehavior#142(...)
1 => 'deleteCache'
]
1 => null
]
]
'afterDelete' => [
0 => [
0 => [
0 => app\app_base\behaviors\CacheBehavior#142(...)
1 => 'deleteCache'
]
1 => null
]
]
]
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => [
'app\\app_base\\behaviors\\DateActionBehavior' => app\app_base\behaviors\DateActionBehavior#141(...)
'app\\app_base\\behaviors\\CacheBehavior' => app\app_base\behaviors\CacheBehavior#142(...)
]
[yii\base\Model:_errors] => null
[yii\base\Model:_validators] => null
[yii\base\Model:_scenario] => 'default'
[yii\db\BaseActiveRecord:_attributes] => [
'domain' => ''
'messenger_whatsapp' => ''
'messenger_viber' => ''
'messenger_telegram' => ''
'is_default' => 1
'is_visible' => 1
'created_at' => '2019-11-16 21:19:37'
'id' => 1
'region_id' => 1
'name' => 'Москва'
'subdomain' => 'msk'
'phones' => [
0 => [
'number' => '7 (800) 505-84-40'
'label' => ''
]
]
'emails' => null
'socials' => null
'emails_for_notifications' => null
'cases' => [
'ablative' => 'Москвой'
'accusative' => 'Москву'
'dative' => 'Москве'
'genitive' => 'Москвы'
'prepositional' => 'Москве'
]
'header_code' => '<meta name=\"yandex-verification\" content=\"89f1c69276944c0a\" />
<meta name=\"yandex-verification\" content=\"4801cdbd75f8d096\" />
<meta name=\"yandex-verification\" content=\"56b2927e4e185ac6\" />'
'footer_code' => ''
'robots' => ''
'updated_at' => '2025-06-14 15:21:53'
]
[yii\db\BaseActiveRecord:_oldAttributes] => [
'domain' => ''
'messenger_whatsapp' => ''
'messenger_viber' => ''
'messenger_telegram' => ''
'is_default' => 1
'is_visible' => 1
'created_at' => '2019-11-16 21:19:37'
'id' => 1
'region_id' => 1
'name' => 'Москва'
'subdomain' => 'msk'
'phones' => '[{\"number\":\"7 (800) 505-84-40\",\"label\":\"\"}]'
'emails' => null
'socials' => null
'emails_for_notifications' => null
'cases' => '{\"ablative\":\"\\u041c\\u043e\\u0441\\u043a\\u0432\\u043e\\u0439\",\"accusative\":\"\\u041c\\u043e\\u0441\\u043a\\u0432\\u0443\",\"dative\":\"\\u041c\\u043e\\u0441\\u043a\\u0432\\u0435\",\"genitive\":\"\\u041c\\u043e\\u0441\\u043a\\u0432\\u044b\",\"prepositional\":\"\\u041c\\u043e\\u0441\\u043a\\u0432\\u0435\"}'
'header_code' => '<meta name=\"yandex-verification\" content=\"89f1c69276944c0a\" />
<meta name=\"yandex-verification\" content=\"4801cdbd75f8d096\" />
<meta name=\"yandex-verification\" content=\"56b2927e4e185ac6\" />'
'footer_code' => ''
'robots' => ''
'updated_at' => '2025-06-14 15:21:53'
]
[yii\db\BaseActiveRecord:_related] => []
[yii\db\BaseActiveRecord:_relationsDependencies] => []
[pageSize] => [
'web' => 12
'manager' => 40
]
[defaultOrder] => [
'web' => [
'id' => 3
]
'manager' => [
'id' => 4
]
]
[isFormProcess] => false
[arrayAttributes] => [
0 => 'cases'
1 => 'phones'
2 => 'emails'
3 => 'emails_for_notifications'
4 => 'socials'
]
[isFromForm] => false
[allowCopy] => false
[isCopyProcess] => false
[*:seoFields] => []
)
[*:current] => app\app_base\models\geography\City#140(...)
[*:_citiesCount] => 466
)
'urlManager' => yii\web\UrlManager#143
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[enablePrettyUrl] => true
[enableStrictParsing] => false
[rules] => [
0 => yii\web\UrlRule#144
(
[name] => 'debug'
[pattern] => '#^debug$#u'
[host] => null
[route] => 'debug'
[defaults] => []
[suffix] => false
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => false
[*:createStatus] => 2
[*:placeholders] => []
[yii\web\UrlRule:_template] => '/debug/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => []
)
1 => yii\web\UrlRule#145
(
[name] => 'debug/<controller:[\\w\\-]+>/<action:[\\w\\-]+>'
[pattern] => '#^debug/(?P<a4cf2669a>[\\w\\-]+)/(?P<a47cc8c92>[\\w\\-]+)$#u'
[host] => null
[route] => 'debug/<controller>/<action>'
[defaults] => []
[suffix] => false
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => false
[*:createStatus] => 2
[*:placeholders] => [
'a4cf2669a' => 'controller'
'a47cc8c92' => 'action'
]
[yii\web\UrlRule:_template] => '/debug/<controller>/<action>/'
[yii\web\UrlRule:_routeRule] => '#^debug/(?P<a4cf2669a>[\\w\\-]+)/(?P<a47cc8c92>[\\w\\-]+)$#u'
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => [
'controller' => '<controller>'
'action' => '<action>'
]
)
2 => yii\web\UrlRule#146
(
[name] => '/'
[pattern] => '#^$#u'
[host] => null
[route] => 'site/index'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => []
[yii\web\UrlRule:_template] => ''
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => []
)
3 => yii\web\UrlRule#147
(
[name] => 'error'
[pattern] => '#^error$#u'
[host] => null
[route] => 'errors/error'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => []
[yii\web\UrlRule:_template] => '/error/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => []
)
4 => yii\web\UrlRule#148
(
[name] => 'robots.txt'
[pattern] => '#^robots\\.txt$#u'
[host] => null
[route] => 'seo/robots'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => []
[yii\web\UrlRule:_template] => '/robots.txt/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => []
)
5 => yii\web\UrlRule#149
(
[name] => 'sitemap.xml'
[pattern] => '#^sitemap\\.xml$#u'
[host] => null
[route] => 'seo/sitemap'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => []
[yii\web\UrlRule:_template] => '/sitemap.xml/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => []
)
6 => yii\web\UrlRule#150
(
[name] => 'v-admin'
[pattern] => '#^v-admin$#u'
[host] => null
[route] => 'admin'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => []
[yii\web\UrlRule:_template] => '/v-admin/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => []
)
7 => yii\web\UrlRule#151
(
[name] => 'v-admin/<controllerPath:(.*)>/<action>/<id:\\d+>'
[pattern] => '#^v-admin/(?P<a6c211ce7>(.*))/(?P<a47cc8c92>[^\\/]+)/(?P<abf396750>\\d+)$#u'
[host] => null
[route] => 'admin/<controllerPath>/<action>'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a6c211ce7' => 'controllerPath'
'a47cc8c92' => 'action'
'abf396750' => 'id'
]
[yii\web\UrlRule:_template] => '/v-admin/<controllerPath>/<action>/<id>/'
[yii\web\UrlRule:_routeRule] => '#^admin/(?P<a6c211ce7>(.*))/(?P<a47cc8c92>[^\\/]+)$#u'
[yii\web\UrlRule:_paramRules] => [
'id' => '#^\\d+$#u'
]
[yii\web\UrlRule:_routeParams] => [
'controllerPath' => '<controllerPath>'
'action' => '<action>'
]
)
8 => yii\web\UrlRule#152
(
[name] => 'v-admin/<controllerPath:(.*)>/<action>'
[pattern] => '#^v-admin/(?P<a6c211ce7>(.*))/(?P<a47cc8c92>[^\\/]+)$#u'
[host] => null
[route] => 'admin/<controllerPath>/<action>'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a6c211ce7' => 'controllerPath'
'a47cc8c92' => 'action'
]
[yii\web\UrlRule:_template] => '/v-admin/<controllerPath>/<action>/'
[yii\web\UrlRule:_routeRule] => '#^admin/(?P<a6c211ce7>(.*))/(?P<a47cc8c92>[^\\/]+)$#u'
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => [
'controllerPath' => '<controllerPath>'
'action' => '<action>'
]
)
9 => yii\web\UrlRule#153
(
[name] => 'v-admin/<controllerPath:(.*)>'
[pattern] => '#^v-admin/(?P<a6c211ce7>(.*))$#u'
[host] => null
[route] => 'admin/<controllerPath>'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a6c211ce7' => 'controllerPath'
]
[yii\web\UrlRule:_template] => '/v-admin/<controllerPath>/'
[yii\web\UrlRule:_routeRule] => '#^admin/(?P<a6c211ce7>(.*))$#u'
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => [
'controllerPath' => '<controllerPath>'
]
)
10 => yii\web\UrlRule#154
(
[name] => 'v-admin/<controllerPath:(.*)>'
[pattern] => '#^v-admin/(?P<a6c211ce7>(.*))$#u'
[host] => null
[route] => 'v-admin/<controllerPath>/index'
[defaults] => [
'action' => 'index'
]
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a6c211ce7' => 'controllerPath'
]
[yii\web\UrlRule:_template] => '/v-admin/<controllerPath>/'
[yii\web\UrlRule:_routeRule] => '#^v-admin/(?P<a6c211ce7>(.*))/index$#u'
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => [
'controllerPath' => '<controllerPath>'
]
)
11 => yii\web\UrlRule#155
(
[name] => 'llms.txt'
[pattern] => '#^llms\\.txt$#u'
[host] => null
[route] => 'seo/llms'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => []
[yii\web\UrlRule:_template] => '/llms.txt/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => []
)
12 => yii\web\UrlRule#156
(
[name] => 'contacts'
[pattern] => '#^contacts$#u'
[host] => null
[route] => 'contacts/index'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => []
[yii\web\UrlRule:_template] => '/contacts/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => []
)
13 => yii\web\UrlRule#157
(
[name] => '<action:(payment-terms|about-company)>'
[pattern] => '#^(?P<a47cc8c92>(payment-terms|about-company))$#u'
[host] => null
[route] => 'site/<action>'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a47cc8c92' => 'action'
]
[yii\web\UrlRule:_template] => '/<action>/'
[yii\web\UrlRule:_routeRule] => '#^site/(?P<a47cc8c92>(payment-terms|about-company))$#u'
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => [
'action' => '<action>'
]
)
14 => yii\web\UrlRule#158
(
[name] => 'search/<searchQuery>/<category>/sort/<sort>'
[pattern] => '#^search/(?P<ae343ff9d>[^\\/]+)/(?P<a064c19c1>[^\\/]+)/sort/(?P<a5124f222>[^\\/]+)$#u'
[host] => null
[route] => 'site/search'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'ae343ff9d' => 'searchQuery'
'a064c19c1' => 'category'
'a5124f222' => 'sort'
]
[yii\web\UrlRule:_template] => '/search/<searchQuery>/<category>/sort/<sort>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'searchQuery' => ''
'category' => ''
'sort' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
15 => yii\web\UrlRule#159
(
[name] => 'search/<searchQuery>/<category>'
[pattern] => '#^search/(?P<ae343ff9d>[^\\/]+)/(?P<a064c19c1>[^\\/]+)$#u'
[host] => null
[route] => 'site/search'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'ae343ff9d' => 'searchQuery'
'a064c19c1' => 'category'
]
[yii\web\UrlRule:_template] => '/search/<searchQuery>/<category>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'searchQuery' => ''
'category' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
16 => yii\web\UrlRule#160
(
[name] => 'search/<searchQuery>/sort/<sort>'
[pattern] => '#^search/(?P<ae343ff9d>[^\\/]+)/sort/(?P<a5124f222>[^\\/]+)$#u'
[host] => null
[route] => 'site/search'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'ae343ff9d' => 'searchQuery'
'a5124f222' => 'sort'
]
[yii\web\UrlRule:_template] => '/search/<searchQuery>/sort/<sort>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'searchQuery' => ''
'sort' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
17 => yii\web\UrlRule#161
(
[name] => 'search/<searchQuery>'
[pattern] => '#^search/(?P<ae343ff9d>[^\\/]+)$#u'
[host] => null
[route] => 'site/search'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'ae343ff9d' => 'searchQuery'
]
[yii\web\UrlRule:_template] => '/search/<searchQuery>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'searchQuery' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
18 => yii\web\UrlRule#162
(
[name] => 'search'
[pattern] => '#^search$#u'
[host] => null
[route] => 'site/search'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => []
[yii\web\UrlRule:_template] => '/search/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => []
)
19 => yii\web\UrlRule#163
(
[name] => '<controller:(cart)>'
[pattern] => '#^(?P<a4cf2669a>(cart))$#u'
[host] => null
[route] => '<controller>/index'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a4cf2669a' => 'controller'
]
[yii\web\UrlRule:_template] => '/<controller>/'
[yii\web\UrlRule:_routeRule] => '#^(?P<a4cf2669a>(cart))/index$#u'
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => [
'controller' => '<controller>'
]
)
20 => yii\web\UrlRule#164
(
[name] => 'cart/yookassa-webhook'
[pattern] => '#^cart/yookassa-webhook$#u'
[host] => null
[route] => 'cart/yookassa-webhook'
[defaults] => []
[suffix] => null
[verb] => [
0 => 'POST'
]
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => []
[yii\web\UrlRule:_template] => '/cart/yookassa-webhook/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => []
)
21 => yii\web\UrlRule#165
(
[name] => 'cart/robokassa-payment-result'
[pattern] => '#^cart/robokassa-payment-result$#u'
[host] => null
[route] => 'cart/robokassa-payment-result'
[defaults] => []
[suffix] => null
[verb] => [
0 => 'POST'
]
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => []
[yii\web\UrlRule:_template] => '/cart/robokassa-payment-result/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => []
)
22 => yii\web\UrlRule#166
(
[name] => '<controller:(cart)>/<action>'
[pattern] => '#^(?P<a4cf2669a>(cart))/(?P<a47cc8c92>[^\\/]+)$#u'
[host] => null
[route] => '<controller>/<action>'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a4cf2669a' => 'controller'
'a47cc8c92' => 'action'
]
[yii\web\UrlRule:_template] => '/<controller>/<action>/'
[yii\web\UrlRule:_routeRule] => '#^(?P<a4cf2669a>(cart))/(?P<a47cc8c92>[^\\/]+)$#u'
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => [
'controller' => '<controller>'
'action' => '<action>'
]
)
23 => yii\web\UrlRule#167
(
[name] => '<controller:(cart)>/checkout/<action:(success|error)>'
[pattern] => '#^(?P<a4cf2669a>(cart))/checkout/(?P<a47cc8c92>(success|error))$#u'
[host] => null
[route] => '<controller>/<action>'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a4cf2669a' => 'controller'
'a47cc8c92' => 'action'
]
[yii\web\UrlRule:_template] => '/<controller>/checkout/<action>/'
[yii\web\UrlRule:_routeRule] => '#^(?P<a4cf2669a>(cart))/(?P<a47cc8c92>(success|error))$#u'
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => [
'controller' => '<controller>'
'action' => '<action>'
]
)
24 => yii\web\UrlRule#168
(
[name] => 'collections/<slug:[\\w_\\-]+>/filters/<filters>/sort/<sort>'
[pattern] => '#^collections/(?P<a989d9b62>[\\w_\\-]+)/filters/(?P<a7877678d>[^\\/]+)/sort/(?P<a5124f222>[^\\/]+)$#u'
[host] => null
[route] => 'collections/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => false
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a989d9b62' => 'slug'
'a7877678d' => 'filters'
'a5124f222' => 'sort'
]
[yii\web\UrlRule:_template] => '/collections/<slug>/filters/<filters>/sort/<sort>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
'filters' => ''
'sort' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
25 => yii\web\UrlRule#169
(
[name] => 'collections/<slug:[\\w_\\-]+>/filters/<filters>'
[pattern] => '#^collections/(?P<a989d9b62>[\\w_\\-]+)/filters/(?P<a7877678d>[^\\/]+)$#u'
[host] => null
[route] => 'collections/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => false
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a989d9b62' => 'slug'
'a7877678d' => 'filters'
]
[yii\web\UrlRule:_template] => '/collections/<slug>/filters/<filters>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
'filters' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
26 => yii\web\UrlRule#170
(
[name] => 'collections/<slug:[\\w_\\-]+>/<group:[\\w_\\-]+>/sort/<sort>'
[pattern] => '#^collections/(?P<a989d9b62>[\\w_\\-]+)/(?P<a6dc044c5>[\\w_\\-]+)/sort/(?P<a5124f222>[^\\/]+)$#u'
[host] => null
[route] => 'collections/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => false
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a989d9b62' => 'slug'
'a6dc044c5' => 'group'
'a5124f222' => 'sort'
]
[yii\web\UrlRule:_template] => '/collections/<slug>/<group>/sort/<sort>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
'group' => '#^[\\w_\\-]+$#u'
'sort' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
27 => yii\web\UrlRule#171
(
[name] => 'collections/<slug:[\\w_\\-]+>/<group:[\\w_\\-]+>'
[pattern] => '#^collections/(?P<a989d9b62>[\\w_\\-]+)/(?P<a6dc044c5>[\\w_\\-]+)$#u'
[host] => null
[route] => 'collections/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => false
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a989d9b62' => 'slug'
'a6dc044c5' => 'group'
]
[yii\web\UrlRule:_template] => '/collections/<slug>/<group>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
'group' => '#^[\\w_\\-]+$#u'
]
[yii\web\UrlRule:_routeParams] => []
)
28 => yii\web\UrlRule#172
(
[name] => 'collections/<slug:[\\w_\\-]+>/sort/<sort>'
[pattern] => '#^collections/(?P<a989d9b62>[\\w_\\-]+)/sort/(?P<a5124f222>[^\\/]+)$#u'
[host] => null
[route] => 'collections/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a989d9b62' => 'slug'
'a5124f222' => 'sort'
]
[yii\web\UrlRule:_template] => '/collections/<slug>/sort/<sort>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
'sort' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
29 => yii\web\UrlRule#173
(
[name] => 'collections/<slug:[\\w_\\-]+>'
[pattern] => '#^collections/(?P<a989d9b62>[\\w_\\-]+)$#u'
[host] => null
[route] => 'collections/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a989d9b62' => 'slug'
]
[yii\web\UrlRule:_template] => '/collections/<slug>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
]
[yii\web\UrlRule:_routeParams] => []
)
30 => yii\web\UrlRule#174
(
[name] => '<controller:(brands)>/<slug:[\\w_\\-]+>/<category:[\\w_\\-]+>'
[pattern] => '#^(?P<a4cf2669a>(brands))/(?P<a989d9b62>[\\w_\\-]+)/(?P<a064c19c1>[\\w_\\-]+)$#u'
[host] => null
[route] => '<controller>/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a4cf2669a' => 'controller'
'a989d9b62' => 'slug'
'a064c19c1' => 'category'
]
[yii\web\UrlRule:_template] => '/<controller>/<slug>/<category>/'
[yii\web\UrlRule:_routeRule] => '#^(?P<a4cf2669a>(brands))/view$#u'
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
'category' => '#^[\\w_\\-]+$#u'
]
[yii\web\UrlRule:_routeParams] => [
'controller' => '<controller>'
]
)
31 => yii\web\UrlRule#175
(
[name] => '<controller:(brands)>/<slug:[\\w_\\-]+>'
[pattern] => '#^(?P<a4cf2669a>(brands))/(?P<a989d9b62>[\\w_\\-]+)$#u'
[host] => null
[route] => '<controller>/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a4cf2669a' => 'controller'
'a989d9b62' => 'slug'
]
[yii\web\UrlRule:_template] => '/<controller>/<slug>/'
[yii\web\UrlRule:_routeRule] => '#^(?P<a4cf2669a>(brands))/view$#u'
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
]
[yii\web\UrlRule:_routeParams] => [
'controller' => '<controller>'
]
)
32 => yii\web\UrlRule#176
(
[name] => '<controller:(jewelries)>/<action:(discounts)>/<category:[\\w_\\-]+>'
[pattern] => '#^(?P<a4cf2669a>(jewelries))/(?P<a47cc8c92>(discounts))/(?P<a064c19c1>[\\w_\\-]+)$#u'
[host] => null
[route] => '<controller>/<action>'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a4cf2669a' => 'controller'
'a47cc8c92' => 'action'
'a064c19c1' => 'category'
]
[yii\web\UrlRule:_template] => '/<controller>/<action>/<category>/'
[yii\web\UrlRule:_routeRule] => '#^(?P<a4cf2669a>(jewelries))/(?P<a47cc8c92>(discounts))$#u'
[yii\web\UrlRule:_paramRules] => [
'category' => '#^[\\w_\\-]+$#u'
]
[yii\web\UrlRule:_routeParams] => [
'controller' => '<controller>'
'action' => '<action>'
]
)
33 => yii\web\UrlRule#177
(
[name] => '<controller:(jewelries)>/<action:(get-buy-variants)>'
[pattern] => '#^(?P<a4cf2669a>(jewelries))/(?P<a47cc8c92>(get-buy-variants))$#u'
[host] => null
[route] => '<controller>/<action>'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a4cf2669a' => 'controller'
'a47cc8c92' => 'action'
]
[yii\web\UrlRule:_template] => '/<controller>/<action>/'
[yii\web\UrlRule:_routeRule] => '#^(?P<a4cf2669a>(jewelries))/(?P<a47cc8c92>(get-buy-variants))$#u'
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => [
'controller' => '<controller>'
'action' => '<action>'
]
)
34 => yii\web\UrlRule#178
(
[name] => 'jewelries/<slug:[\\w_\\-]+>'
[pattern] => '#^jewelries/(?P<a989d9b62>[\\w_\\-]+)$#u'
[host] => null
[route] => 'jewelries/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a989d9b62' => 'slug'
]
[yii\web\UrlRule:_template] => '/jewelries/<slug>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
]
[yii\web\UrlRule:_routeParams] => []
)
35 => yii\web\UrlRule#179
(
[name] => 'news/<slug:[\\w_\\-]+>'
[pattern] => '#^news/(?P<a989d9b62>[\\w_\\-]+)$#u'
[host] => null
[route] => 'news/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a989d9b62' => 'slug'
]
[yii\web\UrlRule:_template] => '/news/<slug>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
]
[yii\web\UrlRule:_routeParams] => []
)
36 => yii\web\UrlRule#180
(
[name] => 'jewels/<slug:[\\w_\\-]+>'
[pattern] => '#^jewels/(?P<a989d9b62>[\\w_\\-]+)$#u'
[host] => null
[route] => 'jewels/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a989d9b62' => 'slug'
]
[yii\web\UrlRule:_template] => '/jewels/<slug>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
]
[yii\web\UrlRule:_routeParams] => []
)
37 => yii\web\UrlRule#181
(
[name] => 'blog/post/<slug:[\\w_\\-]+>'
[pattern] => '#^blog/post/(?P<a989d9b62>[\\w_\\-]+)$#u'
[host] => null
[route] => 'blog/post'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a989d9b62' => 'slug'
]
[yii\web\UrlRule:_template] => '/blog/post/<slug>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
]
[yii\web\UrlRule:_routeParams] => []
)
38 => yii\web\UrlRule#182
(
[name] => 'blog/author/<slug:[\\w_\\-]+>'
[pattern] => '#^blog/author/(?P<a989d9b62>[\\w_\\-]+)$#u'
[host] => null
[route] => 'blog/author'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a989d9b62' => 'slug'
]
[yii\web\UrlRule:_template] => '/blog/author/<slug>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^[\\w_\\-]+$#u'
]
[yii\web\UrlRule:_routeParams] => []
)
39 => yii\web\UrlRule#183
(
[name] => 'qCcJRdsP5L9BsOEkMYs5wvGNVpyjEgC0ZeAFz0GPg4fa0oiK90'
[pattern] => '#^qCcJRdsP5L9BsOEkMYs5wvGNVpyjEgC0ZeAFz0GPg4fa0oiK90$#u'
[host] => null
[route] => 'export/yandex-yml'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => []
[yii\web\UrlRule:_template] => '/qCcJRdsP5L9BsOEkMYs5wvGNVpyjEgC0ZeAFz0GPg4fa0oiK90/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => []
)
40 => yii\web\UrlRule#184
(
[name] => '<direction:(catalog|pravoslavnye-izdelia)>/filters/<filters>/sort/<sort>'
[pattern] => '#^(?P<a3e4ad1b3>(catalog|pravoslavnye-izdelia))/filters/(?P<a7877678d>[^\\/]+)/sort/(?P<a5124f222>[^\\/]+)$#u'
[host] => null
[route] => 'catalog/index'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => false
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a3e4ad1b3' => 'direction'
'a7877678d' => 'filters'
'a5124f222' => 'sort'
]
[yii\web\UrlRule:_template] => '/<direction>/filters/<filters>/sort/<sort>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'direction' => '#^(catalog|pravoslavnye-izdelia)$#u'
'filters' => ''
'sort' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
41 => yii\web\UrlRule#185
(
[name] => '<direction:(catalog|pravoslavnye-izdelia)>/filters/<filters>'
[pattern] => '#^(?P<a3e4ad1b3>(catalog|pravoslavnye-izdelia))/filters/(?P<a7877678d>[^\\/]+)$#u'
[host] => null
[route] => 'catalog/index'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => false
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a3e4ad1b3' => 'direction'
'a7877678d' => 'filters'
]
[yii\web\UrlRule:_template] => '/<direction>/filters/<filters>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'direction' => '#^(catalog|pravoslavnye-izdelia)$#u'
'filters' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
42 => yii\web\UrlRule#186
(
[name] => '<direction:(catalog|pravoslavnye-izdelia)>/sort/<sort>'
[pattern] => '#^(?P<a3e4ad1b3>(catalog|pravoslavnye-izdelia))/sort/(?P<a5124f222>[^\\/]+)$#u'
[host] => null
[route] => 'catalog/index'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a3e4ad1b3' => 'direction'
'a5124f222' => 'sort'
]
[yii\web\UrlRule:_template] => '/<direction>/sort/<sort>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'direction' => '#^(catalog|pravoslavnye-izdelia)$#u'
'sort' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
43 => yii\web\UrlRule#187
(
[name] => '<direction:(catalog|pravoslavnye-izdelia)>'
[pattern] => '#^(?P<a3e4ad1b3>(catalog|pravoslavnye-izdelia))$#u'
[host] => null
[route] => 'catalog/index'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a3e4ad1b3' => 'direction'
]
[yii\web\UrlRule:_template] => '/<direction>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'direction' => '#^(catalog|pravoslavnye-izdelia)$#u'
]
[yii\web\UrlRule:_routeParams] => []
)
44 => yii\web\UrlRule#188
(
[name] => '<direction:(catalog|pravoslavnye-izdelia)>/<slug:[\\w_\\-]+>/filters/<filters>/sort/<sort>'
[pattern] => '#^(?P<a3e4ad1b3>(catalog|pravoslavnye-izdelia))/(?P<a989d9b62>[\\w_\\-]+)/filters/(?P<a7877678d>[^\\/]+)/sort/(?P<a5124f222>[^\\/]+)$#u'
[host] => null
[route] => 'catalog/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => false
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a3e4ad1b3' => 'direction'
'a989d9b62' => 'slug'
'a7877678d' => 'filters'
'a5124f222' => 'sort'
]
[yii\web\UrlRule:_template] => '/<direction>/<slug>/filters/<filters>/sort/<sort>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'direction' => '#^(catalog|pravoslavnye-izdelia)$#u'
'slug' => '#^[\\w_\\-]+$#u'
'filters' => ''
'sort' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
45 => yii\web\UrlRule#189
(
[name] => '<direction:(catalog|pravoslavnye-izdelia)>/<slug:[\\w_\\-]+>/filters/<filters>'
[pattern] => '#^(?P<a3e4ad1b3>(catalog|pravoslavnye-izdelia))/(?P<a989d9b62>[\\w_\\-]+)/filters/(?P<a7877678d>[^\\/]+)$#u'
[host] => null
[route] => 'catalog/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => false
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a3e4ad1b3' => 'direction'
'a989d9b62' => 'slug'
'a7877678d' => 'filters'
]
[yii\web\UrlRule:_template] => '/<direction>/<slug>/filters/<filters>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'direction' => '#^(catalog|pravoslavnye-izdelia)$#u'
'slug' => '#^[\\w_\\-]+$#u'
'filters' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
46 => yii\web\UrlRule#190
(
[name] => '<direction:(catalog|pravoslavnye-izdelia)>/<slug:[\\w_\\-]+>/<group:[\\w_\\-]+>/sort/<sort>'
[pattern] => '#^(?P<a3e4ad1b3>(catalog|pravoslavnye-izdelia))/(?P<a989d9b62>[\\w_\\-]+)/(?P<a6dc044c5>[\\w_\\-]+)/sort/(?P<a5124f222>[^\\/]+)$#u'
[host] => null
[route] => 'catalog/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => false
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a3e4ad1b3' => 'direction'
'a989d9b62' => 'slug'
'a6dc044c5' => 'group'
'a5124f222' => 'sort'
]
[yii\web\UrlRule:_template] => '/<direction>/<slug>/<group>/sort/<sort>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'direction' => '#^(catalog|pravoslavnye-izdelia)$#u'
'slug' => '#^[\\w_\\-]+$#u'
'group' => '#^[\\w_\\-]+$#u'
'sort' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
47 => yii\web\UrlRule#191
(
[name] => '<direction:(catalog|pravoslavnye-izdelia)>/<slug:[\\w_\\-]+>/<group:[\\w_\\-]+>'
[pattern] => '#^(?P<a3e4ad1b3>(catalog|pravoslavnye-izdelia))/(?P<a989d9b62>[\\w_\\-]+)/(?P<a6dc044c5>[\\w_\\-]+)$#u'
[host] => null
[route] => 'catalog/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => false
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a3e4ad1b3' => 'direction'
'a989d9b62' => 'slug'
'a6dc044c5' => 'group'
]
[yii\web\UrlRule:_template] => '/<direction>/<slug>/<group>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'direction' => '#^(catalog|pravoslavnye-izdelia)$#u'
'slug' => '#^[\\w_\\-]+$#u'
'group' => '#^[\\w_\\-]+$#u'
]
[yii\web\UrlRule:_routeParams] => []
)
48 => yii\web\UrlRule#192
(
[name] => '<direction:(catalog|pravoslavnye-izdelia)>/<slug:[\\w_\\-]+>/sort/<sort>'
[pattern] => '#^(?P<a3e4ad1b3>(catalog|pravoslavnye-izdelia))/(?P<a989d9b62>[\\w_\\-]+)/sort/(?P<a5124f222>[^\\/]+)$#u'
[host] => null
[route] => 'catalog/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a3e4ad1b3' => 'direction'
'a989d9b62' => 'slug'
'a5124f222' => 'sort'
]
[yii\web\UrlRule:_template] => '/<direction>/<slug>/sort/<sort>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'direction' => '#^(catalog|pravoslavnye-izdelia)$#u'
'slug' => '#^[\\w_\\-]+$#u'
'sort' => ''
]
[yii\web\UrlRule:_routeParams] => []
)
49 => yii\web\UrlRule#193
(
[name] => '<direction:(catalog|pravoslavnye-izdelia)>/<slug:[\\w_\\-]+>'
[pattern] => '#^(?P<a3e4ad1b3>(catalog|pravoslavnye-izdelia))/(?P<a989d9b62>[\\w_\\-]+)$#u'
[host] => null
[route] => 'catalog/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a3e4ad1b3' => 'direction'
'a989d9b62' => 'slug'
]
[yii\web\UrlRule:_template] => '/<direction>/<slug>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'direction' => '#^(catalog|pravoslavnye-izdelia)$#u'
'slug' => '#^[\\w_\\-]+$#u'
]
[yii\web\UrlRule:_routeParams] => []
)
50 => yii\web\UrlRule#194
(
[name] => '<slug:(dostavka-i-oplata|garantii|nagrady|obmen-i-vozvrat|privacy-policy|sertifikaty|soglashenie-s-pokupatelem-yuvelirnyh-izdeliy)>'
[pattern] => '#^(?P<a989d9b62>(dostavka-i-oplata|garantii|nagrady|obmen-i-vozvrat|privacy-policy|sertifikaty|soglashenie-s-pokupatelem-yuvelirnyh-izdeliy))$#u'
[host] => null
[route] => 'text-pages/view'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 2
[*:placeholders] => [
'a989d9b62' => 'slug'
]
[yii\web\UrlRule:_template] => '/<slug>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'slug' => '#^(dostavka-i-oplata|garantii|nagrady|obmen-i-vozvrat|privacy-policy|sertifikaty|soglashenie-s-pokupatelem-yuvelirnyh-izdeliy)$#u'
]
[yii\web\UrlRule:_routeParams] => []
)
51 => yii\web\UrlRule#195
(
[name] => 'blog/<category:(azbuka-yuvelira-bazovye-znaniya|gid-po-vyboru|kamni-i-metally|masterskaya-violet|novosti|trendy-i-stil|uhod-i-servis)>'
[pattern] => '#^blog/(?P<a064c19c1>(azbuka-yuvelira-bazovye-znaniya|gid-po-vyboru|kamni-i-metally|masterskaya-violet|novosti|trendy-i-stil|uhod-i-servis))$#u'
[host] => null
[route] => 'blog/index'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 0
[*:placeholders] => [
'a064c19c1' => 'category'
]
[yii\web\UrlRule:_template] => '/blog/<category>/'
[yii\web\UrlRule:_routeRule] => null
[yii\web\UrlRule:_paramRules] => [
'category' => '#^(azbuka-yuvelira-bazovye-znaniya|gid-po-vyboru|kamni-i-metally|masterskaya-violet|novosti|trendy-i-stil|uhod-i-servis)$#u'
]
[yii\web\UrlRule:_routeParams] => []
)
52 => yii\web\UrlRule#196
(
[name] => '<controller:[\\w_\\-]+>'
[pattern] => '#^(?P<a4cf2669a>[\\w_\\-]+)$#u'
[host] => null
[route] => '<controller>/index'
[defaults] => []
[suffix] => null
[verb] => null
[mode] => null
[encodeParams] => true
[normalizer] => null
[*:createStatus] => 0
[*:placeholders] => [
'a4cf2669a' => 'controller'
]
[yii\web\UrlRule:_template] => '/<controller>/'
[yii\web\UrlRule:_routeRule] => '#^(?P<a4cf2669a>[\\w_\\-]+)/index$#u'
[yii\web\UrlRule:_paramRules] => []
[yii\web\UrlRule:_routeParams] => [
'controller' => '<controller>'
]
)
]
[suffix] => null
[showScriptName] => false
[routeParam] => 'r'
[cache] => yii\caching\FileCache#136(...)
[ruleConfig] => [
'class' => 'yii\\web\\UrlRule'
]
[normalizer] => false
[*:cacheKey] => 'yii\\web\\UrlManager'
[yii\web\UrlManager:_baseUrl] => ''
[yii\web\UrlManager:_scriptUrl] => null
[yii\web\UrlManager:_hostInfo] => 'https://violet-jewelry-shop.ru'
[yii\web\UrlManager:_ruleCache] => [
'uploads/images/blog/posts/m5/qZ/7K/m5qZ7KYZ3r2BoIU.jpg?' => []
'blog/post?slug&' => [
0 => yii\web\UrlRule#181(...)
]
'blog/author?slug&' => [
0 => yii\web\UrlRule#182(...)
]
'blog/index?' => [
0 => yii\web\UrlRule#195(...)
1 => yii\web\UrlRule#196(...)
]
'blog/index?category&' => [
0 => yii\web\UrlRule#195(...)
]
]
)
'imagesQueue' => yii\queue\db\Queue#197
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[strictJobType] => true
[serializer] => yii\queue\serializers\PhpSerializer#198
(
)
[ttr] => 300
[attempts] => 1
[yii\queue\Queue:pushTtr] => null
[yii\queue\Queue:pushDelay] => null
[yii\queue\Queue:pushPriority] => null
[loopConfig] => 'yii\\queue\\cli\\SignalLoop'
[commandClass] => 'yii\\queue\\db\\Command'
[commandOptions] => []
[messageHandler] => null
[yii\queue\cli\Queue:_workerPid] => null
[db] => yii\db\Connection#68(...)
[mutex] => yii\mutex\MysqlMutex#199
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[autoRelease] => true
[yii\mutex\Mutex:_locks] => []
[db] => yii\db\Connection#68(...)
[keyPrefix] => yii\db\Expression#200
(
[expression] => 'DATABASE()'
[params] => []
)
)
[mutexTimeout] => 3
[tableName] => '{{%queue}}'
[channel] => 'images'
[deleteReleased] => true
[*:reserveTime] => null
[yii\queue\db\Queue:_statistcsProvider] => null
)
'user' => app\app_project\components\User#201
(
[yii\base\Component:_events] => [
'afterLogin' => [
0 => [
0 => Closure#202
(
[0] => Closure#202(...)
)
1 => null
]
]
]
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => []
[identityClass] => 'app\\app_base\\models\\users\\User'
[enableAutoLogin] => true
[enableSession] => true
[loginUrl] => [
0 => '/user/login'
]
[identityCookie] => [
'name' => '_identity'
'httpOnly' => true
]
[authTimeout] => null
[accessChecker] => null
[absoluteAuthTimeout] => null
[autoRenewCookie] => true
[idParam] => '__id'
[authKeyParam] => '__authKey'
[authTimeoutParam] => '__expire'
[absoluteAuthTimeoutParam] => '__absoluteExpire'
[returnUrlParam] => '__returnUrl'
[acceptableRedirectTypes] => [
0 => 'text/html'
1 => 'application/xhtml+xml'
]
[yii\web\User:_access] => []
[yii\web\User:_identity] => null
[loginDuration] => 2592000
[redirectAfterLogin] => null
[redirectAfterLogout] => null
)
'session' => yii\web\DbSession#203
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[flashParam] => '__flash'
[handler] => null
[*:_forceRegenerateId] => null
[yii\web\Session:_cookieParams] => [
'lifetime' => 86400
]
[yii\web\Session:_frozenSessionData] => null
[yii\web\Session:_hasSessionId] => false
[readCallback] => null
[writeCallback] => null
[db] => yii\db\Connection#68(...)
[sessionTable] => 'proj_sessions'
[*:fields] => []
)
'view' => app\app_base\base\View#204
(
[yii\base\Component:_events] => [
'endBody' => [
0 => [
0 => [
0 => yii\debug\Module#53(...)
1 => 'renderToolbar'
]
1 => null
]
]
]
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => []
[context] => app\app_project\controllers\BlogController#39(...)
[params] => [
'breadcrumbs' => [
0 => [
'label' => 'Блог'
'url' => [
0 => 'index'
]
]
1 => [
'label' => '«Азбука ювелира» - базовые знания'
'url' => [
0 => 'index'
'category' => 'azbuka-yuvelira-bazovye-znaniya'
]
]
2 => [
'label' => 'Что такое браслет: история, культурное значение и правила ношения на левой и правой руке'
]
]
]
[renderers] => null
[defaultExtension] => 'php'
[theme] => null
[blocks] => null
[cacheStack] => []
[dynamicPlaceholders] => []
[yii\base\View:_viewFiles] => [
0 => [
'resolved' => '/var/www/main/data/www/violet-jewelry-shop.ru/app_project/views/blog/post.php'
'requested' => '/var/www/main/data/www/violet-jewelry-shop.ru/app_project/views/blog/post.php'
]
]
[assetBundles] => [
'app\\app_project\\assets\\app\\pages\\blog\\BlogPostPageAsset' => app\app_project\assets\app\pages\blog\BlogPostPageAsset#205
(
[sourcePath] => '/var/www/main/data/www/violet-jewelry-shop.ru/app_project/static'
[basePath] => '/var/www/main/data/www/violet-jewelry-shop.ru/web/assets/213cfdcf'
[baseUrl] => '/assets/213cfdcf'
[depends] => []
[js] => [
0 => 'js/pages/blog/post.js'
]
[css] => [
0 => 'css/pages/blog/post.css'
]
[jsOptions] => []
[cssOptions] => []
[publishOptions] => []
)
]
[title] => 'Что такое браслет: история, культурное значение и правила ношения на левой и правой руке'
[metaTags] => []
[linkTags] => []
[css] => []
[cssFiles] => []
[styleOptions] => []
[js] => []
[jsFiles] => []
[scriptOptions] => []
[yii\web\View:_assetManager] => null
[*:isPageEnded] => false
[enableMinify] => false
[fileCheckAlgorithm] => 'sha1'
[concatCss] => true
[minifyCss] => false
[concatJs] => true
[minifyJs] => true
[minifyOutput] => false
[removeComments] => true
[web_path] => '@web'
[webPath] => '@web'
[base_path] => '@webroot'
[basePath] => '@webroot'
[minify_path] => '@app/web/cache/static'
[minifyPath] => '/var/www/main/data/www/violet-jewelry-shop.ru/web/cache/static'
[js_position] => [
0 => 3
1 => 1
]
[jsPosition] => [
0 => 3
]
[jsOptions] => []
[force_charset] => false
[forceCharset] => 'UTF-8'
[expand_imports] => true
[expandImports] => true
[css_linebreak_pos] => 2048
[cssLinebreakPos] => 2048
[file_mode] => 436
[fileMode] => 436
[schemas] => [
0 => '//'
1 => 'http://'
2 => 'https://'
3 => 'ftp://'
]
[compress_output] => false
[compress_options] => [
'extra' => true
]
[compressOptions] => [
'extra' => true
]
[excludeBundles] => []
[excludeFiles] => [
0 => 'api'
1 => 'emerge.js'
]
[viewsFolders] => [
0 => '@appProject'
1 => '@appBase'
]
[assetGroups] => []
)
'assetManager' => yii\web\AssetManager#206
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[bundles] => [
'yii\\bootstrap4\\BootstrapAsset' => [
'css' => []
'js' => []
]
'yii\\web\\JqueryAsset' => [
'js' => [
0 => 'jquery.min.js'
]
]
'app\\app_base\\admin\\assets\\AdminThemeAsset' => [
'depends' => [
0 => 'app\\app_project\\admin\\assets\\AdminAsset'
]
]
'app\\app_project\\assets\\app\\pages\\blog\\BlogPostPageAsset' => app\app_project\assets\app\pages\blog\BlogPostPageAsset#205(...)
]
[basePath] => '/var/www/main/data/www/violet-jewelry-shop.ru/web/assets'
[baseUrl] => '/assets'
[assetMap] => []
[linkAssets] => true
[fileMode] => null
[dirMode] => 509
[beforeCopy] => null
[afterCopy] => null
[forceCopy] => false
[appendTimestamp] => true
[hashCallback] => null
[yii\web\AssetManager:_dummyBundles] => []
[yii\web\AssetManager:_isBasePathPermissionChecked] => true
[yii\web\AssetManager:_converter] => yii\web\AssetConverter#207
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[commands] => [
'less' => [
0 => 'css'
1 => 'lessc {from} {to} --no-color --source-map'
]
'scss' => [
0 => 'css'
1 => 'sass --style=compressed {from} {to}'
]
'sass' => [
0 => 'css'
1 => 'sass --style=compressed {from} {to}'
]
'styl' => [
0 => 'css'
1 => 'stylus < {from} > {to}'
]
'coffee' => [
0 => 'js'
1 => 'coffee -p {from} > {to}'
]
'ts' => [
0 => 'js'
1 => 'tsc --out {to} {from}'
]
]
[forceConvert] => false
)
[yii\web\AssetManager:_published] => [
'/var/www/main/data/www/violet-jewelry-shop.ru/app_project/static' => [
0 => '/var/www/main/data/www/violet-jewelry-shop.ru/web/assets/213cfdcf'
1 => '/assets/213cfdcf'
]
]
)
'response' => yii\web\Response#208
(
[yii\base\Component:_events] => [
'afterPrepare' => [
0 => [
0 => [
0 => yii\debug\Module#53(...)
1 => 'setDebugHeaders'
]
1 => null
]
]
]
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => []
[exitStatus] => 0
[format] => 'html'
[acceptMimeType] => null
[acceptParams] => []
[formatters] => [
'html' => [
'class' => 'yii\\web\\HtmlResponseFormatter'
]
'xml' => [
'class' => 'yii\\web\\XmlResponseFormatter'
]
'json' => [
'class' => 'yii\\web\\JsonResponseFormatter'
]
'jsonp' => [
'class' => 'yii\\web\\JsonResponseFormatter'
'useJsonp' => true
]
]
[data] => null
[content] => null
[stream] => null
[charset] => 'UTF-8'
[statusText] => 'OK'
[version] => '1.1'
[isSent] => false
[yii\web\Response:_statusCode] => 200
[yii\web\Response:_headers] => null
[yii\web\Response:_cookies] => null
)
'seo' => app\app_project\components\Seo#209
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[*:allowRobotsIndex] => true
[*:allowRobotsFollow] => true
[*:_tags] => [
0 => '{сайт}'
1 => '{название}'
2 => '{h1}'
3 => '{телефон}'
4 => '{город}'
5 => '{городе}'
6 => '{городу}'
7 => '{города}'
8 => '{цена}'
]
[app\app_project\components\Seo:services] => [
'app\\app_project\\services\\seo\\SeoSchemaService' => app\app_project\services\seo\SeoSchemaService#210
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[app\app_project\services\seo\SeoSchemaService:entities] => [
0 => app\app_project\dto\seo\schema\blog\SchemaBlogPostingDto#211
(
[isCategory] => false
[items] => []
[headline] => 'Что такое браслет: история, культурное значение и правила ношения на левой и правой руке'
[description] => 'Браслет является одним из древнейших знаковых украшений человечества, которое исторически выполняло функции оберега, знака социального статуса и защитного элемента доспехов. В современной культуре выбор того, на какой руке носят браслет, зависит от практического удобства, ювелирного этикета и личной символики.'
[image] => 'https://violet-jewelry-shop.ru/uploads/images/blog/posts/m5/qZ/7K/m5qZ7KYZ3r2BoIU.jpg'
[datePublished] => '2026-07-16 22:52:00'
[url] => 'https://violet-jewelry-shop.ru/blog/post/37-chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke'
[dateModified] => '2026-07-16 22:53:59'
[authorName] => 'Ефремова Мария Владимировна'
[authorUrl] => 'https://violet-jewelry-shop.ru/blog/author/efremova-mariya-vladimirovna'
)
]
[app\app_project\services\seo\SeoSchemaService:categoryEntities] => []
)
]
)
'image' => app\app_base\components\Image#212
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[noImage] => '/assets/1060477d/media/no-image.svg'
[uploadsDir] => 'uploads'
[outputDir] => 'cache/image'
[outputDirlevel] => 3
[thumbQuality] => 90
[cdnUrl] => null
[cdnEnabled] => true
[watermarkFile] => null
[watermarkOptions] => 'wmi|{file}|*|100'
[*:filePath] => '@app/web/uploads/'
[*:imagesInProcessing] => [
0 => 'cache/image/d5/13/13/47df7dc727ef504abe897ab1e2fdc705.jpg'
]
)
'text' => app\app_base\components\Text#213
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
)
]
[yii\di\ServiceLocator:_definitions] => [
'errorHandler' => [
'class' => 'yii\\web\\ErrorHandler'
'errorAction' => 'errors/index'
]
'db' => [
'class' => 'yii\\db\\Connection'
'dsn' => 'mysql:host=localhost;dbname=jewelry_shop_db'
'username' => 'jewelry_shop_db'
'password' => 'mO5tY2rX7f'
'charset' => 'utf8mb4'
'enableSchemaCache' => true
]
'urlManager' => [
'enablePrettyUrl' => true
'showScriptName' => false
'enableStrictParsing' => false
'baseUrl' => ''
'rules' => [
'/' => 'site/index'
'error' => 'errors/error'
'robots.txt' => 'seo/robots'
'sitemap.xml' => 'seo/sitemap'
'v-admin' => 'admin'
'v-admin/<controllerPath:(.*)>/<action>/<id:\\d+>' => 'admin/<controllerPath>/<action>'
'v-admin/<controllerPath:(.*)>/<action>' => 'admin/<controllerPath>/<action>'
'v-admin/<controllerPath:(.*)>' => 'admin/<controllerPath>'
0 => [
'pattern' => 'v-admin/<controllerPath:(.*)>'
'route' => 'v-admin/<controllerPath>/index'
'defaults' => [
'action' => 'index'
]
]
1 => [
'pattern' => 'llms.txt'
'route' => 'seo/llms'
]
'contacts' => 'contacts/index'
2 => [
'pattern' => '<action:(payment-terms|about-company)>'
'route' => 'site/<action>'
]
'search/<searchQuery>/<category>/sort/<sort>' => 'site/search'
'search/<searchQuery>/<category>' => 'site/search'
'search/<searchQuery>/sort/<sort>' => 'site/search'
'search/<searchQuery>' => 'site/search'
'search' => 'site/search'
'<controller:(cart)>' => '<controller>/index'
3 => [
'pattern' => 'cart/yookassa-webhook'
'route' => 'cart/yookassa-webhook'
'verb' => 'POST'
]
4 => [
'pattern' => 'cart/robokassa-payment-result'
'route' => 'cart/robokassa-payment-result'
'verb' => 'POST'
]
'<controller:(cart)>/<action>' => '<controller>/<action>'
'<controller:(cart)>/checkout/<action:(success|error)>' => '<controller>/<action>'
5 => [
'pattern' => 'collections/<slug:[\\w_\\-]+>/filters/<filters>/sort/<sort>'
'route' => 'collections/view'
'encodeParams' => false
]
6 => [
'pattern' => 'collections/<slug:[\\w_\\-]+>/filters/<filters>'
'route' => 'collections/view'
'encodeParams' => false
]
7 => [
'pattern' => 'collections/<slug:[\\w_\\-]+>/<group:[\\w_\\-]+>/sort/<sort>'
'route' => 'collections/view'
'encodeParams' => false
]
8 => [
'pattern' => 'collections/<slug:[\\w_\\-]+>/<group:[\\w_\\-]+>'
'route' => 'collections/view'
'encodeParams' => false
]
'collections/<slug:[\\w_\\-]+>/sort/<sort>' => 'collections/view'
'collections/<slug:[\\w_\\-]+>' => 'collections/view'
'<controller:(brands)>/<slug:[\\w_\\-]+>/<category:[\\w_\\-]+>' => '<controller>/view'
'<controller:(brands)>/<slug:[\\w_\\-]+>' => '<controller>/view'
'<controller:(jewelries)>/<action:(discounts)>/<category:[\\w_\\-]+>' => '<controller>/<action>'
'<controller:(jewelries)>/<action:(get-buy-variants)>' => '<controller>/<action>'
'jewelries/<slug:[\\w_\\-]+>' => 'jewelries/view'
'news/<slug:[\\w_\\-]+>' => 'news/view'
'jewels/<slug:[\\w_\\-]+>' => 'jewels/view'
9 => [
'pattern' => 'blog/post/<slug:[\\w_\\-]+>'
'route' => 'blog/post'
]
10 => [
'pattern' => 'blog/author/<slug:[\\w_\\-]+>'
'route' => 'blog/author'
]
]
'class' => 'yii\\web\\UrlManager'
]
'assetManager' => [
'appendTimestamp' => true
'linkAssets' => true
'bundles' => [
'yii\\bootstrap4\\BootstrapAsset' => [
'css' => []
'js' => []
]
'yii\\web\\JqueryAsset' => [
'js' => [
0 => 'jquery.min.js'
]
]
'app\\app_base\\admin\\assets\\AdminThemeAsset' => [
'depends' => [
0 => 'app\\app_project\\admin\\assets\\AdminAsset'
]
]
]
'class' => 'yii\\web\\AssetManager'
]
'view' => [
'class' => 'app\\app_base\\base\\View'
'viewsFolders' => [
0 => '@appProject'
1 => '@appBase'
]
'enableMinify' => false
'concatCss' => true
'minifyCss' => false
'concatJs' => true
'minifyJs' => true
'minifyOutput' => false
'jsPosition' => [
0 => 3
]
'forceCharset' => 'UTF-8'
'expandImports' => true
'compressOptions' => [
'extra' => true
]
'excludeFiles' => [
0 => 'api'
1 => 'emerge.js'
]
]
'mailer' => [
'class' => 'app\\app_base\\components\\Mailer'
'transport' => [
'class' => 'Swift_SmtpTransport'
'host' => 'smtp.ht-systems.ru'
'port' => '465'
'encryption' => 'ssl'
]
'messageConfig' => [
'charset' => 'UTF-8'
]
]
'request' => [
'cookieValidationKey' => 'QLvlb3Z6hjpbUT+uyz72lVHlTc6fIwIrH5jZdtxDiDK28s'
'class' => 'yii\\web\\Request'
]
'session' => [
'class' => 'yii\\web\\DbSession'
'sessionTable' => 'proj_sessions'
'timeout' => 86400
'cookieParams' => [
'lifetime' => 86400
]
]
'cache' => [
'class' => 'yii\\caching\\FileCache'
'cachePath' => '@app/runtime/cache/default'
'defaultDuration' => 3600
]
'user' => [
'class' => 'app\\app_project\\components\\User'
'on afterLogin' => Closure#202(...)
]
'log' => [
'traceLevel' => 0
'targets' => [
0 => [
'class' => 'yii\\log\\FileTarget'
'levels' => [
0 => 'error'
1 => 'warning'
]
'except' => [
0 => 'yii\\web\\HttpException:404'
1 => 'yii\\web\\Session::init'
]
]
1 => [
'class' => 'yii\\log\\FileTarget'
'levels' => [
0 => 'error'
1 => 'warning'
]
'categories' => [
0 => 'yii\\web\\HttpException:404'
]
'logFile' => '@runtime/logs/404/error.log'
]
2 => [
'class' => 'notamedia\\sentry\\SentryTarget'
'dsn' => 'https://4d7c450b658d44158ed9816b16620b14@e.d.ilya-z.ru/4'
'levels' => [
0 => 'error'
1 => 'warning'
]
'context' => true
'clientOptions' => [
'environment' => 'prod'
'tags' => [
'mode' => 'web'
]
]
]
]
'class' => 'yii\\log\\Dispatcher'
]
'inflection' => [
'class' => 'wapmorgan\\yii2inflection\\Inflection'
'language' => 'ru'
]
'seo' => [
'class' => 'app\\app_project\\components\\Seo'
]
'geography' => [
'class' => 'app\\app_base\\components\\Geography'
]
'settings' => [
'class' => 'app\\app_project\\components\\Settings'
]
'contacts' => [
'class' => 'app\\app_project\\components\\Contacts'
]
'text' => [
'class' => 'app\\app_base\\components\\Text'
]
'queue' => [
'class' => 'yii\\queue\\db\\Queue'
'db' => 'db'
'channel' => 'queue'
'mutex' => 'yii\\mutex\\MysqlMutex'
]
'imagesQueue' => [
'class' => 'yii\\queue\\db\\Queue'
'db' => 'db'
'channel' => 'images'
'mutex' => 'yii\\mutex\\MysqlMutex'
]
'image' => [
'class' => 'app\\app_base\\components\\Image'
'cdnUrl' => false
]
'services' => [
'class' => 'app\\app_project\\components\\Services'
]
'jewelries' => [
'class' => 'app\\app_project\\components\\catalog\\Jewelries'
]
'client' => [
'class' => 'app\\app_project\\components\\Client'
]
'wishlist' => [
'class' => 'app\\app_project\\components\\catalog\\Wishlist'
]
'shopCache' => [
'class' => 'yii\\caching\\FileCache'
'cachePath' => '@app/runtime/cache/shop'
'defaultDuration' => 604800
]
'cart' => [
'class' => 'app\\app_project\\components\\cart\\Cart'
]
'robokassa' => [
'class' => 'app\\app_project\\extensions\\robokassa\\Merchant'
'baseUrl' => 'https://auth.robokassa.ru/Merchant/Index.aspx'
'sMerchantLogin' => false
'sMerchantPass1' => false
'sMerchantPass2' => false
'isTest' => false
]
'yookassa' => [
'class' => 'app\\app_project\\components\\Yookassa'
'shopId' => '1310771'
'secretKey' => 'live_hiqXKqDAVHe2WfnVChPCtZJExMz1xd0rbT1srFtSdeM'
'testShopId' => false
'testSecretKey' => false
'isTest' => false
]
'shop' => [
'class' => 'app\\app_project\\components\\shop\\CoreShop'
'servicesList' => [
'products' => 'app\\app_project\\components\\shop\\services\\CoreShopProductsService'
]
]
'cronQueue' => [
'class' => 'yii\\queue\\db\\Queue'
'db' => 'db'
'channel' => 'cron-queue'
'mutex' => 'yii\\mutex\\MysqlMutex'
]
'aiQueue' => [
'class' => 'yii\\queue\\db\\Queue'
'db' => 'db'
'channel' => 'ai'
'mutex' => 'yii\\mutex\\MysqlMutex'
]
'videoQueue' => [
'class' => 'yii\\queue\\db\\Queue'
'db' => 'db'
'channel' => 'video'
'mutex' => 'yii\\mutex\\MysqlMutex'
]
'vizantino' => 'app\\app_project\\components\\Vizantino'
'formatter' => [
'class' => 'yii\\i18n\\Formatter'
]
'i18n' => [
'class' => 'yii\\i18n\\I18N'
]
'security' => [
'class' => 'yii\\base\\Security'
]
'response' => [
'class' => 'yii\\web\\Response'
]
]
[params] => []
[id] => 'ri'
[module] => null
[layout] => 'main'
[controllerMap] => []
[controllerNamespace] => 'app\\app_project\\controllers'
[defaultRoute] => 'site'
[yii\base\Module:_basePath] => '/var/www/main/data/www/violet-jewelry-shop.ru'
[yii\base\Module:_controllerPath] => null
[yii\base\Module:_viewPath] => '/var/www/main/data/www/violet-jewelry-shop.ru/app_project/views'
[yii\base\Module:_layoutPath] => '/var/www/main/data/www/violet-jewelry-shop.ru/app_project/views/layouts'
[yii\base\Module:_modules] => [
'admin' => [
'class' => 'app\\app_project\\admin\\Module'
'controllerMap' => []
]
'debug' => yii\debug\Module#53(...)
]
[yii\base\Module:_version] => null
[name] => 'Violet Shop'
[charset] => 'UTF-8'
[language] => 'ru-RU'
[sourceLanguage] => 'ru-RU'
[controller] => app\app_project\controllers\BlogController#39(...)
[requestedRoute] => 'blog/post'
[requestedAction] => yii\base\InlineAction#214
(
[yii\base\Component:_events] => []
[yii\base\Component:_eventWildcards] => []
[yii\base\Component:_behaviors] => null
[id] => 'post'
[controller] => app\app_project\controllers\BlogController#39(...)
[actionMethod] => 'actionPost'
)
[requestedParams] => [
'slug' => '37-chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke'
]
[extensions] => [
'bazilio/yii2-stubs-generator' => [
'name' => 'bazilio/yii2-stubs-generator'
'version' => '1.6.2.0'
'alias' => [
'@bazilio/stubsgenerator' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/bazilio/yii2-stubs-generator'
]
]
'rmrevin/yii2-minify-view' => [
'name' => 'rmrevin/yii2-minify-view'
'version' => '1.15.1.0'
'alias' => [
'@rmrevin/yii/minify' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/rmrevin/yii2-minify-view'
]
]
'unclead/yii2-multiple-input' => [
'name' => 'unclead/yii2-multiple-input'
'version' => '2.30.0.0'
'alias' => [
'@unclead/multipleinput' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/unclead/yii2-multiple-input/src'
'@unclead/multipleinput/tests' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/unclead/yii2-multiple-input/tests'
'@unclead/multipleinput/examples' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/unclead/yii2-multiple-input/examples'
]
]
'vova07/yii2-imperavi-widget' => [
'name' => 'vova07/yii2-imperavi-widget'
'version' => '2.0.11.0'
'alias' => [
'@vova07/imperavi' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/vova07/yii2-imperavi-widget/src'
'@vova07/imperavi/tests' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/vova07/yii2-imperavi-widget/tests'
]
]
'wapmorgan/yii2-inflection' => [
'name' => 'wapmorgan/yii2-inflection'
'version' => '1.0.4.0'
'alias' => [
'@wapmorgan/yii2inflection' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/wapmorgan/yii2-inflection/src'
]
]
'yii2tech/ar-position' => [
'name' => 'yii2tech/ar-position'
'version' => '1.0.1.0'
'alias' => [
'@yii2tech/ar/position' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yii2tech/ar-position'
]
]
'yiisoft/yii2-bootstrap4' => [
'name' => 'yiisoft/yii2-bootstrap4'
'version' => '2.0.12.0'
'alias' => [
'@yii/bootstrap4' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-bootstrap4/src'
]
]
'yiisoft/yii2-debug' => [
'name' => 'yiisoft/yii2-debug'
'version' => '2.1.27.0'
'alias' => [
'@yii/debug' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-debug/src'
]
]
'yiisoft/yii2-imagine' => [
'name' => 'yiisoft/yii2-imagine'
'version' => '2.3.1.0'
'alias' => [
'@yii/imagine' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-imagine/src'
]
]
'yiisoft/yii2-swiftmailer' => [
'name' => 'yiisoft/yii2-swiftmailer'
'version' => '2.1.3.0'
'alias' => [
'@yii/swiftmailer' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-swiftmailer/src'
]
]
'yiithings/yii2-dotenv' => [
'name' => 'yiithings/yii2-dotenv'
'version' => '1.1.0.0'
'alias' => [
'@yiithings/dotenv' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiithings/yii2-dotenv/src'
]
]
'omnilight/yii2-shopping-cart' => [
'name' => 'omnilight/yii2-shopping-cart'
'version' => '1.3.0.0'
'alias' => [
'@yz/shoppingcart' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/omnilight/yii2-shopping-cart'
]
]
'notamedia/yii2-sentry' => [
'name' => 'notamedia/yii2-sentry'
'version' => '1.7.0.0'
'alias' => [
'@notamedia/sentry' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/notamedia/yii2-sentry/src'
]
]
'yiisoft/yii2-queue' => [
'name' => 'yiisoft/yii2-queue'
'version' => '2.3.8.0'
'alias' => [
'@yii/queue' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-queue/src'
'@yii/queue/db' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-queue/src/drivers/db'
'@yii/queue/sqs' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-queue/src/drivers/sqs'
'@yii/queue/amqp' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-queue/src/drivers/amqp'
'@yii/queue/file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-queue/src/drivers/file'
'@yii/queue/sync' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-queue/src/drivers/sync'
'@yii/queue/redis' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-queue/src/drivers/redis'
'@yii/queue/stomp' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-queue/src/drivers/stomp'
'@yii/queue/gearman' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-queue/src/drivers/gearman'
'@yii/queue/beanstalk' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-queue/src/drivers/beanstalk'
'@yii/queue/amqp_interop' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2-queue/src/drivers/amqp_interop'
]
]
]
[bootstrap] => [
0 => 'log'
1 => 'settings'
2 => 'geography'
'dynamicRoute' => 'app\\app_project\\components\\route\\DynamicRoute'
3 => 'imagesQueue'
4 => 'debug'
5 => 'app\\app_project\\components\\Redirect'
]
[state] => 3
[loadedModules] => [
'yii\\web\\Application' => yii\web\Application#40(...)
'yii\\debug\\Module' => yii\debug\Module#53(...)
]
[yii\base\Application:_runtimePath] => '/var/www/main/data/www/violet-jewelry-shop.ru/runtime'
[yii\base\Application:_vendorPath] => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor'
[catchAll] => null
[yii\web\Application:_homeUrl] => null
)
[defaultAction] => 'index'
[layout] => null
[action] => yii\base\InlineAction#214(...)
[request] => yii\web\Request#45(...)
[response] => yii\web\Response#208(...)
[yii\base\Controller:_view] => app\app_base\base\View#204(...)
[yii\base\Controller:_viewPath] => '/var/www/main/data/www/violet-jewelry-shop.ru/app_project/views/blog'
[enableCsrfValidation] => true
[actionParams] => [
'slug' => '37-chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke'
]
[customMetaTags] => []
[bodyClass] => []
[*:model] => null
[*:viewsList] => []
[app\app_base\base\BaseController:_resource] => app\app_project\models\blog\BlogPost#22(...)
)
]
]
21 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/base/Controller.php'
'line' => 450
'function' => 'render'
'class' => 'yii\\base\\View'
'type' => '->'
'args' => [
0 => 'post'
1 => [
'post' => app\app_project\models\blog\BlogPost#22(...)
]
2 => app\app_project\controllers\BlogController#39(...)
]
]
22 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/app_project/controllers/BlogController.php'
'line' => 127
'function' => 'render'
'class' => 'yii\\base\\Controller'
'type' => '->'
'args' => [
0 => 'post'
1 => [
'post' => app\app_project\models\blog\BlogPost#22(...)
]
]
]
23 => [
'function' => 'actionPost'
'class' => 'app\\app_project\\controllers\\BlogController'
'type' => '->'
'args' => [
0 => '37-chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke'
]
]
24 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/base/InlineAction.php'
'line' => 66
'function' => 'call_user_func_array'
'args' => [
0 => [
0 => app\app_project\controllers\BlogController#39(...)
1 => 'actionPost'
]
1 => [
0 => '37-chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke'
]
]
]
25 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/base/Controller.php'
'line' => 197
'function' => 'runWithParams'
'class' => 'yii\\base\\InlineAction'
'type' => '->'
'args' => [
0 => [
'slug' => '37-chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke'
]
]
]
26 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/base/Module.php'
'line' => 554
'function' => 'runAction'
'class' => 'yii\\base\\Controller'
'type' => '->'
'args' => [
0 => 'post'
1 => [
'slug' => '37-chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke'
]
]
]
27 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/web/Application.php'
'line' => 112
'function' => 'runAction'
'class' => 'yii\\base\\Module'
'type' => '->'
'args' => [
0 => 'blog/post'
1 => [
'slug' => '37-chto-takoe-braslet-istoriya-kulturnoe-znachenie-i-pravila-nosheniya-na-levoy-i-pravoy-ruke'
]
]
]
28 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/vendor/yiisoft/yii2/base/Application.php'
'line' => 391
'function' => 'handleRequest'
'class' => 'yii\\web\\Application'
'type' => '->'
'args' => [
0 => yii\web\Request#45(...)
]
]
29 => [
'file' => '/var/www/main/data/www/violet-jewelry-shop.ru/web/index.php'
'line' => 34
'function' => 'run'
'class' => 'yii\\base\\Application'
'type' => '->'
'args' => []
]
]
[Exception:previous] => null
[*:severity] => 2
)
Ефремова Мария Владимировна
Главный редактор Ювелирного дома VIOLET