<table border="1" cellspacing="0" cellpadding="8">
    <tr>
        <th>Issue</th>
        <td>
            <a href=https://github.com/llvm/llvm-project/issues/122076>122076</a>
        </td>
    </tr>

    <tr>
        <th>Summary</th>
        <td>
            [Mlir] --int-range-optimizations crashes in StorageUniquerSupport.h:180
        </td>
    </tr>

    <tr>
      <th>Labels</th>
      <td>
            mlir
      </td>
    </tr>

    <tr>
      <th>Assignees</th>
      <td>
      </td>
    </tr>

    <tr>
      <th>Reporter</th>
      <td>
          Emilyaxe
      </td>
    </tr>
</table>

<pre>
    git version: e4372c4454c9

system: `Ubuntu 18.04.6 LTS`

reproduce with: `mlir-opt a.mlir --int-range-optimizations`

a.mlir: 
``` 
module {
 llvm.mlir.global private constant @assert_msg_23(dense<"0x4552524F523A2052756E74696D65206F7020766572696669636174696F6E206661696C65640A226C696E616C672E67656E657269632228253234372C202536342C202538342C202533323529203C7B696E646578696E675F6D617073203D205B616666696E655F6D61703C2864302C20643129202D3E202864302C206431293E2C20616666696E655F6D61703C2864302C20643129202D3E202864302C206431293E2C20616666696E655F6D61703C2864302C20643129202D3E202864302C206431293E2C20616666696E655F6D61703C2864302C20643129202D3E202864302C206431293E5D2C206974657261746F725F7479706573203D205B236C696E616C672E6974657261746F725F747970653C706172616C6C656C3E2C20236C696E616C672E6974657261746F725F747970653C706172616C6C656C3E5D2C206F706572616E645365676D656E7453697A6573203D2061727261793C6933323A20332C20313E7D3E20287B2E2E2E7D29203A20286D656D7265663C32347832397869313E2C206D656D7265663C3234783239786933323E2C206D656D7265663C3234783239786933323E2C206D656D7265663C3234783239786933323E29202D3E2028290A5E20756E6578706563746564206E6567617469766520726573756C74206F6E2064696D656E73696F6E202330206F6620696E7075742F6F7574707574206F706572616E642023310A4C6F636174696F6E3A206C6F6328222F646174612F737A792F776F726B73706163652F6D6C69722D696E636F6E73697374656E742F73616D706C655F746D702F746F73612E2E363137646638616565663139373631312E6D6C69722F746F73612E2E363137646638616565663139373631312E6D6C69722E2E363335373532326566633662623465632E6D6C6972223A3434333A352900"> : tensor<674xi8>) {addr_space = 0 : i32} : !llvm.array<674 x i8>
  llvm.func @abort()
  llvm.func @puts(!llvm.ptr)
 llvm.mlir.global private constant @assert_msg(dense<"0x4552524F523A2052756E74696D65206F7020766572696669636174696F6E206661696C65640A226C696E616C672E67656E6572696322282539342C202531383329203C7B696E646578696E675F6D617073203D205B616666696E655F6D61703C2864302C20643129202D3E202864302C206431293E2C20616666696E655F6D61703C2864302C20643129202D3E202864302C206431293E5D2C206974657261746F725F7479706573203D205B236C696E616C672E6974657261746F725F747970653C706172616C6C656C3E2C20236C696E616C672E6974657261746F725F747970653C706172616C6C656C3E5D2C206F706572616E645365676D656E7453697A6573203D2061727261793C6933323A20312C20313E7D3E20287B2E2E2E7D29203A20286D656D7265663C3234783239786933323E2C206D656D7265663C3234783239786933323E29202D3E2028290A5E20756E6578706563746564206E6567617469766520726573756C74206F6E2064696D656E73696F6E202330206F6620696E7075742F6F7574707574206F706572616E642023300A4C6F636174696F6E3A206C6F6328222F646174612F737A792F776F726B73706163652F6D6C69722D696E636F6E73697374656E742F73616D706C655F746D702F746F73612E2E363137646638616565663139373631312E6D6C69722F746F73612E2E363137646638616565663139373631312E6D6C69722E2E363335373532326566633662623465632E6D6C6972223A3337333A352900"> : tensor<558xi8>) {addr_space = 0 : i32} : !llvm.array<558 x i8>
  llvm.func @malloc(i64) -> !llvm.ptr
  func.func @func2(%arg0: memref<1x24x29xi32, strided<[?, ?, ?], offset: ?>>, %arg1: memref<1x24x29xi32, strided<[?, ?, ?], offset: ?>>, %arg2: memref<1x24x29xi32, strided<[?, ?, ?], offset: ?>>) -> memref<1x24x29xi32> {
    %c29 = arith.constant 29 : index
    %c1 = arith.constant 1 : index
    %c24 = arith.constant 24 : index
    %c0 = arith.constant 0 : index
    %0 = llvm.mlir.constant(true) : i1
    %1 = llvm.mlir.constant(64 : index) : i64
    %6 = llvm.mlir.undef : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)>
    %14 = llvm.mlir.constant(0 : index) : i64
    %20 = llvm.mlir.constant(24 : index) : i64
    %21 = llvm.mlir.constant(29 : index) : i64
    %22 = llvm.mlir.constant(1 : index) : i64
    %23 = llvm.mlir.constant(696 : index) : i64
    %24 = llvm.mlir.zero : !llvm.ptr
    %96 = llvm.getelementptr %24[696] : (!llvm.ptr) -> !llvm.ptr, i32
    %97 = llvm.ptrtoint %96 : !llvm.ptr to i64
    %98 = llvm.add %97, %1 : i64
 %99 = llvm.call @malloc(%98) : (i64) -> !llvm.ptr
    %100 = llvm.ptrtoint %99 : !llvm.ptr to i64
    %101 = llvm.sub %1, %22 : i64
    %102 = llvm.add %100, %101 : i64
    %103 = llvm.urem %102, %1 : i64
    %104 = llvm.sub %102, %103 : i64
    %105 = llvm.inttoptr %104 : i64 to !llvm.ptr
 %106 = llvm.insertvalue %99, %6[0] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %107 = llvm.insertvalue %105, %106[1] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %108 = llvm.insertvalue %14, %107[2] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %109 = llvm.insertvalue %22, %108[3, 0] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %110 = llvm.insertvalue %20, %109[3, 1] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %111 = llvm.insertvalue %21, %110[3, 2] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %112 = llvm.insertvalue %23, %111[4, 0] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %113 = llvm.insertvalue %21, %112[4, 1] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %114 = llvm.insertvalue %22, %113[4, 2] : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> 
    %119 = builtin.unrealized_conversion_cast %114 : !llvm.struct<(ptr, ptr, i64, array<3 x i64>, array<3 x i64>)> to memref<1x24x29xi32>
    %collapse_shape = memref.collapse_shape %119 [[0, 1], [2]] : memref<1x24x29xi32> into memref<24x29xi32>
    %120 = builtin.unrealized_conversion_cast %collapse_shape : memref<24x29xi32> to !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
 llvm.cond_br %0, ^bb72, ^bb81
   ^bb72:  // pred: ^bb71
 %collapse_shape_3 = memref.collapse_shape %119 [[0, 1], [2]] : memref<1x24x29xi32> into memref<24x29xi32>
    %211 = builtin.unrealized_conversion_cast %collapse_shape_3 : memref<24x29xi32> to !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)>
 llvm.cond_br %0, ^bb80, ^bb105
  ^bb80:  // pred: ^bb79
    %213 = scf.while (%arg3 = %c0) : (index) -> index {
      %374 = arith.cmpi slt, %arg3, %c24 : index
      scf.condition(%374) %arg3 : index
    } do {
 ^bb0(%arg3: index):
      %374 = arith.addi %arg3, %c1 : index
      %375 = builtin.unrealized_conversion_cast %arg3 : index to i64
      %376 = scf.while (%arg4 = %c0) : (index) -> index {
        %true = arith.constant true
        scf.condition(%true) %arg4 : index
      } do {
 ^bb0(%arg4: index):
        scf.yield %arg4 : index
      }
      %377 = scf.while (%arg4 = %c0) : (index) -> index {
        %378 = arith.cmpi slt, %arg4, %c29 : index
        scf.condition(%378) %arg4 : index
      } do {
      ^bb0(%arg4: index):
        %378 = arith.addi %arg4, %c1 : index
 %379 = builtin.unrealized_conversion_cast %arg4 : index to i64
 %380 = llvm.mul %375, %21 : i64
        %381 = llvm.add %380, %379 : i64
 %382 = llvm.getelementptr %105[%381] : (!llvm.ptr, i64) -> !llvm.ptr, f32
        %383 = llvm.load %382 : !llvm.ptr -> f32
        %384 = llvm.intr.exp(%383) : (f32) -> f32
        %385 = llvm.extractvalue %211[1] : !llvm.struct<(ptr, ptr, i64, array<2 x i64>, array<2 x i64>)> 
 %386 = llvm.mul %375, %21 : i64
        %387 = llvm.add %386, %379 : i64
 %388 = llvm.getelementptr %385[%387] : (!llvm.ptr, i64) -> !llvm.ptr, f32
        llvm.store %384, %388 : f32, !llvm.ptr
        scf.yield %378 : index
      }
      scf.yield %374 : index
    }
    return %119 : memref<1x24x29xi32>
  ^bb81:  // pred: ^bb0
    %214 = llvm.mlir.addressof @assert_msg : !llvm.ptr
    %215 = llvm.getelementptr %214[0] : (!llvm.ptr) -> !llvm.ptr, !llvm.array<558 x i8>
    llvm.call @puts(%215) : (!llvm.ptr) -> ()
    llvm.call @abort() : () -> ()
  llvm.unreachable
  ^bb105:  // pred: ^bb24
    %262 = llvm.mlir.addressof @assert_msg_23 : !llvm.ptr
 %263 = llvm.getelementptr %262[0] : (!llvm.ptr) -> !llvm.ptr, !llvm.array<674 x i8>
    llvm.call @puts(%263) : (!llvm.ptr) -> ()
    llvm.call @abort() : () -> ()
    llvm.unreachable
  }
}
``` 
stack trace:

