§
    Hó¿j$C  ã                  ó2  — d Z ddlmZ ddlZddlmc mZ ddl	m
Z
 ddlmZ ddlmZ ddlmZ ddlmZ dd	lmZ dd
lmZ  e e¦   «         ¦  «        ZddiZ ed¦  «        Zedz  Zedz  Zedz  Zedz  Zd„ Zd„ Zd„ Z d„ Z!d„ Z"d„ Z#d„ Z$d„ Z%d„ Z&d„ Z'd„ Z(dS )u¨  
Integration & Unit Test Suite for Inverse-BIM Constraint Solver
and Tri-Source Truth Grounding Engine.
Real-world verification using Ben Kem box culvert (Cá»‘ng há»™p Báº¿n Kem) dossier:
- CAD Vector Geometry: 02. Thiet ke dong khung.dxf & 03. kc cong.pdf
- BBS Structural Rebar Schedule: Page 14 of 03. kc cong.pdf
- Statutory Tender BoQ / HSMT: cá»‘ng há»™p báº¿n kem.21.02.2026.TÄ�.xlsx & Biá»ƒu máº«u má»�i tháº§u.xlsx
é    )ÚannotationsN)ÚDecimal)ÚPath)Ú
TestClient)Ú
create_app)Úget_drawing_takeoff_service)ÚInverseBimConstraintSolver)ÚTriSourceTruthGroundingÚAuthorizationzBearer dev-test-tokenuQ   CongTrinh/HÄ�-2026/Kiáº¿n Minh-2026/Há»‡ thá»‘ng cá»‘ng há»™p kÃªnh báº¿n Kem. okz7BV + DT MUONG THOAT ben kem/02. Thiet ke dong khung.dxfu:   Ä�áº¥u Tháº§u/File_IB2600072041/Báº£n váº½/03. kc cong.pdfu9   Tháº©m Ä‘á»‹nh/cá»‘ng há»™p báº¿n kem.21.02.2026.TÄ�.xlsxu,   Ä�áº¥u Tháº§u/Biá»ƒu máº«u má»�i tháº§u.xlsxc                 óÂ  — t           j        }  | ¦   «         }|sªt          j        d¦  «        dz   dt	          j        ¦   «         v st          j        t           ¦  «        rt          j        t           ¦  «        ndt          j        | ¦  «        t          j        |¦  «        dœz  }t          t          j	        |¦  «        ¦  «        ‚dx} }t          j        }  | ¦   «         }|sªt          j        d¦  «        dz   dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        | ¦  «        t          j        |¦  «        dœz  }t          t          j	        |¦  «        ¦  «        ‚dx} }t          j        }  | ¦   «         }|sªt          j        d¦  «        dz   d	t	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        nd	t          j        | ¦  «        t          j        |¦  «        dœz  }t          t          j	        |¦  «        ¦  «        ‚dx} }t          j        }  | ¦   «         }|sªt          j        d
¦  «        dz   dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        | ¦  «        t          j        |¦  «        dœz  }t          t          j	        |¦  «        ¦  «        ‚dx} }t          j        }  | ¦   «         }|sªt          j        d¦  «        dz   dt	          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        | ¦  «        t          j        |¦  «        dœz  }t          t          j	        |¦  «        ¦  «        ‚dx} }dS )zJVerify all real-world Ben Kem dossier files exist in the DSCons workspace.u=   ThÆ° má»¥c dá»± Ã¡n cá»‘ng há»™p Báº¿n Kem pháº£i tá»“n táº¡izC
>assert %(py4)s
{%(py4)s = %(py2)s
{%(py2)s = %(py0)s.exists
}()
}ÚBEN_KEM_BASE)Úpy0Úpy2Úpy4Nu;   File CAD DXF 02. Thiet ke dong khung.dxf pháº£i tá»“n táº¡iÚBEN_KEM_DXFu>   File PDF káº¿t cáº¥u cá»‘ng 03. kc cong.pdf pháº£i tá»“n táº¡iÚBEN_KEM_KC_PDFu7   File Excel dá»± toÃ¡n tháº©m Ä‘á»‹nh pháº£i tá»“n táº¡iÚBEN_KEM_TD_XLSXu7   File Excel biá»ƒu máº«u má»�i tháº§u pháº£i tá»“n táº¡iÚBEN_KEM_BM_XLSX)r   ÚexistsÚ
@pytest_arÚ_format_assertmsgÚ@py_builtinsÚlocalsÚ_should_repr_global_nameÚ	_safereprÚAssertionErrorÚ_format_explanationr   r   r   r   )Ú@py_assert1Ú@py_assert3Ú@py_format5s      úEC:\Projects\DSCons\tests\test_inverse_bim_and_tri_source_grounding.pyÚ#test_ben_kem_dataset_files_presencer"   &   s¾  € åÔÐaÐÐÑ Ô ÐaÐ ÐaÕaÔaÐ"aÑaÔaÐaÑaÐaÕaÔaÑaÔaÐaÐaÕaÔa�<ÑaÔaÐaÕaÔa�<ÑaÔaÐaÐaÕaÔaÐÑaÔaÕaÔaÐ ÑaÔaÐaÐaÑaÐaÕaÕaÔaÐaÑaÔaÑaÔaÐaÐaÐaÐaÐaÝÔÐ^ÐÐÑÔÐ^ÐÐ^Õ^Ô^Ð!^Ñ^Ô^Ð^Ñ^Ð^Õ^Ô^Ñ^Ô^Ð^Ð^Õ^Ô^�;Ñ^Ô^Ð^Õ^Ô^�;Ñ^Ô^Ð^Ð^Õ^Ô^ÐÑ^Ô^Õ^Ô^ÐÑ^Ô^Ð^Ð^Ñ^Ð^Õ^Õ^Ô^Ð^Ñ^Ô^Ñ^Ô^Ð^Ð^Ð^Ð^Ð^ÝÔ ÐdÐ Ð Ñ"Ô"ÐdÐ"ÐdÕdÔdÐ$dÑdÔdÐdÑdÐdÕdÔdÑdÔdÐdÐdÕdÔd�>ÑdÔdÐdÕdÔd�>ÑdÔdÐdÐdÕdÔdÐ ÑdÔdÕdÔdÐ"ÑdÔdÐdÐdÑdÐdÕdÕdÔdÐdÑdÔdÑdÔdÐdÐdÐdÐdÐdÝÔ!Ð^Ð!Ð!Ñ#Ô#Ð^Ð#Ð^Õ^Ô^Ð%^Ñ^Ô^Ð^Ñ^Ð^Õ^Ô^Ñ^Ô^Ð^Ð^Õ^Ô^�?Ñ^Ô^Ð^Õ^Ô^�?Ñ^Ô^Ð^Ð^Õ^Ô^Ð!Ñ^Ô^Õ^Ô^Ð#Ñ^Ô^Ð^Ð^Ñ^Ð^Õ^Õ^Ô^Ð^Ñ^Ô^Ñ^Ô^Ð^Ð^Ð^Ð^Ð^ÝÔ!Ð^Ð!Ð!Ñ#Ô#Ð^Ð#Ð^Õ^Ô^Ð%^Ñ^Ô^Ð^Ñ^Ð^Õ^Ô^Ñ^Ô^Ð^Ð^Õ^Ô^�?Ñ^Ô^Ð^Õ^Ô^�?Ñ^Ô^Ð^Ð^Õ^Ô^Ð!Ñ^Ô^Õ^Ô^Ð#Ñ^Ô^Ð^Ð^Ñ^Ð^Õ^Õ^Ô^Ð^Ñ^Ô^Ñ^Ô^Ð^Ð^Ð^Ð^Ð^Ð^Ð^ó    c                 ó¨#  — t          ¦   «         } |                      t          ¦  «        }|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}d	}|j        }||v }|sªt	          j        d
|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}||k    }|sªt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}}|j        }d}	t          |	¦  «        }
||
k    }|�st	          j        d|fd||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	}
|j        }t#          |¦  «        }d}
||
k    }|�st	          j        d|fd||
f¦  «        dt          j        ¦   «         v st	          j        t"          ¦  «        rt	          j	        t"          ¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}}
|j        d         j        }|j        }d}	t          |	¦  «        }
||
k    }|�st	          j        d|fd||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	}
|j        }d}	t          |	¦  «        }
||
k    }|�st	          j        d|fd||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	}
|j        }d}	t          |	¦  «        }
||
k    }|�st	          j        d|fd||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	}
|j        }d}	t          |	¦  «        }
||
k    }|�st	          j        d|fd ||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	}
|j        }d}	t          |	¦  «        }
||
k    }|�st	          j        d|fd!||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	}
|j        }d"}	t          |	¦  «        }
||
k    }|�st	          j        d|fd#||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	}
|j        }d$}	t          |	¦  «        }
||
k    }|�st	          j        d|fd%||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	}
|j        }d"}	t          |	¦  «        }
||
k    }|�st	          j        d|fd&||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	}
|j        }d'}	t          |	¦  «        }
||
k    }|�st	          j        d|fd(||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	}
|j        }d}	t          |	¦  «        }
||
k    }|�st	          j        d|fd)||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	}
|j        }d*}	t          |	¦  «        }
||
k    }|�st	          j        d|fd+||
f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |	¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚dx}x}x}	}
dS ),zOTest Inverse-BIM extraction of parametric constraints from CAD vector geometry.Úbox_culvert©ú==)z6%(py2)s
{%(py2)s = %(py0)s.structure_type
} == %(py5)sÚmodel©r   r   Úpy5úassert %(py7)sÚpy7Nu	   Báº¿n Kem©Úin)z6%(py1)s in %(py5)s
{%(py5)s = %(py3)s.structure_name
})Úpy1Úpy3r*   é   ©z4%(py2)s
{%(py2)s = %(py0)s.num_segments
} == %(py5)sz215.0000©zT%(py2)s
{%(py2)s = %(py0)s.total_length_m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   ©r   r   r   Úpy6Úpy8úassert %(py10)sÚpy10)zN%(py5)s
{%(py5)s = %(py0)s(%(py3)s
{%(py3)s = %(py1)s.segments
})
} == %(py8)sÚlen)r   r/   r0   r*   r6   r   z2.5000)zR%(py2)s
{%(py2)s = %(py0)s.clear_span_m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}Úcs)zT%(py2)s
{%(py2)s = %(py0)s.clear_height_m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z0.3000)zV%(py2)s
{%(py2)s = %(py0)s.wall_thickness_m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z0.2500)z]%(py2)s
{%(py2)s = %(py0)s.bottom_slab_thickness_m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
})zZ%(py2)s
{%(py2)s = %(py0)s.top_slab_thickness_m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z3.4000)zY%(py2)s
{%(py2)s = %(py0)s.bottom_slab_width_m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z0.1000)z_%(py2)s
{%(py2)s = %(py0)s.lean_concrete_thickness_m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
})z[%(py2)s
{%(py2)s = %(py0)s.lean_concrete_width_m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z25.0000)z`%(py2)s
{%(py2)s = %(py0)s.bamboo_pile_density_per_m2
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
})zZ%(py2)s
{%(py2)s = %(py0)s.bamboo_pile_length_m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z0.1500)zS%(py2)s
{%(py2)s = %(py0)s.haunch_size_m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
})r	   Úextract_parametric_constraintsr   Ústructure_typer   Ú_call_reprcomparer   r   r   r   r   r   Ústructure_nameÚnum_segmentsÚtotal_length_mr   Úsegmentsr9   Úcross_sectionÚclear_span_mÚclear_height_mÚwall_thickness_mÚbottom_slab_thickness_mÚtop_slab_thickness_mÚbottom_slab_width_mÚlean_concrete_thickness_mÚlean_concrete_width_mÚbamboo_pile_density_per_m2Úbamboo_pile_length_mÚhaunch_size_m)Úsolverr(   r   Ú@py_assert4r   Ú@py_format6Ú@py_format8Ú@py_assert0Ú@py_assert2Ú@py_assert5Ú@py_assert7Ú@py_format9Ú@py_format11Ú@py_assert6r:   s                  r!   Ú/test_inverse_bim_constraint_extraction_from_cadrY   /   s  € å'Ñ)Ô)€FØ×1Ò1µ+Ñ>Ô>€EàÔÐ0 =Ð0Ð =Ò0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð =Ð0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆ5Ñ0Ô0Ð0Õ0Ô0ˆ5Ñ0Ô0Ð0Ð0Õ0Ô0ÐÑ0Ô0Õ0Ô0 =Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0ØÐ.˜%Ô.Ð.ˆ;Ð.Ð.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.ˆ;Ð.Ð.Ñ.Ô.Õ.Ô.ˆ;Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.˜%Ñ.Ô.Ð.Õ.Ô.˜%Ñ.Ô.Ð.Ð.Õ.Ô.Ð.Ñ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔÐ" Ð"Ð Ò"Ð"Ð"Ð"Õ"Ô"Ð"Ð"Ð"Ð"Ð Ð"Ñ"Ô"Ð"Õ"Ô"Ñ"Ô"Ð"Ð"Õ"Ô"ˆ5Ñ"Ô"Ð"Õ"Ô"ˆ5Ñ"Ô"Ð"Ð"Õ"Ô"ÐÑ"Ô"Õ"Ô" Ñ"Ô"Ð"Ð"Ñ"Ð"Ð"Ð"Ð"Ð"Ñ"Ð"Õ"Õ"Ô"Ð"Ñ"Ô"Ñ"Ô"Ð"Ð"Ð"Ð"Ð"Ð"Ð"ØÔÐ6¨:Ð6¥7¨:Ñ#6Ô#6Ð6ÐÐ#6Ò6Ð6Ð6Ñ6Õ6Ô6Ð6Ð6Ð6Ð6ÐÐ#6Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6ˆ5Ñ6Ô6Ð6Õ6Ô6ˆ5Ñ6Ô6Ð6Ð6Õ6Ô6ÐÑ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6¥7Ñ6Ô6Ð6Õ6Ô6¥7Ñ6Ô6Ð6Ð6Õ6Ô6¨:Ñ6Ô6Õ6Ô6Ð#6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ØŒ~Ð#�3ˆ~ÑÔÐ# !Ð#Ð !Ò#Ð#Ð#Ñ#Õ#Ô#Ð#Ð#Ð#Ð#Ð !Ð#Ñ#Ô#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#�3Ñ#Ô#Ð#Õ#Ô#�3Ñ#Ô#Ð#Ð#Ð#Õ#Ô#Ñ#Ô#Ð#Ð#Õ#Ô#ˆuÑ#Ô#Ð#Õ#Ô#ˆuÑ#Ô#Ð#Ð#Õ#Ô#ˆ~Ñ#Ô#Õ#Ô#ÐÑ#Ô#Õ#Ô# !Ñ#Ô#Ð#Ð#Ñ#Ð#Ð#Ð#Ð#Ð#Ñ#Ð#Õ#Õ#Ô#Ð#Ñ#Ô#Ñ#Ô#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#Ð#ð 
Œ˜Ô	Ô	(€BØŒ?Ð/ hÐ/�g hÑ/Ô/Ð/ˆ?Ð/Ò/Ð/Ð/Ñ/Õ/Ô/Ð/Ð/Ð/Ð/ˆ?Ð/Ð/Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/ˆ2Ñ/Ô/Ð/Õ/Ô/ˆ2Ñ/Ô/Ð/Ð/Õ/Ô/ˆ?Ñ/Ô/Ð/Õ/Ô/Ñ/Ô/Ð/Ð/Õ/Ô/�gÑ/Ô/Ð/Õ/Ô/�gÑ/Ô/Ð/Ð/Õ/Ô/ hÑ/Ô/Õ/Ô/Ð/Ñ/Ô/Ð/Ð/Ñ/Ð/Ð/Ð/Ð/Ð/Ñ/Ð/Õ/Õ/Ô/Ð/Ñ/Ô/Ñ/Ô/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/Ð/ØÔÐ1¨Ð1¥¨Ñ 1Ô 1Ð1ÐÐ 1Ò1Ð1Ð1Ñ1Õ1Ô1Ð1Ð1Ð1Ð1ÐÐ 1Ð1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆ2Ñ1Ô1Ð1Õ1Ô1ˆ2Ñ1Ô1Ð1Ð1Õ1Ô1ÐÑ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1¥Ñ1Ô1Ð1Õ1Ô1¥Ñ1Ô1Ð1Ð1Õ1Ô1¨Ñ1Ô1Õ1Ô1Ð 1Ñ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÔÐ3¨(Ð3¥'¨(Ñ"3Ô"3Ð3ÐÐ"3Ò3Ð3Ð3Ñ3Õ3Ô3Ð3Ð3Ð3Ð3ÐÐ"3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆ2Ñ3Ô3Ð3Õ3Ô3ˆ2Ñ3Ô3Ð3Ð3Õ3Ô3ÐÑ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Ð3Õ3Ô3¨(Ñ3Ô3Õ3Ô3Ð"3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØÔ%Ð:°Ð:­°Ñ):Ô):Ð:Ð%Ð):Ò:Ð:Ð:Ñ:Õ:Ô:Ð:Ð:Ð:Ð:Ð%Ð):Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆ2Ñ:Ô:Ð:Õ:Ô:ˆ2Ñ:Ô:Ð:Ð:Õ:Ô:Ð%Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:­Ñ:Ô:Ð:Õ:Ô:­Ñ:Ô:Ð:Ð:Õ:Ô:°Ñ:Ô:Õ:Ô:Ð):Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ØÔ"Ð7¨hÐ7¥g¨hÑ&7Ô&7Ð7Ð"Ð&7Ò7Ð7Ð7Ñ7Õ7Ô7Ð7Ð7Ð7Ð7Ð"Ð&7Ð7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7ˆ2Ñ7Ô7Ð7Õ7Ô7ˆ2Ñ7Ô7Ð7Ð7Õ7Ô7Ð"Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7¥gÑ7Ô7Ð7Õ7Ô7¥gÑ7Ô7Ð7Ð7Õ7Ô7¨hÑ7Ô7Õ7Ô7Ð&7Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ØÔ!Ð6¨XÐ6¥W¨XÑ%6Ô%6Ð6Ð!Ð%6Ò6Ð6Ð6Ñ6Õ6Ô6Ð6Ð6Ð6Ð6Ð!Ð%6Ð6Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6ˆ2Ñ6Ô6Ð6Õ6Ô6ˆ2Ñ6Ô6Ð6Ð6Õ6Ô6Ð!Ñ6Ô6Ð6Õ6Ô6Ñ6Ô6Ð6Ð6Õ6Ô6¥WÑ6Ô6Ð6Õ6Ô6¥WÑ6Ô6Ð6Ð6Õ6Ô6¨XÑ6Ô6Õ6Ô6Ð%6Ñ6Ô6Ð6Ð6Ñ6Ð6Ð6Ð6Ð6Ð6Ñ6Ð6Õ6Õ6Ô6Ð6Ñ6Ô6Ñ6Ô6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6Ð6ØÔ'Ð<°8Ð<­7°8Ñ+<Ô+<Ð<Ð'Ð+<Ò<Ð<Ð<Ñ<Õ<Ô<Ð<Ð<Ð<Ð<Ð'Ð+<Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆ2Ñ<Ô<Ð<Õ<Ô<ˆ2Ñ<Ô<Ð<Ð<Õ<Ô<Ð'Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<­7Ñ<Ô<Ð<Õ<Ô<­7Ñ<Ô<Ð<Ð<Õ<Ô<°8Ñ<Ô<Õ<Ô<Ð+<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔ#Ð8¨xÐ8¥w¨xÑ'8Ô'8Ð8Ð#Ð'8Ò8Ð8Ð8Ñ8Õ8Ô8Ð8Ð8Ð8Ð8Ð#Ð'8Ð8Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8ˆ2Ñ8Ô8Ð8Õ8Ô8ˆ2Ñ8Ô8Ð8Ð8Õ8Ô8Ð#Ñ8Ô8Ð8Õ8Ô8Ñ8Ô8Ð8Ð8Õ8Ô8¥wÑ8Ô8Ð8Õ8Ô8¥wÑ8Ô8Ð8Ð8Õ8Ô8¨xÑ8Ô8Õ8Ô8Ð'8Ñ8Ô8Ð8Ð8Ñ8Ð8Ð8Ð8Ð8Ð8Ñ8Ð8Õ8Õ8Ô8Ð8Ñ8Ô8Ñ8Ô8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8Ð8ØÔ(Ð>°IÐ>­G°IÑ,>Ô,>Ð>Ð(Ð,>Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>Ð(Ð,>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ2Ñ>Ô>Ð>Õ>Ô>ˆ2Ñ>Ô>Ð>Ð>Õ>Ô>Ð(Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>­GÑ>Ô>Ð>Õ>Ô>­GÑ>Ô>Ð>Ð>Õ>Ô>°IÑ>Ô>Õ>Ô>Ð,>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ"Ð7¨hÐ7¥g¨hÑ&7Ô&7Ð7Ð"Ð&7Ò7Ð7Ð7Ñ7Õ7Ô7Ð7Ð7Ð7Ð7Ð"Ð&7Ð7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7ˆ2Ñ7Ô7Ð7Õ7Ô7ˆ2Ñ7Ô7Ð7Ð7Õ7Ô7Ð"Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7¥gÑ7Ô7Ð7Õ7Ô7¥gÑ7Ô7Ð7Ð7Õ7Ô7¨hÑ7Ô7Õ7Ô7Ð&7Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ØÔÐ0 xÐ0�w xÑ0Ô0Ð0ÐÐ0Ò0Ð0Ð0Ñ0Õ0Ô0Ð0Ð0Ð0Ð0ÐÐ0Ð0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆ2Ñ0Ô0Ð0Õ0Ô0ˆ2Ñ0Ô0Ð0Ð0Õ0Ô0ÐÑ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0�wÑ0Ô0Ð0Õ0Ô0�wÑ0Ô0Ð0Ð0Õ0Ô0 xÑ0Ô0Õ0Ô0Ð0Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r#   c                 ó¢:  — t          ¦   «         } |                      t          ¦  «        }|                      |¦  «        }|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d
}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d}	||	k    }|sªt          j        d|fd||	f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }
dd|
iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}	|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd ||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d!}t          |¦  «        }||k    }|�st          j        d|fd"||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d#}t          |¦  «        }||k    }|�st          j        d|fd$||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d%}t          |¦  «        }||k    }|�st          j        d|fd&||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d'}t          |¦  «        }||k    }|�st          j        d|fd(||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d)}t          |¦  «        }||k    }|�st          j        d|fd*||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d+}t          |¦  «        }||k    }|�st          j        d|fd,||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d-}t          |¦  «        }||k    }|�st          j        d|fd.||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j        }d/}t          |¦  «        }||k    }|�st          j        d|fd0||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j         }d1}t          |¦  «        }||k    }|�st          j        d|fd2||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j!        }d3}t          |¦  «        }||k    }|�st          j        d|fd4||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j"        }d5}t          |¦  «        }||k    }|�st          j        d|fd6||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j#        }d7}t          |¦  «        }||k    }|�st          j        d|fd8||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j$        }d9}t          |¦  «        }||k    }|�st          j        d|fd:||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}|j%        }d;}t          |¦  «        }||k    }|�st          j        d|fd<||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}}d	S )=zGTest closed-form solid geometry calculations without AI hallucinations.ú73.1000r&   ©z]%(py2)s
{%(py2)s = %(py0)s.lean_concrete_volume_m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}Úsolidsr   r4   r7   r8   Nú456.8750)z]%(py2)s
{%(py2)s = %(py0)s.bamboo_piles_total_100m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}icG  )z:%(py2)s
{%(py2)s = %(py0)s.bamboo_piles_count
} == %(py5)sr)   r+   r,   z0.4640)zb%(py2)s
{%(py2)s = %(py0)s.lean_concrete_formwork_100m2
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}ú182.7500©zd%(py2)s
{%(py2)s = %(py0)s.bottom_slab_concrete_volume_m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z1.1600)z`%(py2)s
{%(py2)s = %(py0)s.bottom_slab_formwork_100m2
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}ú280.1925)z]%(py2)s
{%(py2)s = %(py0)s.wall_concrete_volume_m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z21.6250)zY%(py2)s
{%(py2)s = %(py0)s.wall_formwork_100m2
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}ú134.3750©za%(py2)s
{%(py2)s = %(py0)s.top_slab_concrete_volume_m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z6.5350)z]%(py2)s
{%(py2)s = %(py0)s.top_slab_formwork_100m2
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z207.5500)zR%(py2)s
{%(py2)s = %(py0)s.waterstop_m2
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z15.7450)z\%(py2)s
{%(py2)s = %(py0)s.wing_bamboo_piles_100m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z2.5200)z[%(py2)s
{%(py2)s = %(py0)s.wing_lean_concrete_m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z12.8340)zb%(py2)s
{%(py2)s = %(py0)s.wing_bottom_slab_concrete_m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z2.5938)z[%(py2)s
{%(py2)s = %(py0)s.wing_wall_concrete_m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z	1152.9000)zZ%(py2)s
{%(py2)s = %(py0)s.slush_mud_suction_m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z4.8853)za%(py2)s
{%(py2)s = %(py0)s.foundation_excavation_100m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z16.4143)z[%(py2)s
{%(py2)s = %(py0)s.mass_excavation_100m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z16.4140)zU%(py2)s
{%(py2)s = %(py0)s.soil_haul_100m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z14.1032)zY%(py2)s
{%(py2)s = %(py0)s.soil_backfill_100m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z	1551.3520)z_%(py2)s
{%(py2)s = %(py0)s.mountain_soil_material_m3
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}ú48.0400)z^%(py2)s
{%(py2)s = %(py0)s.larsen_pile_driving_100m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z	2882.4000)zZ%(py2)s
{%(py2)s = %(py0)s.larsen_pile_rental_m
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z75.0000)zZ%(py2)s
{%(py2)s = %(py0)s.water_pumping_shifts
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z5.0000)zY%(py2)s
{%(py2)s = %(py0)s.ground_mat_segments
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
})&r	   r;   r   Úcompute_deterministic_solidsÚlean_concrete_volume_m3r   r   r=   r   r   r   r   r   r   Úbamboo_piles_total_100mÚbamboo_piles_countÚlean_concrete_formwork_100m2Úbottom_slab_concrete_volume_m3Úbottom_slab_formwork_100m2Úwall_concrete_volume_m3Úwall_formwork_100m2Útop_slab_concrete_volume_m3Útop_slab_formwork_100m2Úwaterstop_m2Úwing_bamboo_piles_100mÚwing_lean_concrete_m3Úwing_bottom_slab_concrete_m3Úwing_wall_concrete_m3Úslush_mud_suction_m3Úfoundation_excavation_100m3Úmass_excavation_100m3Úsoil_haul_100m3Úsoil_backfill_100m3Úmountain_soil_material_m3Úlarsen_pile_driving_100mÚlarsen_pile_rental_mÚwater_pumping_shiftsÚground_mat_segments)rN   r(   r]   r   rT   rU   r   rV   rW   rO   rP   rQ   s               r!   Ú/test_inverse_bim_deterministic_solid_quantitiesr   I   s  € å'Ñ)Ô)€FØ×1Ò1µ+Ñ>Ô>€EØ×0Ò0°Ñ7Ô7€Fð Ô)Ð?°YÐ?­W°YÑ-?Ô-?Ð?Ð)Ð-?Ò?Ð?Ð?Ñ?Õ?Ô?Ð?Ð?Ð?Ð?Ð)Ð-?Ð?Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?ˆ6Ñ?Ô?Ð?Õ?Ô?ˆ6Ñ?Ô?Ð?Ð?Õ?Ô?Ð)Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?­WÑ?Ô?Ð?Õ?Ô?­WÑ?Ô?Ð?Ð?Õ?Ô?°YÑ?Ô?Õ?Ô?Ð-?Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ØÔ)Ð@°ZÐ@­W°ZÑ-@Ô-@Ð@Ð)Ð-@Ò@Ð@Ð@Ñ@Õ@Ô@Ð@Ð@Ð@Ð@Ð)Ð-@Ð@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ˆ6Ñ@Ô@Ð@Õ@Ô@ˆ6Ñ@Ô@Ð@Ð@Õ@Ô@Ð)Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@­WÑ@Ô@Ð@Õ@Ô@­WÑ@Ô@Ð@Ð@Õ@Ô@°ZÑ@Ô@Õ@Ô@Ð-@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ØÔ$Ð-¨Ð-Ð$¨Ò-Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð$¨Ð-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆ6Ñ-Ô-Ð-Õ-Ô-ˆ6Ñ-Ô-Ð-Ð-Õ-Ô-Ð$Ñ-Ô-Õ-Ô-¨Ñ-Ô-Ð-Ð-Ñ-Ð-Ð-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-ØÔ.ÐC¸(ÐCµ'¸(Ñ2CÔ2CÐCÐ.Ð2CÒCÐCÐCÑCÕCÔCÐCÐCÐCÐCÐ.Ð2CÐCÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔCˆ6ÑCÔCÐCÕCÔCˆ6ÑCÔCÐCÐCÕCÔCÐ.ÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔCµ'ÑCÔCÐCÕCÔCµ'ÑCÔCÐCÐCÕCÔC¸(ÑCÔCÕCÔCÐ2CÑCÔCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÕCÕCÔCÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCÐCÐCÐCÐCð Ô0ÐG¸JÐGµG¸JÑ4GÔ4GÐGÐ0Ð4GÒGÐGÐGÑGÕGÔGÐGÐGÐGÐGÐ0Ð4GÐGÑGÔGÐGÕGÔGÑGÔGÐGÐGÕGÔGˆ6ÑGÔGÐGÕGÔGˆ6ÑGÔGÐGÐGÕGÔGÐ0ÑGÔGÐGÕGÔGÑGÔGÐGÐGÕGÔGµGÑGÔGÐGÕGÔGµGÑGÔGÐGÐGÕGÔG¸JÑGÔGÕGÔGÐ4GÑGÔGÐGÐGÑGÐGÐGÐGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGÐGÐGÐGÐGÐGÐGØÔ,ÐA¸ÐAµ¸Ñ0AÔ0AÐAÐ,Ð0AÒAÐAÐAÑAÕAÔAÐAÐAÐAÐAÐ,Ð0AÐAÑAÔAÐAÕAÔAÑAÔAÐAÐAÕAÔAˆ6ÑAÔAÐAÕAÔAˆ6ÑAÔAÐAÐAÕAÔAÐ,ÑAÔAÐAÕAÔAÑAÔAÐAÐAÕAÔAµÑAÔAÐAÕAÔAµÑAÔAÐAÐAÕAÔA¸ÑAÔAÕAÔAÐ0AÑAÔAÐAÐAÑAÐAÐAÐAÐAÐAÑAÐAÕAÕAÔAÐAÑAÔAÑAÔAÐAÐAÐAÐAÐAÐAÐAÐAÐAð Ô)Ð@°ZÐ@­W°ZÑ-@Ô-@Ð@Ð)Ð-@Ò@Ð@Ð@Ñ@Õ@Ô@Ð@Ð@Ð@Ð@Ð)Ð-@Ð@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ˆ6Ñ@Ô@Ð@Õ@Ô@ˆ6Ñ@Ô@Ð@Ð@Õ@Ô@Ð)Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@­WÑ@Ô@Ð@Õ@Ô@­WÑ@Ô@Ð@Ð@Õ@Ô@°ZÑ@Ô@Õ@Ô@Ð-@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ØÔ%Ð;°Ð;­°Ñ);Ô);Ð;Ð%Ð);Ò;Ð;Ð;Ñ;Õ;Ô;Ð;Ð;Ð;Ð;Ð%Ð);Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆ6Ñ;Ô;Ð;Õ;Ô;ˆ6Ñ;Ô;Ð;Ð;Õ;Ô;Ð%Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;­Ñ;Ô;Ð;Õ;Ô;­Ñ;Ô;Ð;Ð;Õ;Ô;°Ñ;Ô;Õ;Ô;Ð);Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ð Ô-ÐD¸ÐDµ¸Ñ1DÔ1DÐDÐ-Ð1DÒDÐDÐDÑDÕDÔDÐDÐDÐDÐDÐ-Ð1DÐDÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔDˆ6ÑDÔDÐDÕDÔDˆ6ÑDÔDÐDÐDÕDÔDÐ-ÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔDµÑDÔDÐDÕDÔDµÑDÔDÐDÐDÕDÔD¸ÑDÔDÕDÔDÐ1DÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDÐDØÔ)Ð>°XÐ>­W°XÑ->Ô->Ð>Ð)Ð->Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>Ð)Ð->Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ6Ñ>Ô>Ð>Õ>Ô>ˆ6Ñ>Ô>Ð>Ð>Õ>Ô>Ð)Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>­WÑ>Ô>Ð>Õ>Ô>­WÑ>Ô>Ð>Ð>Õ>Ô>°XÑ>Ô>Õ>Ô>Ð->Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ð ÔÐ5¨*Ð5¥'¨*Ñ"5Ô"5Ð5ÐÐ"5Ò5Ð5Ð5Ñ5Õ5Ô5Ð5Ð5Ð5Ð5ÐÐ"5Ð5Ñ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5ˆ6Ñ5Ô5Ð5Õ5Ô5ˆ6Ñ5Ô5Ð5Ð5Õ5Ô5ÐÑ5Ô5Ð5Õ5Ô5Ñ5Ô5Ð5Ð5Õ5Ô5¥'Ñ5Ô5Ð5Õ5Ô5¥'Ñ5Ô5Ð5Ð5Õ5Ô5¨*Ñ5Ô5Õ5Ô5Ð"5Ñ5Ô5Ð5Ð5Ñ5Ð5Ð5Ð5Ð5Ð5Ñ5Ð5Õ5Õ5Ô5Ð5Ñ5Ô5Ñ5Ô5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5Ð5ð Ô(Ð>°IÐ>­G°IÑ,>Ô,>Ð>Ð(Ð,>Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>Ð(Ð,>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ6Ñ>Ô>Ð>Õ>Ô>ˆ6Ñ>Ô>Ð>Ð>Õ>Ô>Ð(Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>­GÑ>Ô>Ð>Õ>Ô>­GÑ>Ô>Ð>Ð>Õ>Ô>°IÑ>Ô>Õ>Ô>Ð,>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ'Ð<°8Ð<­7°8Ñ+<Ô+<Ð<Ð'Ð+<Ò<Ð<Ð<Ñ<Õ<Ô<Ð<Ð<Ð<Ð<Ð'Ð+<Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆ6Ñ<Ô<Ð<Õ<Ô<ˆ6Ñ<Ô<Ð<Ð<Õ<Ô<Ð'Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<­7Ñ<Ô<Ð<Õ<Ô<­7Ñ<Ô<Ð<Ð<Õ<Ô<°8Ñ<Ô<Õ<Ô<Ð+<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔ.ÐD¸)ÐDµ'¸)Ñ2DÔ2DÐDÐ.Ð2DÒDÐDÐDÑDÕDÔDÐDÐDÐDÐDÐ.Ð2DÐDÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔDˆ6ÑDÔDÐDÕDÔDˆ6ÑDÔDÐDÐDÕDÔDÐ.ÑDÔDÐDÕDÔDÑDÔDÐDÐDÕDÔDµ'ÑDÔDÐDÕDÔDµ'ÑDÔDÐDÐDÕDÔD¸)ÑDÔDÕDÔDÐ2DÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDÐDØÔ'Ð<°8Ð<­7°8Ñ+<Ô+<Ð<Ð'Ð+<Ò<Ð<Ð<Ñ<Õ<Ô<Ð<Ð<Ð<Ð<Ð'Ð+<Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆ6Ñ<Ô<Ð<Õ<Ô<ˆ6Ñ<Ô<Ð<Ð<Õ<Ô<Ð'Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<­7Ñ<Ô<Ð<Õ<Ô<­7Ñ<Ô<Ð<Ð<Õ<Ô<°8Ñ<Ô<Õ<Ô<Ð+<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ð Ô&Ð>°+Ð>­'°+Ñ*>Ô*>Ð>Ð&Ð*>Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>Ð&Ð*>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ6Ñ>Ô>Ð>Õ>Ô>ˆ6Ñ>Ô>Ð>Ð>Õ>Ô>Ð&Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>­'Ñ>Ô>Ð>Õ>Ô>­'Ñ>Ô>Ð>Ð>Õ>Ô>°+Ñ>Ô>Õ>Ô>Ð*>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ-ÐB¸ÐBµ¸Ñ1BÔ1BÐBÐ-Ð1BÒBÐBÐBÑBÕBÔBÐBÐBÐBÐBÐ-Ð1BÐBÑBÔBÐBÕBÔBÑBÔBÐBÐBÕBÔBˆ6ÑBÔBÐBÕBÔBˆ6ÑBÔBÐBÐBÕBÔBÐ-ÑBÔBÐBÕBÔBÑBÔBÐBÐBÕBÔBµÑBÔBÐBÕBÔBµÑBÔBÐBÐBÕBÔB¸ÑBÔBÕBÔBÐ1BÑBÔBÐBÐBÑBÐBÐBÐBÐBÐBÑBÐBÕBÕBÔBÐBÑBÔBÑBÔBÐBÐBÐBÐBÐBÐBÐBÐBÐBØÔ'Ð=°9Ð=­7°9Ñ+=Ô+=Ð=Ð'Ð+=Ò=Ð=Ð=Ñ=Õ=Ô=Ð=Ð=Ð=Ð=Ð'Ð+=Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ˆ6Ñ=Ô=Ð=Õ=Ô=ˆ6Ñ=Ô=Ð=Ð=Õ=Ô=Ð'Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=­7Ñ=Ô=Ð=Õ=Ô=­7Ñ=Ô=Ð=Ð=Õ=Ô=°9Ñ=Ô=Õ=Ô=Ð+=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÔ!Ð7¨YÐ7¥W¨YÑ%7Ô%7Ð7Ð!Ð%7Ò7Ð7Ð7Ñ7Õ7Ô7Ð7Ð7Ð7Ð7Ð!Ð%7Ð7Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7ˆ6Ñ7Ô7Ð7Õ7Ô7ˆ6Ñ7Ô7Ð7Ð7Õ7Ô7Ð!Ñ7Ô7Ð7Õ7Ô7Ñ7Ô7Ð7Ð7Õ7Ô7¥WÑ7Ô7Ð7Õ7Ô7¥WÑ7Ô7Ð7Ð7Õ7Ô7¨YÑ7Ô7Õ7Ô7Ð%7Ñ7Ô7Ð7Ð7Ñ7Ð7Ð7Ð7Ð7Ð7Ñ7Ð7Õ7Õ7Ô7Ð7Ñ7Ô7Ñ7Ô7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7Ð7ØÔ%Ð;°Ð;­°Ñ);Ô);Ð;Ð%Ð);Ò;Ð;Ð;Ñ;Õ;Ô;Ð;Ð;Ð;Ð;Ð%Ð);Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆ6Ñ;Ô;Ð;Õ;Ô;ˆ6Ñ;Ô;Ð;Ð;Õ;Ô;Ð%Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;­Ñ;Ô;Ð;Õ;Ô;­Ñ;Ô;Ð;Ð;Õ;Ô;°Ñ;Ô;Õ;Ô;Ð);Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ØÔ+ÐC°{ÐC­w°{Ñ/CÔ/CÐCÐ+Ð/CÒCÐCÐCÑCÕCÔCÐCÐCÐCÐCÐ+Ð/CÐCÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔCˆ6ÑCÔCÐCÕCÔCˆ6ÑCÔCÐCÐCÕCÔCÐ+ÑCÔCÐCÕCÔCÑCÔCÐCÐCÕCÔC­wÑCÔCÐCÕCÔC­wÑCÔCÐCÐCÕCÔC°{ÑCÔCÕCÔCÐ/CÑCÔCÐCÐCÑCÐCÐCÐCÐCÐCÑCÐCÕCÕCÔCÐCÑCÔCÑCÔCÐCÐCÐCÐCÐCÐCÐCÐCÐCØÔ*Ð@°iÐ@­g°iÑ.@Ô.@Ð@Ð*Ð.@Ò@Ð@Ð@Ñ@Õ@Ô@Ð@Ð@Ð@Ð@Ð*Ð.@Ð@Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@ˆ6Ñ@Ô@Ð@Õ@Ô@ˆ6Ñ@Ô@Ð@Ð@Õ@Ô@Ð*Ñ@Ô@Ð@Õ@Ô@Ñ@Ô@Ð@Ð@Õ@Ô@­gÑ@Ô@Ð@Õ@Ô@­gÑ@Ô@Ð@Ð@Õ@Ô@°iÑ@Ô@Õ@Ô@Ð.@Ñ@Ô@Ð@Ð@Ñ@Ð@Ð@Ð@Ð@Ð@Ñ@Ð@Õ@Õ@Ô@Ð@Ñ@Ô@Ñ@Ô@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@Ð@ØÔ&Ð>°+Ð>­'°+Ñ*>Ô*>Ð>Ð&Ð*>Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>Ð&Ð*>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ6Ñ>Ô>Ð>Õ>Ô>ˆ6Ñ>Ô>Ð>Ð>Õ>Ô>Ð&Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>­'Ñ>Ô>Ð>Õ>Ô>­'Ñ>Ô>Ð>Ð>Õ>Ô>°+Ñ>Ô>Õ>Ô>Ð*>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ&Ð<°)Ð<­'°)Ñ*<Ô*<Ð<Ð&Ð*<Ò<Ð<Ð<Ñ<Õ<Ô<Ð<Ð<Ð<Ð<Ð&Ð*<Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆ6Ñ<Ô<Ð<Õ<Ô<ˆ6Ñ<Ô<Ð<Ð<Õ<Ô<Ð&Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<­'Ñ<Ô<Ð<Õ<Ô<­'Ñ<Ô<Ð<Ð<Õ<Ô<°)Ñ<Ô<Õ<Ô<Ð*<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔ%Ð:°Ð:­°Ñ):Ô):Ð:Ð%Ð):Ò:Ð:Ð:Ñ:Õ:Ô:Ð:Ð:Ð:Ð:Ð%Ð):Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆ6Ñ:Ô:Ð:Õ:Ô:ˆ6Ñ:Ô:Ð:Ð:Õ:Ô:Ð%Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:­Ñ:Ô:Ð:Õ:Ô:­Ñ:Ô:Ð:Ð:Õ:Ô:°Ñ:Ô:Õ:Ô:Ð):Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:r#   c                 ó\  — t          ¦   «         } |                      t          ¦  «        }t          |¦  «        }d}||k    }|sòt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}d
„ |D ¦   «         }d}||v }|s—t	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d	x}}|d         }|j        }d}t          |¦  «        }||k    }|sÚt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}d}||v }|s—t	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d	x}}|d         }|j        }d}t          |¦  «        }||k    }|sÚt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}d}||v }|s—t	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d	x}}|d         }|j        }d}t          |¦  «        }||k    }|sÚt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}d}||v }|s—t	          j        d|fd||f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nddœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d	x}}|d         }|j        }d}t          |¦  «        }||k    }|sÚt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}}t          d„ |D ¦   «         ¦  «        }d }t          |¦  «        }||k    }|sòt	          j        d|fd!||f¦  «        d"t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd"dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        d#œz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}d	S )$zPTest extraction of Bar Bending Schedule (BBS) rebar items from drawing sheet 14.é   )ú>=)z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} >= %(py6)sr9   Ú	bbs_items©r   r/   r0   r5   úassert %(py8)sr6   Nc                ó   — i | ]
}|j         |“ŒS © )Úcomponent_name©Ú.0Úbs     r!   ú
<dictcomp>z6test_bbs_rebar_schedule_extraction.<locals>.<dictcomp>~   s   € Ð:Ð:Ð:¨1�1Ô# QÐ:Ð:Ð:r#   u   Ä�Ã¡y cá»‘ngr-   )z%(py1)s in %(py3)sÚbbs_by_name)r/   r0   zassert %(py5)sr*   ú10.3291r&   )zV%(py3)s
{%(py3)s = %(py1)s.total_weight_ton
} == %(py9)s
{%(py9)s = %(py5)s(%(py7)s)
}r   )r/   r0   r*   r,   Úpy9zassert %(py11)sÚpy11u   ThÃ nh cá»‘ngú22.3225u   Báº£n máº·t cá»‘ngú9.3036u   Cá»­a cá»‘ngz0.2324c              3  ó$   K  — | ]}|j         V — Œd S )N)Útotal_weight_tonr‰   s     r!   ú	<genexpr>z5test_bbs_rebar_schedule_extraction.<locals>.<genexpr>‘   s%   è è € Ð@Ð@°˜!Ô,Ð@Ð@Ð@Ð@Ð@Ð@r#   z42.1876)z0%(py0)s == %(py6)s
{%(py6)s = %(py2)s(%(py4)s)
}Útotal_rebar_ton©r   r   r   r5   )r
   Úextract_bbs_scheduler   r9   r   r=   r   r   r   r   r   r   r”   r   Úsum)Úenginerƒ   rS   rT   rO   Ú@py_format7rV   r�   rR   Ú@py_format4rP   rX   Ú@py_assert8Ú@py_format10Ú@py_format12r–   r   r   s                     r!   Ú"test_bbs_rebar_schedule_extractionr    w   s:
  € å$Ñ&Ô&€FØ×+Ò+­NÑ;Ô;€Iåˆy‰>Œ>Ð˜QÐˆ>˜QÒÐÐÐÕÔÐÐÐÐˆ>˜QÐÑÔÐÕÔÑÔÐÐÕÔ�3ÑÔÐÕÔ�3ÑÔÐÐÐÕÔÑÔÐÐÕÔˆyÑÔÐÕÔˆyÑÔÐÐÕÔˆ>ÑÔÕÔ˜QÑÔÐÐÑÐÐÐÐÐÑÐÕÕÔÐÑÔÑÔÐÐÐÐÐÐÐà:Ð:°	Ð:Ñ:Ô:€Kð Ð(ˆ>˜[Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ>˜[Ð(Ñ(Ô(Õ(Ô(ˆ>Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(˜[Ñ(Ô(Ð(Õ(Ô(˜[Ñ(Ô(Ð(Ð(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ø�~Ô&ÐMÐ&Ô7ÐMÀ9ÐM½7À9Ñ;MÔ;MÐMÐ7Ð;MÒMÐMÐMÐMÕMÔMÐMÐMÐMÐMÐ7Ð;MÐMÑMÔMÕMÔMÐ&ÑMÔMÕMÔMÐ7ÑMÔMÐMÕMÔMÑMÔMÐMÐMÕMÔM½7ÑMÔMÐMÕMÔM½7ÑMÔMÐMÐMÕMÔMÀ9ÑMÔMÕMÔMÐ;MÑMÔMÐMÐMÑMÐMÐMÐMÐMÐMÑMÐMÕMÕMÔMÐMÑMÔMÑMÔMÐMÐMÐMÐMÐMÐMÐMÐMÐMÐMÐMð Ð)ˆ?˜kÐ)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)ˆ?˜kÐ)Ñ)Ô)Õ)Ô)ˆ?Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)˜kÑ)Ô)Ð)Õ)Ô)˜kÑ)Ô)Ð)Ð)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ø�Ô'ÐNÐ'Ô8ÐNÀIÐN½GÀIÑ<NÔ<NÐNÐ8Ð<NÒNÐNÐNÐNÕNÔNÐNÐNÐNÐNÐ8Ð<NÐNÑNÔNÕNÔNÐ'ÑNÔNÕNÔNÐ8ÑNÔNÐNÕNÔNÑNÔNÐNÐNÕNÔN½GÑNÔNÐNÕNÔN½GÑNÔNÐNÐNÕNÔNÀIÑNÔNÕNÔNÐ<NÑNÔNÐNÐNÑNÐNÐNÐNÐNÐNÑNÐNÕNÕNÔNÐNÑNÔNÑNÔNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNÐNð  Ð.Ð ;Ð.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð ;Ð.Ñ.Ô.Õ.Ô.ÐÑ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô. ;Ñ.Ô.Ð.Õ.Ô. ;Ñ.Ô.Ð.Ð.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.ØÐ+Ô,ÐRÐ,Ô=ÐRÈÐRÅÈÑARÔARÐRÐ=ÐARÒRÐRÐRÐRÕRÔRÐRÐRÐRÐRÐ=ÐARÐRÑRÔRÕRÔRÐ,ÑRÔRÕRÔRÐ=ÑRÔRÐRÕRÔRÑRÔRÐRÐRÕRÔRÅÑRÔRÐRÕRÔRÅÑRÔRÐRÐRÕRÔRÈÑRÔRÕRÔRÐARÑRÔRÐRÐRÑRÐRÐRÐRÐRÐRÑRÐRÕRÕRÔRÐRÑRÔRÑRÔRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRÐRð Ð(ˆ>˜[Ð(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ>˜[Ð(Ñ(Ô(Õ(Ô(ˆ>Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(˜[Ñ(Ô(Ð(Õ(Ô(˜[Ñ(Ô(Ð(Ð(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ø�~Ô&ÐLÐ&Ô7ÐLÀ8ÐL½7À8Ñ;LÔ;LÐLÐ7Ð;LÒLÐLÐLÐLÕLÔLÐLÐLÐLÐLÐ7Ð;LÐLÑLÔLÕLÔLÐ&ÑLÔLÕLÔLÐ7ÑLÔLÐLÕLÔLÑLÔLÐLÐLÕLÔL½7ÑLÔLÐLÕLÔL½7ÑLÔLÐLÐLÕLÔLÀ8ÑLÔLÕLÔLÐ;LÑLÔLÐLÐLÑLÐLÐLÐLÐLÐLÑLÐLÕLÕLÔLÐLÑLÔLÑLÔLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLÐLõ Ð@Ð@°iÐ@Ñ@Ô@Ñ@Ô@€OØ&/Ð0�g iÑ0Ô0Ð0ˆ?Ð0Ò0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0ˆ?Ð0Ð0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆ?Ñ0Ô0Ð0Õ0Ô0ˆ?Ñ0Ô0Ð0Ð0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0�gÑ0Ô0Ð0Õ0Ô0�gÑ0Ô0Ð0Ð0Õ0Ô0 iÑ0Ô0Õ0Ô0Ð0Ñ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0Ð0r#   c                 óâ  — t          ¦   «         } |                      t          ¦  «        }t          |¦  «        }d}||k    }|sòt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nddt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}|d
         d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}|d
         d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}|d         d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}}|d         d         }d}t          |¦  «        }
