platform_kernel-5.15/android
Todd Kjos 04a8e247ec ANDROID: GKI: 6/1/2022 KMI update
Set KMI_GENERATION=6 for 6/1 KMI update

Leaf changes summary: 4422 artifacts changed
Changed leaf types summary: 9 leaf types changed
Removed/Changed/Added functions summary: 123 Removed, 4189 Changed, 27 Added functions
Removed/Changed/Added variables summary: 2 Removed, 70 Changed, 2 Added variables

123 Removed functions:

  [D] 'function sk_buff* __cfg80211_alloc_event_skb(wiphy*, wireless_dev*, nl80211_commands, nl80211_attrs, unsigned int, int, int, gfp_t)'
  [D] 'function sk_buff* __cfg80211_alloc_reply_skb(wiphy*, nl80211_commands, nl80211_attrs, int)'
  [D] 'function void __cfg80211_radar_event(wiphy*, cfg80211_chan_def*, bool, gfp_t)'
  [D] 'function void __cfg80211_send_event_skb(sk_buff*, gfp_t)'
  [D] 'function int __traceiter_android_vh_gic_v3_set_affinity(void*, irq_data*, const cpumask*, u64*, bool, void*)'
  [D] 'function void cfg80211_assoc_timeout(net_device*, cfg80211_bss*)'
  [D] 'function void cfg80211_cac_event(net_device*, const cfg80211_chan_def*, nl80211_radar_event, gfp_t)'
  [D] 'function u32 cfg80211_calculate_bitrate(rate_info*)'
  [D] 'function void cfg80211_ch_switch_notify(net_device*, cfg80211_chan_def*)'
  [D] 'function void cfg80211_chandef_create(cfg80211_chan_def*, ieee80211_channel*, nl80211_channel_type)'
  [D] 'function unsigned int cfg80211_classify8021d(sk_buff*, cfg80211_qos_map*)'
  [D] 'function void cfg80211_connect_done(net_device*, cfg80211_connect_resp_params*, gfp_t)'
  [D] 'function void cfg80211_cqm_rssi_notify(net_device*, nl80211_cqm_rssi_threshold_event, s32, gfp_t)'
  [D] 'function void cfg80211_cqm_txe_notify(net_device*, const u8*, u32, u32, u32, gfp_t)'
  [D] 'function void cfg80211_del_sta_sinfo(net_device*, const u8*, station_info*, gfp_t)'
  [D] 'function void cfg80211_disconnected(net_device*, u16, const u8*, size_t, bool, gfp_t)'
  [D] 'function int cfg80211_external_auth_request(net_device*, cfg80211_external_auth_params*, gfp_t)'
  [D] 'function const element* cfg80211_find_elem_match(u8, const u8*, unsigned int, const u8*, unsigned int, unsigned int)'
  [D] 'function const element* cfg80211_find_vendor_elem(unsigned int, int, const u8*, unsigned int)'
  [D] 'function void cfg80211_ft_event(net_device*, cfg80211_ft_event_params*)'
  [D] 'function cfg80211_bss* cfg80211_get_bss(wiphy*, ieee80211_channel*, const u8*, const u8*, size_t, ieee80211_bss_type, ieee80211_privacy)'
  [D] 'function void cfg80211_gtk_rekey_notify(net_device*, const u8*, const u8*, gfp_t)'
  [D] 'function void cfg80211_ibss_joined(net_device*, const u8*, ieee80211_channel*, gfp_t)'
  [D] 'function cfg80211_bss* cfg80211_inform_bss_data(wiphy*, cfg80211_inform_bss*, cfg80211_bss_frame_type, const u8*, u64, u16, u16, const u8*, size_t, gfp_t)'
  [D] 'function cfg80211_bss* cfg80211_inform_bss_frame_data(wiphy*, cfg80211_inform_bss*, ieee80211_mgmt*, size_t, gfp_t)'
  [D] 'function void cfg80211_mgmt_tx_status(wireless_dev*, u64, const u8*, size_t, bool, gfp_t)'
  [D] 'function void cfg80211_michael_mic_failure(net_device*, const u8*, nl80211_key_type, int, const u8*, gfp_t)'
  [D] 'function void cfg80211_new_sta(net_device*, const u8*, station_info*, gfp_t)'
  [D] 'function void cfg80211_pmksa_candidate_notify(net_device*, int, const u8*, bool, gfp_t)'
  [D] 'function void cfg80211_port_authorized(net_device*, const u8*, gfp_t)'
  [D] 'function void cfg80211_put_bss(wiphy*, cfg80211_bss*)'
  [D] 'function void cfg80211_ready_on_channel(wireless_dev*, u64, ieee80211_channel*, unsigned int, gfp_t)'
  [D] 'function int cfg80211_register_netdevice(net_device*)'
  [D] 'function void cfg80211_remain_on_channel_expired(wireless_dev*, u64, ieee80211_channel*, gfp_t)'
  [D] 'function void cfg80211_report_wowlan_wakeup(wireless_dev*, cfg80211_wowlan_wakeup*, gfp_t)'
  [D] 'function void cfg80211_roamed(net_device*, cfg80211_roam_info*, gfp_t)'
  [D] 'function void cfg80211_rx_assoc_resp(net_device*, cfg80211_bss*, const u8*, size_t, int, const u8*, size_t)'
  [D] 'function bool cfg80211_rx_control_port(net_device*, sk_buff*, bool)'
  [D] 'function bool cfg80211_rx_mgmt_khz(wireless_dev*, int, int, const u8*, size_t, u32)'
  [D] 'function void cfg80211_rx_mlme_mgmt(net_device*, const u8*, size_t)'
  [D] 'function void cfg80211_rx_unprot_mlme_mgmt(net_device*, const u8*, size_t)'
  [D] 'function void cfg80211_scan_done(cfg80211_scan_request*, cfg80211_scan_info*)'
  [D] 'function void cfg80211_sched_scan_results(wiphy*, u64)'
  [D] 'function void cfg80211_sched_scan_stopped(wiphy*, u64)'
  [D] 'function void cfg80211_stop_iface(wiphy*, wireless_dev*, gfp_t)'
  [D] 'function void cfg80211_tdls_oper_request(net_device*, const u8*, nl80211_tdls_operation, u16, gfp_t)'
  [D] 'function void cfg80211_tx_mlme_mgmt(net_device*, const u8*, size_t, bool)'
  [D] 'function void cfg80211_unlink_bss(wiphy*, cfg80211_bss*)'
  [D] 'function void cfg80211_unregister_wdev(wireless_dev*)'
  [D] 'function void cfg80211_update_owe_info_event(net_device*, cfg80211_update_owe_info*, gfp_t)'
  [D] 'function unsigned int cfg80211_vendor_cmd_get_sender(wiphy*)'
  [D] 'function int cfg80211_vendor_cmd_reply(sk_buff*)'
  [D] 'function const ieee80211_reg_rule* freq_reg_info(wiphy*, u32)'
  [D] 'function ieee80211_hw* ieee80211_alloc_hw_nm(size_t, const ieee80211_ops*, const char*)'
  [D] 'function bool ieee80211_beacon_cntdwn_is_complete(ieee80211_vif*)'
  [D] 'function sk_buff* ieee80211_beacon_get_template(ieee80211_hw*, ieee80211_vif*, ieee80211_mutable_offsets*)'
  [D] 'function sk_buff* ieee80211_beacon_get_tim(ieee80211_hw*, ieee80211_vif*, u16*, u16*)'
  [D] 'function void ieee80211_beacon_loss(ieee80211_vif*)'
  [D] 'function u8 ieee80211_beacon_update_cntdwn(ieee80211_vif*)'
  [D] 'function const element* ieee80211_bss_get_elem(cfg80211_bss*, u8)'
  [D] 'function u32 ieee80211_channel_to_freq_khz(int, nl80211_band)'
  [D] 'function void ieee80211_connection_loss(ieee80211_vif*)'
  [D] 'function void ieee80211_csa_finish(ieee80211_vif*)'
  [D] 'function ieee80211_sta* ieee80211_find_sta(ieee80211_vif*, const u8*)'
  [D] 'function ieee80211_sta* ieee80211_find_sta_by_ifaddr(ieee80211_hw*, const u8*, const u8*)'
  [D] 'function void ieee80211_free_hw(ieee80211_hw*)'
  [D] 'function void ieee80211_free_txskb(ieee80211_hw*, sk_buff*)'
  [D] 'function int ieee80211_freq_khz_to_channel(u32)'
  [D] 'function sk_buff* ieee80211_get_buffered_bc(ieee80211_hw*, ieee80211_vif*)'
  [D] 'function ieee80211_channel* ieee80211_get_channel_khz(wiphy*, u32)'
  [D] 'function sk_buff* ieee80211_get_fils_discovery_tmpl(ieee80211_hw*, ieee80211_vif*)'
  [D] 'function unsigned int ieee80211_get_hdrlen_from_skb(const sk_buff*)'
  [D] 'function void ieee80211_get_tx_rates(ieee80211_vif*, ieee80211_sta*, sk_buff*, ieee80211_tx_rate*, int)'
  [D] 'function sk_buff* ieee80211_get_unsol_bcast_probe_resp_tmpl(ieee80211_hw*, ieee80211_vif*)'
  [D] 'function unsigned int ieee80211_hdrlen(__le16)'
  [D] 'function void ieee80211_iter_chan_contexts_atomic(ieee80211_hw*, void (ieee80211_hw*, ieee80211_chanctx_conf*, void*)*, void*)'
  [D] 'function void ieee80211_iterate_active_interfaces_atomic(ieee80211_hw*, u32, void (void*, u8*, ieee80211_vif*)*, void*)'
  [D] 'function void ieee80211_iterate_stations_atomic(ieee80211_hw*, void (void*, ieee80211_sta*)*, void*)'
  [D] 'function void ieee80211_manage_rx_ba_offl(ieee80211_vif*, const u8*, unsigned int)'
  [D] 'function ieee80211_txq* ieee80211_next_txq(ieee80211_hw*, u8)'
  [D] 'function bool ieee80211_operating_class_to_band(u8, nl80211_band*)'
  [D] 'function sk_buff* ieee80211_probereq_get(ieee80211_hw*, const u8*, const u8*, size_t, size_t)'
  [D] 'function sk_buff* ieee80211_proberesp_get(ieee80211_hw*, ieee80211_vif*)'
  [D] 'function void ieee80211_queue_delayed_work(ieee80211_hw*, delayed_work*, unsigned long int)'
  [D] 'function void ieee80211_queue_work(ieee80211_hw*, work_struct*)'
  [D] 'function void ieee80211_radar_detected(ieee80211_hw*)'
  [D] 'function void ieee80211_ready_on_channel(ieee80211_hw*)'
  [D] 'function int ieee80211_register_hw(ieee80211_hw*)'
  [D] 'function void ieee80211_remain_on_channel_expired(ieee80211_hw*)'
  [D] 'function void ieee80211_report_low_ack(ieee80211_sta*, u32)'
  [D] 'function void ieee80211_restart_hw(ieee80211_hw*)'
  [D] 'function void ieee80211_return_txq(ieee80211_hw*, ieee80211_txq*, bool)'
  [D] 'function void ieee80211_rx_irqsafe(ieee80211_hw*, sk_buff*)'
  [D] 'function void ieee80211_rx_napi(ieee80211_hw*, ieee80211_sta*, sk_buff*, napi_struct*)'
  [D] 'function void ieee80211_scan_completed(ieee80211_hw*, cfg80211_scan_info*)'
  [D] 'function void ieee80211_sta_register_airtime(ieee80211_sta*, u8, u32, u32)'
  [D] 'function void ieee80211_stop_queue(ieee80211_hw*, int)'
  [D] 'function void ieee80211_stop_queues(ieee80211_hw*)'
  [D] 'function void ieee80211_stop_tx_ba_cb_irqsafe(ieee80211_vif*, const u8*, u16)'
  [D] 'function void ieee80211_tdls_oper_request(ieee80211_vif*, const u8*, nl80211_tdls_operation, u16, gfp_t)'
  [D] 'function sk_buff* ieee80211_tx_dequeue(ieee80211_hw*, ieee80211_txq*)'
  [D] 'function bool ieee80211_tx_prepare_skb(ieee80211_hw*, ieee80211_vif*, sk_buff*, int, ieee80211_sta**)'
  [D] 'function void ieee80211_tx_rate_update(ieee80211_hw*, ieee80211_sta*, ieee80211_tx_info*)'
  [D] 'function void ieee80211_tx_status(ieee80211_hw*, sk_buff*)'
  [D] 'function void ieee80211_tx_status_irqsafe(ieee80211_hw*, sk_buff*)'
  [D] 'function void ieee80211_txq_get_depth(ieee80211_txq*, unsigned long int*, unsigned long int*)'
  [D] 'function bool ieee80211_txq_may_transmit(ieee80211_hw*, ieee80211_txq*)'
  [D] 'function void ieee80211_txq_schedule_start(ieee80211_hw*, u8)'
  [D] 'function void ieee80211_unregister_hw(ieee80211_hw*)'
  [D] 'function void ieee80211_wake_queue(ieee80211_hw*, int)'
  [D] 'function void ieee80211_wake_queues(ieee80211_hw*)'
  [D] 'function const char* reg_initiator_name(nl80211_reg_initiator)'
  [D] 'function int regulatory_hint(wiphy*, const char*)'
  [D] 'function int regulatory_set_wiphy_regd(wiphy*, ieee80211_regdomain*)'
  [D] 'function int regulatory_set_wiphy_regd_sync(wiphy*, ieee80211_regdomain*)'
  [D] 'function void wiphy_apply_custom_regulatory(wiphy*, const ieee80211_regdomain*)'
  [D] 'function void wiphy_free(wiphy*)'
  [D] 'function wiphy* wiphy_new_nm(const cfg80211_ops*, int, const char*)'
  [D] 'function void wiphy_read_of_freq_limits(wiphy*)'
  [D] 'function int wiphy_register(wiphy*)'
  [D] 'function void wiphy_rfkill_set_hw_state_reason(wiphy*, bool, rfkill_hard_block_reasons)'
  [D] 'function ieee80211_hw* wiphy_to_ieee80211_hw(wiphy*)'
  [D] 'function void wiphy_unregister(wiphy*)'