``` 
mlir-opt: /data/szy/MLIR/llvm-release/llvm-project/mlir/include/mlir/IR/StorageUniquerSupport.h:180: static ConcreteT mlir::detail::StorageUserBase<mlir::IntegerAttr, mlir::Attribute, mlir::detail::IntegerAttrStorage, mlir::detail::AttributeUniquer, mlir::TypedAttr::Trait>::get(MLIRContext *, Args &&...) [ConcreteT = mlir::IntegerAttr, BaseT = mlir::Attribute, StorageT = mlir::detail::IntegerAttrStorage, UniquerT = mlir::detail::AttributeUniquer, Traits = <mlir::TypedAttr::Trait>, Args = <mlir::Type &, const llvm::APInt &>]: Assertion `succeeded( ConcreteT::verifyInvariants(getDefaultDiagnosticEmitFn(ctx), args...))' failed.
PLEASE submit a bug report to https://github.com/llvm/llvm-project/issues/ and include the crash backtrace.
Stack dump:
0.      Program arguments: /data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt a.mlir --int-range-optimizations
 #0 0x00005617973d5ce8 llvm::sys::PrintStackTrace(llvm::raw_ostream&, int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11f2ce8)
 #1 0x00005617973d37fe llvm::sys::RunSignalHandlers() (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11f07fe)
 #2 0x00005617973d667d SignalHandler(int) Signals.cpp:0:0
 #3 0x00007f078bb4c420 __restore_rt (/lib/x86_64-linux-gnu/libpthread.so.0+0x14420)
 #4 0x00007f078b18900b raise /build/glibc-LcI20x/glibc-2.31/signal/../sysdeps/unix/sysv/linux/raise.c:51:1
 #5 0x00007f078b168859 abort /build/glibc-LcI20x/glibc-2.31/stdlib/abort.c:81:7
 #6 0x00007f078b168729 get_sysdep_segment_value /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:509:8
 #7 0x00007f078b168729 _nl_load_domain /build/glibc-LcI20x/glibc-2.31/intl/loadmsgcat.c:970:34
 #8 0x00007f078b179fd6 (/lib/x86_64-linux-gnu/libc.so.6+0x33fd6)
 #9 0x000056179a414001 (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4231001)
