cooptools 1.64__tar.gz → 1.65__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {cooptools-1.64 → cooptools-1.65}/PKG-INFO +1 -1
- {cooptools-1.64 → cooptools-1.65}/cooptools/decor.py +39 -7
- {cooptools-1.64 → cooptools-1.65}/cooptools.egg-info/PKG-INFO +1 -1
- {cooptools-1.64 → cooptools-1.65}/setup.py +1 -1
- {cooptools-1.64 → cooptools-1.65}/MANIFEST.in +0 -0
- {cooptools-1.64 → cooptools-1.65}/README.md +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/anchor.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/asyncable.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/cli/CliAtomicUserInteraction.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/cli/CliMenu.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/cli/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/cli/fileContentReturn.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/cnxn_info.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/colors.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/commandDesignPattern/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/commandDesignPattern/commandController.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/commandDesignPattern/commandProtocol.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/commandDesignPattern/exceptions.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/common.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/config.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/coopDataclass.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/coopEnum.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/coopthreading.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/currency.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/dataRefresher/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/dataRefresher/dataHub.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/dataRefresher/dataRefresher.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/dataStore/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/dataStore/dataProcessor.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/dataStore/dataStoreProtocol.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/dataStore/dbConnectionURI.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/dataStore/inMemoryDataStore.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/date_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/decay.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/dictPolicies.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/exceptions.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/expertise/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/expertise/expertiseArgs.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/expertise/expertiseSchedules.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/finance/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/finance/dicounted_cashflow_analysis.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/finance/fund_projection.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/finance/fund_projection_renderer.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/finance/futureValueProjector.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/finance/growth_projections.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/finance/reports.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/finance/utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/geometry_utils/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/geometry_utils/circle_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/geometry_utils/common.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/geometry_utils/curve_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/geometry_utils/line_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/geometry_utils/polygon_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/geometry_utils/rect_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/geometry_utils/triangle_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/geometry_utils/vector_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/graphs/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/graphs/astar_results_viewer.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/graphs/draw.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/graphs/graph.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/graphs/graph_dcs.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/graphs/graph_definitions.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/graphs/utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/ideas/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/ideas/actionItemTracker/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/ideas/actionItemTracker/ai_tracker.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/ideas/actionItemTracker/dcs.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/ideas/discreteEventSimulator/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/ideas/discreteEventSimulator/discreteEventSimulator.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/ideas/jsonIO.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/ideas/metrics.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/ideas/triggerActionSystem/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/ideas/triggerActionSystem/signal.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/ideas/triggerActionSystem/trigger.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/loggingHelpers.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/marchingSquares.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/materialHandling/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/materialHandling/cli.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/materialHandling/dcs.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/materialHandling/selectionCriteria.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/matrixManipulation.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/os_manip.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/pandasHelpers.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/physics/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/physics/demo/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/physics/demo/server.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/physics/kinematic.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/physics/kinematic_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/physics/movement.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/physics/trajectory.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/physics/waypoint.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/physics/waypointFollower.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/plotting.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/printing.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/protocols.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/qualifiers/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/qualifiers/cli.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/qualifiers/qualifier.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/randoms.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/register.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/reservation/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/reservation/dcs.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/reservation/enums.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/reservation/reservationmanager.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/retry.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/sectors/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/sectors/grids/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/sectors/grids/gridState.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/sectors/grids/grid_base.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/sectors/grids/hexGrid.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/sectors/grids/rectGrid.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/sectors/hex_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/sectors/sect_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/sectors/sectorTree/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/sectors/sectorTree/sectorTree.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/statistics/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/statistics/activityReport.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/statistics/controlChart/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/statistics/controlChart/controlChart.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/statistics/controlChart/plotting.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/statistics/oee/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/statistics/oee/oeeHub.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/taskProcessing/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/taskProcessing/dcs.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/taskProcessing/taskProcessor.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/timeTracker/__init__.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/timeTracker/decay.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/timeTracker/timeTracker.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/timeWindow.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/toggles.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/transform.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/trends.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/typeProviders.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/typevalidation.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools/version.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools.egg-info/SOURCES.txt +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools.egg-info/dependency_links.txt +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools.egg-info/not-zip-safe +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools.egg-info/requires.txt +0 -0
- {cooptools-1.64 → cooptools-1.65}/cooptools.egg-info/top_level.txt +0 -0
- {cooptools-1.64 → cooptools-1.65}/requirements.txt +0 -0
- {cooptools-1.64 → cooptools-1.65}/setup.cfg +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_CliAtomicUserInteraction.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_asyncable.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_cdp_bugs.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_commandDesignPattern.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_common.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_config.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_coopEnum.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_currency.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_date_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_fund_projection.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_kinematic.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_kinematic_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_os_manip.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_pandas.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_printing.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_qualifiers.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_sectors.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_sectors_hex.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_sectors_sectorTree.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_statistics.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_tasks.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_toggles.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_trajectory.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_trends.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_typevalidation.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_vector_utils.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_version.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/test_waypointFollower.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/tests_graph.py +0 -0
- {cooptools-1.64 → cooptools-1.65}/tests/tests_gridsystem.py +0 -0
|
@@ -2,7 +2,8 @@ import functools
|
|
|
2
2
|
import time
|
|
3
3
|
import logging
|
|
4
4
|
import inspect
|
|
5
|
-
|
|
5
|
+
import threading
|
|
6
|
+
from typing import Protocol, Dict, Optional
|
|
6
7
|
from typing_extensions import runtime_checkable
|
|
7
8
|
|
|
8
9
|
@runtime_checkable
|
|
@@ -15,6 +16,22 @@ class TimeableProtocol(Protocol):
|
|
|
15
16
|
|
|
16
17
|
TIMEABLE_LOOKUPATTR = "_timeable"
|
|
17
18
|
|
|
19
|
+
# ---------------------------------------------------------------------------
|
|
20
|
+
# Thread-local call stack — tracks the currently executing @timer chain so
|
|
21
|
+
# each invocation knows its parent function. Push before calling func, pop
|
|
22
|
+
# after (even on exception) so the stack stays consistent.
|
|
23
|
+
# ---------------------------------------------------------------------------
|
|
24
|
+
|
|
25
|
+
_call_stack_local = threading.local()
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def get_call_stack() -> list:
|
|
29
|
+
"""Return the current thread's timer call stack (mutable live reference)."""
|
|
30
|
+
if not hasattr(_call_stack_local, 'stack'):
|
|
31
|
+
_call_stack_local.stack = []
|
|
32
|
+
return _call_stack_local.stack
|
|
33
|
+
|
|
34
|
+
|
|
18
35
|
def try_handler(logger: logging.Logger = None):
|
|
19
36
|
def wrapper(func):
|
|
20
37
|
@functools.wraps(func)
|
|
@@ -32,7 +49,8 @@ def try_handler(logger: logging.Logger = None):
|
|
|
32
49
|
return wrapper
|
|
33
50
|
|
|
34
51
|
|
|
35
|
-
def update_ttc_values(ttc: TimeableProtocol, func_name: str, run_time: float
|
|
52
|
+
def update_ttc_values(ttc: TimeableProtocol, func_name: str, run_time: float,
|
|
53
|
+
parent: Optional[str] = None):
|
|
36
54
|
#update counter
|
|
37
55
|
ttc.ns.setdefault(func_name, 0)
|
|
38
56
|
ttc.ns[func_name] += 1
|
|
@@ -55,6 +73,10 @@ def update_ttc_values(ttc: TimeableProtocol, func_name: str, run_time: float):
|
|
|
55
73
|
my_avg = ttc.internally_tracked_times[func_name] / ttc.ns[func_name]
|
|
56
74
|
ttc.avgs[func_name] = my_avg
|
|
57
75
|
|
|
76
|
+
# Record call-chain parent once (hierarchy is static; first writer wins).
|
|
77
|
+
if parent is not None and hasattr(ttc, 'parents'):
|
|
78
|
+
ttc.parents.setdefault(func_name, parent)
|
|
79
|
+
|
|
58
80
|
|
|
59
81
|
def timer(logger: logging.Logger = None,
|
|
60
82
|
log_level: int = logging.DEBUG,
|
|
@@ -68,11 +90,20 @@ def timer(logger: logging.Logger = None,
|
|
|
68
90
|
|
|
69
91
|
@functools.wraps(func)
|
|
70
92
|
def wrapper_timer(*args, **kwargs):
|
|
71
|
-
#
|
|
93
|
+
# Push to call stack before executing so nested @timer calls see us
|
|
94
|
+
# as their parent. Pop in finally so the stack stays consistent
|
|
95
|
+
# even if func raises.
|
|
96
|
+
_stack = get_call_stack()
|
|
97
|
+
_parent: Optional[str] = _stack[-1] if _stack else None
|
|
98
|
+
_stack.append(func.__name__)
|
|
99
|
+
|
|
72
100
|
start_time = time.perf_counter() # 1
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
101
|
+
try:
|
|
102
|
+
value = func(*args, **kwargs)
|
|
103
|
+
finally:
|
|
104
|
+
end_time = time.perf_counter() # 2
|
|
105
|
+
run_time = end_time - start_time # 3
|
|
106
|
+
_stack.pop()
|
|
76
107
|
|
|
77
108
|
ttc = None
|
|
78
109
|
|
|
@@ -96,7 +127,8 @@ def timer(logger: logging.Logger = None,
|
|
|
96
127
|
if ttc is None:
|
|
97
128
|
return value
|
|
98
129
|
|
|
99
|
-
update_ttc_values(ttc, func_name=func.__name__, run_time=run_time
|
|
130
|
+
update_ttc_values(ttc, func_name=func.__name__, run_time=run_time,
|
|
131
|
+
parent=_parent)
|
|
100
132
|
end_time2 = time.perf_counter()
|
|
101
133
|
timer_runtime = end_time2 - end_time
|
|
102
134
|
update_ttc_values(ttc, func_name=TIMEABLE_LOOKUPATTR, run_time=timer_runtime)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{cooptools-1.64 → cooptools-1.65}/cooptools/ideas/discreteEventSimulator/discreteEventSimulator.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|