27 Added functions:

  [A] 'function void* __alloc_percpu_gfp(size_t, size_t, gfp_t)'
  [A] 'function int __dev_change_net_namespace(net_device*, net*, const char*, int)'
  [A] 'function void __hw_addr_init(netdev_hw_addr_list*)'
  [A] 'function int __hw_addr_sync(netdev_hw_addr_list*, netdev_hw_addr_list*, int)'
  [A] 'function void __hw_addr_unsync(netdev_hw_addr_list*, netdev_hw_addr_list*, int)'
  [A] 'function int __sock_create(net*, int, int, int, socket**, int)'
  [A] 'function int __traceiter_android_rvh_gic_v3_set_affinity(void*, irq_data*, const cpumask*, u64*, bool, void*)'
  [A] 'function void dev_fetch_sw_netstats(rtnl_link_stats64*, const pcpu_sw_netstats*)'
  [A] 'function int genlmsg_multicast_allns(const genl_family*, sk_buff*, u32, unsigned int, gfp_t)'
  [A] 'function net* get_net_ns_by_fd(int)'
  [A] 'function net* get_net_ns_by_pid(pid_t)'
  [A] 'function int inet_csk_get_port(sock*, unsigned short int)'
  [A] 'function void kernel_param_lock(module*)'
  [A] 'function void kernel_param_unlock(module*)'
  [A] 'function key_ref_t key_create_or_update(key_ref_t, const char*, const char*, void*, size_t, key_perm_t, unsigned long int)'
  [A] 'function ktime_t ktime_get_coarse_with_offset(tk_offsets)'
  [A] 'function void netdev_set_default_ethtool_ops(net_device*, const ethtool_ops*)'
  [A] 'function bool rfkill_blocked(rfkill*)'
  [A] 'function void rfkill_resume_polling(rfkill*)'
  [A] 'function bool rfkill_set_hw_state_reason(rfkill*, bool, unsigned long int)'
  [A] 'function void rhashtable_free_and_destroy(rhashtable*, void (void*, void*)*, void*)'
  [A] 'function int rhltable_init(rhltable*, const rhashtable_params*)'
  [A] 'function unsigned long int round_jiffies(unsigned long int)'
  [A] 'function sk_buff* skb_clone_sk(sk_buff*)'
  [A] 'function void skb_complete_wifi_ack(sk_buff*, bool)'
  [A] 'function int verify_pkcs7_signature(void*, size_t, void*, size_t, key*, key_being_used_for, int (void*, void*, typedef size_t, typedef size_t)*, void*)'
  [A] 'function void wireless_nlevent_flush()'