#10 0x000056179a413e7f mlir::IntegerAttr::get(mlir::Type, llvm::APInt const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4230e7f)
#11 0x0000561797700de7 maybeReplaceWithConstant(mlir::DataFlowSolver&, mlir::PatternRewriter&, mlir::Value) IntRangeOptimizations.cpp:0:0
#12 0x00005617976ff850 (anonymous namespace)::MaterializeKnownConstantValues::rewrite(mlir::Operation*, mlir::PatternRewriter&) const IntRangeOptimizations.cpp:0:0
#13 0x0000561797700bc7 mlir::RewritePattern::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&) const (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x151dbc7)
#14 0x000056179d44fd31 void llvm::function_ref<void ()>::callback_fn<mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>)::$_0>(long) PatternApplicator.cpp:0:0
#15 0x000056179d44ca51 mlir::PatternApplicator::matchAndRewrite(mlir::Operation*, mlir::PatternRewriter&, llvm::function_ref<bool (mlir::Pattern const&)>, llvm::function_ref<void (mlir::Pattern const&)>, llvm::function_ref<llvm::LogicalResult (mlir::Pattern const&)>) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x7269a51)
#16 0x000056179a3a8feb (anonymous namespace)::GreedyPatternRewriteDriver::processWorklist() GreedyPatternRewriteDriver.cpp:0:0
#17 0x000056179a3a59af mlir::applyPatternsGreedily(mlir::Region&, mlir::FrozenRewritePatternSet const&, mlir::GreedyRewriteConfig, bool*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41c29af)
#18 0x0000561797705058 (anonymous namespace)::IntRangeOptimizationsPass::runOnOperation() IntRangeOptimizations.cpp:0:0
#19 0x000056179a330496 mlir::detail::OpToOpPassAdaptor::run(mlir::Pass*, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414d496)
#20 0x000056179a330dc0 mlir::detail::OpToOpPassAdaptor::runPipeline(mlir::OpPassManager&, mlir::Operation*, mlir::AnalysisManager, bool, unsigned int, mlir::PassInstrumentor*, mlir::PassInstrumentation::PipelineParentInfo const*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x414ddc0)
#21 0x000056179a3336c2 mlir::PassManager::run(mlir::Operation*) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41506c2)
#22 0x000056179a32baea performActions(llvm::raw_ostream&, std::shared_ptr<llvm::SourceMgr> const&, mlir::MLIRContext*, mlir::MlirOptMainConfig const&) MlirOptMain.cpp:0:0
#23 0x000056179a32b73d llvm::LogicalResult llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>::callback_fn<mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&)::$_0>(long, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&) MlirOptMain.cpp:0:0
#24 0x000056179a3d2785 mlir::splitAndProcessBuffer(std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::function_ref<llvm::LogicalResult (std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, llvm::raw_ostream&)>, llvm::raw_ostream&, llvm::StringRef, llvm::StringRef) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41ef785)
#25 0x000056179a325755 mlir::MlirOptMain(llvm::raw_ostream&, std::unique_ptr<llvm::MemoryBuffer, std::default_delete<llvm::MemoryBuffer>>, mlir::DialectRegistry&, mlir::MlirOptMainConfig const&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4142755)
#26 0x000056179a3259ff mlir::MlirOptMain(int, char**, llvm::StringRef, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x41429ff)
#27 0x000056179a325d2e mlir::MlirOptMain(int, char**, llvm::StringRef, mlir::DialectRegistry&) (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x4142d2e)
#28 0x00005617973b4a67 main (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11d1a67)
#29 0x00007f078b16a083 __libc_start_main /build/glibc-LcI20x/glibc-2.31/csu/../csu/libc-start.c:342:3
#30 0x00005617973b45de _start (/data/szy/MLIR/llvm-release/llvm-project/build/bin/mlir-opt+0x11d15de)