||
k    }|sÇt	          j        d|fd||
f¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        t	          j	        |
¦  «        dœz  }dd|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}}
t          d„ |D ¦   «         ¦  «        }d}t          |¦  «        }||z
  }t          |¦  «        }d}t          |¦  «        }||k     }|�s»t	          j        d|fd ||f¦  «        d!t          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        nd!d"t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd"dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dt          j        ¦   «         v st	          j        t          ¦  «        rt	          j	        t          ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        d#œ	z  }d$d%|iz  }t          t	          j        |¦  «        ¦  «        ‚d	x}x}x}x}x}x}}d	S )&zPTest extraction of official statutory tender BoQ items from approved estimation.é'   r&   )z0%(py3)s
{%(py3)s = %(py0)s(%(py1)s)
} == %(py6)sr9   Ú
hsmt_itemsr„   r…   r6   Nr   Ústté   ©z%(py1)s == %(py4)s©r/   r   úassert %(py6)sr5   ÚunitÚcaÚ	norm_codezAC.22111Úquantityrd   )z0%(py1)s == %(py7)s
{%(py7)s = %(py3)s(%(py5)s)
}r   )r/   r0   r*   r,   zassert %(py9)sr�   c              3  ó&   K  — | ]}|d          V — ŒdS )Útotal_amountNr‡   )rŠ   Úis     r!   r•   z4test_hsmt_tender_items_extraction.<locals>.<genexpr>¡   s'   è è € Ð:Ð:¨!�A�nÔ%Ð:Ð:Ð:Ð:Ð:Ð:r#   z6759733141.0z100.0©ú<)z{%(py9)s
{%(py9)s = %(py0)s((%(py1)s - %(py6)s
{%(py6)s = %(py2)s(%(py4)s)
}))
} < %(py15)s
{%(py15)s = %(py11)s(%(py13)s)
}ÚabsÚ	total_bid)	r   r/   r   r   r5   r�   r�   Úpy13Úpy15úassert %(py17)sÚpy17)r
   Úextract_hsmt_tender_itemsr   r9   r   r=   r   r   r   r   r   r   r   r™   r²   )rš   r£   rS   rT   rO   r›   rV   rR   r   r    rX   rQ   rž   r³   rU   r�   Ú@py_assert12Ú@py_assert14Ú@py_assert10Ú@py_format16Ú@py_format18s                        r!   Ú!test_hsmt_tender_items_extractionr¾   •   sv  € å$Ñ&Ô&€FØ×1Ò1µ/ÑBÔB€Jåˆz‰?Œ?Ð ˜bÐ ˆ?˜bÒ Ð Ð Ð Õ Ô Ð Ð Ð Ð ˆ?˜bÐ Ñ Ô Ð Õ Ô Ñ Ô Ð Ð Õ Ô �3Ñ Ô Ð Õ Ô �3Ñ Ô Ð Ð Ð Õ Ô Ñ Ô Ð Ð Õ Ô ˆzÑ Ô Ð Õ Ô ˆzÑ Ô Ð Ð Õ Ô ˆ?Ñ Ô Õ Ô ˜bÑ Ô Ð Ð Ñ Ð Ð Ð Ð Ð Ñ Ð Õ Õ Ô Ð Ñ Ô Ñ Ô Ð Ð Ð Ð Ð Ð Ð Ø�aŒ=˜ÔÐ$ 1Ð$Ð 1Ò$Ð$Ð$Ð$Õ$Ô$Ð$Ð$Ð$Ð$Ð 1Ð$Ñ$Ô$Õ$Ô$ÐÑ$Ô$Õ$Ô$ 1Ñ$Ô$Ð$Ð$Ñ$Ð$Ð$Ð$Ð$Ð$Ñ$Ð$Õ$Õ$Ô$Ð$Ñ$Ô$Ñ$Ô$Ð$Ð$Ð$Ð$Ð$Ð$Ð$Ø�aŒ=˜Ô Ð( DÐ(Ð  DÒ(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(Ð  DÐ(Ñ(Ô(Õ(Ô(Ð Ñ(Ô(Õ(Ô( DÑ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ø�aŒ=˜Ô%Ð3¨Ð3Ð%¨Ò3Ð3Ð3Ð3Õ3Ô3Ð3Ð3Ð3Ð3Ð%¨Ð3Ñ3Ô3Õ3Ô3Ð%Ñ3Ô3Õ3Ô3¨Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ø�aŒ=˜Ô$Ð:°	Ð:­°	Ñ(:Ô(:Ð:Ð$Ð(:Ò:Ð:Ð:Ð:Õ:Ô:Ð:Ð:Ð:Ð:Ð$Ð(:Ð:Ñ:Ô:Õ:Ô:Ð$Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:­Ñ:Ô:Ð:Õ:Ô:­Ñ:Ô:Ð:Ð:Õ:Ô:°	Ñ:Ô:Õ:Ô:Ð(:Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:õ Ð:Ð:¨zÐ:Ñ:Ô:Ñ:Ô:€IØ#1ÐF�7 >Ñ2Ô2ÐFˆyÐ2Ñ2ÐF�3Ð2Ñ3Ô3ÐF¸gÐFµg¸gÑ6FÔ6FÐFÐ3Ð6FÒFÐFÐFÑFÕFÔFÐFÐFÐFÐFÐ3Ð6FÐFÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔF�3ÑFÔFÐFÕFÔF�3ÑFÔFÐFÐFÐFÕFÔFÑFÔFÐFÐFÕFÔFˆyÑFÔFÐFÕFÔFˆyÑFÔFÐFÐFÐFÕFÔFÑFÔFÐFÐFÕFÔF�7ÑFÔFÐFÕFÔF�7ÑFÔFÐFÐFÕFÔF >ÑFÔFÕFÔFÐ2ÑFÔFÕFÔFÐ3ÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔFµgÑFÔFÐFÕFÔFµgÑFÔFÐFÐFÕFÔF¸gÑFÔFÕFÔFÐ6FÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFÐFr#   c                 óÎN  — t          ¦   «         } |                      t          t          t          ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|j        }d}||k    }|sªt          j        d|fd
||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}d„ |j        D ¦   «         }|d         }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|j        }d}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}||k    }|sªt          j        d|fd ||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|d!         }|j        }d"}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d#t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd#t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d"}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d#t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd#t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d#t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd#t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}||k    }|sªt          j        d|fd ||f¦  «        d#t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd#t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|d$         }|j        }d%}	t+          |	¦  «        }
||
k    }|�st          j        d|fd&||
f¦  «        d't          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd't          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d%}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d't          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd't          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d't          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd't          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}||k    }|sªt          j        d|fd ||f¦  «        d't          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd't          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|d(         }|j        }d)}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d*t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd*t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d)}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d*t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd*t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d*t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd*t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}||k    }|sªt          j        d|fd ||f¦  «        d*t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd*t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|d+         }|j        }d,}	t+          |	¦  «        }
||
k    }|�st          j        d|fd&||
f¦  «        d-t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd-t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d,}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d-t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd-t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d-t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd-t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}||k    }|sªt          j        d|fd ||f¦  «        d-t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd-t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|d.         }|j        }d/}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d0t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd0t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d/}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d0t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd0t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d0t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd0t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}||k    }|sªt          j        d|fd ||f¦  «        d0t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd0t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|d1         }|j        }d2}	t+          |	¦  «        }
||
k    }|�st          j        d|fd&||
f¦  «        d3t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd3t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d2}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d3t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd3t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d3t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd3t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}||k    }|sªt          j        d|fd ||f¦  «        d3t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd3t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|d4         }|j        }d5}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d6t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd6t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d5}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d6t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd6t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}	t+          |	¦  «        }
||
k    }|�st          j        d|fd||
f¦  «        d6t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd6t          j        |¦  «        dt          j	        ¦   «         v st          j
        t*          ¦  «        rt          j        t*          ¦  «        ndt          j        |	¦  «        t          j        |
¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}x}	}
|j        }d}||k    }|sªt          j        d|fd ||f¦  «        d6t          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        nd6t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}d	S )7zPTest 100% reconciliation cross-audit on Ben Kem dataset with zero discrepancies.©Ú
cad_sourceÚ
bbs_sourceÚhsmt_sourcer¢   r&   ©z;%(py2)s
{%(py2)s = %(py0)s.total_items_audited
} == %(py5)sÚreportr)   r+   r,   N©z;%(py2)s
{%(py2)s = %(py0)s.matched_items_count
} == %(py5)sr   ©z?%(py2)s
{%(py2)s = %(py0)s.discrepancy_items_count
} == %(py5)séd   ©z@%(py2)s
{%(py2)s = %(py0)s.overall_confidence_score
} == %(py5)sÚtri_source_grounded_100©z8%(py2)s
{%(py2)s = %(py0)s.confidence_level
} == %(py5)sc                ó   — i | ]
}|j         |“ŒS r‡   ©Ú
item_order©rŠ   Úitems     r!   rŒ   zGtest_tri_source_reconciliation_ben_kem_ground_truth.<locals>.<dictcomp>µ   ó   € ÐRÐRÐR¨d�D”O TÐRÐRÐRr#   é   zAC.11121)z1%(py2)s
{%(py2)s = %(py0)s.norm_code
} == %(py5)sÚit14r^   )z]%(py2)s
{%(py2)s = %(py0)s.source_cad_geometry_qty
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}r   r4   r7   r8   )z\%(py2)s
{%(py2)s = %(py0)s.source_hsmt_tender_qty
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}z0.0000)zT%(py2)s
{%(py2)s = %(py0)s.variance_delta
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}zMATCHED_100%)z.%(py2)s
{%(py2)s = %(py0)s.status
} == %(py5)sé   r[   Úit17é   rŽ   )zZ%(py2)s
{%(py2)s = %(py0)s.source_bbs_rebar_qty
} == %(py8)s
{%(py8)s = %(py4)s(%(py6)s)
}Úit18é   r_   Úit20é   r‘   Úit21é   ra   Úit23é   r’   Úit26é   rb   Úit27)r   Úrun_tri_source_reconciliationr   r   r   Útotal_items_auditedr   r=   r   r   r   r   r   r   Úmatched_items_countÚdiscrepancy_items_countÚoverall_confidence_scoreÚconfidence_levelÚreconciliation_itemsr«   Úsource_cad_geometry_qtyr   Úsource_hsmt_tender_qtyÚvariance_deltaÚstatusÚsource_bbs_rebar_qty)ÚservicerÅ   r   rO   r   rP   rQ   Úrec_by_orderrÓ   rT   rU   rV   rW   rÕ   r×   rÙ   rÛ   rÝ   rß   rá   s                       r!   Ú3test_tri_source_reconciliation_ben_kem_ground_truthrð   ¥   sÇ*  € å)Ñ+Ô+€GØ×2Ò2ÝÝ!Ý#ð 3ñ ô €Fð Ô%Ð+¨Ð+Ð%¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð%¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆ6Ñ+Ô+Ð+Õ+Ô+ˆ6Ñ+Ô+Ð+Ð+Õ+Ô+Ð%Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ%Ð+¨Ð+Ð%¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð%¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆ6Ñ+Ô+Ð+Õ+Ô+ˆ6Ñ+Ô+Ð+Ð+Õ+Ô+Ð%Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ)Ð.¨QÐ.Ð)¨QÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð)¨QÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ6Ñ.Ô.Ð.Õ.Ô.ˆ6Ñ.Ô.Ð.Ð.Õ.Ô.Ð)Ñ.Ô.Õ.Ô.¨QÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ*Ð1¨cÐ1Ð*¨cÒ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð*¨cÐ1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆ6Ñ1Ô1Ð1Õ1Ô1ˆ6Ñ1Ô1Ð1Ð1Õ1Ô1Ð*Ñ1Ô1Õ1Ô1¨cÑ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÔ"Ð?Ð&?Ð?Ð"Ð&?Ò?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?Ð"Ð&?Ð?Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?ˆ6Ñ?Ô?Ð?Õ?Ô?ˆ6Ñ?Ô?Ð?Ð?Õ?Ô?Ð"Ñ?Ô?Õ?Ô?Ð&?Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?ð SÐR°fÔ6QÐRÑRÔR€Lð ˜Ô€DØŒ>Ð'˜ZÐ'ˆ>˜ZÒ'Ð'Ð'Ð'Õ'Ô'Ð'Ð'Ð'Ð'ˆ>˜ZÐ'Ñ'Ô'Ð'Õ'Ô'Ñ'Ô'Ð'Ð'Õ'Ô'ˆ4Ñ'Ô'Ð'Õ'Ô'ˆ4Ñ'Ô'Ð'Ð'Õ'Ô'ˆ>Ñ'Ô'Õ'Ô'˜ZÑ'Ô'Ð'Ð'Ñ'Ð'Ð'Ð'Ð'Ð'Ñ'Ð'Õ'Õ'Ô'Ð'Ñ'Ô'Ñ'Ô'Ð'Ð'Ð'Ð'Ð'Ð'Ð'ØÔ'Ð>°:Ð>­7°:Ñ+>Ô+>Ð>Ð'Ð+>Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>Ð'Ð+>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ4Ñ>Ô>Ð>Õ>Ô>ˆ4Ñ>Ô>Ð>Ð>Õ>Ô>Ð'Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>­7Ñ>Ô>Ð>Õ>Ô>­7Ñ>Ô>Ð>Ð>Õ>Ô>°:Ñ>Ô>Õ>Ô>Ð+>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ&Ð=°*Ð=­'°*Ñ*=Ô*=Ð=Ð&Ð*=Ò=Ð=Ð=Ñ=Õ=Ô=Ð=Ð=Ð=Ð=Ð&Ð*=Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ˆ4Ñ=Ô=Ð=Õ=Ô=ˆ4Ñ=Ô=Ð=Ð=Õ=Ô=Ð&Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=­'Ñ=Ô=Ð=Õ=Ô=­'Ñ=Ô=Ð=Ð=Õ=Ô=°*Ñ=Ô=Õ=Ô=Ð*=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÔÐ3¨(Ð3¥'¨(Ñ"3Ô"3Ð3ÐÐ"3Ò3Ð3Ð3Ñ3Õ3Ô3Ð3Ð3Ð3Ð3ÐÐ"3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Ð3Õ3Ô3ÐÑ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Ð3Õ3Ô3¨(Ñ3Ô3Õ3Ô3Ð"3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒ;Ð(˜.Ð(ˆ;˜.Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ;˜.Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Ð(Õ(Ô(ˆ;Ñ(Ô(Õ(Ô(˜.Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð ˜Ô€DØÔ'Ð=°9Ð=­7°9Ñ+=Ô+=Ð=Ð'Ð+=Ò=Ð=Ð=Ñ=Õ=Ô=Ð=Ð=Ð=Ð=Ð'Ð+=Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ˆ4Ñ=Ô=Ð=Õ=Ô=ˆ4Ñ=Ô=Ð=Ð=Õ=Ô=Ð'Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=­7Ñ=Ô=Ð=Õ=Ô=­7Ñ=Ô=Ð=Ð=Õ=Ô=°9Ñ=Ô=Õ=Ô=Ð+=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÔ&Ð<°)Ð<­'°)Ñ*<Ô*<Ð<Ð&Ð*<Ò<Ð<Ð<Ñ<Õ<Ô<Ð<Ð<Ð<Ð<Ð&Ð*<Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆ4Ñ<Ô<Ð<Õ<Ô<ˆ4Ñ<Ô<Ð<Ð<Õ<Ô<Ð&Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<­'Ñ<Ô<Ð<Õ<Ô<­'Ñ<Ô<Ð<Ð<Õ<Ô<°)Ñ<Ô<Õ<Ô<Ð*<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔÐ3¨(Ð3¥'¨(Ñ"3Ô"3Ð3ÐÐ"3Ò3Ð3Ð3Ñ3Õ3Ô3Ð3Ð3Ð3Ð3ÐÐ"3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Ð3Õ3Ô3ÐÑ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Ð3Õ3Ô3¨(Ñ3Ô3Õ3Ô3Ð"3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒ;Ð(˜.Ð(ˆ;˜.Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ;˜.Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Ð(Õ(Ô(ˆ;Ñ(Ô(Õ(Ô(˜.Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð ˜Ô€DØÔ$Ð:°	Ð:­°	Ñ(:Ô(:Ð:Ð$Ð(:Ò:Ð:Ð:Ñ:Õ:Ô:Ð:Ð:Ð:Ð:Ð$Ð(:Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆ4Ñ:Ô:Ð:Õ:Ô:ˆ4Ñ:Ô:Ð:Ð:Õ:Ô:Ð$Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:­Ñ:Ô:Ð:Õ:Ô:­Ñ:Ô:Ð:Ð:Õ:Ô:°	Ñ:Ô:Õ:Ô:Ð(:Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ØÔ&Ð<°)Ð<­'°)Ñ*<Ô*<Ð<Ð&Ð*<Ò<Ð<Ð<Ñ<Õ<Ô<Ð<Ð<Ð<Ð<Ð&Ð*<Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆ4Ñ<Ô<Ð<Õ<Ô<ˆ4Ñ<Ô<Ð<Ð<Õ<Ô<Ð&Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<­'Ñ<Ô<Ð<Õ<Ô<­'Ñ<Ô<Ð<Ð<Õ<Ô<°)Ñ<Ô<Õ<Ô<Ð*<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔÐ3¨(Ð3¥'¨(Ñ"3Ô"3Ð3ÐÐ"3Ò3Ð3Ð3Ñ3Õ3Ô3Ð3Ð3Ð3Ð3ÐÐ"3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Ð3Õ3Ô3ÐÑ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Ð3Õ3Ô3¨(Ñ3Ô3Õ3Ô3Ð"3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒ;Ð(˜.Ð(ˆ;˜.Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ;˜.Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Ð(Õ(Ô(ˆ;Ñ(Ô(Õ(Ô(˜.Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð ˜Ô€DØÔ'Ð>°:Ð>­7°:Ñ+>Ô+>Ð>Ð'Ð+>Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>Ð'Ð+>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ4Ñ>Ô>Ð>Õ>Ô>ˆ4Ñ>Ô>Ð>Ð>Õ>Ô>Ð'Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>­7Ñ>Ô>Ð>Õ>Ô>­7Ñ>Ô>Ð>Ð>Õ>Ô>°:Ñ>Ô>Õ>Ô>Ð+>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ&Ð=°*Ð=­'°*Ñ*=Ô*=Ð=Ð&Ð*=Ò=Ð=Ð=Ñ=Õ=Ô=Ð=Ð=Ð=Ð=Ð&Ð*=Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ˆ4Ñ=Ô=Ð=Õ=Ô=ˆ4Ñ=Ô=Ð=Ð=Õ=Ô=Ð&Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=­'Ñ=Ô=Ð=Õ=Ô=­'Ñ=Ô=Ð=Ð=Õ=Ô=°*Ñ=Ô=Õ=Ô=Ð*=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÔÐ3¨(Ð3¥'¨(Ñ"3Ô"3Ð3ÐÐ"3Ò3Ð3Ð3Ñ3Õ3Ô3Ð3Ð3Ð3Ð3ÐÐ"3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Ð3Õ3Ô3ÐÑ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Ð3Õ3Ô3¨(Ñ3Ô3Õ3Ô3Ð"3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒ;Ð(˜.Ð(ˆ;˜.Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ;˜.Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Ð(Õ(Ô(ˆ;Ñ(Ô(Õ(Ô(˜.Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð ˜Ô€DØÔ$Ð:°	Ð:­°	Ñ(:Ô(:Ð:Ð$Ð(:Ò:Ð:Ð:Ñ:Õ:Ô:Ð:Ð:Ð:Ð:Ð$Ð(:Ð:Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:ˆ4Ñ:Ô:Ð:Õ:Ô:ˆ4Ñ:Ô:Ð:Ð:Õ:Ô:Ð$Ñ:Ô:Ð:Õ:Ô:Ñ:Ô:Ð:Ð:Õ:Ô:­Ñ:Ô:Ð:Õ:Ô:­Ñ:Ô:Ð:Ð:Õ:Ô:°	Ñ:Ô:Õ:Ô:Ð(:Ñ:Ô:Ð:Ð:Ñ:Ð:Ð:Ð:Ð:Ð:Ñ:Ð:Õ:Õ:Ô:Ð:Ñ:Ô:Ñ:Ô:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:Ð:ØÔ&Ð<°)Ð<­'°)Ñ*<Ô*<Ð<Ð&Ð*<Ò<Ð<Ð<Ñ<Õ<Ô<Ð<Ð<Ð<Ð<Ð&Ð*<Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆ4Ñ<Ô<Ð<Õ<Ô<ˆ4Ñ<Ô<Ð<Ð<Õ<Ô<Ð&Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<­'Ñ<Ô<Ð<Õ<Ô<­'Ñ<Ô<Ð<Ð<Õ<Ô<°)Ñ<Ô<Õ<Ô<Ð*<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔÐ3¨(Ð3¥'¨(Ñ"3Ô"3Ð3ÐÐ"3Ò3Ð3Ð3Ñ3Õ3Ô3Ð3Ð3Ð3Ð3ÐÐ"3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Ð3Õ3Ô3ÐÑ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Ð3Õ3Ô3¨(Ñ3Ô3Õ3Ô3Ð"3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒ;Ð(˜.Ð(ˆ;˜.Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ;˜.Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Ð(Õ(Ô(ˆ;Ñ(Ô(Õ(Ô(˜.Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð ˜Ô€DØÔ'Ð>°:Ð>­7°:Ñ+>Ô+>Ð>Ð'Ð+>Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>Ð'Ð+>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ4Ñ>Ô>Ð>Õ>Ô>ˆ4Ñ>Ô>Ð>Ð>Õ>Ô>Ð'Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>­7Ñ>Ô>Ð>Õ>Ô>­7Ñ>Ô>Ð>Ð>Õ>Ô>°:Ñ>Ô>Õ>Ô>Ð+>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ&Ð=°*Ð=­'°*Ñ*=Ô*=Ð=Ð&Ð*=Ò=Ð=Ð=Ñ=Õ=Ô=Ð=Ð=Ð=Ð=Ð&Ð*=Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ˆ4Ñ=Ô=Ð=Õ=Ô=ˆ4Ñ=Ô=Ð=Ð=Õ=Ô=Ð&Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=­'Ñ=Ô=Ð=Õ=Ô=­'Ñ=Ô=Ð=Ð=Õ=Ô=°*Ñ=Ô=Õ=Ô=Ð*=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÔÐ3¨(Ð3¥'¨(Ñ"3Ô"3Ð3ÐÐ"3Ò3Ð3Ð3Ñ3Õ3Ô3Ð3Ð3Ð3Ð3ÐÐ"3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Ð3Õ3Ô3ÐÑ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Ð3Õ3Ô3¨(Ñ3Ô3Õ3Ô3Ð"3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒ;Ð(˜.Ð(ˆ;˜.Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ;˜.Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Ð(Õ(Ô(ˆ;Ñ(Ô(Õ(Ô(˜.Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð ˜Ô€DØÔ$Ð9°Ð9­°Ñ(9Ô(9Ð9Ð$Ð(9Ò9Ð9Ð9Ñ9Õ9Ô9Ð9Ð9Ð9Ð9Ð$Ð(9Ð9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆ4Ñ9Ô9Ð9Õ9Ô9ˆ4Ñ9Ô9Ð9Ð9Õ9Ô9Ð$Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9­Ñ9Ô9Ð9Õ9Ô9­Ñ9Ô9Ð9Ð9Õ9Ô9°Ñ9Ô9Õ9Ô9Ð(9Ñ9Ô9Ð9Ð9Ñ9Ð9Ð9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ð9ØÔ&Ð;°(Ð;­'°(Ñ*;Ô*;Ð;Ð&Ð*;Ò;Ð;Ð;Ñ;Õ;Ô;Ð;Ð;Ð;Ð;Ð&Ð*;Ð;Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;ˆ4Ñ;Ô;Ð;Õ;Ô;ˆ4Ñ;Ô;Ð;Ð;Õ;Ô;Ð&Ñ;Ô;Ð;Õ;Ô;Ñ;Ô;Ð;Ð;Õ;Ô;­'Ñ;Ô;Ð;Õ;Ô;­'Ñ;Ô;Ð;Ð;Õ;Ô;°(Ñ;Ô;Õ;Ô;Ð*;Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;ØÔÐ3¨(Ð3¥'¨(Ñ"3Ô"3Ð3ÐÐ"3Ò3Ð3Ð3Ñ3Õ3Ô3Ð3Ð3Ð3Ð3ÐÐ"3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Ð3Õ3Ô3ÐÑ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Ð3Õ3Ô3¨(Ñ3Ô3Õ3Ô3Ð"3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒ;Ð(˜.Ð(ˆ;˜.Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ;˜.Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Ð(Õ(Ô(ˆ;Ñ(Ô(Õ(Ô(˜.Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(ð ˜Ô€DØÔ'Ð>°:Ð>­7°:Ñ+>Ô+>Ð>Ð'Ð+>Ò>Ð>Ð>Ñ>Õ>Ô>Ð>Ð>Ð>Ð>Ð'Ð+>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ4Ñ>Ô>Ð>Õ>Ô>ˆ4Ñ>Ô>Ð>Ð>Õ>Ô>Ð'Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>­7Ñ>Ô>Ð>Õ>Ô>­7Ñ>Ô>Ð>Ð>Õ>Ô>°:Ñ>Ô>Õ>Ô>Ð+>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ&Ð=°*Ð=­'°*Ñ*=Ô*=Ð=Ð&Ð*=Ò=Ð=Ð=Ñ=Õ=Ô=Ð=Ð=Ð=Ð=Ð&Ð*=Ð=Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=ˆ4Ñ=Ô=Ð=Õ=Ô=ˆ4Ñ=Ô=Ð=Ð=Õ=Ô=Ð&Ñ=Ô=Ð=Õ=Ô=Ñ=Ô=Ð=Ð=Õ=Ô=­'Ñ=Ô=Ð=Õ=Ô=­'Ñ=Ô=Ð=Ð=Õ=Ô=°*Ñ=Ô=Õ=Ô=Ð*=Ñ=Ô=Ð=Ð=Ñ=Ð=Ð=Ð=Ð=Ð=Ñ=Ð=Õ=Õ=Ô=Ð=Ñ=Ô=Ñ=Ô=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=Ð=ØÔÐ3¨(Ð3¥'¨(Ñ"3Ô"3Ð3ÐÐ"3Ò3Ð3Ð3Ñ3Õ3Ô3Ð3Ð3Ð3Ð3ÐÐ"3Ð3Ñ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Õ3Ô3ˆ4Ñ3Ô3Ð3Ð3Õ3Ô3ÐÑ3Ô3Ð3Õ3Ô3Ñ3Ô3Ð3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Õ3Ô3¥'Ñ3Ô3Ð3Ð3Õ3Ô3¨(Ñ3Ô3Õ3Ô3Ð"3Ñ3Ô3Ð3Ð3Ñ3Ð3Ð3Ð3Ð3Ð3Ñ3Ð3Õ3Õ3Ô3Ð3Ñ3Ô3Ñ3Ô3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3Ð3ØŒ;Ð(˜.Ð(ˆ;˜.Ò(Ð(Ð(Ð(Õ(Ô(Ð(Ð(Ð(Ð(ˆ;˜.Ð(Ñ(Ô(Ð(Õ(Ô(Ñ(Ô(Ð(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Õ(Ô(ˆ4Ñ(Ô(Ð(Ð(Õ(Ô(ˆ;Ñ(Ô(Õ(Ô(˜.Ñ(Ô(Ð(Ð(Ñ(Ð(Ð(Ð(Ð(Ð(Ñ(Ð(Õ(Õ(Ô(Ð(Ñ(Ô(Ñ(Ô(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(Ð(r#   c                 ó¾  — t          ¦   «         } t          ¦   «         }|                     t          ¦  «        }|                     |¦  «        }|                      t          ¦  «        }|                      t          ¦  «        }|D ]?}|d         dk    rt          d¦  «        |d<   Œ!|d         dk    rt          d¦  «        |d<   Œ@|  
                    |||¬¦  «        }|j        }d}	||	k    }