4189 functions with some sub-type change:

  [C] 'function block_device* I_BDEV(inode*)' at bdev.c:42:1 has some sub-type changes:
    CRC (modversions) changed from 0xf7fad46b to 0x9f8a3196

  [C] 'function void* PDE_DATA(const inode*)' at generic.c:794:1 has some sub-type changes:
    CRC (modversions) changed from 0x81aa91e0 to 0xec8a2781

  [C] 'function void __ClearPageMovable(page*)' at compaction.c:138:1 has some sub-type changes:
    CRC (modversions) changed from 0xdc002f78 to 0x84c84632

  ... 4186 omitted; 4189 symbols have only CRC changes

2 Removed variables:

  [D] 'tracepoint __tracepoint_android_vh_gic_v3_set_affinity'
  [D] 'const unsigned char rfc1042_header[6]'

2 Added variables:

  [A] 'tracepoint __tracepoint_android_rvh_gic_v3_set_affinity'
  [A] 'const kobj_ns_type_operations net_ns_type_operations'

70 Changed variables:

  [C] 'net init_net' was changed at net_namespace.c:47:1:
    CRC (modversions) changed from 0xd8c32acb to 0x2915d0ff
    type of variable changed:
      type size hasn't changed
      there are data member changes:
        type 'struct netns_ipv6' of 'net::ipv6' changed:
          type size hasn't changed
          there are data member changes:
            type 'unsigned int' of 'netns_ipv6::ip6_rt_gc_expire' changed:
              entity changed from 'unsigned int' to 'typedef atomic_t' at types.h:168:1
              type size hasn't changed
          4684 impacted interfaces
      4684 impacted interfaces

  [C] 'task_struct init_task' was changed at init_task.c:64:1:
    size of symbol changed from 4352 to 4416
    CRC (modversions) changed from 0x5dc6c1c1 to 0x77bbf7a8
    type of variable changed:
      type size changed from 34816 to 35328 (in bits)
      1 data member insertion:
        'timer_list oom_reaper_timer', at offset 21120 (in bits) at sched.h:1449:1
      there are data member changes:
        8 ('vm_struct* stack_vm_area' .. 'llist_head kretprobe_instances') offsets changed (by +320 bits)
        'thread_struct thread' offset changed (by +384 bits)
      4684 impacted interfaces

  [C] 'bus_type amba_bustype' was changed at bus.c:313:1:
    CRC (modversions) changed from 0x83105e26 to 0xe010f6df

  [C] 'neigh_table arp_tbl' was changed at arp.c:152:1:
    CRC (modversions) changed from 0xd408def7 to 0x4679c0bf

  [C] 'const address_space_operations balloon_aops' was changed at balloon_compaction.c:253:1:
    CRC (modversions) changed from 0x30f2c100 to 0x8818681a

  ... 65 omitted; 68 symbols have only CRC changes

