• Relatively prime integers in NumPy

    From Popov, Dmitry Yu@3:633/280.2 to All on Tue Jul 9 05:09:45 2024
    :
    Dear Sirs.

    Does NumPy provide a simple mechanism to identify relatively prime integers=
    , i.e. integers which don't have a common factor other than +1 or -1? For e= xample, in case of this array:
    [[1,5,8],
    [2,4,8],
    [3,3,9]]
    I can imagine a function which would return array of common factors along a= xis 0: [1,2,3]. Those triples of numbers along axis 1 with the factor of1 o=
    r -1 would be relatively prime integers.

    Regards,
    Dmitry Popov

    Argonne, IL
    USA


    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From avi.e.gross@gmail.com@3:633/280.2 to All on Fri Jul 12 04:22:24 2024
    =E4=CD=C9=D4=D2=C9=CA,

    You may think you explained what you wanted but I do not see what result =
    you
    expect from your examples.

    Your request is a bit too esoteric to be a great candidate for being =
    built
    into a module like numpy for general purpose se but I can imagine it =
    could
    be available in modules build on top of numpy.

    Is there a reason you cannot solve this mostly outside numpy?

    It looks like you could use numpy to select the numbers you want to =
    compare,
    then call one of many methods you can easily search for to see how to =
    use
    python to make some list or other data structure for divisors of each =
    number
    involved and then use standard methods to compare the lists and exact =
    common
    divisors. If needed, you could then put the results back into your =
    original
    data structure using numpy albeit the number of matches can vary.

    Maybe a better explanation is needed as I cannot see what your latter =
    words
    about -1 and 1 are about. Perhaps someone else knows.




    -----Original Message-----
    From: Python-list =
    <python-list-bounces+avi.e.gross=3Dgmail.com@python.org> On
    Behalf Of Popov, Dmitry Yu via Python-list
    Sent: Monday, July 8, 2024 3:10 PM
    To: Popov, Dmitry Yu via Python-list <python-list@python.org>
    Subject: Relatively prime integers in NumPy

    Dear Sirs.

    Does NumPy provide a simple mechanism to identify relatively prime =
    integers,
    i.e. integers which don't have a common factor other than +1 or -1? For example, in case of this array:
    [[1,5,8],
    [2,4,8],
    [3,3,9]]
    I can imagine a function which would return array of common factors =
    along
    axis 0: [1,2,3]. Those triples of numbers along axis 1 with the factor =
    of1
    or -1 would be relatively prime integers.

    Regards,
    Dmitry Popov

    Argonne, IL
    USA

    --=20
    https://mail.python.org/mailman/listinfo/python-list


    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From Paul Rubin@3:633/280.2 to All on Fri Jul 12 04:35:44 2024
    <avi.e.gross@gmail.com> writes:
    python to make some list or other data structure for divisors of each number involved

    Two numbers a and b are coprime if math.gcd(a,b) == 1, I am pretty sure.
    That is true by definition(?) when a and b are both > 0. Experiment
    indicates it seems to work even when one or both of a and b are
    negative, but I don't have a proof and haven't examined the
    implementation. I don't know how gcd is mathematically defined in that situation.

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: A noiseless patient Spider (3:633/280.2@fidonet)
  • From Oscar Benjamin@3:633/280.2 to All on Fri Jul 12 07:22:30 2024
    (posting on-list this time)

    On Thu, 11 Jul 2024 at 15:18, Popov, Dmitry Yu via Python-list <python-list@python.org> wrote:

    Dear Sirs.

    Does NumPy provide a simple mechanism to identify relatively prime integers, i.e. integers which don't have a common factor other than +1 or -1? For example, in case of this array:
    [[1,5,8],
    [2,4,8],
    [3,3,9]]
    I can imagine a function which would return array of common factors along axis 0: [1,2,3]. Those triples of numbers along axis 1 with the factor of1 or -1 would be relatively prime integers.

    It sounds like you want the gcd (greatest common divisor) of each row.
    The math module can do this:

    In [1]: a = [[1,5,8],
    ...: [2,4,8],
    ...: [3,3,9]]

    In [2]: import math

    In [3]: [math.gcd(*row) for row in a]
    Out[3]: [1, 2, 3]

    NumPy can also do it apparently:

    In [10]: np.gcd.reduce(np.transpose(a))
    Out[10]: array([1, 2, 3])

    https://en.wikipedia.org/wiki/Greatest_common_divisor

    --
    Oscar

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From Lawrence D'Oliveiro@3:633/280.2 to All on Fri Jul 12 07:43:47 2024
    On Thu, 11 Jul 2024 11:35:44 -0700, Paul Rubin wrote:

    Two numbers a and b are coprime if math.gcd(a,b) == 1, I am pretty sure.
    That is true by definition(?) when a and b are both > 0. Experiment indicates it seems to work even when one or both of a and b are
    negative, but I don't have a proof and haven't examined the
    implementation. I don't know how gcd is mathematically defined in that situation.

    You can derive the answer quite trivially by observing that negative
    numbers are smaller (less than, not greater than) positive numbers.

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: A noiseless patient Spider (3:633/280.2@fidonet)
  • From avi.e.gross@gmail.com@3:633/280.2 to All on Fri Jul 12 09:26:30 2024
    T0suIFRoYXQgZXhwbGFpbnMgYSBiaXQgbW9yZS4NCg0KIA0KDQpJZiBJIHVuZGVyc3RhbmQgd2hh dCB5b3UgYXJlIGxvb2tpbmcgZm9yIGlzIGEgZmFzdCBpbXBsZW1lbnRhdGlvbiBhbmQgcXVpdGUg b2Z0ZW4gaW4gUHlob24gaXQgbWVhbnMgdXNpbmcgY29kZSB3cml0dGVuIGluIGFub3RoZXIgbGFu Z3VhZ2Ugc3VjaCBhcyBDIHRoYXQgaXMgaW50ZWdyYXRlZCBjYXJlZnVsbHkgaW4gYSBtb3VsZSBv ciB0d28uIEFub3RoZXIgdGFjayBpcyB0byByZXBsYWNlIG1hbnkgZXhwbGljaXQgbG9vcHMgd2l0 aCBvZnRlbiBtdWNoIGZhc3RlciB2ZWN0b3JpemVkIG9wZXJhdGlvbnMuIE51bXB5IHByb3ZpZGVz IGFkdmFudGFnZXMgbGlrZSB0aGUgYWJvdmUgaWYgeW91IHVzZSBpdCBhcyBpbnRlbmRlZC4NCg0K IA0KDQpPZiBjb3Vyc2UgdGhlcmUgYXJlIG90aGVyIHRlY2huaXF1ZXMgaW4gaG93IGNvZGUgaXMg cmVmYWN0b3JlZCBvciB0aGUgb3JkZXIgb2Ygb3BlcmF0aW9ucywgb3IgZG9pbmcgdGhpbmdzIGlu IHBhcmFsbGVsLg0KDQogDQoNCkp1c3QgYXMgYW4gZXhhbXBsZSwgeW91ciBpbm5lciBsb29wIGVh ciB0aGUgdG9wIGlzIG9wZXJhdGluZyBvbmUgYXQgYSB0aW1lIG9yIG51bWJlcnMgYmV0d2VlbiAw IGFuZCBtYXhfbCBhbmQgaGVuIGNyZWF0ZXMgdmFyaWFibGVzIGluaXRpYWxpemVkIGFuZCB0aGVu IHBvc3NpYmx5IGNoYW5nZWQgaW4gY2h2ZWMgYW5kIG1heG11bHQuIEl0IHVzZXMgdmFyaW91cyBj b25kaXRpb25zIHRvIGNoYW5nZSB0aG9zZSB2YXJpYWJsZXMgdGhlbiBnb2VzIG9uIHRvIGRvIG1v cmUgdGhpbmdzIGluY2x1ZGVkIGluIGEgZm91cnRoIG5lc3RlZCBsb29wLg0KDQogDQoNCldoYXQg d291bGQgaGFwcGVuIGlmLCBpbnN0ZWFkLCB5b3UgdXNlZCB0d28gb2JqZWN0cyB3aXRoIHRoZSBz YW1lIG5hbWVzIHRoYXQgd2VyZSBlYWNoIGEgbnVtcHkgYXJyYXksIG9yIHBlcmhhcHMgY29tYmlu ZWQgaW50byBhIGRhdGFmcmFtZSB0eXBlIG9iamVjdD8NCg0KIA0KDQpVc2luZyBudW1weSAoYW5k IHBlcmhhcHMgcGFuZGFzKSB5b3UgY291bGQgaGF2ZSBjb2RlIHRoYXQgaW5pdGlhbGl6ZWQgb25l IHN1Y2ggYXJyYXkgdG8gaG9sZCB0aGUgaW5pdGlhbCAxIG9yIDIgYXMgbmVlZGVkIGluIGFuIG9i amVjdCB3aG9zZSBsZW5ndGggd2FzIG1heF9sKzEgYW5kIHRoZW4gdGhlIG5leHQgb3BlcmF0aW9u cywgdXNpbmcgbnVtcHkgbm90YXRpb24gd291bGQgYmUgYWxvbmcgdGhlIGxpbmVzIG9mIHJlcGxh Y2UgdGhlIGNvcnJlc3BvbmRpbmcgdmFsdWUgZGVwZW5kaW5nIG9uIGV4dGVybmFsIHZhcmlhYmxl cyB5b3UgY2FsbCBoIG9yIGsgYW5kIHNvIG9uLiANCg0KIA0KDQpUaGVyZSB3b3VsZCBiZSBzZXZl cmFsIGludmlzaWJsZSBsb29wcywgcGVyaGFwcyBjaGFpbmVkIGluIHNvbWUgd2F5LCBidXQgcHJv YmFibHkgcnVubmluZyB3YXkgZmFzdGVyIHRoYW4gdGhlIGV4cGxpY2l0IGxvb3AuDQoNCiANCg0K SSBhbSBub3QgZ29pbmcgdG8gd3JpdGUgYW55IHNwZWNpZmljIGNvZGUsIGJ1dCBzdWdnZXN0IHlv dSByZWFkIHNvbWUgZG9jdW1lbnRhdGlvbiBvbiBob3cgdG8gdXNlIG51bXB5IGZvciBzb21lIG9m IHRoZSBvcGVyYXRpb25zIHlvdSB3YW50IHdoZW4gb3BlcmF0aW5nIG9uIGxhcmdlciBjbHVzdGVy cyBvZiBpbmZvLiBZb3UgY2FuIGdhaW4gc29tZSBzcGVlZCBldmVuIGJ5IGNoYW5naW5nIGEgZmV3 IHBhcnRzLiBUbyByZWZhY3RvciB0aGUgZW50aXJlIHRoaW5nIHdvdWxkIHRha2UgbW9yZSB0aG91 Z2h0IGFuZCBpZiB5b3UgY29tZSB1cCB3aXRoIHRoZSBpZGVhICBvZiBvcGVyYXRpbmcgb24gYSBt dWx0aWRpbWVuc2lvbmFsIGFycmF5LCBtaWdodCB0YWtlIHNvbWUgY2FyZS4gDQoNCiANCg0KQnV0 IGNvbnNpZGVyIHdoYXQgd291bGQgaGFwcGVuIGlmIHlvdSBsb29rZWQgYXQgeW91ciBsb29wcyB3 aGljaCBhcmUgY3VycmVudGx5IG9mIGEgZml4ZWQgc2l6ZSBhbmQgY3JlYXRlZCAgYSAzLUQgbWF0 cml4IHdpdGggZGltZW5zaW9ucyBvZiBtYXhfaCsxLCBtYXhfaysxLCBhbmQgbWF4X2wrMSBhbmQg c2ltcGx5IGluaXRpYWxpemVkIGl0IHdpdGggYWxsIHBvc3NpYmxlIGluaXRpYWwgdmFsdWVzIGFu ZCB0aGVuIHJhbiBhbiBhbGdvcml0aG0gdG8gbWFuaXB1bGF0ZSBpdCwgb2Z0ZW4gYXNraW5nIG51 bXB5IGZvciB2YXJpb3VzIHNsaWNlcyBvciB3aGF0ZXZlciB3b3JrcyBmb3IgeW91IGFzIGluIGF4 ZXMuICBUaGlzIGFyY2hpdGVjdHVyZSBtYXkgbm90IHdvcmsgZm9yIG91IGJ1dCBpcyBhbiBleGFt cGxlIG9mIHRoZSBraW5kIG9mIHRoaW5raW5nIGl0IGFuIHRha2UgdG8gbWFrZSBhIHByb2JsZW0g dXNlIGFsZ29yaXRobXMgbW9yZSBlZmZpY2llbnRseS4NCg0KIA0KDQpJIG5vdGUgdGhlIGNvZGUg ZGlkIG5vdCBhY3R1YWxseSBoZWxwIG1lIHVuZGVyc3RhbmQgd2hhdCBtYXRoZW1hdGljYWwgb3Bl cmF0aW9uIHlvdSB3YW50IHRvIHBlcmZvcm0uIEkgYXNzdW1lZCBJIG1pZ2h0IHNlZSBzb21lIG9w ZXJhdGlvbnMgbGlrZSBkaXZpc2lvbiBhbmQgdCBtYXkgYmUgb3RoZXIgcGFydHMgb2YgeW91ciBj b2RlIHRoYXQgaW1wbGVtZW50IHdoYXQgeW91IHdhbnQuDQoNCiANCg0KQnV0IGlmIHRoaXMgaXMg YSBjb21tb24gZW5vdWdoIG5lZWQsIEkgc3VzcGVjdCB5b3UgbWF5IHdhbnQgdG8gc2VlIGlmIHNv bWV0aGluZyBzaW1pbGFyIGVub3VnaCBpcyBvdXQgdGhlcmUuIFlvdXIgY29kZSBtYXkgYmUgbW9y ZSBjb21wbGV4IGFuZCBtb3JlIGxpa2UgdGhlIHNpZXZlIG9mIEVyYXRvc3RoZW5lcyB0aGF0IGF0 dGVtcHRzIHRvIHRlc3QgZXZlcnkgcG9zc2liaWxpdHkuDQoNCiANCg0KT25lIGFsZ29yaXRobSBJ IGhhdmUgc2VlbiBzaW1wbHkgdGFrZXMgdGhlIG51bWJlcnMgeW91IGFyZSBldmFsdWF0aW5nIGFu ZCBpbiBhIGxvb3Agb2YgdGhlIGZpcnN0IE4gcHJpbWVzIChvciBhbiBvcGVuLWVuZGVkIGdlbmVy YXRvcikgc2ltcGx5IGRvZXMgYW4gaW50ZWdlciBkaXZpc2lvbiBieSAyLCBhcyBtYW55IHRpbWVz IGFzIGl0IHJldHVybnMgYW4gaW50ZWdyYWwgcmVzdWx0LCB0aGVuIGFzIG1hbnkgZGl2aXNpb25z IGJ5IDMgdGhlbiA1IGFuZCA3IGFuZCBzbyBvbi4gIEl0IGFib3J0cyB3aGVuIGl0IGhhcyBiZWVu IGNob3BwZWQgZG93biB0byBzaXplLCBvciB0aGUgcHJpbWUgYmVpbmcgdXNlZCBpcyBsYXJnZSBl bm91Z2ggKHNxdWFyZSByb290IG9yIHNvKSBhZCBhdCB0aGUgZW5kLCB5b3Ugc2hvdWxkIGhhdmUg c29tZSBzZXF1ZW5jZSBvZiBkaXZpc29ycywgb3IganVzdCAgYW5kIHRoZSBudW1iZXIgaWYgaXQg aXMgcHJpbWUuIFNvbWUgc3VjaCBhbGdvcml0aG0gY2FuIGJlIGZhaXJseSBmYXN0IGFuZCBwZXJo YXBzIGNhbiBldmVuIGJlIGRvbmUgdmVjdG9yaXplZC4gDQoNCiANCg0KT25lIGxhc3QgY29tbWVu dCBpcyBhYm91dCBtZW1vaXphdGlvbi4gSWYgeW91ciBkYXRhIGlzIG9mIGEgbmF0dXJlIHdoZXJl IGEgcmVsYXRpdmVseSBmZXcgbnVtYmVycyBjb21lIHVwIG9mdGVuLCB0aGVuIHlvdSBhbiB1c2Ug c29tZXRoaW5nLCBsaWtlIHBlcmhhcHMgYSBkaWN0aW9uYXJ5LCB0byBzdG9yZSB0aGUgcmVzdWx0 cyBvZiBhIGNvbXB1dGF0aW9uIGxpa2UgZ2V0dGluZyBhIGxpc3Qgb2YgcHJpbWUgZmFjdG9ycyBm b3IgYSBzcGVjaWZpYyBudW1iZXIsIG9yIGp1c3QgcmVjb3JkaW5nIHdoZXRoZXIgaXQgaXMgcHJp bWUgb3IgY29tcG9zaXRlLiBMYXRlciBjYWxscyB0byBkbyBjYWxjdWxhdGlvbnMgd291bGQgYWx3 YXlzIGNoZWNrIGlmIHRoZSByZXN1bHQgaGFzIGFscmVhZHkgYmVlbiBzYXZlZCBhbmQgc2tpcCBy ZWNhbGN1bGF0aW5nIGl0Lg0KDQogDQoNCkdvb2QgTHVjaw0KDQogDQoNCiANCg0KRnJvbTogUG9w b3YsIERtaXRyeSBZdSA8ZHBvcG92QGFubC5nb3Y+IA0KU2VudDogVGh1cnNkYXksIEp1bHkgMTEs IDIwMjQgMzoyNiBQTQ0KVG86IGF2aS5lLmdyb3NzQGdtYWlsLmNvbTsgJ1BvcG92LCBEbWl0cnkg WXUgdmlhIFB5dGhvbi1saXN0JyA8cHl0aG9uLWxpc3RAcHl0aG9uLm9yZz4NClN1YmplY3Q6IFJl OiBSZWxhdGl2ZWx5IHByaW1lIGludGVnZXJzIGluIE51bVB5DQoNCiANCg0KVGhhbmsgeW91IGZv ciB5b3VyIGludGVyZXN0LiBNeSBleHBsYW5hdGlvbiBpcyB0b28gY29uY2lzZSBpbmRlZWQsIHNv cnJ5LiBTbyBmYXIsIEkgaGF2ZSB1c2VkIFB5dGhvbiBjb2RlIHdpdGggdGhyZWUgZW5jbG9zZWQg J2ZvcicgbG9vcHMgZm9yIHRoaXMgcHVycG9zZSB3aGljaCBpcyBwcmV0dHkgdGltZSBjb25zdW1p bmcuIEknbSB0cnlpbmcgdG8gZGV2ZWxvcCBhIE51bVB5IGJhc2VkIGNvZGUgdG8gbWFrZSB0aGlz IHByb2NlZHVyZSBmYXN0ZXIuIFRoaXMgcm91dGluZSBpcyBraW5kIG9mICdoZWFydCcgb2YgdGhl IGFsZ29yaXRobSB0byBpbmRleCBvZiBYLXJheSBMYXVlIGRpZmZyYWN0aW9uIHBhdHRlcm5zLiBJ biBvdXIgZ3JvdXAgd2UgaGF2ZSB0byBwcm9jZXNzIGh1Z2UgYW1vdW50IG9mIHN1Y2ggcGF0dGVy bnMuIFRoZXkgYXJlIGNvbGxlY3RlZCBhdCBhIHN5bmNocm90cm9uIHJhZGlhdGlvbiBmYWNpbGl0 eS4gRmFzdGVyIGluZGV4YXRpb24gcm91dGluZSB3b3VsZCBoZWxwIGEgbG90LiANCg0KIA0KDQpU aGlzIGlzIHRoZSBjb2RlIEknbSBjdXJyZW50bHkgdXNpbmcuIEFueSBwcm9tcHRzIGhvdyB0byBp bXBsZW1lbnQgaXQgaW4gTnVtUHkgd291bGQgYmUgaGlnaGx5IGFwcHJlY2lhdGVkLiANCg0KIA0K DQpmb3IgaCBpbiByYW5nZSgwLCBtYXhfaCk6DQoNCuKAguKAguKAguKAguKAguKAgmZvciBrIGlu IHJhbmdlKDAsIG1heF9rKToNCg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC Zm9yIGwgaW4gcmFuZ2UoMCwgbWF4X2wpOg0KDQrigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigIJjaHZlYz0xDQoNCuKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgm1heG11bHQ9Mg0KDQrigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJpZiBoID4gMTrigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gIINCg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCCbWF4bXVsdD1oDQoNCuKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGsgPiAxOg0KDQrigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gIJtYXhtdWx0PWsNCg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCCaWYgbCA+IDE6DQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgm1heG11bHQ9bA0KDQrigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJpZiBoID4g MToNCg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYgbWF4bXVsdCA+IGg6DQoNCuKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAgm1heG11bHQ9aA0KDQrigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigIJpZiBrID4gMToNCg0K4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYg bWF4bXVsdCA+IGs6DQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgm1heG11bHQ9 aw0KDQrigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gIJpZiBsID4gMToNCg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYgbWF4bXVsdCA+IGw6DQoNCuKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAgm1heG11bHQ9bA0KDQrigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigIJtYXhtdWx0PW1heG11bHQrMQ0KDQri gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJmb3Ig aW5uZW4gaW4gcmFuZ2UoMiwgbWF4bXVsdCk6DQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGggaW4gcmFu Z2UoMCwgKG1heF9oKzEpLCBpbm5lbik6DQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAgmlmIGsgaW4gcmFuZ2UoMCwgKG1heF9rKzEpLCBpbm5lbik6DQoNCuKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGwgaW4gcmFuZ2UoMCwgKG1h eF9sKzEpLCBpbm5lbik6DQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmNodmVjPTANCg0K4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYgY2h2ZWM9PTE6DQoNCuKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAgiMgT25seSByZWxhdGl2ZWx5IHByaW1lIGludGVnZXJzIGgsayxsIHBhc3Mg dG8gdGhpcyBibG9jayBvZiB0aGUgY29kZQ0KDQogDQoNCiANCg0KICBfX19fXyAgDQoNCkZyb206 IGF2aS5lLmdyb3NzQGdtYWlsLmNvbSA8bWFpbHRvOmF2aS5lLmdyb3NzQGdtYWlsLmNvbT4gIDxh dmkuZS5ncm9zc0BnbWFpbC5jb20gPG1haWx0bzphdmkuZS5ncm9zc0BnbWFpbC5jb20+ID4NClNl bnQ6IFRodXJzZGF5LCBKdWx5IDExLCAyMDI0IDE6MjIgUE0NClRvOiBQb3BvdiwgRG1pdHJ5IFl1 IDxkcG9wb3ZAYW5sLmdvdiA8bWFpbHRvOmRwb3BvdkBhbmwuZ292PiA+OyAnUG9wb3YsIERtaXRy eSBZdSB2aWEgUHl0aG9uLWxpc3QnIDxweXRob24tbGlzdEBweXRob24ub3JnIDxtYWlsdG86cHl0 aG9uLWxpc3RAcHl0aG9uLm9yZz4gPg0KU3ViamVjdDogUkU6IFJlbGF0aXZlbHkgcHJpbWUgaW50 ZWdlcnMgaW4gTnVtUHkgDQoNCiANCg0K0JTQvNC40YLRgNC40LksIFlvdSBtYXkgdGhpbmsgeW91 IGV4cGxhaW5lZCB3aGF0IHlvdSB3YW50ZWQgYnV0IEkgZG8gbm90IHNlZSB3aGF0IHJlc3VsdCB5 b3UgZXhwZWN0IGZyb20geW91ciBleGFtcGxlcy4gWW91ciByZXF1ZXN0IGlzIGEgYml0IHRvbyBl c290ZXJpYyB0byBiZSBhIGdyZWF0IGNhbmRpZGF0ZSBmb3IgYmVpbmcgYnVpbHQgaW50byBhIG1v ZHVsZSBsaWtlIG51bXB5IGZvciBnZW5lcmFsIHB1cnBvc2Ugc2UgYnV0IA0KDQpaalFjbVFSWUZw ZnB0QmFubmVyU3RhcnQNCg0KVGhpcyBNZXNzYWdlIElzIEZyb20gYW4gRXh0ZXJuYWwgU2VuZGVy IA0KDQpUaGlzIG1lc3NhZ2UgY2FtZSBmcm9tIG91dHNpZGUgeW91ciBvcmdhbml6YXRpb24uIA0K DQogDQoNClpqUWNtUVJZRnBmcHRCYW5uZXJFbmQNCg0K0JTQvNC40YLRgNC40LksDQogDQpZb3Ug bWF5IHRoaW5rIHlvdSBleHBsYWluZWQgd2hhdCB5b3Ugd2FudGVkIGJ1dCBJIGRvIG5vdCBzZWUg d2hhdCByZXN1bHQgeW91DQpleHBlY3QgZnJvbSB5b3VyIGV4YW1wbGVzLg0KIA0KWW91ciByZXF1 ZXN0IGlzIGEgYml0IHRvbyBlc290ZXJpYyB0byBiZSBhIGdyZWF0IGNhbmRpZGF0ZSBmb3IgYmVp bmcgYnVpbHQNCmludG8gYSBtb2R1bGUgbGlrZSBudW1weSBmb3IgZ2VuZXJhbCBwdXJwb3NlIHNl IGJ1dCBJIGNhbiBpbWFnaW5lIGl0IGNvdWxkDQpiZSBhdmFpbGFibGUgaW4gbW9kdWxlcyBidWls ZCBvbiB0b3Agb2YgbnVtcHkuDQogDQpJcyB0aGVyZSBhIHJlYXNvbiB5b3UgY2Fubm90IHNvbHZl IHRoaXMgbW9zdGx5IG91dHNpZGUgbnVtcHk/DQogDQpJdCBsb29rcyBsaWtlIHlvdSBjb3VsZCB1 c2UgbnVtcHkgdG8gc2VsZWN0IHRoZSBudW1iZXJzIHlvdSB3YW50IHRvIGNvbXBhcmUsDQp0aGVu IGNhbGwgb25lIG9mIG1hbnkgbWV0aG9kcyB5b3UgY2FuIGVhc2lseSBzZWFyY2ggZm9yIHRvIHNl ZSAgaG93IHRvIHVzZQ0KcHl0aG9uIHRvIG1ha2Ugc29tZSBsaXN0IG9yIG90aGVyIGRhdGEgc3Ry dWN0dXJlIGZvciBkaXZpc29ycyBvZiBlYWNoIG51bWJlcg0KaW52b2x2ZWQgYW5kIHRoZW4gdXNl IHN0YW5kYXJkIG1ldGhvZHMgdG8gY29tcGFyZSB0aGUgbGlzdHMgYW5kIGV4YWN0IGNvbW1vbg0K ZGl2aXNvcnMuIElmIG5lZWRlZCwgeW91IGNvdWxkIHRoZW4gcHV0IHRoZSByZXN1bHRzIGJhY2sg aW50byB5b3VyIG9yaWdpbmFsDQpkYXRhIHN0cnVjdHVyZSB1c2luZyBudW1weSBhbGJlaXQgdGhl IG51bWJlciBvZiBtYXRjaGVzIGNhbiB2YXJ5Lg0KIA0KTWF5YmUgYSBiZXR0ZXIgZXhwbGFuYXRp b24gaXMgbmVlZGVkIGFzIEkgY2Fubm90IHNlZSB3aGF0IHlvdXIgbGF0dGVyIHdvcmRzDQphYm91 dCAtMSBhbmQgMSBhcmUgYWJvdXQuIFBlcmhhcHMgc29tZW9uZSBlbHNlIGtub3dzLg0KIA0KIA0K IA0KIA0KLS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFB5dGhvbi1saXN0IDxweXRo b24tbGlzdC1ib3VuY2VzK2F2aS5lLmdyb3NzPWdtYWlsLmNvbUBweXRob24ub3JnIDxtYWlsdG86 cHl0aG9uLWxpc3QtYm91bmNlcythdmkuZS5ncm9zcz1nbWFpbC5jb21AcHl0aG9uLm9yZz4gPiBP bg0KQmVoYWxmIE9mIFBvcG92LCBEbWl0cnkgWXUgdmlhIFB5dGhvbi1saXN0DQpTZW50OiBNb25k YXksIEp1bHkgOCwgMjAyNCAzOjEwIFBNDQpUbzogUG9wb3YsIERtaXRyeSBZdSB2aWEgUHl0aG9u LWxpc3QgPHB5dGhvbi1saXN0QHB5dGhvbi5vcmcgPG1haWx0bzpweXRob24tbGlzdEBweXRob24u b3JnPiA+DQpTdWJqZWN0OiBSZWxhdGl2ZWx5IHByaW1lIGludGVnZXJzIGluIE51bVB5DQogDQpE ZWFyIFNpcnMuDQogDQpEb2VzIE51bVB5IHByb3ZpZGUgYSBzaW1wbGUgbWVjaGFuaXNtIHRvIGlk ZW50aWZ5IHJlbGF0aXZlbHkgcHJpbWUgaW50ZWdlcnMsDQppLmUuIGludGVnZXJzIHdoaWNoIGRv bid0IGhhdmUgYSBjb21tb24gZmFjdG9yIG90aGVyIHRoYW4gKzEgb3IgLTE/IEZvcg0KZXhhbXBs ZSwgaW4gY2FzZSBvZiB0aGlzIGFycmF5Og0KW1sxLDUsOF0sDQogIFsyLDQsOF0sDQogIFszLDMs OV1dDQpJIGNhbiBpbWFnaW5lIGEgZnVuY3Rpb24gd2hpY2ggd291bGQgcmV0dXJuIGFycmF5IG9m IGNvbW1vbiBmYWN0b3JzIGFsb25nDQpheGlzIDA6IFsxLDIsM10uIFRob3NlIHRyaXBsZXMgb2Yg bnVtYmVycyBhbG9uZyBheGlzIDEgd2l0aCB0aGUgZmFjdG9yIG9mMQ0Kb3IgLTEgd291bGQgYmUg cmVsYXRpdmVseSBwcmltZSBpbnRlZ2Vycy4NCiANClJlZ2FyZHMsDQpEbWl0cnkgUG9wb3YNCiAN CkFyZ29ubmUsIElMDQpVU0ENCiANCi0tIA0KaHR0cHM6Ly91cmxkZWZlbnNlLnVzL3YzL19faHR0 cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tbGlzdF9fOyEhR191 Q2ZzY2Y3ZVdTIVpHSzFaWFlnbUM2Y3BOYTF4VFhWVE5rbGh1bmpZaWlud2FEZV94RTNzSnlWczRa Y1ZnVUJfdjJGS3ZEekRzcHg3SXpGQ1pJN0pwRnNpVjVpSDU4UCQgPGh0dHBzOi8vdXJsZGVmZW5z ZS51cy92My9fX2h0dHBzOi9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24t bGlzdF9fOyEhR191Q2ZzY2Y3ZVdTIVpHSzFaWFlnbUM2Y3BOYTF4VFhWVE5rbGh1bmpZaWlud2FE ZV94RTNzSnlWczRaY1ZnVUJfdjJGS3ZEekRzcHg3SXpGQ1pJN0pwRnNpVjVpSDU4UCQ+IA0KIA0K

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From Paul Rubin@3:633/280.2 to All on Fri Jul 12 11:51:57 2024
    <avi.e.gross@gmail.com> writes:
    make some list or other data structure for divisors of each number
    involved and then use standard methods to compare the lists and exact
    common divisors.

    You don't need to find divisors (factor the numbers) to find the gcd. Factorization can be very slow. Gcd on the other hand is very fast,
    using the Euclidean GCD algorithm. You should be able to find info
    about this easily. Factorization would be a terrible way to compute
    gcd's.

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: A noiseless patient Spider (3:633/280.2@fidonet)
  • From Peter J. Holzer@3:633/280.2 to All on Fri Jul 12 19:14:11 2024

    --vcfqyab2naxtehgq
    Content-Type: text/plain; charset=us-ascii
    Content-Disposition: inline
    Content-Transfer-Encoding: quoted-printable

    On 2024-07-08 19:09:45 +0000, Popov, Dmitry Yu via Python-list wrote:
    Does NumPy provide a simple mechanism to identify relatively prime
    integers, i.e. integers which don't have a common factor other than +1
    or -1?

    Typing "numpy gcd" into my favourite search engine brings me to https://num= py.org/doc/stable/reference/generated/numpy.gcd.html

    hp

    --=20
    _ | Peter J. Holzer | Story must make more sense than reality.
    |_|_) | |
    | | | hjp@hjp.at | -- Charles Stross, "Creative writing
    __/ | http://www.hjp.at/ | challenge!"

    --vcfqyab2naxtehgq
    Content-Type: application/pgp-signature; name="signature.asc"

    -----BEGIN PGP SIGNATURE-----

    iQIzBAABCgAdFiEETtJbRjyPwVTYGJ5k8g5IURL+KF0FAmaQ89wACgkQ8g5IURL+ KF13fRAAkdCNlxzp1rFzTq5bEy3v9+98LlHbigjze9MdAUYQsVseqymmCMSW+2GE epMJ4CPDR0yixDHBe7Pzam4mQHhP0HQEyiF3JsCLK821FBNfkJNwjk/+FD+A0grr j1/vay6h1z0kic5NkC6HrsZWz1n6Gp93Ci0IqcPxAmME5u1pJlI30JMuVCD/ou6Z jPH9TgTL7jttge2179LdlWS3qHmIX9du3ffwmHRgzhJBlPBNVb+N9/R7B6eDQLBM aGvscm4/isbQxaj4lGInx2s8FoqerzZwWhJ4EA/E8gn+zTssG2jlCnNVpFrkZq5B AY/K04OdLnRowfWP5lTrKrxNGiJcTNMKpz21PqDRz/cOjxWCLn3XxlQ9A2GsPpiS OkEX8BFGk9OJB5v4Tt7gOBzb6pGeZsBjfJEa417UFkSl70nzhWWwRuhNNp8C4wfr JHETe3/ezopF0NlCS6GCblaWcvXDsUyJDGViDnSaCDNcr2IalzQ6YTZIr7ZNhigf dlxll+ErkPG72TMchTZN1B5t1I8GL1JpulnSP4SfXF94fQnNTG5CJyUf0zuNEyVU SOecEv8loYKTuDAtMzVWwHdP4ituwTPFLbbNPSIDQ8bpOBU9AQ1qGmibKB812MBT rHEWn4ECE4zjGYbfdC4EEG5lEyLHI8usVArWSjJ+VyhX8pCe22M=
    =xO7n
    -----END PGP SIGNATURE-----

    --vcfqyab2naxtehgq--

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From Popov, Dmitry Yu@3:633/280.2 to All on Fri Jul 12 05:25:37 2024
    :
    VGhhbmsgeW91IGZvciB5b3VyIGludGVyZXN0LiBNeSBleHBsYW5hdGlvbiBpcyB0b28gY29uY2lz ZSBpbmRlZWQsIHNvcnJ5LiBTbyBmYXIsIEkgaGF2ZSB1c2VkIFB5dGhvbiBjb2RlIHdpdGggdGhy ZWUgZW5jbG9zZWQgJ2ZvcicgbG9vcHMgZm9yIHRoaXMgcHVycG9zZSB3aGljaCBpcyBwcmV0dHkg dGltZSBjb25zdW1pbmcuIEknbSB0cnlpbmcgdG8gZGV2ZWxvcCBhIE51bVB5IGJhc2VkIGNvZGUg dG8gbWFrZSB0aGlzIHByb2NlZHVyZSBmYXN0ZXIuIFRoaXMgcm91dGluZSBpcyBraW5kIG9mICdo ZWFydCcgb2YgdGhlIGFsZ29yaXRobSB0byBpbmRleCBvZiBYLXJheSBMYXVlIGRpZmZyYWN0aW9u IHBhdHRlcm5zLiBJbiBvdXIgZ3JvdXAgd2UgaGF2ZSB0byBwcm9jZXNzIGh1Z2UgYW1vdW50IG9m IHN1Y2ggcGF0dGVybnMuIFRoZXkgYXJlIGNvbGxlY3RlZCBhdCBhIHN5bmNocm90cm9uIHJhZGlh dGlvbiBmYWNpbGl0eS4gRmFzdGVyIGluZGV4YXRpb24gcm91dGluZSB3b3VsZCBoZWxwIGEgbG90 Lg0KDQpUaGlzIGlzIHRoZSBjb2RlIEknbSBjdXJyZW50bHkgdXNpbmcuIEFueSBwcm9tcHRzIGhv dyB0byBpbXBsZW1lbnQgaXQgaW4gTnVtUHkgd291bGQgYmUgaGlnaGx5IGFwcHJlY2lhdGVkLg0K DQpmb3IgaCBpbiByYW5nZSgwLCBtYXhfaCk6DQrigILigILigILigILigILigIJmb3IgayBpbiBy YW5nZSgwLCBtYXhfayk6DQrigILigILigILigILigILigILigILigILigILigILigILigIJmb3Ig bCBpbiByYW5nZSgwLCBtYXhfbCk6DQrigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigIJjaHZlYz0xDQrigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigIJtYXhtdWx0PTINCuKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGggPiAxOuKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgg0K4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCCbWF4bXVsdD1oDQrigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigIJpZiBrID4gMToNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgm1heG11bHQ9aw0K4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYgbCA+ IDE6DQrigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigIJtYXhtdWx0PWwNCuKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGggPiAxOg0K4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYg bWF4bXVsdCA+IGg6DQrigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJtYXhtdWx0PWgN CuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmlm IGsgPiAxOg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYgbWF4bXVsdCA+IGs6DQrigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigIJtYXhtdWx0PWsNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAgmlmIGwgPiAxOg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYgbWF4 bXVsdCA+IGw6DQrigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJtYXhtdWx0PWwNCuKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgm1heG11 bHQ9bWF4bXVsdCsxDQrigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigIJmb3IgaW5uZW4gaW4gcmFuZ2UoMiwgbWF4bXVsdCk6DQrigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gIJpZiBoIGluIHJhbmdlKDAsIChtYXhfaCsxKSwgaW5uZW4pOg0K4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCCaWYgayBpbiByYW5nZSgwLCAobWF4X2srMSksIGlubmVuKToNCuKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGwgaW4gcmFu Z2UoMCwgKG1heF9sKzEpLCBpbm5lbik6DQrigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigIJjaHZlYz0wDQrigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJpZiBjaHZlYz09MToN CuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAgiMgT25seSByZWxhdGl2ZWx5IHByaW1lIGludGVnZXJzIGgsayxsIHBh c3MgdG8gdGhpcyBibG9jayBvZiB0aGUgY29kZQ0KDQoNCl9fX19fX19fX19fX19fX19fX19fX19f X19fX19fX19fDQpGcm9tOiBhdmkuZS5ncm9zc0BnbWFpbC5jb20gPGF2aS5lLmdyb3NzQGdtYWls LmNvbT4NClNlbnQ6IFRodXJzZGF5LCBKdWx5IDExLCAyMDI0IDE6MjIgUE0NClRvOiBQb3Bvdiwg RG1pdHJ5IFl1IDxkcG9wb3ZAYW5sLmdvdj47ICdQb3BvdiwgRG1pdHJ5IFl1IHZpYSBQeXRob24t bGlzdCcgPHB5dGhvbi1saXN0QHB5dGhvbi5vcmc+DQpTdWJqZWN0OiBSRTogUmVsYXRpdmVseSBw cmltZSBpbnRlZ2VycyBpbiBOdW1QeQ0KDQrQlNC80LjRgtGA0LjQuSwgWW91IG1heSB0aGluayB5 b3UgZXhwbGFpbmVkIHdoYXQgeW91IHdhbnRlZCBidXQgSSBkbyBub3Qgc2VlIHdoYXQgcmVzdWx0 IHlvdSBleHBlY3QgZnJvbSB5b3VyIGV4YW1wbGVzLiBZb3VyIHJlcXVlc3QgaXMgYSBiaXQgdG9v IGVzb3RlcmljIHRvIGJlIGEgZ3JlYXQgY2FuZGlkYXRlIGZvciBiZWluZyBidWlsdCBpbnRvIGEg bW9kdWxlIGxpa2UgbnVtcHkgZm9yIGdlbmVyYWwgcHVycG9zZSBzZSBidXQNClpqUWNtUVJZRnBm cHRCYW5uZXJTdGFydA0KVGhpcyBNZXNzYWdlIElzIEZyb20gYW4gRXh0ZXJuYWwgU2VuZGVyDQpU aGlzIG1lc3NhZ2UgY2FtZSBmcm9tIG91dHNpZGUgeW91ciBvcmdhbml6YXRpb24uDQoNClpqUWNt UVJZRnBmcHRCYW5uZXJFbmQNCg0K0JTQvNC40YLRgNC40LksDQoNCllvdSBtYXkgdGhpbmsgeW91 IGV4cGxhaW5lZCB3aGF0IHlvdSB3YW50ZWQgYnV0IEkgZG8gbm90IHNlZSB3aGF0IHJlc3VsdCB5 b3UNCmV4cGVjdCBmcm9tIHlvdXIgZXhhbXBsZXMuDQoNCllvdXIgcmVxdWVzdCBpcyBhIGJpdCB0 b28gZXNvdGVyaWMgdG8gYmUgYSBncmVhdCBjYW5kaWRhdGUgZm9yIGJlaW5nIGJ1aWx0DQppbnRv IGEgbW9kdWxlIGxpa2UgbnVtcHkgZm9yIGdlbmVyYWwgcHVycG9zZSBzZSBidXQgSSBjYW4gaW1h Z2luZSBpdCBjb3VsZA0KYmUgYXZhaWxhYmxlIGluIG1vZHVsZXMgYnVpbGQgb24gdG9wIG9mIG51 bXB5Lg0KDQpJcyB0aGVyZSBhIHJlYXNvbiB5b3UgY2Fubm90IHNvbHZlIHRoaXMgbW9zdGx5IG91 dHNpZGUgbnVtcHk/DQoNCkl0IGxvb2tzIGxpa2UgeW91IGNvdWxkIHVzZSBudW1weSB0byBzZWxl Y3QgdGhlIG51bWJlcnMgeW91IHdhbnQgdG8gY29tcGFyZSwNCnRoZW4gY2FsbCBvbmUgb2YgbWFu eSBtZXRob2RzIHlvdSBjYW4gZWFzaWx5IHNlYXJjaCBmb3IgdG8gc2VlICBob3cgdG8gdXNlDQpw eXRob24gdG8gbWFrZSBzb21lIGxpc3Qgb3Igb3RoZXIgZGF0YSBzdHJ1Y3R1cmUgZm9yIGRpdmlz b3JzIG9mIGVhY2ggbnVtYmVyDQppbnZvbHZlZCBhbmQgdGhlbiB1c2Ugc3RhbmRhcmQgbWV0aG9k cyB0byBjb21wYXJlIHRoZSBsaXN0cyBhbmQgZXhhY3QgY29tbW9uDQpkaXZpc29ycy4gSWYgbmVl ZGVkLCB5b3UgY291bGQgdGhlbiBwdXQgdGhlIHJlc3VsdHMgYmFjayBpbnRvIHlvdXIgb3JpZ2lu YWwNCmRhdGEgc3RydWN0dXJlIHVzaW5nIG51bXB5IGFsYmVpdCB0aGUgbnVtYmVyIG9mIG1hdGNo ZXMgY2FuIHZhcnkuDQoNCk1heWJlIGEgYmV0dGVyIGV4cGxhbmF0aW9uIGlzIG5lZWRlZCBhcyBJ IGNhbm5vdCBzZWUgd2hhdCB5b3VyIGxhdHRlciB3b3Jkcw0KYWJvdXQgLTEgYW5kIDEgYXJlIGFi b3V0LiBQZXJoYXBzIHNvbWVvbmUgZWxzZSBrbm93cy4NCg0KDQoNCg0KLS0tLS1PcmlnaW5hbCBN ZXNzYWdlLS0tLS0NCkZyb206IFB5dGhvbi1saXN0IDxweXRob24tbGlzdC1ib3VuY2VzK2F2aS5l Lmdyb3NzPWdtYWlsLmNvbUBweXRob24ub3JnPiBPbg0KQmVoYWxmIE9mIFBvcG92LCBEbWl0cnkg WXUgdmlhIFB5dGhvbi1saXN0DQpTZW50OiBNb25kYXksIEp1bHkgOCwgMjAyNCAzOjEwIFBNDQpU bzogUG9wb3YsIERtaXRyeSBZdSB2aWEgUHl0aG9uLWxpc3QgPHB5dGhvbi1saXN0QHB5dGhvbi5v cmc+DQpTdWJqZWN0OiBSZWxhdGl2ZWx5IHByaW1lIGludGVnZXJzIGluIE51bVB5DQoNCkRlYXIg U2lycy4NCg0KRG9lcyBOdW1QeSBwcm92aWRlIGEgc2ltcGxlIG1lY2hhbmlzbSB0byBpZGVudGlm eSByZWxhdGl2ZWx5IHByaW1lIGludGVnZXJzLA0KaS5lLiBpbnRlZ2VycyB3aGljaCBkb24ndCBo YXZlIGEgY29tbW9uIGZhY3RvciBvdGhlciB0aGFuICsxIG9yIC0xPyBGb3INCmV4YW1wbGUsIGlu IGNhc2Ugb2YgdGhpcyBhcnJheToNCltbMSw1LDhdLA0KICBbMiw0LDhdLA0KICBbMywzLDldXQ0K SSBjYW4gaW1hZ2luZSBhIGZ1bmN0aW9uIHdoaWNoIHdvdWxkIHJldHVybiBhcnJheSBvZiBjb21t b24gZmFjdG9ycyBhbG9uZw0KYXhpcyAwOiBbMSwyLDNdLiBUaG9zZSB0cmlwbGVzIG9mIG51bWJl cnMgYWxvbmcgYXhpcyAxIHdpdGggdGhlIGZhY3RvciBvZjENCm9yIC0xIHdvdWxkIGJlIHJlbGF0 aXZlbHkgcHJpbWUgaW50ZWdlcnMuDQoNClJlZ2FyZHMsDQpEbWl0cnkgUG9wb3YNCg0KQXJnb25u ZSwgSUwNClVTQQ0KDQotLQ0KaHR0cHM6Ly91cmxkZWZlbnNlLnVzL3YzL19faHR0cHM6Ly9tYWls LnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tbGlzdF9fOyEhR191Q2ZzY2Y3ZVdT IVpHSzFaWFlnbUM2Y3BOYTF4VFhWVE5rbGh1bmpZaWlud2FEZV94RTNzSnlWczRaY1ZnVUJfdjJG S3ZEekRzcHg3SXpGQ1pJN0pwRnNpVjVpSDU4UCQNCg0KDQo=

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From Popov, Dmitry Yu@3:633/280.2 to All on Sat Jul 13 03:12:59 2024
    :
    VGhhbmsgeW91IHZlcnkgbXVjaCwgT3NjYXIuDQoNClVzaW5nIHRoZSBmb2xsb3dpbmcgY29kZSBs b29rcyBsaWtlIGEgbXVjaCBiZXR0ZXIgc29sdXRpb24gdGhhbiBteSBjdXJyZW50IFB5dGhvbiBj b2RlIGluZGVlZC4NCg0KbnAuZ2NkLnJlZHVjZShucC50cmFuc3Bvc2UoYSkpDQpvcg0KbnAuZ2Nk LnJlZHVjZShhLDEpDQoNClRoZSBuZXh0IHF1ZXN0aW9uIGlzIGhvdyBJIGNhbiBnZW5lcmF0ZSBu ZGFycmF5IG9mIGgsayxsIGluZGljZXMuIFRoaXMgY2FuIGJlIGVhc2lseSBkb25lIGZyb20gYSBQ eXRob24gbGlzdCBieSB1c2luZyB0aGUgZm9sbG93aW5nIGNvZGUuDQoNCmltcG9ydCBudW1weSBh cyBucA0KaGtsX2xpc3Q9W10NCmZvciBoIGluIHJhbmdlKDAsIG1heF9oKToNCuKAguKAguKAguKA guKAguKAgmZvciBrIGluIHJhbmdlKDAsIG1heF9rKToNCuKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAgmZvciBsIGluIHJhbmdlKDAsIG1heF9sKToNCuKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmhrbF9sb2NhbD1bXQ0K4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaGtsX2xvY2Fs LmFwcGVuZChoKQ0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCCaGtsX2xvY2FsLmFwcGVuZChrKQ0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaGtsX2xvY2FsLmFwcGVuZChsKQ0K4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaGtsX2xpc3QuYXBw ZW5kKGhrbF9sb2NhbCkNCmhrbD1ucC5hcnJheShoa2xfbGlzdCwgZHR5cGU9bnAuaW50NjQpDQoN ClRoaXMgY29kZSB3aWxsIGdlbmVyYXRlIGEgdHdvLWRpbWVuc2lvbmFsIG5kYXJyYXkgb2YgaCxr LGwgaW5kaWNlcyBidXQgaXMgaXQgcG9zc2libGUgdG8gbWFrZSBhIGZhc3RlciByb3V0aW5lIHdp dGggTnVtUHk/DQoNClJlZ2FyZHMsDQpEbWl0cnkNCg0KDQoNCg0KX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fX18NCkZyb206IFB5dGhvbi1saXN0IDxweXRob24tbGlzdC1ib3VuY2VzK2Rw b3Bvdj1hbmwuZ292QHB5dGhvbi5vcmc+IG9uIGJlaGFsZiBvZiBQb3BvdiwgRG1pdHJ5IFl1IHZp YSBQeXRob24tbGlzdCA8cHl0aG9uLWxpc3RAcHl0aG9uLm9yZz4NClNlbnQ6IFRodXJzZGF5LCBK dWx5IDExLCAyMDI0IDI6MjUgUE0NClRvOiBhdmkuZS5ncm9zc0BnbWFpbC5jb20gPGF2aS5lLmdy b3NzQGdtYWlsLmNvbT47ICdQb3BvdiwgRG1pdHJ5IFl1IHZpYSBQeXRob24tbGlzdCcgPHB5dGhv bi1saXN0QHB5dGhvbi5vcmc+DQpTdWJqZWN0OiBSZTogUmVsYXRpdmVseSBwcmltZSBpbnRlZ2Vy cyBpbiBOdW1QeQ0KDQpUaGFuayB5b3UgZm9yIHlvdXIgaW50ZXJlc3QuIE15IGV4cGxhbmF0aW9u IGlzIHRvbyBjb25jaXNlIGluZGVlZCwgc29ycnkuIFNvIGZhciwgSSBoYXZlIHVzZWQgUHl0aG9u IGNvZGUgd2l0aCB0aHJlZSBlbmNsb3NlZCAnZm9yJyBsb29wcyBmb3IgdGhpcyBwdXJwb3NlIHdo aWNoIGlzIHByZXR0eSB0aW1lIGNvbnN1bWluZy4gSSdtIHRyeWluZyB0byBkZXZlbG9wIGEgTnVt UHkgYmFzZWQgY29kZSB0byBtYWtlIHRoaXMNClpqUWNtUVJZRnBmcHRCYW5uZXJTdGFydA0KVGhp cyBNZXNzYWdlIElzIEZyb20gYW4gRXh0ZXJuYWwgU2VuZGVyDQpUaGlzIG1lc3NhZ2UgY2FtZSBm cm9tIG91dHNpZGUgeW91ciBvcmdhbml6YXRpb24uDQoNClpqUWNtUVJZRnBmcHRCYW5uZXJFbmQN Cg0KVGhhbmsgeW91IGZvciB5b3VyIGludGVyZXN0LiBNeSBleHBsYW5hdGlvbiBpcyB0b28gY29u Y2lzZSBpbmRlZWQsIHNvcnJ5LiBTbyBmYXIsIEkgaGF2ZSB1c2VkIFB5dGhvbiBjb2RlIHdpdGgg dGhyZWUgZW5jbG9zZWQgJ2ZvcicgbG9vcHMgZm9yIHRoaXMgcHVycG9zZSB3aGljaCBpcyBwcmV0 dHkgdGltZSBjb25zdW1pbmcuIEknbSB0cnlpbmcgdG8gZGV2ZWxvcCBhIE51bVB5IGJhc2VkIGNv ZGUgdG8gbWFrZSB0aGlzIHByb2NlZHVyZSBmYXN0ZXIuIFRoaXMgcm91dGluZSBpcyBraW5kIG9m ICdoZWFydCcgb2YgdGhlIGFsZ29yaXRobSB0byBpbmRleCBvZiBYLXJheSBMYXVlIGRpZmZyYWN0 aW9uIHBhdHRlcm5zLiBJbiBvdXIgZ3JvdXAgd2UgaGF2ZSB0byBwcm9jZXNzIGh1Z2UgYW1vdW50 IG9mIHN1Y2ggcGF0dGVybnMuIFRoZXkgYXJlIGNvbGxlY3RlZCBhdCBhIHN5bmNocm90cm9uIHJh ZGlhdGlvbiBmYWNpbGl0eS4gRmFzdGVyIGluZGV4YXRpb24gcm91dGluZSB3b3VsZCBoZWxwIGEg bG90Lg0KDQpUaGlzIGlzIHRoZSBjb2RlIEknbSBjdXJyZW50bHkgdXNpbmcuIEFueSBwcm9tcHRz IGhvdyB0byBpbXBsZW1lbnQgaXQgaW4gTnVtUHkgd291bGQgYmUgaGlnaGx5IGFwcHJlY2lhdGVk Lg0KDQpmb3IgaCBpbiByYW5nZSgwLCBtYXhfaCk6DQrigILigILigILigILigILigIJmb3IgayBp biByYW5nZSgwLCBtYXhfayk6DQrigILigILigILigILigILigILigILigILigILigILigILigIJm b3IgbCBpbiByYW5nZSgwLCBtYXhfbCk6DQrigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigIJjaHZlYz0xDQrigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigIJtYXhtdWx0PTINCuKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGggPiAxOuKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgg0K4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCCbWF4bXVsdD1oDQrigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigIJpZiBrID4gMToNCuKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgm1heG11bHQ9aw0K 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYg bCA+IDE6DQrigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigIJtYXhtdWx0PWwNCuKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGggPiAxOg0K4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC aWYgbWF4bXVsdCA+IGg6DQrigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJtYXhtdWx0 PWgNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA gmlmIGsgPiAxOg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYgbWF4bXVsdCA+IGs6DQrigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigIJtYXhtdWx0PWsNCuKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGwgPiAxOg0K4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYg bWF4bXVsdCA+IGw6DQrigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJtYXhtdWx0PWwN CuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgm1h eG11bHQ9bWF4bXVsdCsxDQrigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigIJmb3IgaW5uZW4gaW4gcmFuZ2UoMiwgbWF4bXVsdCk6DQrigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigIJpZiBoIGluIHJhbmdlKDAsIChtYXhfaCsxKSwgaW5uZW4pOg0K4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCCaWYgayBpbiByYW5nZSgwLCAobWF4X2srMSksIGlubmVuKToNCuKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGwgaW4g cmFuZ2UoMCwgKG1heF9sKzEpLCBpbm5lbik6DQrigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigIJjaHZlYz0wDQrigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJpZiBjaHZlYz09 MToNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAgiMgT25seSByZWxhdGl2ZWx5IHByaW1lIGludGVnZXJzIGgsayxs IHBhc3MgdG8gdGhpcyBibG9jayBvZiB0aGUgY29kZQ0KDQoNCl9fX19fX19fX19fX19fX19fX19f X19fX19fX19fX19fDQpGcm9tOiBhdmkuZS5ncm9zc0BnbWFpbC5jb20gPGF2aS5lLmdyb3NzQGdt YWlsLmNvbT4NClNlbnQ6IFRodXJzZGF5LCBKdWx5IDExLCAyMDI0IDE6MjIgUE0NClRvOiBQb3Bv diwgRG1pdHJ5IFl1IDxkcG9wb3ZAYW5sLmdvdj47ICdQb3BvdiwgRG1pdHJ5IFl1IHZpYSBQeXRo b24tbGlzdCcgPHB5dGhvbi1saXN0QHB5dGhvbi5vcmc+DQpTdWJqZWN0OiBSRTogUmVsYXRpdmVs eSBwcmltZSBpbnRlZ2VycyBpbiBOdW1QeQ0KDQrQlNC80LjRgtGA0LjQuSwgWW91IG1heSB0aGlu ayB5b3UgZXhwbGFpbmVkIHdoYXQgeW91IHdhbnRlZCBidXQgSSBkbyBub3Qgc2VlIHdoYXQgcmVz dWx0IHlvdSBleHBlY3QgZnJvbSB5b3VyIGV4YW1wbGVzLiBZb3VyIHJlcXVlc3QgaXMgYSBiaXQg dG9vIGVzb3RlcmljIHRvIGJlIGEgZ3JlYXQgY2FuZGlkYXRlIGZvciBiZWluZyBidWlsdCBpbnRv IGEgbW9kdWxlIGxpa2UgbnVtcHkgZm9yIGdlbmVyYWwgcHVycG9zZSBzZSBidXQNClpqUWNtUVJZ RnBmcHRCYW5uZXJTdGFydA0KVGhpcyBNZXNzYWdlIElzIEZyb20gYW4gRXh0ZXJuYWwgU2VuZGVy DQpUaGlzIG1lc3NhZ2UgY2FtZSBmcm9tIG91dHNpZGUgeW91ciBvcmdhbml6YXRpb24uDQoNClpq UWNtUVJZRnBmcHRCYW5uZXJFbmQNCg0K0JTQvNC40YLRgNC40LksDQoNCllvdSBtYXkgdGhpbmsg eW91IGV4cGxhaW5lZCB3aGF0IHlvdSB3YW50ZWQgYnV0IEkgZG8gbm90IHNlZSB3aGF0IHJlc3Vs dCB5b3UNCmV4cGVjdCBmcm9tIHlvdXIgZXhhbXBsZXMuDQoNCllvdXIgcmVxdWVzdCBpcyBhIGJp dCB0b28gZXNvdGVyaWMgdG8gYmUgYSBncmVhdCBjYW5kaWRhdGUgZm9yIGJlaW5nIGJ1aWx0DQpp bnRvIGEgbW9kdWxlIGxpa2UgbnVtcHkgZm9yIGdlbmVyYWwgcHVycG9zZSBzZSBidXQgSSBjYW4g aW1hZ2luZSBpdCBjb3VsZA0KYmUgYXZhaWxhYmxlIGluIG1vZHVsZXMgYnVpbGQgb24gdG9wIG9m IG51bXB5Lg0KDQpJcyB0aGVyZSBhIHJlYXNvbiB5b3UgY2Fubm90IHNvbHZlIHRoaXMgbW9zdGx5 IG91dHNpZGUgbnVtcHk/DQoNCkl0IGxvb2tzIGxpa2UgeW91IGNvdWxkIHVzZSBudW1weSB0byBz ZWxlY3QgdGhlIG51bWJlcnMgeW91IHdhbnQgdG8gY29tcGFyZSwNCnRoZW4gY2FsbCBvbmUgb2Yg bWFueSBtZXRob2RzIHlvdSBjYW4gZWFzaWx5IHNlYXJjaCBmb3IgdG8gc2VlICBob3cgdG8gdXNl DQpweXRob24gdG8gbWFrZSBzb21lIGxpc3Qgb3Igb3RoZXIgZGF0YSBzdHJ1Y3R1cmUgZm9yIGRp dmlzb3JzIG9mIGVhY2ggbnVtYmVyDQppbnZvbHZlZCBhbmQgdGhlbiB1c2Ugc3RhbmRhcmQgbWV0 aG9kcyB0byBjb21wYXJlIHRoZSBsaXN0cyBhbmQgZXhhY3QgY29tbW9uDQpkaXZpc29ycy4gSWYg bmVlZGVkLCB5b3UgY291bGQgdGhlbiBwdXQgdGhlIHJlc3VsdHMgYmFjayBpbnRvIHlvdXIgb3Jp Z2luYWwNCmRhdGEgc3RydWN0dXJlIHVzaW5nIG51bXB5IGFsYmVpdCB0aGUgbnVtYmVyIG9mIG1h dGNoZXMgY2FuIHZhcnkuDQoNCk1heWJlIGEgYmV0dGVyIGV4cGxhbmF0aW9uIGlzIG5lZWRlZCBh cyBJIGNhbm5vdCBzZWUgd2hhdCB5b3VyIGxhdHRlciB3b3Jkcw0KYWJvdXQgLTEgYW5kIDEgYXJl IGFib3V0LiBQZXJoYXBzIHNvbWVvbmUgZWxzZSBrbm93cy4NCg0KDQoNCg0KLS0tLS1PcmlnaW5h bCBNZXNzYWdlLS0tLS0NCkZyb206IFB5dGhvbi1saXN0IDxweXRob24tbGlzdC1ib3VuY2VzK2F2 aS5lLmdyb3NzPWdtYWlsLmNvbUBweXRob24ub3JnPiBPbg0KQmVoYWxmIE9mIFBvcG92LCBEbWl0 cnkgWXUgdmlhIFB5dGhvbi1saXN0DQpTZW50OiBNb25kYXksIEp1bHkgOCwgMjAyNCAzOjEwIFBN DQpUbzogUG9wb3YsIERtaXRyeSBZdSB2aWEgUHl0aG9uLWxpc3QgPHB5dGhvbi1saXN0QHB5dGhv bi5vcmc+DQpTdWJqZWN0OiBSZWxhdGl2ZWx5IHByaW1lIGludGVnZXJzIGluIE51bVB5DQoNCkRl YXIgU2lycy4NCg0KRG9lcyBOdW1QeSBwcm92aWRlIGEgc2ltcGxlIG1lY2hhbmlzbSB0byBpZGVu dGlmeSByZWxhdGl2ZWx5IHByaW1lIGludGVnZXJzLA0KaS5lLiBpbnRlZ2VycyB3aGljaCBkb24n dCBoYXZlIGEgY29tbW9uIGZhY3RvciBvdGhlciB0aGFuICsxIG9yIC0xPyBGb3INCmV4YW1wbGUs IGluIGNhc2Ugb2YgdGhpcyBhcnJheToNCltbMSw1LDhdLA0KICBbMiw0LDhdLA0KICBbMywzLDld XQ0KSSBjYW4gaW1hZ2luZSBhIGZ1bmN0aW9uIHdoaWNoIHdvdWxkIHJldHVybiBhcnJheSBvZiBj b21tb24gZmFjdG9ycyBhbG9uZw0KYXhpcyAwOiBbMSwyLDNdLiBUaG9zZSB0cmlwbGVzIG9mIG51 bWJlcnMgYWxvbmcgYXhpcyAxIHdpdGggdGhlIGZhY3RvciBvZjENCm9yIC0xIHdvdWxkIGJlIHJl bGF0aXZlbHkgcHJpbWUgaW50ZWdlcnMuDQoNClJlZ2FyZHMsDQpEbWl0cnkgUG9wb3YNCg0KQXJn b25uZSwgSUwNClVTQQ0KDQotLQ0KaHR0cHM6Ly91cmxkZWZlbnNlLnVzL3YzL19faHR0cHM6Ly9t YWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tbGlzdF9fOyEhR191Q2ZzY2Y3 ZVdTIVpHSzFaWFlnbUM2Y3BOYTF4VFhWVE5rbGh1bmpZaWlud2FEZV94RTNzSnlWczRaY1ZnVUJf djJGS3ZEekRzcHg3SXpGQ1pJN0pwRnNpVjVpSDU4UCQNCg0KDQotLQ0KaHR0cHM6Ly91cmxkZWZl bnNlLnVzL3YzL19faHR0cHM6Ly9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRo b24tbGlzdF9fOyEhR191Q2ZzY2Y3ZVdTIWF2WkFfUk5IbkkyYUJ5MkUyWjNrd1BDWTNCNGFEdG94 T2JpdDU0MFB6SGVJV180czFUa2txNU5hcFhMM0t6R1h2MkJUV2JZUUpIZjZBc2tlVEMtSUVBJA0K DQo=

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From avi.e.gross@gmail.com@3:633/280.2 to All on Sat Jul 13 09:57:35 2024
    RG1pdHJ5LA0KDQogDQoNCkkgY2xlYXJseSBkaWQgbm90IHVuZGVyc3RhbmQgd2hhdCB5b3Ugd2Fu dGVkIGVhcmxpZXIgYXMgeW91IGhhZCBub3QgbWFkZSBjbGVhciB0aGF0IGluIHlvdXIgZXhhbXBs ZSwgeW91IGFscmVhZHkgaGFkIHByb2dyZXNzZWQgdG8gc29tZSBsZXZlbCB3aGVyZSB5b3UgaGFk IHRoZSBkYXRhIGFuZCB3ZXJlIG5vdyBkb2luZyBhIHNlY29uZCBzdGVwLiBTbywgSSBoZXNpdGF0 ZSB0byBzYXkgbXVjaCB1bnRpbCBlaXRoZXIgbm9ib2R5IGVsc2UgYWRkcmVzc2VkIHRoZSBpc3N1 ZSAoYXMgY2xlYXJseSBzb21lIGhhdmUpIG9yIHlvdSBleHBsYWluIHdlbGwgZW5vdWdoLg0KDQog DQoNCkkgYW0gZ3Vlc3NpbmcgeW91IGhhdmUgcHJvZ3JhbW1pbmcgZXhwZXJpZW5jZSBpbiBvdGhl ciBsYW5ndWFnZXMgYW5kIGFyZSBub3QgYXMg4oCccHl0aG9uaWPigJ0gYXMgc29tZS4gVGhlIGNv ZGUgeW91IHNob3cgbWF5IG5vdCBiZSBxdWl0ZSBob3cgb3RoZXJzIG1pZ2h0IGRvIGl0LiBTb21l IG1heSB3cml0ZSBtY2ggb2YgeW91ciBjb2RlIGFzIGEgc2luZ2xlIGxpbmUgb2YgcHl0aG9uIHVz aW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uIHN1Y2ggYXM6DQoNCiANCg0KaGtsX2xpc3QgPSBbIFto LCBrLCBsXSBmb3IgU09NRVRISU5HIGluIFJBTkdFICBmb3IgU09NRVRISU5HMiAgaW4gUkFOR0Uy IGZvciBTT01FVEhJTkczIGluIFJBTkdFM10gICAgICAgICANCg0KIA0KDQpXaGVyZSBoLCBrLiBs IGNvbWUgZnJvbSB0aGUgc29tZXRoaW5ncy4NCg0KIA0KDQpCYWNrIHRvIHRoZSByZWFsIHdvcmxk Lg0KDQogDQoNCiANCg0KRnJvbTogUG9wb3YsIERtaXRyeSBZdSA8ZHBvcG92QGFubC5nb3Y+IA0K U2VudDogRnJpZGF5LCBKdWx5IDEyLCAyMDI0IDE6MTMgUE0NClRvOiBhdmkuZS5ncm9zc0BnbWFp bC5jb207ICdQb3BvdiwgRG1pdHJ5IFl1IHZpYSBQeXRob24tbGlzdCcgPHB5dGhvbi1saXN0QHB5 dGhvbi5vcmc+OyBvc2Nhci5qLmJlbmphbWluQGdtYWlsLmNvbTsgUG9wb3YsIERtaXRyeSBZdSA8 ZHBvcG92QGFubC5nb3Y+DQpTdWJqZWN0OiBSZTogUmVsYXRpdmVseSBwcmltZSBpbnRlZ2VycyBp biBOdW1QeQ0KDQogDQoNClRoYW5rIHlvdSB2ZXJ5IG11Y2gsIE9zY2FyLiANCg0KIA0KDQpVc2lu ZyB0aGUgZm9sbG93aW5nIGNvZGUgbG9va3MgbGlrZSBhIG11Y2ggYmV0dGVyIHNvbHV0aW9uIHRo YW4gbXkgY3VycmVudCBQeXRob24gY29kZSBpbmRlZWQuDQoNCm5wLmdjZC5yZWR1Y2UobnAudHJh bnNwb3NlKGEpKSANCm9yIA0KbnAuZ2NkLnJlZHVjZShhLDEpICANCiANClRoZSBuZXh0IHF1ZXN0 aW9uIGlzIGhvdyBJIGNhbiBnZW5lcmF0ZSBuZGFycmF5IG9mIGgsayxsIGluZGljZXMuIFRoaXMg Y2FuIGJlIGVhc2lseSBkb25lIGZyb20gYSBQeXRob24gbGlzdCBieSB1c2luZyB0aGUgZm9sbG93 aW5nIGNvZGUuDQogDQppbXBvcnQgbnVtcHkgYXMgbnANCmhrbF9saXN0PVtdDQpmb3IgaCBpbiBy YW5nZSgwLCBtYXhfaCk6DQrigILigILigILigILigILigIJmb3IgayBpbiByYW5nZSgwLCBtYXhf ayk6DQrigILigILigILigILigILigILigILigILigILigILigILigIJmb3IgbCBpbiByYW5nZSgw LCBtYXhfbCk6DQrigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigIJoa2xfbG9jYWw9W10NCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAgmhrbF9sb2NhbC5hcHBlbmQoaCkNCuKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmhrbF9sb2NhbC5hcHBlbmQoaykN CuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmhr bF9sb2NhbC5hcHBlbmQobCkNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAgmhrbF9saXN0LmFwcGVuZChoa2xfbG9jYWwpDQpoa2w9bnAuYXJyYXko aGtsX2xpc3QsIGR0eXBlPW5wLmludDY0KQ0KVGhpcyBjb2RlIHdpbGwgZ2VuZXJhdGUgYSB0d28t ZGltZW5zaW9uYWwgbmRhcnJheSBvZiBoLGssbCBpbmRpY2VzIGJ1dCBpcyBpdCBwb3NzaWJsZSB0 byBtYWtlIGEgZmFzdGVyIHJvdXRpbmUgd2l0aCBOdW1QeT8gDQogDQpSZWdhcmRzLA0KRG1pdHJ5 DQogDQogDQogDQogIF9fX19fICANCg0KDQpGcm9tOiBQeXRob24tbGlzdCA8cHl0aG9uLWxpc3Qt Ym91bmNlcytkcG9wb3Y9YW5sLmdvdkBweXRob24ub3JnIDxtYWlsdG86cHl0aG9uLWxpc3QtYm91 bmNlcytkcG9wb3Y9YW5sLmdvdkBweXRob24ub3JnPiA+IG9uIGJlaGFsZiBvZiBQb3BvdiwgRG1p dHJ5IFl1IHZpYSBQeXRob24tbGlzdCA8cHl0aG9uLWxpc3RAcHl0aG9uLm9yZyA8bWFpbHRvOnB5 dGhvbi1saXN0QHB5dGhvbi5vcmc+ID4NClNlbnQ6IFRodXJzZGF5LCBKdWx5IDExLCAyMDI0IDI6 MjUgUE0NClRvOiBhdmkuZS5ncm9zc0BnbWFpbC5jb20gPG1haWx0bzphdmkuZS5ncm9zc0BnbWFp bC5jb20+ICA8YXZpLmUuZ3Jvc3NAZ21haWwuY29tIDxtYWlsdG86YXZpLmUuZ3Jvc3NAZ21haWwu Y29tPiA+OyAnUG9wb3YsIERtaXRyeSBZdSB2aWEgUHl0aG9uLWxpc3QnIDxweXRob24tbGlzdEBw eXRob24ub3JnIDxtYWlsdG86cHl0aG9uLWxpc3RAcHl0aG9uLm9yZz4gPg0KU3ViamVjdDogUmU6 IFJlbGF0aXZlbHkgcHJpbWUgaW50ZWdlcnMgaW4gTnVtUHkgDQoNCiANCg0KVGhhbmsgeW91IGZv ciB5b3VyIGludGVyZXN0LiBNeSBleHBsYW5hdGlvbiBpcyB0b28gY29uY2lzZSBpbmRlZWQsIHNv cnJ5LiBTbyBmYXIsIEkgaGF2ZSB1c2VkIFB5dGhvbiBjb2RlIHdpdGggdGhyZWUgZW5jbG9zZWQg J2ZvcicgbG9vcHMgZm9yIHRoaXMgcHVycG9zZSB3aGljaCBpcyBwcmV0dHkgdGltZSBjb25zdW1p bmcuIEknbSB0cnlpbmcgdG8gZGV2ZWxvcCBhIE51bVB5IGJhc2VkIGNvZGUgdG8gbWFrZSB0aGlz IA0KDQpaalFjbVFSWUZwZnB0QmFubmVyU3RhcnQNCg0KVGhpcyBNZXNzYWdlIElzIEZyb20gYW4g RXh0ZXJuYWwgU2VuZGVyIA0KDQpUaGlzIG1lc3NhZ2UgY2FtZSBmcm9tIG91dHNpZGUgeW91ciBv cmdhbml6YXRpb24uIA0KDQogDQoNClpqUWNtUVJZRnBmcHRCYW5uZXJFbmQNCg0KVGhhbmsgeW91 IGZvciB5b3VyIGludGVyZXN0LiBNeSBleHBsYW5hdGlvbiBpcyB0b28gY29uY2lzZSBpbmRlZWQs IHNvcnJ5LiBTbyBmYXIsIEkgaGF2ZSB1c2VkIFB5dGhvbiBjb2RlIHdpdGggdGhyZWUgZW5jbG9z ZWQgJ2ZvcicgbG9vcHMgZm9yIHRoaXMgcHVycG9zZSB3aGljaCBpcyBwcmV0dHkgdGltZSBjb25z dW1pbmcuIEknbSB0cnlpbmcgdG8gZGV2ZWxvcCBhIE51bVB5IGJhc2VkIGNvZGUgdG8gbWFrZSB0 aGlzIHByb2NlZHVyZSBmYXN0ZXIuIFRoaXMgcm91dGluZSBpcyBraW5kIG9mICdoZWFydCcgb2Yg dGhlIGFsZ29yaXRobSB0byBpbmRleCBvZiBYLXJheSBMYXVlIGRpZmZyYWN0aW9uIHBhdHRlcm5z LiBJbiBvdXIgZ3JvdXAgd2UgaGF2ZSB0byBwcm9jZXNzIGh1Z2UgYW1vdW50IG9mIHN1Y2ggcGF0 dGVybnMuIFRoZXkgYXJlIGNvbGxlY3RlZCBhdCBhIHN5bmNocm90cm9uIHJhZGlhdGlvbiBmYWNp bGl0eS4gRmFzdGVyIGluZGV4YXRpb24gcm91dGluZSB3b3VsZCBoZWxwIGEgbG90Lg0KIA0KVGhp cyBpcyB0aGUgY29kZSBJJ20gY3VycmVudGx5IHVzaW5nLiBBbnkgcHJvbXB0cyBob3cgdG8gaW1w bGVtZW50IGl0IGluIE51bVB5IHdvdWxkIGJlIGhpZ2hseSBhcHByZWNpYXRlZC4NCiANCmZvciBo IGluIHJhbmdlKDAsIG1heF9oKToNCuKAguKAguKAguKAguKAguKAgmZvciBrIGluIHJhbmdlKDAs IG1heF9rKToNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmZvciBsIGluIHJh bmdlKDAsIG1heF9sKToNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAgmNodmVjPTENCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAgm1heG11bHQ9Mg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYgaCA+IDE64oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCDQrigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gIJtYXhtdWx0PWgNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAgmlmIGsgPiAxOg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCbWF4bXVsdD1rDQrigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJpZiBsID4gMToNCuKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAgm1heG11bHQ9bA0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYgaCA+IDE6DQrigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJpZiBtYXhtdWx0 ID4gaDoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgm1heG11bHQ9aA0K4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYgayA+IDE6 DQrigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigIJpZiBtYXhtdWx0ID4gazoNCuKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAgm1heG11bHQ9aw0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCCaWYgbCA+IDE6DQrigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJpZiBtYXhtdWx0ID4g bDoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgm1heG11bHQ9bA0K4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCbWF4bXVsdD1tYXht dWx0KzENCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAgmZvciBpbm5lbiBpbiByYW5nZSgyLCBtYXhtdWx0KToNCuKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGgg aW4gcmFuZ2UoMCwgKG1heF9oKzEpLCBpbm5lbik6DQrigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigIJpZiBrIGluIHJhbmdlKDAsIChtYXhfaysxKSwgaW5uZW4pOg0K4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYgbCBpbiByYW5nZSgwLCAo bWF4X2wrMSksIGlubmVuKToNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmNodmVjPTANCuKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGNodmVjPT0xOg0K4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCCIyBPbmx5IHJlbGF0aXZlbHkgcHJpbWUgaW50ZWdlcnMgaCxrLGwgcGFzcyB0byB0 aGlzIGJsb2NrIG9mIHRoZSBjb2RlDQogDQogDQpfX19fX19fX19fX19fX19fX19fX19fX19fX19f X19fXw0KRnJvbTogYXZpLmUuZ3Jvc3NAZ21haWwuY29tIDxtYWlsdG86YXZpLmUuZ3Jvc3NAZ21h aWwuY29tPiAgPGF2aS5lLmdyb3NzQGdtYWlsLmNvbSA8bWFpbHRvOmF2aS5lLmdyb3NzQGdtYWls LmNvbT4gPg0KU2VudDogVGh1cnNkYXksIEp1bHkgMTEsIDIwMjQgMToyMiBQTQ0KVG86IFBvcG92 LCBEbWl0cnkgWXUgPGRwb3BvdkBhbmwuZ292IDxtYWlsdG86ZHBvcG92QGFubC5nb3Y+ID47ICdQ b3BvdiwgRG1pdHJ5IFl1IHZpYSBQeXRob24tbGlzdCcgPHB5dGhvbi1saXN0QHB5dGhvbi5vcmcg PG1haWx0bzpweXRob24tbGlzdEBweXRob24ub3JnPiA+DQpTdWJqZWN0OiBSRTogUmVsYXRpdmVs eSBwcmltZSBpbnRlZ2VycyBpbiBOdW1QeQ0KIA0K0JTQvNC40YLRgNC40LksIFlvdSBtYXkgdGhp bmsgeW91IGV4cGxhaW5lZCB3aGF0IHlvdSB3YW50ZWQgYnV0IEkgZG8gbm90IHNlZSB3aGF0IHJl c3VsdCB5b3UgZXhwZWN0IGZyb20geW91ciBleGFtcGxlcy4gWW91ciByZXF1ZXN0IGlzIGEgYml0 IHRvbyBlc290ZXJpYyB0byBiZSBhIGdyZWF0IGNhbmRpZGF0ZSBmb3IgYmVpbmcgYnVpbHQgaW50 byBhIG1vZHVsZSBsaWtlIG51bXB5IGZvciBnZW5lcmFsIHB1cnBvc2Ugc2UgYnV0DQpaalFjbVFS WUZwZnB0QmFubmVyU3RhcnQNClRoaXMgTWVzc2FnZSBJcyBGcm9tIGFuIEV4dGVybmFsIFNlbmRl cg0KVGhpcyBtZXNzYWdlIGNhbWUgZnJvbSBvdXRzaWRlIHlvdXIgb3JnYW5pemF0aW9uLg0KIA0K WmpRY21RUllGcGZwdEJhbm5lckVuZA0KIA0K0JTQvNC40YLRgNC40LksDQogDQpZb3UgbWF5IHRo aW5rIHlvdSBleHBsYWluZWQgd2hhdCB5b3Ugd2FudGVkIGJ1dCBJIGRvIG5vdCBzZWUgd2hhdCBy ZXN1bHQgeW91DQpleHBlY3QgZnJvbSB5b3VyIGV4YW1wbGVzLg0KIA0KWW91ciByZXF1ZXN0IGlz IGEgYml0IHRvbyBlc290ZXJpYyB0byBiZSBhIGdyZWF0IGNhbmRpZGF0ZSBmb3IgYmVpbmcgYnVp bHQNCmludG8gYSBtb2R1bGUgbGlrZSBudW1weSBmb3IgZ2VuZXJhbCBwdXJwb3NlIHNlIGJ1dCBJ IGNhbiBpbWFnaW5lIGl0IGNvdWxkDQpiZSBhdmFpbGFibGUgaW4gbW9kdWxlcyBidWlsZCBvbiB0 b3Agb2YgbnVtcHkuDQogDQpJcyB0aGVyZSBhIHJlYXNvbiB5b3UgY2Fubm90IHNvbHZlIHRoaXMg bW9zdGx5IG91dHNpZGUgbnVtcHk/DQogDQpJdCBsb29rcyBsaWtlIHlvdSBjb3VsZCB1c2UgbnVt cHkgdG8gc2VsZWN0IHRoZSBudW1iZXJzIHlvdSB3YW50IHRvIGNvbXBhcmUsDQp0aGVuIGNhbGwg b25lIG9mIG1hbnkgbWV0aG9kcyB5b3UgY2FuIGVhc2lseSBzZWFyY2ggZm9yIHRvIHNlZSAgaG93 IHRvIHVzZQ0KcHl0aG9uIHRvIG1ha2Ugc29tZSBsaXN0IG9yIG90aGVyIGRhdGEgc3RydWN0dXJl IGZvciBkaXZpc29ycyBvZiBlYWNoIG51bWJlcg0KaW52b2x2ZWQgYW5kIHRoZW4gdXNlIHN0YW5k YXJkIG1ldGhvZHMgdG8gY29tcGFyZSB0aGUgbGlzdHMgYW5kIGV4YWN0IGNvbW1vbg0KZGl2aXNv cnMuIElmIG5lZWRlZCwgeW91IGNvdWxkIHRoZW4gcHV0IHRoZSByZXN1bHRzIGJhY2sgaW50byB5 b3VyIG9yaWdpbmFsDQpkYXRhIHN0cnVjdHVyZSB1c2luZyBudW1weSBhbGJlaXQgdGhlIG51bWJl ciBvZiBtYXRjaGVzIGNhbiB2YXJ5Lg0KIA0KTWF5YmUgYSBiZXR0ZXIgZXhwbGFuYXRpb24gaXMg bmVlZGVkIGFzIEkgY2Fubm90IHNlZSB3aGF0IHlvdXIgbGF0dGVyIHdvcmRzDQphYm91dCAtMSBh bmQgMSBhcmUgYWJvdXQuIFBlcmhhcHMgc29tZW9uZSBlbHNlIGtub3dzLg0KIA0KIA0KIA0KIA0K LS0tLS1PcmlnaW5hbCBNZXNzYWdlLS0tLS0NCkZyb206IFB5dGhvbi1saXN0IDxweXRob24tbGlz dC1ib3VuY2VzK2F2aS5lLmdyb3NzPWdtYWlsLmNvbUBweXRob24ub3JnIDxtYWlsdG86cHl0aG9u LWxpc3QtYm91bmNlcythdmkuZS5ncm9zcz1nbWFpbC5jb21AcHl0aG9uLm9yZz4gPiBPbg0KQmVo YWxmIE9mIFBvcG92LCBEbWl0cnkgWXUgdmlhIFB5dGhvbi1saXN0DQpTZW50OiBNb25kYXksIEp1 bHkgOCwgMjAyNCAzOjEwIFBNDQpUbzogUG9wb3YsIERtaXRyeSBZdSB2aWEgUHl0aG9uLWxpc3Qg PHB5dGhvbi1saXN0QHB5dGhvbi5vcmcgPG1haWx0bzpweXRob24tbGlzdEBweXRob24ub3JnPiA+ DQpTdWJqZWN0OiBSZWxhdGl2ZWx5IHByaW1lIGludGVnZXJzIGluIE51bVB5DQogDQpEZWFyIFNp cnMuDQogDQpEb2VzIE51bVB5IHByb3ZpZGUgYSBzaW1wbGUgbWVjaGFuaXNtIHRvIGlkZW50aWZ5 IHJlbGF0aXZlbHkgcHJpbWUgaW50ZWdlcnMsDQppLmUuIGludGVnZXJzIHdoaWNoIGRvbid0IGhh dmUgYSBjb21tb24gZmFjdG9yIG90aGVyIHRoYW4gKzEgb3IgLTE/IEZvcg0KZXhhbXBsZSwgaW4g Y2FzZSBvZiB0aGlzIGFycmF5Og0KW1sxLDUsOF0sDQogIFsyLDQsOF0sDQogIFszLDMsOV1dDQpJ IGNhbiBpbWFnaW5lIGEgZnVuY3Rpb24gd2hpY2ggd291bGQgcmV0dXJuIGFycmF5IG9mIGNvbW1v biBmYWN0b3JzIGFsb25nDQpheGlzIDA6IFsxLDIsM10uIFRob3NlIHRyaXBsZXMgb2YgbnVtYmVy cyBhbG9uZyBheGlzIDEgd2l0aCB0aGUgZmFjdG9yIG9mMQ0Kb3IgLTEgd291bGQgYmUgcmVsYXRp dmVseSBwcmltZSBpbnRlZ2Vycy4NCiANClJlZ2FyZHMsDQpEbWl0cnkgUG9wb3YNCiANCkFyZ29u bmUsIElMDQpVU0ENCiANCi0tDQpodHRwczovL3VybGRlZmVuc2UudXMvdjMvX19odHRwczovL21h aWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1saXN0X187ISFHX3VDZnNjZjdl V1MhWkdLMVpYWWdtQzZjcE5hMXhUWFZUTmtsaHVuallpaW53YURlX3hFM3NKeVZzNFpjVmdVQl92 MkZLdkR6RHNweDdJekZDWkk3SnBGc2lWNWlINThQJCA8aHR0cHM6Ly91cmxkZWZlbnNlLnVzL3Yz L19faHR0cHM6L21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1saXN0X187 ISFHX3VDZnNjZjdlV1MhWkdLMVpYWWdtQzZjcE5hMXhUWFZUTmtsaHVuallpaW53YURlX3hFM3NK eVZzNFpjVmdVQl92MkZLdkR6RHNweDdJekZDWkk3SnBGc2lWNWlINThQJC0tPiANCiA8aHR0cHM6 Ly91cmxkZWZlbnNlLnVzL3YzL19faHR0cHM6L21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL3B5dGhvbi1saXN0X187ISFHX3VDZnNjZjdlV1MhWkdLMVpYWWdtQzZjcE5hMXhUWFZUTmts aHVuallpaW53YURlX3hFM3NKeVZzNFpjVmdVQl92MkZLdkR6RHNweDdJekZDWkk3SnBGc2lWNWlI NThQJC0tPiAgDQogPGh0dHBzOi8vdXJsZGVmZW5zZS51cy92My9fX2h0dHBzOi9tYWlsLnB5dGhv bi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tbGlzdF9fOyEhR191Q2ZzY2Y3ZVdTIVpHSzFa WFlnbUM2Y3BOYTF4VFhWVE5rbGh1bmpZaWlud2FEZV94RTNzSnlWczRaY1ZnVUJfdjJGS3ZEekRz cHg3SXpGQ1pJN0pwRnNpVjVpSDU4UCQtLT4gIA0KLS0gPGh0dHBzOi8vdXJsZGVmZW5zZS51cy92 My9fX2h0dHBzOi9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5mby9weXRob24tbGlzdF9f OyEhR191Q2ZzY2Y3ZVdTIVpHSzFaWFlnbUM2Y3BOYTF4VFhWVE5rbGh1bmpZaWlud2FEZV94RTNz SnlWczRaY1ZnVUJfdjJGS3ZEekRzcHg3SXpGQ1pJN0pwRnNpVjVpSDU4UCQtLT4gDQpodHRwczov L3VybGRlZmVuc2UudXMvdjMvX19odHRwczovL21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3Rp bmZvL3B5dGhvbi1saXN0X187ISFHX3VDZnNjZjdlV1MhYXZaQV9STkhuSTJhQnkyRTJaM2t3UENZ M0I0YUR0b3hPYml0NTQwUHpIZUlXXzRzMVRra3E1TmFwWEwzS3pHWHYyQlRXYllRSkhmNkFza2VU Qy1JRUEkIDxodHRwczovL3VybGRlZmVuc2UudXMvdjMvX19odHRwczovbWFpbC5weXRob24ub3Jn L21haWxtYW4vbGlzdGluZm8vcHl0aG9uLWxpc3RfXzshIUdfdUNmc2NmN2VXUyFhdlpBX1JOSG5J MmFCeTJFMloza3dQQ1kzQjRhRHRveE9iaXQ1NDBQekhlSVdfNHMxVGtrcTVOYXBYTDNLekdYdjJC VFdiWVFKSGY2QXNrZVRDLUlFQSQ+IA0K

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From Popov, Dmitry Yu@3:633/280.2 to All on Sat Jul 13 13:10:12 2024
    :
    VGhhbmsgeW91IHZlcnkgbXVjaC4gTGlzdCBjb21wcmVoZW5zaW9ucyBtYWtlIGNvZGUgbXVjaCBt b3JlIGNvbmNpc2UgaW5kZWVkLiBEbyBsaXN0IGNvbXByZWhlbnNpb25zIGFsc28gaW1wcm92ZSB0 aGUgc3BlZWQgb2YgY2FsY3VsYXRpb25zPw0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19f X18NCkZyb206IGF2aS5lLmdyb3NzQGdtYWlsLmNvbSA8YXZpLmUuZ3Jvc3NAZ21haWwuY29tPg0K U2VudDogRnJpZGF5LCBKdWx5IDEyLCAyMDI0IDY6NTcgUE0NClRvOiBQb3BvdiwgRG1pdHJ5IFl1 IDxkcG9wb3ZAYW5sLmdvdj47ICdQb3BvdiwgRG1pdHJ5IFl1IHZpYSBQeXRob24tbGlzdCcgPHB5 dGhvbi1saXN0QHB5dGhvbi5vcmc+OyBvc2Nhci5qLmJlbmphbWluQGdtYWlsLmNvbSA8b3NjYXIu ai5iZW5qYW1pbkBnbWFpbC5jb20+DQpTdWJqZWN0OiBSRTogUmVsYXRpdmVseSBwcmltZSBpbnRl Z2VycyBpbiBOdW1QeQ0KDQpEbWl0cnksIEkgY2xlYXJseSBkaWQgbm90IHVuZGVyc3RhbmQgd2hh dCB5b3Ugd2FudGVkIGVhcmxpZXIgYXMgeW91IGhhZCBub3QgbWFkZSBjbGVhciB0aGF0IGluIHlv dXIgZXhhbXBsZSwgeW91IGFscmVhZHkgaGFkIHByb2dyZXNzZWQgdG8gc29tZSBsZXZlbCB3aGVy ZSB5b3UgaGFkIHRoZSBkYXRhIGFuZCB3ZXJlIG5vdyBkb2luZyBhIHNlY29uZCBzdGVwLiBTbywg SSBoZXNpdGF0ZSB0byBzYXkgbXVjaCB1bnRpbA0KWmpRY21RUllGcGZwdEJhbm5lclN0YXJ0DQpU aGlzIE1lc3NhZ2UgSXMgRnJvbSBhbiBFeHRlcm5hbCBTZW5kZXINClRoaXMgbWVzc2FnZSBjYW1l IGZyb20gb3V0c2lkZSB5b3VyIG9yZ2FuaXphdGlvbi4NCg0KWmpRY21RUllGcGZwdEJhbm5lckVu ZA0KDQpEbWl0cnksDQoNCg0KDQpJIGNsZWFybHkgZGlkIG5vdCB1bmRlcnN0YW5kIHdoYXQgeW91 IHdhbnRlZCBlYXJsaWVyIGFzIHlvdSBoYWQgbm90IG1hZGUgY2xlYXIgdGhhdCBpbiB5b3VyIGV4 YW1wbGUsIHlvdSBhbHJlYWR5IGhhZCBwcm9ncmVzc2VkIHRvIHNvbWUgbGV2ZWwgd2hlcmUgeW91 IGhhZCB0aGUgZGF0YSBhbmQgd2VyZSBub3cgZG9pbmcgYSBzZWNvbmQgc3RlcC4gU28sIEkgaGVz aXRhdGUgdG8gc2F5IG11Y2ggdW50aWwgZWl0aGVyIG5vYm9keSBlbHNlIGFkZHJlc3NlZCB0aGUg aXNzdWUgKGFzIGNsZWFybHkgc29tZSBoYXZlKSBvciB5b3UgZXhwbGFpbiB3ZWxsIGVub3VnaC4N Cg0KDQoNCkkgYW0gZ3Vlc3NpbmcgeW91IGhhdmUgcHJvZ3JhbW1pbmcgZXhwZXJpZW5jZSBpbiBv dGhlciBsYW5ndWFnZXMgYW5kIGFyZSBub3QgYXMg4oCccHl0aG9uaWPigJ0gYXMgc29tZS4gVGhl IGNvZGUgeW91IHNob3cgbWF5IG5vdCBiZSBxdWl0ZSBob3cgb3RoZXJzIG1pZ2h0IGRvIGl0LiBT b21lIG1heSB3cml0ZSBtY2ggb2YgeW91ciBjb2RlIGFzIGEgc2luZ2xlIGxpbmUgb2YgcHl0aG9u IHVzaW5nIGEgbGlzdCBjb21wcmVoZW5zaW9uIHN1Y2ggYXM6DQoNCg0KDQpoa2xfbGlzdCA9IFsg W2gsIGssIGxdIGZvciBTT01FVEhJTkcgaW4gUkFOR0UgIGZvciBTT01FVEhJTkcyICBpbiBSQU5H RTIgZm9yIFNPTUVUSElORzMgaW4gUkFOR0UzXQ0KDQoNCg0KV2hlcmUgaCwgay4gbCBjb21lIGZy b20gdGhlIHNvbWV0aGluZ3MuDQoNCg0KDQpCYWNrIHRvIHRoZSByZWFsIHdvcmxkLg0KDQoNCg0K DQoNCkZyb206IFBvcG92LCBEbWl0cnkgWXUgPGRwb3BvdkBhbmwuZ292Pg0KU2VudDogRnJpZGF5 LCBKdWx5IDEyLCAyMDI0IDE6MTMgUE0NClRvOiBhdmkuZS5ncm9zc0BnbWFpbC5jb207ICdQb3Bv diwgRG1pdHJ5IFl1IHZpYSBQeXRob24tbGlzdCcgPHB5dGhvbi1saXN0QHB5dGhvbi5vcmc+OyBv c2Nhci5qLmJlbmphbWluQGdtYWlsLmNvbTsgUG9wb3YsIERtaXRyeSBZdSA8ZHBvcG92QGFubC5n b3Y+DQpTdWJqZWN0OiBSZTogUmVsYXRpdmVseSBwcmltZSBpbnRlZ2VycyBpbiBOdW1QeQ0KDQoN Cg0KVGhhbmsgeW91IHZlcnkgbXVjaCwgT3NjYXIuDQoNCg0KDQpVc2luZyB0aGUgZm9sbG93aW5n IGNvZGUgbG9va3MgbGlrZSBhIG11Y2ggYmV0dGVyIHNvbHV0aW9uIHRoYW4gbXkgY3VycmVudCBQ eXRob24gY29kZSBpbmRlZWQuDQoNCm5wLmdjZC5yZWR1Y2UobnAudHJhbnNwb3NlKGEpKQ0KDQpv cg0KDQpucC5nY2QucmVkdWNlKGEsMSkNCg0KDQoNClRoZSBuZXh0IHF1ZXN0aW9uIGlzIGhvdyBJ IGNhbiBnZW5lcmF0ZSBuZGFycmF5IG9mIGgsayxsIGluZGljZXMuIFRoaXMgY2FuIGJlIGVhc2ls eSBkb25lIGZyb20gYSBQeXRob24gbGlzdCBieSB1c2luZyB0aGUgZm9sbG93aW5nIGNvZGUuDQoN Cg0KDQppbXBvcnQgbnVtcHkgYXMgbnANCg0KaGtsX2xpc3Q9W10NCg0KZm9yIGggaW4gcmFuZ2Uo MCwgbWF4X2gpOg0KDQrigILigILigILigILigILigIJmb3IgayBpbiByYW5nZSgwLCBtYXhfayk6 DQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmZvciBsIGluIHJhbmdlKDAs IG1heF9sKToNCg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCCaGtsX2xvY2FsPVtdDQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAgmhrbF9sb2NhbC5hcHBlbmQoaCkNCg0K4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaGtsX2xvY2FsLmFwcGVu ZChrKQ0KDQrigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigIJoa2xfbG9jYWwuYXBwZW5kKGwpDQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAgmhrbF9saXN0LmFwcGVuZChoa2xfbG9jYWwpDQoNCmhr bD1ucC5hcnJheShoa2xfbGlzdCwgZHR5cGU9bnAuaW50NjQpDQoNClRoaXMgY29kZSB3aWxsIGdl bmVyYXRlIGEgdHdvLWRpbWVuc2lvbmFsIG5kYXJyYXkgb2YgaCxrLGwgaW5kaWNlcyBidXQgaXMg aXQgcG9zc2libGUgdG8gbWFrZSBhIGZhc3RlciByb3V0aW5lIHdpdGggTnVtUHk/DQoNCg0KDQpS ZWdhcmRzLA0KDQpEbWl0cnkNCg0KDQoNCg0KDQoNCg0KX19fX19fX19fX19fX19fX19fX19fX19f X19fX19fX18NCg0KRnJvbTogUHl0aG9uLWxpc3QgPHB5dGhvbi1saXN0LWJvdW5jZXMrZHBvcG92 PWFubC5nb3ZAcHl0aG9uLm9yZzxtYWlsdG86cHl0aG9uLWxpc3QtYm91bmNlcytkcG9wb3Y9YW5s LmdvdkBweXRob24ub3JnPj4gb24gYmVoYWxmIG9mIFBvcG92LCBEbWl0cnkgWXUgdmlhIFB5dGhv bi1saXN0IDxweXRob24tbGlzdEBweXRob24ub3JnPG1haWx0bzpweXRob24tbGlzdEBweXRob24u b3JnPj4NClNlbnQ6IFRodXJzZGF5LCBKdWx5IDExLCAyMDI0IDI6MjUgUE0NClRvOiBhdmkuZS5n cm9zc0BnbWFpbC5jb208bWFpbHRvOmF2aS5lLmdyb3NzQGdtYWlsLmNvbT4gPGF2aS5lLmdyb3Nz QGdtYWlsLmNvbTxtYWlsdG86YXZpLmUuZ3Jvc3NAZ21haWwuY29tPj47ICdQb3BvdiwgRG1pdHJ5 IFl1IHZpYSBQeXRob24tbGlzdCcgPHB5dGhvbi1saXN0QHB5dGhvbi5vcmc8bWFpbHRvOnB5dGhv bi1saXN0QHB5dGhvbi5vcmc+Pg0KU3ViamVjdDogUmU6IFJlbGF0aXZlbHkgcHJpbWUgaW50ZWdl cnMgaW4gTnVtUHkNCg0KDQoNClRoYW5rIHlvdSBmb3IgeW91ciBpbnRlcmVzdC4gTXkgZXhwbGFu YXRpb24gaXMgdG9vIGNvbmNpc2UgaW5kZWVkLCBzb3JyeS4gU28gZmFyLCBJIGhhdmUgdXNlZCBQ eXRob24gY29kZSB3aXRoIHRocmVlIGVuY2xvc2VkICdmb3InIGxvb3BzIGZvciB0aGlzIHB1cnBv c2Ugd2hpY2ggaXMgcHJldHR5IHRpbWUgY29uc3VtaW5nLiBJJ20gdHJ5aW5nIHRvIGRldmVsb3Ag YSBOdW1QeSBiYXNlZCBjb2RlIHRvIG1ha2UgdGhpcw0KDQpaalFjbVFSWUZwZnB0QmFubmVyU3Rh cnQNCg0KVGhpcyBNZXNzYWdlIElzIEZyb20gYW4gRXh0ZXJuYWwgU2VuZGVyDQoNClRoaXMgbWVz c2FnZSBjYW1lIGZyb20gb3V0c2lkZSB5b3VyIG9yZ2FuaXphdGlvbi4NCg0KDQoNClpqUWNtUVJZ RnBmcHRCYW5uZXJFbmQNCg0KVGhhbmsgeW91IGZvciB5b3VyIGludGVyZXN0LiBNeSBleHBsYW5h dGlvbiBpcyB0b28gY29uY2lzZSBpbmRlZWQsIHNvcnJ5LiBTbyBmYXIsIEkgaGF2ZSB1c2VkIFB5 dGhvbiBjb2RlIHdpdGggdGhyZWUgZW5jbG9zZWQgJ2ZvcicgbG9vcHMgZm9yIHRoaXMgcHVycG9z ZSB3aGljaCBpcyBwcmV0dHkgdGltZSBjb25zdW1pbmcuIEknbSB0cnlpbmcgdG8gZGV2ZWxvcCBh IE51bVB5IGJhc2VkIGNvZGUgdG8gbWFrZSB0aGlzIHByb2NlZHVyZSBmYXN0ZXIuIFRoaXMgcm91 dGluZSBpcyBraW5kIG9mICdoZWFydCcgb2YgdGhlIGFsZ29yaXRobSB0byBpbmRleCBvZiBYLXJh eSBMYXVlIGRpZmZyYWN0aW9uIHBhdHRlcm5zLiBJbiBvdXIgZ3JvdXAgd2UgaGF2ZSB0byBwcm9j ZXNzIGh1Z2UgYW1vdW50IG9mIHN1Y2ggcGF0dGVybnMuIFRoZXkgYXJlIGNvbGxlY3RlZCBhdCBh IHN5bmNocm90cm9uIHJhZGlhdGlvbiBmYWNpbGl0eS4gRmFzdGVyIGluZGV4YXRpb24gcm91dGlu ZSB3b3VsZCBoZWxwIGEgbG90Lg0KDQoNCg0KVGhpcyBpcyB0aGUgY29kZSBJJ20gY3VycmVudGx5 IHVzaW5nLiBBbnkgcHJvbXB0cyBob3cgdG8gaW1wbGVtZW50IGl0IGluIE51bVB5IHdvdWxkIGJl IGhpZ2hseSBhcHByZWNpYXRlZC4NCg0KDQoNCmZvciBoIGluIHJhbmdlKDAsIG1heF9oKToNCg0K 4oCC4oCC4oCC4oCC4oCC4oCCZm9yIGsgaW4gcmFuZ2UoMCwgbWF4X2spOg0KDQrigILigILigILi gILigILigILigILigILigILigILigILigIJmb3IgbCBpbiByYW5nZSgwLCBtYXhfbCk6DQoNCuKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmNodmVj PTENCg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCCbWF4bXVsdD0yDQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAgmlmIGggPiAxOuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAgg0KDQrigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJtYXhtdWx0PWgN Cg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC aWYgayA+IDE6DQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAgm1heG11bHQ9aw0KDQrigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigIJpZiBsID4gMToNCg0K4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCCbWF4bXVsdD1sDQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAgmlmIGggPiAxOg0KDQrigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJpZiBtYXhtdWx0 ID4gaDoNCg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCbWF4bXVsdD1oDQoNCuKA guKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGsg PiAxOg0KDQrigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigILigILigILigILigILigIJpZiBtYXhtdWx0ID4gazoNCg0K4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCCbWF4bXVsdD1rDQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAguKAguKAgmlmIGwgPiAxOg0KDQrigILigILigILigILigILi gILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILigIJp ZiBtYXhtdWx0ID4gbDoNCg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCbWF4bXVs dD1sDQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAgm1heG11bHQ9bWF4bXVsdCsxDQoNCuKAguKAguKAguKAguKAguKAguKAguKAguKAguKAguKA guKAguKAguKAguKAguKAguKAguKAgmZvciBpbm5lbiBpbiByYW5nZSgyLCBtYXhtdWx0KToNCg0K 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCCaWYgaCBpbiByYW5nZSgwLCAobWF4X2grMSksIGlubmVuKToNCg0K4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCaWYgayBpbiByYW5nZSgwLCAobWF4X2srMSks IGlubmVuKToNCg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCCaWYgbCBpbiByYW5nZSgwLCAobWF4X2wrMSksIGlubmVuKToNCg0K4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC Y2h2ZWM9MA0KDQrigILigILigILigILigILigILigILigILigILigILigILigILigILigILigILi gILigILigIJpZiBjaHZlYz09MToNCg0K4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC 4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCC4oCCIyBPbmx5IHJlbGF0aXZlbHkg cHJpbWUgaW50ZWdlcnMgaCxrLGwgcGFzcyB0byB0aGlzIGJsb2NrIG9mIHRoZSBjb2RlDQoNCg0K DQoNCg0KX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX18NCg0KRnJvbTogYXZpLmUuZ3Jv c3NAZ21haWwuY29tPG1haWx0bzphdmkuZS5ncm9zc0BnbWFpbC5jb20+IDxhdmkuZS5ncm9zc0Bn bWFpbC5jb208bWFpbHRvOmF2aS5lLmdyb3NzQGdtYWlsLmNvbT4+DQoNClNlbnQ6IFRodXJzZGF5 LCBKdWx5IDExLCAyMDI0IDE6MjIgUE0NCg0KVG86IFBvcG92LCBEbWl0cnkgWXUgPGRwb3BvdkBh bmwuZ292PG1haWx0bzpkcG9wb3ZAYW5sLmdvdj4+OyAnUG9wb3YsIERtaXRyeSBZdSB2aWEgUHl0 aG9uLWxpc3QnIDxweXRob24tbGlzdEBweXRob24ub3JnPG1haWx0bzpweXRob24tbGlzdEBweXRo b24ub3JnPj4NCg0KU3ViamVjdDogUkU6IFJlbGF0aXZlbHkgcHJpbWUgaW50ZWdlcnMgaW4gTnVt UHkNCg0KDQoNCtCU0LzQuNGC0YDQuNC5LCBZb3UgbWF5IHRoaW5rIHlvdSBleHBsYWluZWQgd2hh dCB5b3Ugd2FudGVkIGJ1dCBJIGRvIG5vdCBzZWUgd2hhdCByZXN1bHQgeW91IGV4cGVjdCBmcm9t IHlvdXIgZXhhbXBsZXMuIFlvdXIgcmVxdWVzdCBpcyBhIGJpdCB0b28gZXNvdGVyaWMgdG8gYmUg YSBncmVhdCBjYW5kaWRhdGUgZm9yIGJlaW5nIGJ1aWx0IGludG8gYSBtb2R1bGUgbGlrZSBudW1w eSBmb3IgZ2VuZXJhbCBwdXJwb3NlIHNlIGJ1dA0KDQpaalFjbVFSWUZwZnB0QmFubmVyU3RhcnQN Cg0KVGhpcyBNZXNzYWdlIElzIEZyb20gYW4gRXh0ZXJuYWwgU2VuZGVyDQoNClRoaXMgbWVzc2Fn ZSBjYW1lIGZyb20gb3V0c2lkZSB5b3VyIG9yZ2FuaXphdGlvbi4NCg0KDQoNClpqUWNtUVJZRnBm cHRCYW5uZXJFbmQNCg0KDQoNCtCU0LzQuNGC0YDQuNC5LA0KDQoNCg0KWW91IG1heSB0aGluayB5 b3UgZXhwbGFpbmVkIHdoYXQgeW91IHdhbnRlZCBidXQgSSBkbyBub3Qgc2VlIHdoYXQgcmVzdWx0 IHlvdQ0KDQpleHBlY3QgZnJvbSB5b3VyIGV4YW1wbGVzLg0KDQoNCg0KWW91ciByZXF1ZXN0IGlz IGEgYml0IHRvbyBlc290ZXJpYyB0byBiZSBhIGdyZWF0IGNhbmRpZGF0ZSBmb3IgYmVpbmcgYnVp bHQNCg0KaW50byBhIG1vZHVsZSBsaWtlIG51bXB5IGZvciBnZW5lcmFsIHB1cnBvc2Ugc2UgYnV0 IEkgY2FuIGltYWdpbmUgaXQgY291bGQNCg0KYmUgYXZhaWxhYmxlIGluIG1vZHVsZXMgYnVpbGQg b24gdG9wIG9mIG51bXB5Lg0KDQoNCg0KSXMgdGhlcmUgYSByZWFzb24geW91IGNhbm5vdCBzb2x2 ZSB0aGlzIG1vc3RseSBvdXRzaWRlIG51bXB5Pw0KDQoNCg0KSXQgbG9va3MgbGlrZSB5b3UgY291 bGQgdXNlIG51bXB5IHRvIHNlbGVjdCB0aGUgbnVtYmVycyB5b3Ugd2FudCB0byBjb21wYXJlLA0K DQp0aGVuIGNhbGwgb25lIG9mIG1hbnkgbWV0aG9kcyB5b3UgY2FuIGVhc2lseSBzZWFyY2ggZm9y IHRvIHNlZSAgaG93IHRvIHVzZQ0KDQpweXRob24gdG8gbWFrZSBzb21lIGxpc3Qgb3Igb3RoZXIg ZGF0YSBzdHJ1Y3R1cmUgZm9yIGRpdmlzb3JzIG9mIGVhY2ggbnVtYmVyDQoNCmludm9sdmVkIGFu ZCB0aGVuIHVzZSBzdGFuZGFyZCBtZXRob2RzIHRvIGNvbXBhcmUgdGhlIGxpc3RzIGFuZCBleGFj dCBjb21tb24NCg0KZGl2aXNvcnMuIElmIG5lZWRlZCwgeW91IGNvdWxkIHRoZW4gcHV0IHRoZSBy ZXN1bHRzIGJhY2sgaW50byB5b3VyIG9yaWdpbmFsDQoNCmRhdGEgc3RydWN0dXJlIHVzaW5nIG51 bXB5IGFsYmVpdCB0aGUgbnVtYmVyIG9mIG1hdGNoZXMgY2FuIHZhcnkuDQoNCg0KDQpNYXliZSBh IGJldHRlciBleHBsYW5hdGlvbiBpcyBuZWVkZWQgYXMgSSBjYW5ub3Qgc2VlIHdoYXQgeW91ciBs YXR0ZXIgd29yZHMNCg0KYWJvdXQgLTEgYW5kIDEgYXJlIGFib3V0LiBQZXJoYXBzIHNvbWVvbmUg ZWxzZSBrbm93cy4NCg0KDQoNCg0KDQoNCg0KDQoNCi0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0t DQoNCkZyb206IFB5dGhvbi1saXN0IDxweXRob24tbGlzdC1ib3VuY2VzK2F2aS5lLmdyb3NzPWdt YWlsLmNvbUBweXRob24ub3JnPG1haWx0bzpweXRob24tbGlzdC1ib3VuY2VzK2F2aS5lLmdyb3Nz PWdtYWlsLmNvbUBweXRob24ub3JnPj4gT24NCg0KQmVoYWxmIE9mIFBvcG92LCBEbWl0cnkgWXUg dmlhIFB5dGhvbi1saXN0DQoNClNlbnQ6IE1vbmRheSwgSnVseSA4LCAyMDI0IDM6MTAgUE0NCg0K VG86IFBvcG92LCBEbWl0cnkgWXUgdmlhIFB5dGhvbi1saXN0IDxweXRob24tbGlzdEBweXRob24u b3JnPG1haWx0bzpweXRob24tbGlzdEBweXRob24ub3JnPj4NCg0KU3ViamVjdDogUmVsYXRpdmVs eSBwcmltZSBpbnRlZ2VycyBpbiBOdW1QeQ0KDQoNCg0KRGVhciBTaXJzLg0KDQoNCg0KRG9lcyBO dW1QeSBwcm92aWRlIGEgc2ltcGxlIG1lY2hhbmlzbSB0byBpZGVudGlmeSByZWxhdGl2ZWx5IHBy aW1lIGludGVnZXJzLA0KDQppLmUuIGludGVnZXJzIHdoaWNoIGRvbid0IGhhdmUgYSBjb21tb24g ZmFjdG9yIG90aGVyIHRoYW4gKzEgb3IgLTE/IEZvcg0KDQpleGFtcGxlLCBpbiBjYXNlIG9mIHRo aXMgYXJyYXk6DQoNCltbMSw1LDhdLA0KDQogIFsyLDQsOF0sDQoNCiAgWzMsMyw5XV0NCg0KSSBj YW4gaW1hZ2luZSBhIGZ1bmN0aW9uIHdoaWNoIHdvdWxkIHJldHVybiBhcnJheSBvZiBjb21tb24g ZmFjdG9ycyBhbG9uZw0KDQpheGlzIDA6IFsxLDIsM10uIFRob3NlIHRyaXBsZXMgb2YgbnVtYmVy cyBhbG9uZyBheGlzIDEgd2l0aCB0aGUgZmFjdG9yIG9mMQ0KDQpvciAtMSB3b3VsZCBiZSByZWxh dGl2ZWx5IHByaW1lIGludGVnZXJzLg0KDQoNCg0KUmVnYXJkcywNCg0KRG1pdHJ5IFBvcG92DQoN Cg0KDQpBcmdvbm5lLCBJTA0KDQpVU0ENCg0KDQoNCi0tDQoNCmh0dHBzOi8vdXJsZGVmZW5zZS51 cy92My9fX2h0dHBzOi8vbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLWxp c3RfXzshIUdfdUNmc2NmN2VXUyFaR0sxWlhZZ21DNmNwTmExeFRYVlROa2xodW5qWWlpbndhRGVf eEUzc0p5VnM0WmNWZ1VCX3YyRkt2RHpEc3B4N0l6RkNaSTdKcEZzaVY1aUg1OFAkPGh0dHBzOi8v dXJsZGVmZW5zZS51cy92My9fX2h0dHBzOi9tYWlsLnB5dGhvbi5vcmcvbWFpbG1hbi9saXN0aW5m by9weXRob24tbGlzdF9fOyEhR191Q2ZzY2Y3ZVdTIVpHSzFaWFlnbUM2Y3BOYTF4VFhWVE5rbGh1 bmpZaWlud2FEZV94RTNzSnlWczRaY1ZnVUJfdjJGS3ZEekRzcHg3SXpGQ1pJN0pwRnNpVjVpSDU4 UCQtLT4NCg0KIDxodHRwczovL3VybGRlZmVuc2UudXMvdjMvX19odHRwczovbWFpbC5weXRob24u b3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLWxpc3RfXzshIUdfdUNmc2NmN2VXUyFaR0sxWlhZ Z21DNmNwTmExeFRYVlROa2xodW5qWWlpbndhRGVfeEUzc0p5VnM0WmNWZ1VCX3YyRkt2RHpEc3B4 N0l6RkNaSTdKcEZzaVY1aUg1OFAkLS0+DQoNCiA8aHR0cHM6Ly91cmxkZWZlbnNlLnVzL3YzL19f aHR0cHM6L21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1saXN0X187ISFH X3VDZnNjZjdlV1MhWkdLMVpYWWdtQzZjcE5hMXhUWFZUTmtsaHVuallpaW53YURlX3hFM3NKeVZz NFpjVmdVQl92MkZLdkR6RHNweDdJekZDWkk3SnBGc2lWNWlINThQJC0tPg0KDQotLTxodHRwczov L3VybGRlZmVuc2UudXMvdjMvX19odHRwczovbWFpbC5weXRob24ub3JnL21haWxtYW4vbGlzdGlu Zm8vcHl0aG9uLWxpc3RfXzshIUdfdUNmc2NmN2VXUyFaR0sxWlhZZ21DNmNwTmExeFRYVlROa2xo dW5qWWlpbndhRGVfeEUzc0p5VnM0WmNWZ1VCX3YyRkt2RHpEc3B4N0l6RkNaSTdKcEZzaVY1aUg1 OFAkLS0+DQoNCmh0dHBzOi8vdXJsZGVmZW5zZS51cy92My9fX2h0dHBzOi8vbWFpbC5weXRob24u b3JnL21haWxtYW4vbGlzdGluZm8vcHl0aG9uLWxpc3RfXzshIUdfdUNmc2NmN2VXUyFhdlpBX1JO SG5JMmFCeTJFMloza3dQQ1kzQjRhRHRveE9iaXQ1NDBQekhlSVdfNHMxVGtrcTVOYXBYTDNLekdY djJCVFdiWVFKSGY2QXNrZVRDLUlFQSQ8aHR0cHM6Ly91cmxkZWZlbnNlLnVzL3YzL19faHR0cHM6 L21haWwucHl0aG9uLm9yZy9tYWlsbWFuL2xpc3RpbmZvL3B5dGhvbi1saXN0X187ISFHX3VDZnNj ZjdlV1MhYXZaQV9STkhuSTJhQnkyRTJaM2t3UENZM0I0YUR0b3hPYml0NTQwUHpIZUlXXzRzMVRr a3E1TmFwWEwzS3pHWHYyQlRXYllRSkhmNkFza2VUQy1JRUEkPg0K

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)
  • From avi.e.gross@gmail.com@3:633/280.2 to All on Sat Jul 13 14:46:55 2024
    Dmitry,

    =20

    Efficiency of several kinds is hotly debated and sometimes it depends a =
    lot on what is done within loops.

    =20

    Many suggest a mild speed up of some comprehensions over loops but the =
    loops are not gone but somewhat hidden and perhaps some aspects are =
    faster for having been written in C carefully and not interpreted.

    =20

    Comprehensions (and there are other versions that generate dictionaries =
    and tuples and sets) may also be sped up a bit for other reasons like =
    your fairly expensive APPPEND that has to keep finding the end o f a =
    growing list and is not done the same way in a comprehension.

    =20

    If you do a search, you find many opinions including on using functional = programming techniques such as map/reduce. There are also=20

    =20

    Your particular case is interesting because it just makes all =
    combination of three variables. Some languages, like R, have functions =
    that do this for you, like expand.grd. Python has many modules, like = itertools that do things including combinations but perhaps not designed =
    for your case.=20

    =20

    Here is a version of your scenario:

    =20

    import itertools

    a =3D range(3)

    b =3D range(4)

    c =3D range(5)

    =20

    list(itertools.product(a,b,c))

    =20

    The result comes as tuples but as you are moving the result into numpy, =
    does it matter:

    =20

    list(itertools.product(a,b,c))

    [(0, 0, 0), (0, 0, 1), (0, 0, 2), (0, 0, 3), (0, 0, 4), (0, 1, 0), (0, =
    1, 1), (0, 1, 2), (0, 1, 3), (0, 1, 4), (0, 2, 0), (0, 2, 1), (0, 2, 2), =
    (0, 2, 3), (0, 2, 4), (0, 3, 0), (0, 3, 1), (0, 3, 2), (0, 3, 3), (0, 3, =
    4), (1, 0, 0), (1, 0, 1), (1, 0, 2), (1, 0, 3), (1, 0, 4), (1, 1, 0), =
    (1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 1, 4), (1, 2, 0), (1, 2, 1), (1, 2, =
    2), (1, 2, 3), (1, 2, 4), (1, 3, 0), (1, 3, 1), (1, 3, 2), (1, 3, 3), =
    (1, 3, 4), (2, 0, 0), (2, 0, 1), (2, 0, 2), (2, 0, 3), (2, 0, 4), (2, 1, =
    0), (2, 1, 1), (2, 1, 2), (2, 1, 3), (2, 1, 4), (2, 2, 0), (2, 2, 1), =
    (2, 2, 2), (2, 2, 3), (2, 2, 4), (2, 3, 0), (2, 3, 1), (2, 3, 2), (2, 3, =
    3), (2, 3, 4)]

    =20

    Or a atd easier to read pretty printed:

    =20

    import pprint

    pprint.pprint(list(itertools.product(a,b,c)))

    [(0, 0, 0),

    (0, 0, 1),

    (0, 0, 2),

    (0, 0, 3),

    (0, 0, 4),

    (0, 1, 0),

    (0, 1, 1),

    (0, 1, 2),

    (0, 1, 3),

    (0, 1, 4),

    (0, 2, 0),

    (0, 2, 1),

    (0, 2, 2),

    (0, 2, 3),

    (0, 2, 4),

    (0, 3, 0),

    (0, 3, 1),

    (0, 3, 2),

    (0, 3, 3),

    (0, 3, 4),

    (1, 0, 0),

    (1, 0, 1),

    (1, 0, 2),

    (1, 0, 3),

    (1, 0, 4),

    (1, 1, 0),

    (1, 1, 1),

    (1, 1, 2),

    (1, 1, 3),

    (1, 1, 4),

    (1, 2, 0),

    (1, 2, 1),

    (1, 2, 2),

    (1, 2, 3),

    (1, 2, 4),

    (1, 3, 0),

    (1, 3, 1),

    (1, 3, 2),

    (1, 3, 3),

    (1, 3, 4),

    (2, 0, 0),

    (2, 0, 1),

    (2, 0, 2),

    (2, 0, 3),

    (2, 0, 4),

    (2, 1, 0),

    (2, 1, 1),

    (2, 1, 2),

    (2, 1, 3),

    (2, 1, 4),

    (2, 2, 0),

    (2, 2, 1),

    (2, 2, 2),

    (2, 2, 3),

    (2, 2, 4),

    (2, 3, 0),

    (2, 3, 1),

    (2, 3, 2),

    (2, 3, 3),

    (2, 3, 4)]

    =20

    I think that is close enough to what you want but is it faster? You can =
    try a benchmarking method on alternatives.

    =20

    =20

    =20

    =20

    From: Popov, Dmitry Yu <dpopov@anl.gov>=20
    Sent: Friday, July 12, 2024 11:10 PM
    To: avi.e.gross@gmail.com; 'Popov, Dmitry Yu via Python-list' = <python-list@python.org>; oscar.j.benjamin@gmail.com
    Subject: Re: Relatively prime integers in NumPy

    =20

    Thank you very much. List comprehensions make code much more concise =
    indeed. Do list comprehensions also improve the speed of calculations?

    _____ =20

    From: avi.e.gross@gmail.com <mailto:avi.e.gross@gmail.com> = <avi.e.gross@gmail.com <mailto:avi.e.gross@gmail.com> >
    Sent: Friday, July 12, 2024 6:57 PM
    To: Popov, Dmitry Yu <dpopov@anl.gov <mailto:dpopov@anl.gov> >; 'Popov, = Dmitry Yu via Python-list' <python-list@python.org = <mailto:python-list@python.org> >; oscar.j.benjamin@gmail.com = <mailto:oscar.j.benjamin@gmail.com> <oscar.j.benjamin@gmail.com = <mailto:oscar.j.benjamin@gmail.com> >
    Subject: RE: Relatively prime integers in NumPy=20

    =20

    Dmitry, I clearly did not understand what you wanted earlier as you had =
    not made clear that in your example, you already had progressed to some =
    level where you had the data and were now doing a second step. So, I =
    hesitate to say much until=20

    ZjQcmQRYFpfptBannerStart

    This Message Is From an External Sender=20

    This message came from outside your organization.=20

    =20

    ZjQcmQRYFpfptBannerEnd

    Dmitry,

    =20

    I clearly did not understand what you wanted earlier as you had not made = clear that in your example, you already had progressed to some level =
    where you had the data and were now doing a second step. So, I hesitate =
    to say much until either nobody else addressed the issue (as clearly =
    some have) or you explain well enough.

    Ditr

    I am guessing you have programming experience in other languages and are =
    not as =E2=80=9Cpythonic=E2=80=9D as some. The code you show may not be =
    quite how others might do it. Some may write mch of your code as a =
    single line of python using a list comprehension such as:

    =20

    hkl_list =3D [ [h, k, l] for SOMETHING in RANGE for SOMETHING2 in =
    RANGE2 for SOMETHING3 in RANGE3] =20

    =20

    Where h, k. l come from the somethings.

    =20

    Back to the real world.

    =20

    =20

    From: Popov, Dmitry Yu <dpopov@anl.gov <mailto:dpopov@anl.gov> >=20
    Sent: Friday, July 12, 2024 1:13 PM
    To: avi.e.gross@gmail.com <mailto:avi.e.gross@gmail.com> ; 'Popov, =
    Dmitry Yu via Python-list' <python-list@python.org = <mailto:python-list@python.org> >; oscar.j.benjamin@gmail.com = <mailto:oscar.j.benjamin@gmail.com> ; Popov, Dmitry Yu <dpopov@anl.gov = <mailto:dpopov@anl.gov> >
    Subject: Re: Relatively prime integers in NumPy

    =20

    Thank you very much, Oscar.=20

    =20

    Using the following code looks like a much better solution than my =
    current Python code indeed.

    np.gcd.reduce(np.transpose(a))=20
    or=20
    np.gcd.reduce(a,1) =20
    =20
    The next question is how I can generate ndarray of h,k,l indices. This =
    can be easily done from a Python list by using the following code.
    =20
    import numpy as np
    hkl_list=3D[]
    for h in range(0, max_h): =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82for k in range(0, = max_k): =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82for l in range(0, max_l): =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82hkl_local=3D[] =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82hkl_local.append(h) =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82hkl_local.append(k) =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82hkl_local.append(l) =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82hkl_list.append(hkl_local)
    hkl=3Dnp.array(hkl_list, dtype=3Dnp.int64)
    This code will generate a two-dimensional ndarray of h,k,l indices but =
    is it possible to make a faster routine with NumPy?=20
    =20
    Regards,
    Dmitry
    =20
    =20
    =20
    _____ =20


    From: Python-list <python-list-bounces+dpopov=3Danl.gov@python.org = <mailto:python-list-bounces+dpopov=3Danl.gov@python.org> > on behalf of = Popov, Dmitry Yu via Python-list <python-list@python.org = <mailto:python-list@python.org> >
    Sent: Thursday, July 11, 2024 2:25 PM
    To: avi.e.gross@gmail.com <mailto:avi.e.gross@gmail.com> = <avi.e.gross@gmail.com <mailto:avi.e.gross@gmail.com> >; 'Popov, Dmitry =
    Yu via Python-list' <python-list@python.org =
    <mailto:python-list@python.org> >
    Subject: Re: Relatively prime integers in NumPy=20

    =20

    Thank you for your interest. My explanation is too concise indeed, =
    sorry. So far, I have used Python code with three enclosed 'for' loops =
    for this purpose which is pretty time consuming. I'm trying to develop a = NumPy based code to make this=20

    ZjQcmQRYFpfptBannerStart

    This Message Is From an External Sender=20

    This message came from outside your organization.=20

    =20

    ZjQcmQRYFpfptBannerEnd

    Thank you for your interest. My explanation is too concise indeed, =
    sorry. So far, I have used Python code with three enclosed 'for' loops =
    for this purpose which is pretty time consuming. I'm trying to develop a = NumPy based code to make this procedure faster. This routine is kind of = 'heart' of the algorithm to index of X-ray Laue diffraction patterns. In =
    our group we have to process huge amount of such patterns. They are =
    collected at a synchrotron radiation facility. Faster indexation routine = would help a lot.
    =20
    This is the code I'm currently using. Any prompts how to implement it in = NumPy would be highly appreciated.
    =20
    for h in range(0, max_h): =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82for k in range(0, = max_k): =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82for l in range(0, max_l): =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82chvec=3D1 =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82maxmult=3D2 =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82if h > = 1:=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82= =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82 =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82maxmult=
    =3Dh =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82if k > 1: =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82maxmult=
    =3Dk =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82if l > 1: =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82maxmult=
    =3Dl =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82if h > 1: =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82if =
    maxmult > h: =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82= =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82maxmult=3Dh =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82if k > 1: =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82if =
    maxmult > k: =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82= =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82maxmult=3Dk =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82if l > 1: =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82if =
    maxmult > l: =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82= =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82maxmult=3Dl =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82maxmult=3Dmaxmult+1 =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82for innen in range(2, maxmult): =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82if h =
    in range(0, (max_h+1), innen): =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82= =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82if k in range(0, (max_k+1), = innen): =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82= =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82if l in range(0, (max_l+1), innen): =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82= =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82chvec=3D0 =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82if chvec=3D=3D1: =E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2= =80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80= =82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82=E2=80=82# Only = relatively prime integers h,k,l pass to this block of the code
    =20
    =20
    ________________________________
    From: avi.e.gross@gmail.com <mailto:avi.e.gross@gmail.com> = <avi.e.gross@gmail.com <mailto:avi.e.gross@gmail.com> >
    Sent: Thursday, July 11, 2024 1:22 PM
    To: Popov, Dmitry Yu <dpopov@anl.gov <mailto:dpopov@anl.gov> >; 'Popov, = Dmitry Yu via Python-list' <python-list@python.org = <mailto:python-list@python.org> >
    Subject: RE: Relatively prime integers in NumPy
    =20
    =D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9, You may think you explained =
    what you wanted but I do not see what result you expect from your =
    examples. Your request is a bit too esoteric to be a great candidate for = being built into a module like numpy for general purpose se but ZjQcmQRYFpfptBannerStart
    This Message Is From an External Sender
    This message came from outside your organization.
    =20
    ZjQcmQRYFpfptBannerEnd
    =20
    =D0=94=D0=BC=D0=B8=D1=82=D1=80=D0=B8=D0=B9,
    =20
    You may think you explained what you wanted but I do not see what result =
    you
    expect from your examples.
    =20
    Your request is a bit too esoteric to be a great candidate for being =
    built
    into a module like numpy for general purpose se but I can imagine it =
    could
    be available in modules build on top of numpy.
    =20
    Is there a reason you cannot solve this mostly outside numpy?
    =20
    It looks like you could use numpy to select the numbers you want to =
    compare,
    then call one of many methods you can easily search for to see how to =
    use
    python to make some list or other data structure for divisors of each =
    number
    involved and then use standard methods to compare the lists and exact =
    common
    divisors. If needed, you could then put the results back into your =
    original
    data structure using numpy albeit the number of matches can vary.
    =20
    Maybe a better explanation is needed as I cannot see what your latter =
    words
    about -1 and 1 are about. Perhaps someone else knows.
    =20
    =20
    =20
    =20
    -----Original Message-----
    From: Python-list =
    <python-list-bounces+avi.e.gross=3Dgmail.com@python.org = <mailto:python-list-bounces+avi.e.gross=3Dgmail.com@python.org> > On
    Behalf Of Popov, Dmitry Yu via Python-list
    Sent: Monday, July 8, 2024 3:10 PM
    To: Popov, Dmitry Yu via Python-list <python-list@python.org = <mailto:python-list@python.org> >
    Subject: Relatively prime integers in NumPy
    =20
    Dear Sirs.
    =20
    Does NumPy provide a simple mechanism to identify relatively prime =
    integers,
    i.e. integers which don't have a common factor other than +1 or -1? For example, in case of this array:
    [[1,5,8],
    [2,4,8],
    [3,3,9]]
    I can imagine a function which would return array of common factors =
    along
    axis 0: [1,2,3]. Those triples of numbers along axis 1 with the factor =
    of1
    or -1 would be relatively prime integers.
    =20
    Regards,
    Dmitry Popov
    =20
    Argonne, IL
    USA
    =20
    --
    https://urldefense.us/v3/__https://mail.python.org/mailman/listinfo/pytho= n-list__;!!G_uCfscf7eWS!ZGK1ZXYgmC6cpNa1xTXVTNklhunjYiinwaDe_xE3sJyVs4ZcV= gUB_v2FKvDzDspx7IzFCZI7JpFsiV5iH58P$ = <https://urldefense.us/v3/__https:/mail.python.org/mailman/listinfo/pytho= n-list__;!!G_uCfscf7eWS!ZGK1ZXYgmC6cpNa1xTXVTNklhunjYiinwaDe_xE3sJyVs4ZcV= gUB_v2FKvDzDspx7IzFCZI7JpFsiV5iH58P$-->=20
    =
    <https://urldefense.us/v3/__https:/mail.python.org/mailman/listinfo/pytho= n-list__;!!G_uCfscf7eWS!ZGK1ZXYgmC6cpNa1xTXVTNklhunjYiinwaDe_xE3sJyVs4ZcV= gUB_v2FKvDzDspx7IzFCZI7JpFsiV5iH58P$--> =20
    =
    <https://urldefense.us/v3/__https:/mail.python.org/mailman/listinfo/pytho= n-list__;!!G_uCfscf7eWS!ZGK1ZXYgmC6cpNa1xTXVTNklhunjYiinwaDe_xE3sJyVs4ZcV= gUB_v2FKvDzDspx7IzFCZI7JpFsiV5iH58P$--> =20
    -- =
    <https://urldefense.us/v3/__https:/mail.python.org/mailman/listinfo/pytho= n-list__;!!G_uCfscf7eWS!ZGK1ZXYgmC6cpNa1xTXVTNklhunjYiinwaDe_xE3sJyVs4ZcV= gUB_v2FKvDzDspx7IzFCZI7JpFsiV5iH58P$-->=20 https://urldefense.us/v3/__https://mail.python.org/mailman/listinfo/pytho= n-list__;!!G_uCfscf7eWS!avZA_RNHnI2aBy2E2Z3kwPCY3B4aDtoxObit540PzHeIW_4s1= Tkkq5NapXL3KzGXv2BTWbYQJHf6AskeTC-IEA$ = <https://urldefense.us/v3/__https:/mail.python.org/mailman/listinfo/pytho= n-list__;!!G_uCfscf7eWS!avZA_RNHnI2aBy2E2Z3kwPCY3B4aDtoxObit540PzHeIW_4s1= Tkkq5NapXL3KzGXv2BTWbYQJHf6AskeTC-IEA$>=20

    --- MBSE BBS v1.0.8.4 (Linux-x86_64)
    * Origin: ---:- FTN<->UseNet Gate -:--- (3:633/280.2@fidonet)