|
sªt          j        d	|
fd
||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}
}	|j        }d}	||	k    }
|
sªt          j        d	|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}
}	|j        }d}	||	k    }
|
sªt          j        d	|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}
}	|j        }d}	||	k     }
|
sªt          j        d|
fd||	f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |	¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}
}	d„ |j        D ¦   «         }|d         }|j        }d}||k    }	|	st          j        d	|	fd||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}x}	}|d         }|j        }d}t          |¦  «        }d}t          |¦  «        }||z
  }||k    }	|	�sHt          j        d	|	fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        d œz  }d!d"|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}x}	x}x}x}x}}|d         }|j        }d}||k    }	|	st          j        d	|	fd||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}x}	}|d         }|j        }d#}t          |¦  «        }d}t          |¦  «        }||z
  }||k    }	|	�sHt          j        d	|	fd||f¦  «        t          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        dt          j        ¦   «         v st          j        t          ¦  «        rt          j        t          ¦  «        ndt          j        |¦  «        t          j        |¦  «        d œz  }d!d"|iz  }t%          t          j        |¦  «        ¦  «        ‚dx}x}x}	x}x}x}x}}dS )$zSNegative testing: Injected discrepancies must be flagged immediately by the engine.r¤   rÔ   z95.0000r¬   rÚ   z18.0000©r]   rƒ   r£   é   r&   rÇ   rÅ   r)   r+   r,   Né%   rÆ   Údiscrepancies_detectedrË   rÈ   r°   )z?%(py2)s
{%(py2)s = %(py0)s.overall_confidence_score
} < %(py5)sc                ó   — i | ]
}|j         |“ŒS r‡   rÍ   rÏ   s     r!   rŒ   zDtest_tri_source_reconciliation_anomaly_detection.<locals>.<dictcomp>  rÑ   r#   ÚDISCREPANCY_FLAGGED©z.%(py3)s
{%(py3)s = %(py1)s.status
} == %(py6)s©r/   r0   r5   r…   r6   r[   )z‚%(py3)s
{%(py3)s = %(py1)s.variance_delta
} == (%(py9)s
{%(py9)s = %(py5)s(%(py7)s)
} - %(py14)s
{%(py14)s = %(py10)s(%(py12)s)
})r   )r/   r0   r*   r,   r�   r8   Úpy12Úpy14r¶   r·   r‘   )r
   r	   r;   r   re   r˜   r   r¸   r   r   Úreconcile_tri_sourcerå   r   r=   r   r   r   r   r   r   rä   rç   ræ   rè   rì   rë   )rš   rN   r(   r]   rƒ   r£   ÚitmrÅ   r   rO   r   rP   rQ   rï   rR   rS   rT   r›   rV   rX   r�   Ú@py_assert11Ú@py_assert13Ú@py_assert15r¼   r½   s                             r!   Ú0test_tri_source_reconciliation_anomaly_detectionr  ñ   so	  € å$Ñ&Ô&€FÝ'Ñ)Ô)€Fà×1Ò1µ+Ñ>Ô>€EØ×0Ò0°Ñ7Ô7€FØ×+Ò+­NÑ;Ô;€IØ×1Ò1µ/ÑBÔB€Jð ð 1ð 1ˆØˆuŒ:˜ÒÐÝ% iÑ0Ô0ˆC�
‰OˆOØ�ŒZ˜2ÒÐÝ% iÑ0Ô0ˆC�
‰Oøà×(Ò(ØØØð )ñ ô €Fð Ô)Ð.¨QÐ.Ð)¨QÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð)¨QÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ6Ñ.Ô.Ð.Õ.Ô.ˆ6Ñ.Ô.Ð.Ð.Õ.Ô.Ð)Ñ.Ô.Õ.Ô.¨QÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ%Ð+¨Ð+Ð%¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð%¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆ6Ñ+Ô+Ð+Õ+Ô+ˆ6Ñ+Ô+Ð+Ð+Õ+Ô+Ð%Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ"Ð>Ð&>Ð>Ð"Ð&>Ò>Ð>Ð>Ð>Õ>Ô>Ð>Ð>Ð>Ð>Ð"Ð&>Ð>Ñ>Ô>Ð>Õ>Ô>Ñ>Ô>Ð>Ð>Õ>Ô>ˆ6Ñ>Ô>Ð>Õ>Ô>ˆ6Ñ>Ô>Ð>Ð>Õ>Ô>Ð"Ñ>Ô>Õ>Ô>Ð&>Ñ>Ô>Ð>Ð>Ñ>Ð>Ð>Ð>Ð>Ð>Ñ>Ð>Õ>Õ>Ô>Ð>Ñ>Ô>Ñ>Ô>Ð>Ð>Ð>Ð>Ð>Ð>Ð>ØÔ*Ð0¨SÐ0Ð*¨SÒ0Ð0Ð0Ð0Õ0Ô0Ð0Ð0Ð0Ð0Ð*¨SÐ0Ñ0Ô0Ð0Õ0Ô0Ñ0Ô0Ð0Ð0Õ0Ô0ˆ6Ñ0Ô0Ð0Õ0Ô0ˆ6Ñ0Ô0Ð0Ð0Õ0Ô0Ð*Ñ0Ô0Õ0Ô0¨SÑ0Ô0Ð0Ð0Ñ0Ð0Ð0Ð0Ð0Ð0Ñ0Ð0Õ0Õ0Ô0Ð0Ñ0Ô0Ñ0Ô0Ð0Ð0Ð0Ð0Ð0Ð0Ð0àRÐR°fÔ6QÐRÑRÔR€LØ˜ÔÐ;ÐÔ"Ð;Ð&;Ð;Ð"Ð&;Ò;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð"Ð&;Ð;Ñ;Ô;Õ;Ô;ÐÑ;Ô;Õ;Ô;Ð"Ñ;Ô;Õ;Ô;Ð&;Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ø˜ÔÐUÐÔ*ÐU°iÐU­g°iÑ.@Ô.@ÐUÈ9ÐUÅ7È9ÑCUÔCUÐUÐ.@ÐCUÑ.UÐUÐ*Ð.UÒUÐUÐUÑUÕUÔUÐUÐUÐUÐUÐ*Ð.UÐUÑUÔUÕUÔUÐÑUÔUÕUÔUÐ*ÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔU­gÑUÔUÐUÕUÔU­gÑUÔUÐUÐUÕUÔU°iÑUÔUÕUÔUÐ.@ÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔUÅ7ÑUÔUÐUÕUÔUÅ7ÑUÔUÐUÐUÕUÔUÈ9ÑUÔUÕUÔUÐCUÑUÔUÐUÐUÑUÐUÐUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUØ˜ÔÐ;ÐÔ"Ð;Ð&;Ð;Ð"Ð&;Ò;Ð;Ð;Ð;Õ;Ô;Ð;Ð;Ð;Ð;Ð"Ð&;Ð;Ñ;Ô;Õ;Ô;ÐÑ;Ô;Õ;Ô;Ð"Ñ;Ô;Õ;Ô;Ð&;Ñ;Ô;Ð;Ð;Ñ;Ð;Ð;Ð;Ð;Ð;Ñ;Ð;Õ;Õ;Ô;Ð;Ñ;Ô;Ñ;Ô;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ð;Ø˜ÔÐUÐÔ*ÐU°iÐU­g°iÑ.@Ô.@ÐUÈ9ÐUÅ7È9ÑCUÔCUÐUÐ.@ÐCUÑ.UÐUÐ*Ð.UÒUÐUÐUÑUÕUÔUÐUÐUÐUÐUÐ*Ð.UÐUÑUÔUÕUÔUÐÑUÔUÕUÔUÐ*ÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔU­gÑUÔUÐUÕUÔU­gÑUÔUÐUÐUÕUÔU°iÑUÔUÕUÔUÐ.@ÑUÔUÐUÕUÔUÑUÔUÐUÐUÕUÔUÅ7ÑUÔUÐUÕUÔUÅ7ÑUÔUÐUÐUÕUÔUÈ9ÑUÔUÕUÔUÐCUÑUÔUÐUÐUÑUÐUÐUÐUÐUÐUÑUÐUÕUÕUÔUÐUÑUÔUÑUÔUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUÐUr#   c                 óˆ  — t                                dt          ¬¦  «        } | j        }d}||k    }|sÄt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        | ¦  «        rt	          j	        | ¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }t	          j
        | j        ¦  «        dz   d	|iz  }t          t	          j        |¦  «        ¦  «        ‚d