``` 
</pre>
<img width="1" height="1" alt="" src="http://email.email.llvm.org/o/eJzsXEtz27iW_jX0hmUVCBAAufCC1mMmNUklFefOXaogEpQxTZEcAHTs_PopAKT4kCg7D6Xn9u3qdEwBOAffeR-AiplSYl9yfufhew-vblijHyt5tz6I4oU985tdlb3c7YX2n7hUoio9lPg8RBSmYYjDNPZA4oFEvSjND2bOI-Afu6bUjR9ECxAuiP_-y4NHgFsneS2rrEm5_1Xox3b9oRDytqq1zxbm0b-9FaW-lazcczMsDuIb06Iq1ZGNW2jJQWJG7R_z4VBlTcF9j957IPGL4ulgly72RbVjhV9L8cQ099OqVJqV2vdCwJTiUm8Par-FyINRxkvFPbT0IATPIcYQw3CDIUogwJBisqYhicmKYAjIhgIIKCGYQhITQmKCSGDnN2QNASEkIDFZEkxCkEBIliQmaxKQJaFwTSjBZN3SIghhBDGCyCh3CQHEiKCwfYqOTwhBhGEMAVrSe8stJJhG9oniDVmRgAKKIEArCPA9CQixuNYEd7NoCSMSImA4khAFhhtcoTUE03G0ts9_ER54ZT_FNLQ6N3baUIg3NKQxBQT3WoNoYqlZGrSkgARmhiytnZcO689xaJFuLCozsyYhRgQTavzOeCBGJKZJj9lwsNxjtCSx9ZIEAoQMHxSgNW11Qu_h2vxHV9aHEqsnw3NFIcGEoKXxQBohiGLjVYbWYrm0xuz2a1cNrAhjkOA1BNTFSmR0QpDRJgkhMGOEupgzcQiB4UsRxWRJzbyLwzZiyZqiLjYhQsDOE-MTZE0BxTSEG7IxP9tPExtYqgAk4ZJshpFu9EjsGIwghBsS2rkAbiiiCY3hhlJjdXJPkbE2QQRD48FLElMIV9ZTkOFk8FEn3dqgoYgEZEUNd2x8xjzDjfUhRAJjSURQgCgJCUERCQi2Wg1QjKidCeD6uM-P0rnVCGFEkclQ1nIEIUIggchgRYPVECUoRCFCKDGZCgAPQg-tfZOuNS9VJT20JDR8FpGH1h6MTbZmWSa3qmYp9z208oFdLRD06Mo-ejCwyZxJyV4cvf_sOw4g8V2mz5sytRl9V0ntwciD8elk3Whl5xzDWst22XcWiz-9UsTHmhCgCKF_rZrwb5iLg5_OxX-VDAr-zqCvZlCE6OUMinH0UxkU42g-gx5YUVSpByNBQsP_1m4_SJmGwiw-Upif0OZVzOQemB0P_CB57qFl8AzDZxg_GzRw6SstRcYzkzjxvYc2ZmzwA6_MU5XnimsLHG0MRiPo0nfsg-uyh9dh36rxLGOjXndm8X2DIjVGRSufSaEfF8cKZEcTX5QZfx4sDs6tDc4uheFZvuHZxeDcWnBuqVvZl9ButQcjLRvudcCDniSYJyFDOB0pCXtaMqFtyoznIzdXWjaptsU5sjV-6bc_rEsv_S4OkIkCErYOcG407kLEwQ7ncYNXYMMLaoKvyQwvKGzkF2eJ4Txx8BotumCpmLxGPdXXNy6rkam6fGKXxwPT7rnmBT_wUtdaOl4eNg2Oh7ucNunjThOVMTiCA_60519rqSthGrt23xEmX1djSeKoJ2VZ5ri1WSMYCm4m4n5tyopilFQtr05ZryRZ53MAzKCOX0UdgIHfqGZnx1rU1iuS6Xp4ImZgStCy53ZCMvCQRvJDy-ecbjqK8BRUT2D5nZDgnkSUWletUzhedrURfqJAu4AMKU0D_8SKhjsFtnsSD9-D3q-ukkT8oTR0FlMA8FERBlbwO2FF87DCIyrq4Xv4O1HFs6hg7zSRh--R-fQ77RiAeWh90MQdtN9pyyCYh9ZlgCAAHbTfadAAzkNDR2iBh-_D325Q9BatwQ7abzVo-IYwCFAH7bca1EXorhGFFuWiKSVnhfjGs21ale2rg23KlO4FuR4uXc012YPetioKViu-VY-sdkcmR7OYzrTS4XtbIVqTW227JNhpea6vF-UQz3k0QdsZvk1_J9iT8_yH5fDNOoZndQzP9MOuuanKbLuzhdilO7ze7Sg8PkZtx9-No8QIvPHgxq-lOUYl7VTQVuuxcFv0Z5sGtmn0R0yzRf8PjRP1j6bTMIJ247PGiYf6cCZRab74-igK7h9P_W7CHhyH3W13NLh1Ks_48-Csa3kiOjqVHmrhq0L3B_KuJKRnzqm-RWIkFVpUpQODqO2oe1iTAytd-VnVobAigl6K4XnGQ8k8UJZlYorw9NTdEuLv8KIx6HFL37Ijc0YIf8gIlqs5qZ878dsTfL_yjL6PZ_wjhBMdXFJ5OKdyt9mL4EV2mfdYOfQKykE0uuij4dFHT-9oZr00-h6luaE3a-4E88Bdwxl3tTTfU8rHwAeeajhFw-uOpmjjoDt7To-FHeYoODl_oqhrpR26ZLQLvHBjYDIcvnds524N2ix7_vIgP14eHPENGsSiYlkPYnwQt9zOkI-aOC0X_Llu3SFCA6c0lB2mM1wGh2H-rCVLh21q8FOnxrcVGf-of_JDVqZnrEwuWDm6YGUUHa1Mf4GVW3VVkrcW62BZEIldbUemVzUnCcsF4KV8NVl-5h72uFhy3ciyb7dn-5pBTQ9mazoYlvTpHR3LMsmVqvLxO8_5azsY4Ev3dkE4vl55y7Xday8s_PHt2vG9rsEyiKPzOx3fDU-4DF4d9wxOqdxNl8mM6SPbFbzXuEk4cyqHw2tRMr2RndH5FqJzarcs0CWdE_jzOp--Zp_XOUHX1vmc1m18tH8PvwqmNEv_8E1q5K4wnnxXrP3emdtzkzHNPLhR3148uPnw_t1nD27MjreSF5wp3n2sZfU_PNUe3NgvocGNKNOiyXg_YEkfdCXZnv-jFP_bcPnQ1HUl9eLRQ0ngOm2lmRapv6zKVHLNv_jtd9o8lGRcM1G4546P4vKe2a8b9OvelZrvuUy0s14_YUbErtF8PDzkO6Btt5hfe2TXSjNe-eWl5pnF4D5KJrR952U-7bkxrVHnsio1fzZdQ2LoE7lXvgeJB8lisbC2x_e9Muypb05Qo4jpkpHIrUTTNa_L3wp4ifCcMqzMyjWXQwPNqeYo_zkCp5Wl-96Jdfp240_v7K0_MRzwyvhQYtOEqErfI0A1acp5xjMPRr1bOdonLkX-8q58YlKw0kbtnusVz1lT6JVg-7JSWqTrg9Ab052m2jaUtv7vlTOQ_UP9nImCZwsPJJ_er5OHta-a3UFon_m7Zu9LbvzcNIKPWtfK7G4z4V7ox2a3SKtDG0en4SSUargyWZOVmd9Gla8fuZ9Kph79HUv_sOFs9n6w0Z01h9oFN1i4evpJVnvJDgZ2Y7Kh-uHoNg1wZn6Ksg3tt31J1SZnBHzwDAAAmAQ0pijDKY8GtlQvyj18kqLUVpgvNlPBqF8k2ddtpbTk7NC6hCi1OzFEv1AkD96D5yDIYcq7ZOtBFEwEQDTn5wT43JQPYl-y4j9ZmRVcqi6TXwUjoDnvMcIJRkJo5o_Q2NOd1ZkbVou0Nh4D7P-OC2q50BzQaLcL0xACf7uV3LaAW6lbWQqx8-DmOSJbEt4Womyeb_dl4yZq_Sg5yxaqWgCHNQwh6JGGoz2CKAZg50smlIn2o8z7QuzS2_fpOwiejx_hAgVGhRa_BzcmFjfqRWW8NsHSlOLZDTxZKGVjPlrWi9RDCTYtYHu5hvAYBokiHPu2_r4Zhs6cHiyV3cE2mbTdgUx3oDD291xvHeKt4nsTltvutPKmTUWpjeTmtHVQ-5S5fTEwJ96o3Zie23hbFltDtc2qAxPlz-0XU-M1qD2SoGi8IY3zjLzBU1LjI8T6CEJ5RnofiYfezMIgBCC4RhiFEAUABG5jE-lgsjHiNJ8pvoOaPi5aJjtNS5UtYDZzXSUdhBABTvNejnHKogBknPoH9rLjn3ldsJT_U-jHZf_lhV6CFdNsU1RfH6riySQNMu5wPjGtuSw_869S6DPz_22c2Uj5rtSfTUn4OKwIk5RjkI4TF8nzCAOjIlZW5cuhapRfsgO33-Zq73VQ8oFpLoW9ivmvsvpadoLYzdtkLB3CkWwfay6Zu3RKXhcrbtuOt0qCpjrfpXSwRcu73cmNHZhOH5My-_zLwF6j1uAg26W0d65wKGgWhnmGAv-pEtnA7fOmTA34rTuV29n2BNP1w-bQYxqZbV6OGr9WvKSuC5EyXclfravlPM5dVRX-iHXLYBjBbdv6qrA_xaSfeF_tRcqKz1w1hX4b3zZOPBhugR2IiqrcGy85Ue4ZR8YT-6YMB6cq_ds-P2Gfa8QphSRmeFDMyKiYIRblfPdaav0PyXn2MrbKSgpTCux8LauUK_XPSv5RCNXdVcxTnXEvOoGFYzassayui46VsoxF8TLS6me-t640KT0bWX3j5TjNPvBh7R2udpDb1cuqzMXeLDAOZp30OnU6SGHMBnU6mtQMDHD0monO1qNPTHWFryk_loOAi76nGo8bL4RAGJOZw__H-kv1sTb7Jhmrj2lANuUkBJQ6ifr5fJCUrHhRQn1gJdu7GwVnkqXflPbfZ2ZXPPqFQZiFMTnaB4KpPrIUfLc-PomaF6KcpkSz9Cgm-eUKGmdZpd6VSkt7EVDJM2l4uMDt7CZa7J-Y5KV-V-ZVF0_Xi5Ewy1LQ2yCY2ACRFE6gd8o464FjXV4JMwYkhT1mOMYMd4wzv-Yyr-QhSd3tyOX7DaWz9nrhkUmebWtz5BhUnYeqkSn_sJceWs-kuMFV44nBPxRCfqz1ByZKl_xGR5TB7GmSgGgqHEXD1m9cD3-kgB5lb-y94onsH_ihki_3TZ67ADiuz9wt3jbjBdd8nub4rxzmLfB6nzpQ0ltteXV5Buc4wQqealMrlZYvp85xyQFm2sffKckFy7zinuHYPTNIIzwQXNWF0EmZfXKdTIf1T3G6f8GQuLhiOPegpSj3n3k-O3ylVMxzGuE-FeNJtsIU4_Nx8FeL4itVZ0jxQL1kqt44z2fV2zYm6SNzLUjyvS7zmm6uJnOc9107pFOZM8h_icx_knAZ5L1w4yMJ2oWMUL-9Mr7Ce4wsYKS_W4Lx5O6agQj5220hdulWaSb19ntur1PVdK8J3KOdtHzsPTYKofnb7T19UbULccZ9t-u1ZMdZp_nhG_mb7A5lMYrZDb8LKCIIUhqSm8e7OI5ikIYwDtIoy9AuzGMU4yxihGRZnsY34g4CiEEAIhAHOCSLHcgZ2vFdHpIsZzvihYAfmCgW9hsEldzf2HeNdwGEgJKbgu14oexvwIHQvcOHHl7dyDsr167ZKy8E5uSveg5a6ML-1hzj-B5ezb8RdK8vufJF6V_8VsBNI4u7H39t2krzdAf_LwAA__9h4DBP">