'enum android_debug_symbol at android_debug_symbols.h:9:1' changed:
  type size hasn't changed
  1 enumerator insertion:
    'android_debug_symbol::ADS_SHOW_MEM' value '20'
  1 enumerator change:
    'android_debug_symbol::ADS_END' from value '20' to '21' at android_debug_symbols.h:9:1
  one impacted interface
'struct block_device_operations at blkdev.h:1850:1' changed:
  type size changed from 1152 to 1216 (in bits)
  1 data member insertion:
    'u64 android_oem_data1', at offset 1152 (in bits) at blkdev.h:1880:1
  4684 impacted interfaces

'struct net at net_namespace.h:56:1' changed:
  details were reported earlier

'struct netns_ipv6 at ipv6.h:62:1' changed:
  details were reported earlier

'struct nf_conn at nf_conntrack.h:72:1' changed:
  type size hasn't changed
  there are data member changes:
    type 'struct nf_conntrack' of 'nf_conn::ct_general' changed:
      type size hasn't changed
      there are data member changes:
        type 'typedef atomic_t' of 'nf_conntrack::use' changed:
          typedef name changed from atomic_t to refcount_t at refcount.h:113:1
          underlying type 'struct {int counter;}' at types.h:166:1 changed:
            type name changed from '__anonymous_struct__' to 'refcount_struct'
            type size hasn't changed
            there are data member changes:
              type 'int' of '__anonymous_struct__::counter' changed:
                entity changed from 'int' to 'typedef atomic_t' at types.h:168:1
                type size hasn't changed
              and name of '__anonymous_struct__::counter' changed to 'refcount_struct::refs' at refcount.h:112:1
      4685 impacted interfaces
  4684 impacted interfaces