x}x}}|                      ¦   «         }|d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d
x}x}}|d         }|d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d
x}x}}|d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d
x}x}}|d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d
x}x}}t                                dt!          t"          ¦  «        ddddœt          ¬¦  «        }|j        }d}||k    }|sÄt	          j        d|fd||f¦  «        dt          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        ndt	          j	        |¦  «        t	          j	        |¦  «        dœz  }t	          j
        |j        ¦  «        dz   d	|iz  }t          t	          j        |¦  «        ¦  «        ‚d
x}x}}|                     ¦   «         }|d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d
x}x}}|d         d         }d }||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d
x}x}}|d         d!         }d"}||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d
x}x}}t                                d#t!          t"          ¦  «        t!          t$          ¦  «        t!          t&          ¦  «        d$œt          ¬¦  «        }|j        }d}||k    }|sÄt	          j        d|fd||f¦  «        d%t          j        ¦   «         v st	          j        |¦  «        rt	          j	        |¦  «        nd%t	          j	        |¦  «        t	          j	        |¦  «        dœz  }t	          j
        |j        ¦  «        dz   d	|iz  }t          t	          j        |¦  «        ¦  «        ‚d
x}x}}|                     ¦   «         }|d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d
x}x}}|d         d         }d}||k    }|slt	          j        d|fd||f¦  «        t	          j	        |¦  «        t	          j	        |¦  «        dœz  }	dd|	iz  }
t          t	          j        |
¦  «        ¦  «        ‚d
x}x}}d
S )&zITest REST API presentation layer endpoints for Tri-Source reconciliation.z$/v1/takeoff/ben-kem/tri-source-audit)ÚheaderséÈ   r&   )z3%(py2)s
{%(py2)s = %(py0)s.status_code
} == %(py5)sÚrespr)   z
>assert %(py7)sr,   Nrì   Úsuccessr¦   r§   r¨   r5   rÅ   rã   r¢   rä   ræ   rÈ   z/v1/takeoff/inverse-bim/solver1   g     €E@u   Cá»‘ng Báº¿n Kem API Test)Úcad_source_pathr?   Úsegment_length_mr>   )Újsonr  Ú
solve_respr]   rf   r[   rj   r_   z /v1/takeoff/tri-source/reconcile)r  Úbbs_source_pathÚhsmt_source_pathÚ
recon_resp)ÚclientÚgetÚAUTH_HEADERSÚstatus_coder   r=   r   r   r   r   r   Útextr   r   r	  ÚpostÚstrr   r   r   )r  r   rO   r   rP   rQ   ÚdatarR   rS   r    r›   rÅ   r
  Ú
