1:45 PM 11/12/2025 ���� JFIF    �� �        "" $(4,$&1'-=-157:::#+?D?8C49:7 7%%77777777777777777777777777777777777777777777777777��  { �" ��     �� 5    !1AQa"q�2��BR��#b�������  ��  ��   ? ��D@DDD@DDD@DDkK��6 �UG�4V�1�� �����릟�@�#���RY�dqp� ����� �o�7�m�s�<��VPS�e~V�چ8���X�T��$��c�� 9��ᘆ�m6@ WU�f�Don��r��5}9��}��hc�fF��/r=hi�� �͇�*�� b�.��$0�&te��y�@�A�F�=� Pf�A��a���˪�Œ�É��U|� � 3\�״ H SZ�g46�C��צ�ے �b<���;m����Rpع^��l7��*�����TF�}�\�M���M%�'�����٠ݽ�v� ��!-�����?�N!La��A+[`#���M����'�~oR�?��v^)��=��h����A��X�.���˃����^Ə��ܯsO"B�c>; �e�4��5�k��/CB��.  �J?��;�҈�������������������~�<�VZ�ꭼ2/)Í”jC���ע�V�G�!���!�F������\�� Kj�R�oc�h���:Þ I��1"2�q×°8��Р@ז���_C0�ր��A��lQ��@纼�!7��F�� �]�sZ B�62r�v�z~�K�7�c��5�.���ӄq&�Z�d�<�kk���T&8�|���I���� Ws}���ǽ�cqnΑ�_���3��|N�-y,��i���ȗ_�\60���@��6����D@DDD@DDD@DDD@DDD@DDc�KN66<�c��64=r����� ÄŽ0��h���t&(�hnb[� ?��^��\��â|�,�/h�\��R��5�? �0�!צ܉-����G����٬��Q�zA���1�����V��� �:R���`�$��ik��H����D4�����#dk����� h�}����7���w%�������*o8wG�LycuT�.���ܯ7��I��u^���)��/c�,s�Nq�ۺ�;�ך�YH2���.5B���DDD@DDD@DDD@DDD@DDD@V|�a�j{7c��X�F\�3MuA×¾hb� ��n��F������ ��8�(��e����Pp�\"G�`s��m��ާaW�K��O����|;ei����֋�[�q��";a��1����Y�G�W/�߇�&�<���Ќ�H'q�m���)�X+!���=�m�ۚ丷~6a^X�)���,�>#&6G���Y��{����"" """ """ """ """ ""��at\/�a�8 �yp%�lhl�n����)���i�t��B�������������?��modskinlienminh.com - WSOX ENC ‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!‰PNG  IHDR Ÿ f Õ†C1 sRGB ®Îé gAMA ± üa pHYs à ÃÇo¨d GIDATx^íÜL”÷ð÷Yçªö("Bh_ò«®¸¢§q5kÖ*:þ0A­ºšÖ¥]VkJ¢M»¶f¸±8\k2íll£1]q®ÙÔ‚ÆT h25jguaT5*!
Warning: Undefined variable $authorization in C:\xampp\htdocs\demo\fi.php on line 57

Warning: Undefined variable $translation in C:\xampp\htdocs\demo\fi.php on line 118

Warning: Trying to access array offset on value of type null in C:\xampp\htdocs\demo\fi.php on line 119

Warning: file_get_contents(https://raw.githubusercontent.com/Den1xxx/Filemanager/master/languages/ru.json): Failed to open stream: HTTP request failed! HTTP/1.1 404 Not Found in C:\xampp\htdocs\demo\fi.php on line 120

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 247

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 248

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 249

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 250

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 251

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\demo\fi.php:1) in C:\xampp\htdocs\demo\fi.php on line 252
// Copyright (c) 2005-2008 Fernando Luis Cacciola Carballal. All rights reserved. // // This file is part of CGAL (www.cgal.org). // // $URL: https://github.com/CGAL/cgal/blob/v6.1/Straight_skeleton_2/include/CGAL/Polygon_offset_builder_2.h $ // $Id: include/CGAL/Polygon_offset_builder_2.h b26b07a1242 $ // SPDX-License-Identifier: GPL-3.0-or-later OR LicenseRef-Commercial // // Author(s) : Fernando Cacciola // #ifndef CGAL_POLYGON_OFFSET_BUILDER_2_H #define CGAL_POLYGON_OFFSET_BUILDER_2_H 1 #include #include #include #include #include #include namespace CGAL { template struct Default_polygon_offset_builder_2_visitor { typedef Traits_ Traits ; typedef SSkel_ SSkel ; typedef typename SSkel::Halfedge_const_handle Halfedge_const_handle ; typedef typename SSkel::Vertex_const_handle Vertex_const_handle ; typedef typename Traits::FT FT ; typedef typename Traits::Point_2 Point_2 ; void on_construction_started ( FT ) const {} void on_offset_contour_started() const {} void on_offset_point ( Point_2 const&, Halfedge_const_handle ) const {} Point_2 on_offset_point_overflowed( Halfedge_const_handle aBisector ) const { ::CGAL::warning_fail( "", __FILE__, __LINE__, "! Unable to compute polygon offset point due to overflow !" ) ; return aBisector->vertex()->point() ; } void on_offset_contour_finished ( bool /*is_complete*/ ) const {} void on_construction_finished () const {} void on_error( char const* ) const {} } ; template > class Polygon_offset_builder_2 { public : typedef Ss_ Ss ; typedef Traits_ Traits ; typedef Container_ Container ; typedef Visitor_ Visitor ; typedef typename Traits::Kernel K ; typedef typename Traits::FT FT ; typedef typename Traits::Point_2 Point_2 ; typedef std::optional OptionalPoint_2 ; typedef std::shared_ptr ContainerPtr ; Polygon_offset_builder_2( Ss const& aSs, Traits const& aTraits = Traits(), Visitor const& aVisitor = Visitor() ) ; template OutputIterator construct_offset_contours( FT aTime, OutputIterator aOut ) ; struct Bisector_data { Bisector_data() : IsVisited(false), IsUsedSeed(false) {} bool IsVisited ; bool IsUsedSeed ; } ; private: typedef typename Ss::Vertex Vertex ; typedef typename Ss::Halfedge_handle Halfedge_handle ; typedef typename Ss::Halfedge_const_handle Halfedge_const_handle ; typedef typename Ss::Vertex_const_handle Vertex_const_handle ; typedef std::vector Halfedge_vector ; typedef typename Traits::Segment_2 Segment_2 ; typedef typename Traits::Trisegment_2 Trisegment_2 ; typedef typename Traits::Trisegment_2_ptr Trisegment_2_ptr ; typedef CGAL_SS_i::Triedge Triedge ; enum Hook_position { SOURCE, TARGET, INSIDE } ; static char const* Hook_position2Str( Hook_position aPos ) { return aPos == SOURCE ? "source" : ( aPos == TARGET ? "target" : "inside" ) ; } Halfedge_const_handle LocateHook( FT aTime, Halfedge_const_handle aBisector, bool aIncludeLastBisector, Hook_position& rPos ) ; void AddOffsetVertex( FT aTime, Halfedge_const_handle aHook, ContainerPtr aPoly ) ; template OutputIterator TraceOffsetPolygon( FT aTime, Halfedge_const_handle aHook, OutputIterator aOut ) ; Halfedge_const_handle LocateSeed( FT aTime, Halfedge_const_handle aBorder ) ; Halfedge_const_handle LocateSeed( FT aTime ) ; Bisector_data const& GetBisectorData ( Halfedge_const_handle aBisector ) const { return mBisectorData[aBisector->id()] ; } Bisector_data& GetBisectorData ( Halfedge_const_handle aBisector ) { return mBisectorData[aBisector->id()] ; } bool IsVisited( Halfedge_const_handle aBisector ) { return GetBisectorData(aBisector).IsVisited ; } bool IsUsedSeed( Halfedge_const_handle aBisector ) { return GetBisectorData(aBisector).IsUsedSeed ; } void Visit( Halfedge_const_handle aBisector ) { GetBisectorData(aBisector).IsVisited = true ; } void SetIsUsedSeed( Halfedge_const_handle aBisector ) { GetBisectorData(aBisector).IsUsedSeed = true ; } inline Segment_2 CreateSegment ( Halfedge_const_handle aH ) const { Point_2 s = aH->opposite()->vertex()->point() ; Point_2 t = aH->vertex()->point() ; return K().construct_segment_2_object()(s,t); } Trisegment_2_ptr GetTrisegment ( Vertex_const_handle aNode ) const ; public: Comparison_result Compare_offset_against_event_time( FT aT, Vertex_const_handle aNode ) const { CGAL_precondition( aNode->is_skeleton() ) ; Comparison_result r = aNode->has_infinite_time() ? SMALLER : static_cast(mTraits.compare_offset_against_event_time_2_object()(aT,GetTrisegment(aNode))); return r ; } std::optional Construct_offset_point( FT aT, Halfedge_const_handle aBisector ) const { CGAL_assertion(aBisector->is_bisector()); CGAL_assertion(handle_assigned(aBisector->opposite())); CGAL_assertion(aBisector->opposite()->is_bisector()); Halfedge_const_handle lBorderA = aBisector->defining_contour_edge(); Halfedge_const_handle lBorderB = aBisector->opposite()->defining_contour_edge(); Vertex_const_handle lNodeS = aBisector->opposite()->vertex(); Vertex_const_handle lNodeT = aBisector->vertex(); // If aBisector is not a border bisector the offset point construction needs to get to seed event Trisegment_2_ptr lSeedEvent ; if ( aBisector->is_inner_bisector() ) { CGAL_assertion ( lNodeS->is_skeleton() ) ; CGAL_assertion ( lNodeT->is_skeleton() ) ; Vertex_const_handle lSeedNode = aBisector->slope() == POSITIVE ? lNodeS : lNodeT ; lSeedEvent = GetTrisegment(lSeedNode) ; CGAL_POLYOFFSET_TRACE(3,"Seed node for " << e2str(*aBisector) << " is " << v2str(*lSeedNode) << " event=" << lSeedEvent ) ; } OptionalPoint_2 p = mTraits.construct_offset_point_2_object()( aT, CreateSegment(lBorderA), lBorderA->weight(), CreateSegment(lBorderB), lBorderB->weight(), lSeedEvent ); return p ; } private: void ResetBisectorData(); Traits const& mTraits ; Visitor const& mVisitor ; Halfedge_vector mBorders ; std::vector mBisectorData; OptionalPoint_2 mLastPoint ; CGAL_POLYOFFSET_DEBUG_CODE( int mStepID ; ) }; } // end namespace CGAL #include #endif // CGAL_POLYGON_OFFSET_BUILDER_2_H // // EOF //