'struct nf_conntrack at nf_conntrack_common.h:27:1' changed:
  details were reported earlier

'struct rate_sample at tcp.h:1020:1' changed:
  type size changed from 448 to 512 (in bits)
  1 data member insertion:
    'u32 last_end_seq', at offset 416 (in bits) at tcp.h:1031:1
  there are data member changes:
    3 ('bool is_app_limited' .. 'bool is_ack_delayed') offsets changed (by +32 bits)
  4684 impacted interfaces

'struct task_struct at sched.h:726:1' changed:
  details were reported earlier

'struct wireless_dev at cfg80211.h:5607:1' changed:
  type size hasn't changed
  2 data member deletions:
    'bool ibss_fixed', at offset 2624 (in bits) at cfg80211.h:5644:1
    'bool ibss_dfs_possible', at offset 2632 (in bits) at cfg80211.h:5645:1
  there are data member changes:
    'bool ps' offset changed (by -16 bits)
  4684 impacted interfaces

Bug: 234477785
Signed-off-by: Todd Kjos <tkjos@google.com>
Change-Id: If59e281740f5122ac6195f26a24a566e6a23fe9d
2022-06-01 09:32:36 -07:00
..
OWNERS ANDROID: Initial branch setup for android13-5.15 2021-11-02 10:19:03 +00:00
abi_gki_aarch64 ANDROID: GKI: ZSMALLOC & ZRAM as modules for arm64 2022-05-24 20:09:50 +00:00
abi_gki_aarch64.xml ANDROID: GKI: 6/1/2022 KMI update 2022-06-01 09:32:36 -07:00
abi_gki_aarch64_db845c ANDROID: ABI: gki_defconfig: disable cfg80211 and mac80211 2022-06-01 09:32:34 -07:00
abi_gki_aarch64_exynos ANDROID: gic-v3: Change GIC v3 vendor hook to restricted 2022-06-01 09:32:34 -07:00
abi_gki_aarch64_exynosauto ANDROID: GKI: update symbol list for ExynosAuto SoC 2022-05-19 13:25:06 +00:00
abi_gki_aarch64_fips140 ANDROID: ABI: add fips140 symbol list 2022-03-15 21:24:22 +00:00
abi_gki_aarch64_imx ANDROID: ABI: gki_defconfig: disable cfg80211 and mac80211 2022-06-01 09:32:34 -07:00
abi_gki_aarch64_mtk ANDROID: ABI: gki_defconfig: disable cfg80211 and mac80211 2022-06-01 09:32:34 -07:00
abi_gki_aarch64_mtktv ANDROID: ABI: gki_defconfig: disable cfg80211 and mac80211 2022-06-01 09:32:34 -07:00
abi_gki_aarch64_pixel ANDROID: ABI: gki_defconfig: disable cfg80211 and mac80211 2022-06-01 09:32:34 -07:00
abi_gki_aarch64_qcom ANDROID: ABI: gki_defconfig: disable cfg80211 and mac80211 2022-06-01 09:32:34 -07:00
abi_gki_aarch64_unisoc ANDROID: ABI: gki_defconfig: disable cfg80211 and mac80211 2022-06-01 09:32:34 -07:00
abi_gki_aarch64_virtual_device ANDROID: ABI: gki_defconfig: disable cfg80211 and mac80211 2022-06-01 09:32:34 -07:00
abi_gki_modules_exports ANDROID: GKI: Add module load time protected symbol lookup 2022-01-05 18:38:02 +00:00
abi_gki_modules_protected ANDROID: GKI: Add module load time protected symbol lookup 2022-01-05 18:38:02 +00:00
gki_aarch64_fips140_modules ANDROID: fips140: add kernel crypto module 2022-03-15 21:24:22 +00:00
gki_aarch64_modules ANDROID: GKI: ZSMALLOC & ZRAM as modules for arm64 2022-05-24 20:09:50 +00:00
gki_system_dlkm_modules ANDROID: GKI: ZSMALLOC & ZRAM as modules for arm64 2022-05-24 20:09:50 +00:00