solve_datar  Ú
recon_datas                   r!   Útest_api_tri_source_endpointsr    sÃ	  € õ �:Š:Ð<Ålˆ:ÑSÔS€DØÔÐ-˜sÐ-Ð˜sÒ"Ð-Ð-Ð-Õ-Ô-Ð-Ð-Ð-Ð-Ð˜sÐ-Ñ-Ô-Ð-Õ-Ô-Ñ-Ô-Ð-Ð-Õ-Ô-ˆ4Ñ-Ô-Ð-Õ-Ô-ˆ4Ñ-Ô-Ð-Ð-Õ-Ô-ÐÑ-Ô-Õ-Ô-˜sÑ-Ô-Ð-Ð-Ñ-Ð-Õ-Ô- D¤IÑ-Ô-Ð-Ñ-Ð-Ð-Ð-Ñ-Ð-Õ-Õ-Ô-Ð-Ñ-Ô-Ñ-Ô-Ð-Ð-Ð-Ð-Ð-Ð-Ð-Ø�9Š9‰;Œ;€DØ�Œ>Ð&˜YÐ&ˆ>˜YÒ&Ð&Ð&Ð&Õ&Ô&Ð&Ð&Ð&Ð&ˆ>˜YÐ&Ñ&Ô&Õ&Ô&ˆ>Ñ&Ô&Õ&Ô&˜YÑ&Ô&Ð&Ð&Ñ&Ð&Ð&Ð&Ð&Ð&Ñ&Ð&Õ&Õ&Ô&Ð&Ñ&Ô&Ñ&Ô&Ð&Ð&Ð&Ð&Ð&Ð&Ð&Ø�(Œ^€FØÐ'Ô(Ð.¨BÐ.Ð(¨BÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð(¨BÐ.Ñ.Ô.Õ.Ô.Ð(Ñ.Ô.Õ.Ô.¨BÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÐ'Ô(Ð.¨BÐ.Ð(¨BÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð(¨BÐ.Ñ.Ô.Õ.Ô.Ð(Ñ.Ô.Õ.Ô.¨BÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÐ,Ô-Ð4°Ð4Ð-°Ò4Ð4Ð4Ð4Õ4Ô4Ð4Ð4Ð4Ð4Ð-°Ð4Ñ4Ô4Õ4Ô4Ð-Ñ4Ô4Õ4Ô4°Ñ4Ô4Ð4Ð4Ñ4Ð4Ð4Ð4Ð4Ð4Ñ4Ð4Õ4Õ4Ô4Ð4Ñ4Ô4Ñ4Ô4Ð4Ð4Ð4Ð4Ð4Ð4Ð4õ —’Ø'å"¥;Ñ/Ô/ØØ $Ø9ð	
ð 
õ ð ñ 	ô 	€Jð Ô!Ð9 SÐ9Ð! SÒ(Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð! SÐ9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆ:Ñ9Ô9Ð9Õ9Ô9ˆ:Ñ9Ô9Ð9Ð9Õ9Ô9Ð!Ñ9Ô9Õ9Ô9 SÑ9Ô9Ð9Ð9Ñ9Ð9Õ9Ô9¨*¬/Ñ9Ô9Ð9Ñ9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø—’Ñ"Ô"€JØ�hÔÐ, 9Ð,Ð 9Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð 9Ð,Ñ,Ô,Õ,Ô,ÐÑ,Ô,Õ,Ô, 9Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø�hÔÐ 9Ô:ÐG¸iÐGÐ:¸iÒGÐGÐGÐGÕGÔGÐGÐGÐGÐGÐ:¸iÐGÑGÔGÕGÔGÐ:ÑGÔGÕGÔG¸iÑGÔGÐGÐGÑGÐGÐGÐGÐGÐGÑGÐGÕGÕGÔGÐGÑGÔGÑGÔGÐGÐGÐGÐGÐGÐGÐGØ�hÔÐ @ÔAÐOÀZÐOÐAÀZÒOÐOÐOÐOÕOÔOÐOÐOÐOÐOÐAÀZÐOÑOÔOÕOÔOÐAÑOÔOÕOÔOÀZÑOÔOÐOÐOÑOÐOÐOÐOÐOÐOÑOÐOÕOÕOÔOÐOÑOÔOÑOÔOÐOÐOÐOÐOÐOÐOÐOõ —’Ø*å"¥;Ñ/Ô/Ý"¥>Ñ2Ô2Ý #¥OÑ 4Ô 4ð
ð 
õ
 ð ñ ô €Jð Ô!Ð9 SÐ9Ð! SÒ(Ð9Ð9Ð9Õ9Ô9Ð9Ð9Ð9Ð9Ð! SÐ9Ñ9Ô9Ð9Õ9Ô9Ñ9Ô9Ð9Ð9Õ9Ô9ˆ:Ñ9Ô9Ð9Õ9Ô9ˆ:Ñ9Ô9Ð9Ð9Õ9Ô9Ð!Ñ9Ô9Õ9Ô9 SÑ9Ô9Ð9Ð9Ñ9Ð9Õ9Ô9¨*¬/Ñ9Ô9Ð9Ñ9Ð9Ð9Ð9Ñ9Ð9Õ9Õ9Ô9Ð9Ñ9Ô9Ñ9Ô9Ð9Ð9Ð9Ð9Ð9Ð9Ð9Ø—’Ñ"Ô"€JØ�hÔÐ, 9Ð,Ð 9Ò,Ð,Ð,Ð,Õ,Ô,Ð,Ð,Ð,Ð,Ð 9Ð,Ñ,Ô,Õ,Ô,ÐÑ,Ô,Õ,Ô, 9Ñ,Ô,Ð,Ð,Ñ,Ð,Ð,Ð,Ð,Ð,Ñ,Ð,Õ,Õ,Ô,Ð,Ñ,Ô,Ñ,Ô,Ð,Ð,Ð,Ð,Ð,Ð,Ð,Ø�hÔÐ 5Ô6Ð<¸"Ð<Ð6¸"Ò<Ð<Ð<Ð<Õ<Ô<Ð<Ð<Ð<Ð<Ð6¸"Ð<Ñ<Ô<Õ<Ô<Ð6Ñ<Ô<Õ<Ô<¸"Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<r#   c                 óú  — t          ¦   «         } |                      t          t          t          ¬¦  «        }|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|j        }d}||k    }|sªt          j        d|fd
||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚d	x}x}}d	S )us   Verify 100% reconciliation against the statutory 38-item procurement tender sheet (Biá»ƒu máº«u má»�i tháº§u.xlsx).rÀ   é&   r&   rÄ   rÅ   r)   r+   r,   NrÆ   r   rÇ   rÈ   rÉ   rÊ   rË   )r   râ   r   r   r   rã   r   r=   r   r   r   r   r   r   rä   rå   ræ   rç   )rî   rÅ   r   rO   r   rP   rQ   s          r!   Ú<test_tri_source_reconciliation_with_procurement_tender_sheetr  B  s¡  € å)Ñ+Ô+€GØ×2Ò2ÝÝ!Ý#ð 3ñ ô €Fð Ô%Ð+¨Ð+Ð%¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð%¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆ6Ñ+Ô+Ð+Õ+Ô+ˆ6Ñ+Ô+Ð+Ð+Õ+Ô+Ð%Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ%Ð+¨Ð+Ð%¨Ò+Ð+Ð+Ð+Õ+Ô+Ð+Ð+Ð+Ð+Ð%¨Ð+Ñ+Ô+Ð+Õ+Ô+Ñ+Ô+Ð+Ð+Õ+Ô+ˆ6Ñ+Ô+Ð+Õ+Ô+ˆ6Ñ+Ô+Ð+Ð+Õ+Ô+Ð%Ñ+Ô+Õ+Ô+¨Ñ+Ô+Ð+Ð+Ñ+Ð+Ð+Ð+Ð+Ð+Ñ+Ð+Õ+Õ+Ô+Ð+Ñ+Ô+Ñ+Ô+Ð+Ð+Ð+Ð+Ð+Ð+Ð+ØÔ)Ð.¨QÐ.Ð)¨QÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð)¨QÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ6Ñ.Ô.Ð.Õ.Ô.ˆ6Ñ.Ô.Ð.Ð.Õ.Ô.Ð)Ñ.Ô.Õ.Ô.¨QÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ*Ð1¨cÐ1Ð*¨cÒ1Ð1Ð1Ð1Õ1Ô1Ð1Ð1Ð1Ð1Ð*¨cÐ1Ñ1Ô1Ð1Õ1Ô1Ñ1Ô1Ð1Ð1Õ1Ô1ˆ6Ñ1Ô1Ð1Õ1Ô1ˆ6Ñ1Ô1Ð1Ð1Õ1Ô1Ð*Ñ1Ô1Õ1Ô1¨cÑ1Ô1Ð1Ð1Ñ1Ð1Ð1Ð1Ð1Ð1Ñ1Ð1Õ1Õ1Ô1Ð1Ñ1Ô1Ñ1Ô1Ð1Ð1Ð1Ð1Ð1Ð1Ð1ØÔ"Ð?Ð&?Ð?Ð"Ð&?Ò?Ð?Ð?Ð?Õ?Ô?Ð?Ð?Ð?Ð?Ð"Ð&?Ð?Ñ?Ô?Ð?Õ?Ô?Ñ?Ô?Ð?Ð?Õ?Ô?ˆ6Ñ?Ô?Ð?Õ?Ô?ˆ6Ñ?Ô?Ð?Ð?Õ?Ô?Ð"Ñ?Ô?Õ?Ô?Ð&?Ñ?Ô?Ð?Ð?Ñ?Ð?Ð?Ð?Ð?Ð?Ñ?Ð?Õ?Õ?Ô?Ð?Ñ?Ô?Ñ?Ô?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?Ð?r#   c                 óþ  — t          ¦   «         } |                      t          ¦  «        }|                      |¦  «        }|                      t          dd¬¦  «        }|                      |¦  «        }|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }	d
d|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}x}}|j        }d}||k    }|sªt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t          t          j        |¦  «        ¦  «        ‚dx}x}}|j        }|j        }||k    }|sèt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}|j        }|j        }||k    }|sèt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}|j        }|j        }||k    }|sèt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}|j        }|j        }||k    }|sèt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}|j        }|j        }||k    }|sèt          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dœz  }dd|iz  }	t          t          j        |	¦  «        ¦  «        ‚dx}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }	d
d|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}x}}|j        }d}t          |¦  «        }||k    }|�st          j        d|fd||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }	d
d|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}x}}|j        }d }t          |¦  «        }||k    }|�st          j        d|fd!||f¦  «        dt          j	        ¦   «         v st          j
        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        dt          j	        ¦   «         v st          j
        t
          ¦  «        rt          j        t
          ¦  «        ndt          j        |¦  «        t          j        |¦  «        d	œz  }	d
d|	iz  }
t          t          j        |
¦  «        ¦  «        ‚dx}x}x}}dS )"zcVerify that Inverse-BIM constraint solver dynamically computes quantities without hardcoded values.é   g      4@)r?   r  z60.0000r&   r3   Úscaled_modelr   r4   r7   r8   Nr2   r)   r+   r,   )ú!=)zl%(py2)s
{%(py2)s = %(py0)s.lean_concrete_volume_m3
} != %(py6)s
{%(py6)s = %(py4)s.lean_concrete_volume_m3
}Úscaled_solidsÚbase_solidsr—   r…   r6   )zz%(py2)s
{%(py2)s = %(py0)s.bottom_slab_concrete_volume_m3
} != %(py6)s
{%(py6)s = %(py4)s.bottom_slab_concrete_volume_m3
})zl%(py2)s
{%(py2)s = %(py0)s.wall_concrete_volume_m3
} != %(py6)s
{%(py6)s = %(py4)s.wall_concrete_volume_m3
})zt%(py2)s
{%(py2)s = %(py0)s.top_slab_concrete_volume_m3
} != %(py6)s
{%(py6)s = %(py4)s.top_slab_concrete_volume_m3
})zn%(py2)s
{%(py2)s = %(py0)s.larsen_pile_driving_100m
} != %(py6)s
{%(py6)s = %(py4)s.larsen_pile_driving_100m
}z20.4000r\   z51.0000r`   z37.5000rc   )r	   r;   r   re   r@   r   r   r=   r   r   r   r   r   r   r?   rf   rj   rl   rn   r{   )rN   Ú
base_modelr!  r  r   r   rT   rU   r   rV   rW   rO   rP   rQ   r›   s                  r!   Ú0test_parametric_constraint_scaling_non_hardcodedr#  R  sù  € å'Ñ)Ô)€Fà×6Ò6µ{ÑCÔC€JØ×5Ò5°jÑAÔA€Kð ×8Ò8ÝØØð 9ñ ô €Lð
 ×7Ò7¸ÑEÔE€MàÔ&Ð<°)Ð<­'°)Ñ*<Ô*<Ð<Ð&Ð*<Ò<Ð<Ð<Ñ<Õ<Ô<Ð<Ð<Ð<Ð<Ð&Ð*<Ð<Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<ˆ<Ñ<Ô<Ð<Õ<Ô<ˆ<Ñ<Ô<Ð<Ð<Õ<Ô<Ð&Ñ<Ô<Ð<Õ<Ô<Ñ<Ô<Ð<Ð<Õ<Ô<­'Ñ<Ô<Ð<Õ<Ô<­'Ñ<Ô<Ð<Ð<Õ<Ô<°)Ñ<Ô<Õ<Ô<Ð*<Ñ<Ô<Ð<Ð<Ñ<Ð<Ð<Ð<Ð<Ð<Ñ<Ð<Õ<Õ<Ô<Ð<Ñ<Ô<Ñ<Ô<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<Ð<ØÔ$Ð)¨Ð)Ð$¨Ò)Ð)Ð)Ð)Õ)Ô)Ð)Ð)Ð)Ð)Ð$¨Ð)Ñ)Ô)Ð)Õ)Ô)Ñ)Ô)Ð)Ð)Õ)Ô)ˆ<Ñ)Ô)Ð)Õ)Ô)ˆ<Ñ)Ô)Ð)Ð)Õ)Ô)Ð$Ñ)Ô)Õ)Ô)¨Ñ)Ô)Ð)Ð)Ñ)Ð)Ð)Ð)Ð)Ð)Ñ)Ð)Õ)Õ)Ô)Ð)Ñ)Ô)Ñ)Ô)Ð)Ð)Ð)Ð)Ð)Ð)Ð)ð Ô0ÐW°KÔ4WÐWÐ0Ð4WÒWÐWÐWÐWÕWÔWÐWÐWÐWÐWÐ0Ð4WÐWÑWÔWÐWÕWÔWÑWÔWÐWÐWÕWÔWˆ=ÑWÔWÐWÕWÔWˆ=ÑWÔWÐWÐWÕWÔWÐ0ÑWÔWÐWÕWÔWÑWÔWÐWÐWÕWÔW°KÑWÔWÐWÕWÔW°KÑWÔWÐWÐWÕWÔWÐ4WÑWÔWÐWÐWÑWÐWÐWÐWÐWÐWÑWÐWÕWÕWÔWÐWÑWÔWÑWÔWÐWÐWÐWÐWÐWÐWÐWØÔ7Ðe¸;Ô;eÐeÐ7Ð;eÒeÐeÐeÐeÕeÔeÐeÐeÐeÐeÐ7Ð;eÐeÑeÔeÐeÕeÔeÑeÔeÐeÐeÕeÔeˆ=ÑeÔeÐeÕeÔeˆ=ÑeÔeÐeÐeÕeÔeÐ7ÑeÔeÐeÕeÔeÑeÔeÐeÐeÕeÔe¸;ÑeÔeÐeÕeÔe¸;ÑeÔeÐeÐeÕeÔeÐ;eÑeÔeÐeÐeÑeÐeÐeÐeÐeÐeÑeÐeÕeÕeÔeÐeÑeÔeÑeÔeÐeÐeÐeÐeÐeÐeÐeØÔ0ÐW°KÔ4WÐWÐ0Ð4WÒWÐWÐWÐWÕWÔWÐWÐWÐWÐWÐ0Ð4WÐWÑWÔWÐWÕWÔWÑWÔWÐWÐWÕWÔWˆ=ÑWÔWÐWÕWÔWˆ=ÑWÔWÐWÐWÕWÔWÐ0ÑWÔWÐWÕWÔWÑWÔWÐWÐWÕWÔW°KÑWÔWÐWÕWÔW°KÑWÔWÐWÐWÕWÔWÐ4WÑWÔWÐWÐWÑWÐWÐWÐWÐWÐWÑWÐWÕWÕWÔWÐWÑWÔWÑWÔWÐWÐWÐWÐWÐWÐWÐWØÔ4Ð_¸Ô8_Ð_Ð4Ð8_Ò_Ð_Ð_Ð_Õ_Ô_Ð_Ð_Ð_Ð_Ð4Ð8_Ð_Ñ_Ô_Ð_Õ_Ô_Ñ_Ô_Ð_Ð_Õ_Ô_ˆ=Ñ_Ô_Ð_Õ_Ô_ˆ=Ñ_Ô_Ð_Ð_Õ_Ô_Ð4Ñ_Ô_Ð_Õ_Ô_Ñ_Ô_Ð_Ð_Õ_Ô_¸Ñ_Ô_Ð_Õ_Ô_¸Ñ_Ô_Ð_Ð_Õ_Ô_Ð8_Ñ_Ô_Ð_Ð_Ñ_Ð_Ð_Ð_Ð_Ð_Ñ_Ð_Õ_Õ_Ô_Ð_Ñ_Ô_Ñ_Ô_Ð_Ð_Ð_Ð_Ð_Ð_Ð_ØÔ1ÐY°[Ô5YÐYÐ1Ð5YÒYÐYÐYÐYÕYÔYÐYÐYÐYÐYÐ1Ð5YÐYÑYÔYÐYÕYÔYÑYÔYÐYÐYÕYÔYˆ=ÑYÔYÐYÕYÔYˆ=ÑYÔYÐYÐYÕYÔYÐ1ÑYÔYÐYÕYÔYÑYÔYÐYÐYÕYÔY°[ÑYÔYÐYÕYÔY°[ÑYÔYÐYÐYÕYÔYÐ5YÑYÔYÐYÐYÑYÐYÐYÐYÐYÐYÑYÐYÕYÕYÔYÐYÑYÔYÑYÔYÐYÐYÐYÐYÐYÐYÐYð Ô0ÐF¸IÐFµG¸IÑ4FÔ4FÐFÐ0Ð4FÒFÐFÐFÑFÕFÔFÐFÐFÐFÐFÐ0Ð4FÐFÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔFˆ=ÑFÔFÐFÕFÔFˆ=ÑFÔFÐFÐFÕFÔFÐ0ÑFÔFÐFÕFÔFÑFÔFÐFÐFÕFÔFµGÑFÔFÐFÕFÔFµGÑFÔFÐFÐFÕFÔF¸IÑFÔFÕFÔFÐ4FÑFÔFÐFÐFÑFÐFÐFÐFÐFÐFÑFÐFÕFÕFÔFÐFÑFÔFÑFÔFÐFÐFÐFÐFÐFÐFÐFÐFÐFàÔ7ÐMÀ9ÐM½7À9Ñ;MÔ;MÐMÐ7Ð;MÒMÐMÐMÑMÕMÔMÐMÐMÐMÐMÐ7Ð;MÐMÑMÔMÐMÕMÔMÑMÔMÐMÐMÕMÔMˆ=ÑMÔMÐMÕMÔMˆ=ÑMÔMÐMÐMÕMÔMÐ7ÑMÔMÐMÕMÔMÑMÔMÐMÐMÕMÔM½7ÑMÔMÐMÕMÔM½7ÑMÔMÐMÐMÕMÔMÀ9ÑMÔMÕMÔMÐ;MÑMÔMÐMÐMÑMÐMÐMÐMÐMÐMÑMÐMÕMÕMÔMÐMÑMÔMÑMÔMÐMÐMÐMÐMÐMÐMÐMÐMÐMàÔ4ÐJÀ	ÐJ½À	Ñ8JÔ8JÐJÐ4Ð8JÒJÐJÐJÑJÕJÔJÐJÐJÐJÐJÐ4Ð8JÐJÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJˆ=ÑJÔJÐJÕJÔJˆ=ÑJÔJÐJÐJÕJÔJÐ4ÑJÔJÐJÕJÔJÑJÔJÐJÐJÕJÔJ½ÑJÔJÐJÕJÔJ½ÑJÔJÐJÐJÕJÔJÀ	ÑJÔJÕJÔJÐ8JÑJÔJÐJÐJÑJÐJÐJÐJÐJÐJÑJÐJÕJÕJÔJÐJÑJÔJÑJÔJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJÐJr#   c            	     ó4  — t          ¦   «         } t          ¦   «         }|                     t          ¦  «        }|                     |¦  «        }|                      t          ¦  «        }ddddt          d¦  «        t          d¦  «        t          d¦  «        dœg}|                      |||¬¦  «        }|j	        }d	}||k    }	|	sªt          j        d
|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t!          t          j        |¦  «        ¦  «        ‚dx}x}	}|j        }d}||k    }	|	sªt          j        d
|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t!          t          j        |¦  «        ¦  «        ‚dx}x}	}|j        }d}||k    }	|	sªt          j        d
|	fd||f¦  «        dt          j        ¦   «         v st          j        |¦  «        rt          j        |¦  «        ndt          j        |¦  «        t          j        |¦  «        dœz  }
dd|
iz  }t!          t          j        |¦  «        ¦  «        ‚dx}x}	}|j        d         }|j        }d}||k    }|st          j        d
|fd||f¦  «        t          j        |¦  «        t          j        |¦  «        t          j        |¦  «        dœz  }dd|iz  }t!          t          j        |¦  «        ¦  «        ‚dx}x}x}}dS )zcVerify that unmapped HSMT items are marked REFERENCE_ONLY and do not falsely inflate matched_count.iç  zCUSTOM.UNKNOWNuB   CÃ´ng tÃ¡c thÃ­ nghiá»‡m hiá»‡n trÆ°á»�ng khÃ´ng Ä‘o bÃ³c tá»« CADu   gÃ³iz1.0000z50000000.00)r¤   r«   Ú	item_namer©   r¬   Úbid_rater®   rò   r¥   r&   rÄ   rÅ   r)   r+   r,   Nr   rÆ   rÇ   ÚREFERENCE_ONLYrø   rù   r…   r6   )r
   r	   r;   r   re   r˜   r   r   rü   rã   r   r=   r   r   r   r   r   r   rä   rå   rè   rì   )rš   rN   r(   r]   rƒ   Ú	fake_hsmtrÅ   r   rO   r   rP   rQ   rR   rS   rT   r›   rV   s                    r!   Ú*test_unmapped_item_handling_reference_onlyr)  s  s/  € å$Ñ&Ô&€FÝ'Ñ)Ô)€FØ×1Ò1µ+Ñ>Ô>€EØ×0Ò0°Ñ7Ô7€FØ×+Ò+­NÑ;Ô;€Ið Ø)Ø]ØÝ Ñ)Ô)Ý Ñ.Ô.Ý# MÑ2Ô2ð	
ð 	
ð
€Ið ×(Ò(ØØØð )ñ ô €Fð Ô%Ð*¨Ð*Ð%¨Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð%¨Ð*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆ6Ñ*Ô*Ð*Õ*Ô*ˆ6Ñ*Ô*Ð*Ð*Õ*Ô*Ð%Ñ*Ô*Õ*Ô*¨Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÔ%Ð*¨Ð*Ð%¨Ò*Ð*Ð*Ð*Õ*Ô*Ð*Ð*Ð*Ð*Ð%¨Ð*Ñ*Ô*Ð*Õ*Ô*Ñ*Ô*Ð*Ð*Õ*Ô*ˆ6Ñ*Ô*Ð*Õ*Ô*ˆ6Ñ*Ô*Ð*Ð*Õ*Ô*Ð%Ñ*Ô*Õ*Ô*¨Ñ*Ô*Ð*Ð*Ñ*Ð*Ð*Ð*Ð*Ð*Ñ*Ð*Õ*Õ*Ô*Ð*Ñ*Ô*Ñ*Ô*Ð*Ð*Ð*Ð*Ð*Ð*Ð*ØÔ)Ð.¨QÐ.Ð)¨QÒ.Ð.Ð.Ð.Õ.Ô.Ð.Ð.Ð.Ð.Ð)¨QÐ.Ñ.Ô.Ð.Õ.Ô.Ñ.Ô.Ð.Ð.Õ.Ô.ˆ6Ñ.Ô.Ð.Õ.Ô.ˆ6Ñ.Ô.Ð.Ð.Õ.Ô.Ð)Ñ.Ô.Õ.Ô.¨QÑ.Ô.Ð.Ð.Ñ.Ð.Ð.Ð.Ð.Ð.Ñ.Ð.Õ.Õ.Ô.Ð.Ñ.Ô.Ñ.Ô.Ð.Ð.Ð.Ð.Ð.Ð.Ð.ØÔ& qÔ)ÐDÐ)Ô0ÐDÐ4DÐDÐ0Ð4DÒDÐDÐDÐDÕDÔDÐDÐDÐDÐDÐ0Ð4DÐDÑDÔDÕDÔDÐ)ÑDÔDÕDÔDÐ0ÑDÔDÕDÔDÐ4DÑDÔDÐDÐDÑDÐDÐDÐDÐDÐDÑDÐDÕDÕDÔDÐDÑDÔDÑDÔDÐDÐDÐDÐDÐDÐDÐDÐDÐDÐDÐDr#   ))Ú__doc__Ú
__future__r   Úbuiltinsr   Ú_pytest.assertion.rewriteÚ	assertionÚrewriter   Údecimalr   Úpathlibr   Úfastapi.testclientr   Úapp.mainr   Ú7app.modules.takeoff.application.drawing_takeoff_servicer   Ú=app.modules.takeoff.application.inverse_bim_constraint_solverr	   Ú:app.modules.takeoff.application.tri_source_truth_groundingr
   r  r  r   r   r   r   r   r"   rY   r   r    r¾   rð   r  r  r  r#  r)  r‡   r#   r!   ú<module>r7     s	  ððð ð #Ð "Ð "Ð "Ð "Ð "à  € € € € € € € € € € € € Ð Ð Ð Ð Ð Ð Ø Ð Ð Ð Ð Ð à )Ð )Ð )Ð )Ð )Ð )à Ð Ð Ð Ð Ð ðð ð ð ð ð ðð ð ð ð ð ðð ð ð ð ð ð 
ˆ�J�J‘L”LÑ	!Ô	!€ØÐ!8Ð9€àˆtÐgÑhÔh€ØÐVÑV€ØÐ \Ñ\€ØÐ!\Ñ\€ØÐ!OÑO€ð_ð _ð _ð1ð 1ð 1ð4+;ð +;ð +;ð\1ð 1ð 1ð<Gð Gð Gð I)ð I)ð I)ðX!Vð !Vð !VðH*=ð *=ð *=ðZ@ð @ð @ð Kð Kð KðBEð Eð Eð Eð Er#   